資源簡介
本壓縮包內含原理圖,pcb圖,c源碼,
功能簡介:
1。收音機通過i2c總線控制達到調臺的目的,
2。溫度顯示,利用18b20實時顯示當前環境溫度,
3。利用lcd1602顯示信息,
4。利用預先存好語音段的芯片達到真人語音報時功能,
5。采用時鐘芯片ds1302可保證斷電繼續走時

代碼片段和文件信息
/******************************************************
函數功能:溫度傳感器檢測
編寫日期:2015年7月20日
********************************************************/
#include??
#define?uchar?unsigned?char??
#define?uint?unsigned?int?
/********************************************************
定義常量及變量
*********************************************************/
sbit?ds=P1^3;//ds18b20信號線??
sbit?ACC_7?=?ACC^7;//位尋址寄存器高位定義???????????????????
uint?itemp;??//定義溫度變量????????
float?f_temp;//定義溫度變量?
/*******************************************************
子函數聲明部分
*********************************************************/
void?delayms?(uchar?b);
void?write_com(uchar?com);//寫1602命令函數
void?write_data(uchar?date);//寫1602數據函數??
/*******************************************************
初始化溫度傳感器18B20
*********************************************************/
void?dsreset(void)
{???
uint?i;??
ds=0;??
i=200;?
while(i>0)i--;??
ds=1;??
i=10;???
while(i>0)i--;?
}
/*****************************************************
讀一個字節溫度數據函數
******************************************************/
uchar?tempread(void)//讀1個字節溫度數據函數
{???
uchar?xijdat;??
dat=0;???
for(i=1;i<=8;i++)??
{???
ds=0;
x++;?
x++;??
ds=1;
x++;
x++;//起延時作用??
j=ds;???
x=8;
while(x>0)x--;????
dat=(j<<7)|(dat>>1);????
}???
return?(dat);?
}
/***************************************************
向向DS18B20寫一個字節數據函數
****************************************************/
void?tempwritebyte(uchar?dat)
{
uint?i;
uchar?j;
bit?testb;
for(j=1;j<=8;j++)
{
testb=dat&0x01;//與完之后最低位為0/1,其他位都位0
dat=dat>>1;
if(testb)//寫1
{
ds=0;
i++;
i++;
ds=1;//向18b20寫1
i=8;//接著延時
while(i>0)i--;
}
else
{
ds=0;//寫0
i=8;
while(i>0)i--;
ds=1;
i++;
i++;
}
}
}
/****************************************************
DS18B20開始獲取溫度并轉換函數
****************************************************/
void?tempchange(void)
{
dsreset();
delayms(1);
tempwritebyte(0xcc);//向DS18B20寫一個字節數據
tempwritebyte(0x44);//向DS18B20寫一個字節數據
delayms(10);
}
/****************************************************
獲取溫度函數
****************************************************/
uint?get_temp()
{
uchar?ab;
dsreset();
delayms(1);
tempwritebyte(0xcc);
tempwritebyte(0xbe);
a=tempread();//讀低8位
b=tempread();//讀高8位
temp=b;
temp<<=8;//兩個字節組合成1個字節
temp=temp|a;
f_temp=temp*0.0625;
temp=f_temp*10;
return?temp;
}
/****************************************************
顯示溫度函數
****************************************************/
void?distemp(uint?t)
{
uchar?i;
i=t/100;
write_com(0x80+0x40+10);
write_data(0x30+i);
i=t%100/10;
write_com(0x80+0x40+11);
write_data(0x30+i);
i=t%100%10;
write_com(0x80+0x40+13);
write_data(0x30+i);
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????3035??2015-08-15?20:40??源碼\18B20.c
?????文件???????6703??2015-08-15?20:44??源碼\18B20.LST
?????文件???????6590??2015-08-15?20:44??源碼\18B20.OBJ
?????文件??????12849??2015-08-15?20:08??源碼\DS1302.c
?????文件??????32477??2015-08-15?20:45??源碼\DS1302.LST
?????文件??????27366??2015-08-15?20:45??源碼\DS1302.OBJ
?????文件???????2173??2015-07-24?19:53??源碼\I2C.c
?????文件???????5121??2015-08-15?20:45??源碼\I2C.LST
?????文件???????4734??2015-08-15?20:45??源碼\I2C.OBJ
?????文件???????1979??2015-07-28?18:08??源碼\LCD1602.c
?????文件???????4188??2015-08-15?20:45??源碼\LCD1602.LST
?????文件???????6214??2015-08-15?20:45??源碼\LCD1602.OBJ
?????文件???????3806??2015-08-18?08:46??源碼\main.c
?????文件???????7750??2015-08-15?20:44??源碼\main.LST
?????文件???????9744??2015-08-15?20:44??源碼\main.OBJ
?????文件???????5115??2002-04-16?14:32??源碼\STARTUP.A51
?????文件??????11665??2015-08-15?20:44??源碼\STARTUP.LST
?????文件????????749??2015-08-15?20:44??源碼\STARTUP.OBJ
?????文件???????6423??2015-08-15?19:08??源碼\TEA5767.c
?????文件??????13367??2015-08-15?20:45??源碼\TEA5767.LST
?????文件??????18108??2015-08-15?20:45??源碼\TEA5767.OBJ
?????文件??????62595??2015-08-15?20:45??源碼\電子鐘+收音機
?????文件??????16614??2015-08-15?20:45??源碼\電子鐘+收音機.hex
?????文件????????138??2015-08-15?20:45??源碼\電子鐘+收音機.lnp
?????文件??????65658??2015-08-15?20:45??源碼\電子鐘+收音機.M51
?????文件???????2302??2015-07-18?10:44??源碼\電子鐘+收音機.opt.bak
?????文件????????230??2015-08-18?08:46??源碼\電子鐘+收音機.plg
?????文件???????2213??2015-07-18?10:44??源碼\電子鐘+收音機.Uv2.bak
????.......?????81841??2015-08-18?08:46??源碼\電子鐘+收音機.uvopt
?????文件??????14239??2015-07-18?13:40??源碼\電子鐘+收音機.uvproj
............此處省略12個文件信息
- 上一篇:lcd12864二維碼源代碼
- 下一篇:利用PWM技術控制RGB燈變色和呼吸
評論
共有 條評論