现呈上一份关于c51数字温度报警器的压缩包,我的设计报告,望各位大佬指点。
单片机源程序如下:
#include
#include
#define uint unsigned int //宏定义uint
#define uchar unsigned char //宏定义uchar
sbit lcden=P2^0; //液晶使能端
sbit lcdrw=P2^1;
sbit lcdrs=P2^2; //液晶数据命令选择端选择写数据还是写命令
sbit DQ = P2^3; //通过DQ口读取温度值
sbit s1=P1^2; //选择按键
sbit s2=P1^7; //加按键
sbit s3=P3^3; //减按键
sbit D1=P3^4; //高温报警灯
sbit D2=P1^3; //低温报警灯
uchar temp_value,num,fig,s1num,figh,figl,t; //设置全局无符号字符型变量
char h,l; //设置全局有符号字符型变量
void delay(uint z); //申明延时程序
void init(); //申明LCD初始化程序
void write_com(uchar com); //申明写命令程序
void write_data(uchar date); //申明写数据程序
void keyscan(); //申明按键扫描程序
void write_hl(uchar add,char date); //申明设置的最高低温度值在LCD上显示程序
void write_temp_value(uchar add,char date); //申明温度值在LCD上显示程序
void delay_18B20(unsigned int i); //申明延时程序
void Init_DS18B20(void); //申明DS18B20初始化程序
unsigned char ReadOneChar(void); //申明ds18b20读一个字节
void WriteOneChar(uchar dat); //申明ds18b20读一个字节
void ReadTemp(void); //申明读取ds18b20当前温度
void comp();
void main()
{
init(); //LCD初始化
Init_DS18B20(); //DS18B20初始化
while(1) //大循环
{ if(s1==0||s1num>=1)
{ keyscan(); //按键扫描
}
else{ ReadTemp(); //读取温度值
write_temp_value(0,temp_value); //LCD显示温度值
}
comp();
}
}
void delay(uint z) //延时程序
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void init() //LCD初始化程序
{ lcden=0;
lcdrw=0;
write_com(0x38); //设置16x2 显示5x7 点阵,8 位数据接口
write_com(0x0c); //设置开始显示不显示光标
write_com(0x06); //写一个字符后地址指针加1
write_com(0x01); //显示清零数据指针清零
write_com(0x80); //将数据指针第一行第一个字处,
write_com(0x80+9); //定义当前指针位置
write_data('H'); //写入
write_data(':'); //写入
write_data('+'); //写入
write_data('2'); //写入
write_data('0'); //写入
write_data(0xdf); //写入°
write_data('C'); //写入C
write_com(0x80+9+0x40); //定义当前指针位置
write_data('L'); //写入
write_data(':'); //写入
write_data('+'); //写入
write_data('1'); //写入
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』