资源简介
能程序控制ISD1760 录音地址,程序设定ISD1760播放对应地址语音,能语音播报温度值
代码片段和文件信息
/*-----------------------------------------------
名称:18B20温度传感器
网站:www.doflye.net
编写:shifang
日期:2009.5
修改:无
内容:18B20单线温度检测的应用样例程序
------------------------------------------------*/
#include“18b20.h“
#include“stc12c5a60s2.h“
#include
/*------------------------------------------------
18b20初始化
------------------------------------------------*/
sbit DQ1=P1^3;
sbit DQ2=P1^4;
sbit DQ3=P1^5;
void DelayUs2x(unsigned char n)
{
while (n--)
{
_nop_();
_nop_();
}
}
/*------------------------------------------------
mS延时函数,含有输入参数 unsigned char t,无返回值
unsigned char 是定义无符号字符变量,其值的范围是
0~255 这里使用晶振12M,精确延时请使用汇编
------------------------------------------------*/
void Delay_18b20(unsigned char z)
{
unsigned int abc;
for(a=z;a>0;a--)
for(b=10;b>0;b--)
for(c=85;c>0;c--);
}
bit Init_DS18B20(unsigned char ch)
{
bit dat=0;
if(ch==1){
DQ1 = 1; //DQ复位
DelayUs2x(5); //稍做延时
DQ1 = 0; //单片机将DQ拉低
DelayUs2x(220); //精确延时 大于 480us 小于960us
DelayUs2x(220);
DQ1 = 1; //拉高总线
DelayUs2x(50); //15~60us 后 接收60-240us的存在脉冲
dat=DQ1; //如果x=0则初始化成功 x=1则初始化失败
DelayUs2x(240); //稍作延时返回
DelayUs2x(180);
}
else if(ch==2){
DQ2 = 1; //DQ复位
DelayUs2x(5); //稍做延时
DQ2 = 0; //单片机将DQ拉低
DelayUs2x(220); //精确延时 大于 480us 小于960us
DelayUs2x(220);
DQ2 = 1; //拉高总线
DelayUs2x(50); //15~60us 后 接收60-240us的存在脉冲
dat=DQ2; //如果x=0则初始化成功 x=1则初始化失败
DelayUs2x(240); //稍作延时返回
DelayUs2x(180);
}
else if(ch==3){
DQ3 = 1; //DQ复位
DelayUs2x(5); //稍做延时
DQ3 = 0; //单片机将DQ拉低
DelayUs2x(220); //精确延时 大于 480us 小于960us
DelayUs2x(220);
DQ3 = 1; //拉高总线
DelayUs2x(50); //15~60us 后 接收60-240us的存在脉冲
dat=DQ3; //如果x=0则初始化成功 x=1则初始化失败
DelayUs2x(240); //稍作延时返回
DelayUs2x(180);
}
return dat;
}
/*------------------------------------------------
读取一个字节
------------------------------------------------*/
unsigned char ReadOneChar(unsigned char ch)
{
unsigned char i=0;
unsigned char dat = 0;
if(ch==1){
for (i=0; i<8; i++) //8位计数器
{
dat >>= 1;
DQ1 = 0; //开始时间片
DelayUs2x(1); //延时等待
DQ1 = 1; //准备接收
DelayUs2x(1); //接收延时
if (DQ1) dat |= 0x80; //读取数据
DelayUs2x(60); //等待时间片结束
}
}
else if(ch==2){
for (i=0; i<8; i++) //8位计数器
{
dat >>= 1;
DQ2 = 0; //开始时间片
DelayUs2x(1); //延时等待
DQ2 = 1; //准备接收
DelayUs2x(1); //接收延时
if (DQ2) dat |= 0x80; //读取数据
DelayUs2x(60); //等待时间片结束
}
}
else if(ch==3){
for (i=0;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 5531 2013-04-09 11:44 程序\18b20.c
文件 481 2013-04-09 11:40 程序\18b20.h
文件 11198 2013-04-09 23:02 程序\18b20.LST
文件 9816 2013-04-09 23:02 程序\18b20.OBJ
文件 734 2013-04-09 14:07 程序\ADC.c
文件 392 2013-04-09 13:53 程序\ADC.h
文件 2097 2013-04-09 23:02 程序\ADC.LST
文件 3078 2013-04-09 23:02 程序\ADC.OBJ
文件 383 2013-04-07 16:47 程序\Delay.c
文件 187 2013-04-07 11:21 程序\Delay.h
文件 1357 2013-04-09 23:02 程序\Delay.LST
文件 1754 2013-04-09 23:02 程序\Delay.OBJ
文件 7927 2013-04-08 13:29 程序\isd1760.c
文件 4800 2013-04-07 20:10 程序\isd1760.h
文件 14414 2013-04-09 23:02 程序\ISD1760.LST
文件 16672 2013-04-09 23:02 程序\ISD1760.OBJ
文件 197 2013-04-08 13:55 程序\ISDadd.h
文件 4861 2013-04-09 11:07 程序\LCD1602.c
文件 310 2013-04-09 11:07 程序\LCD1602.h
文件 8056 2013-04-09 23:02 程序\LCD1602.LST
文件 8365 2013-04-09 23:02 程序\LCD1602.OBJ
文件 7748 2013-05-05 17:26 程序\main.c
文件 17722 2013-04-09 23:02 程序\main.LST
文件 25091 2013-04-09 23:02 程序\main.OBJ
文件 17735 2012-12-09 13:44 程序\stc12c5a60s2.h
文件 54517 2013-04-09 23:02 程序\test
文件 14784 2013-04-09 23:02 程序\test.hex
文件 112 2013-04-09 23:02 程序\test.lnp
文件 60560 2013-04-09 23:02 程序\test.M51
文件 175 2013-05-05 17:01 程序\test.plg
............此处省略10个文件信息
- 上一篇:51单片机多个超声波测距
- 下一篇:Unity物体按角度移动
评论
共有 条评论