资源简介
本压缩包内含原理图,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灯变色和呼吸
评论
共有 条评论