资源描述:
《基于51单片机led闪烁温度报警系统.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、江南大学单片机课程设计班级姓名学号1.原理图放大器放大电压信号XXXXXXXXX将温度信号转换为电压信号输出热电偶放大器将电压信号放大输出报警电路A/D转换电路数字显示2.工作原理:热电偶将温度信号转换为电压信号输出,然后将模拟信号经A/D转换器转换为数字信号,经译码显示而得到相应的数字;同时,可以通过模拟量的大小来控制报警电路报警。电路图3.问题及解决方法首先遇到的问题就是选测量温度的传感器,选了热电偶传感器发现还有温度补偿、线性调整的问题,传感器的知识只停留在书本上,查阅资料询问同学后尝试了热电偶放大器,勉强完成了线
2、性调整。刚开始对选择芯片等比较迷茫,后来也是上网查资料,问同学。A/D转换器选用了ICL7107,但是对这个芯片不熟悉,选用之后看到芯片手册说温度范围是0-70摄氏度以为不能用,后来发现芯片手册说的温度范围是指芯片的工作温度范围,跟测量温度范围不是一个概念。4.程序清单 #include #include #define uchar unsigned char #define uint unsigned int #define delayNOP() {_nop_();_nop_()
3、;_nop_();_nop_();} sbit HI_LED=P2^3; //高温,低温白净闪烁 LED sbit LO_LED=P2^6; sbit DQ=P3^3; //DS18B20数据线 sbit BEEP=P3^7; //报警 sbit RS=P2^0; sbit RW=P2^1; sbit EN=P2^2; sbit K1=P1^7; //正常显示温度,越界时报警 sbit K2=P1^4; //显示报警温度 sbit K3=P1^1; //查看 ROM CODEchar code
4、 RomCodeStr[]={"-- ROM CODE --"}; uchar RomCode[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; uchar code Temp_Disp_Title[] ={"Current Temp: "}; uchar Current_Temp_Display_Buffer[]={"TEMPE: "}; uchar codeTemperature_Char[8]={0x0c,0x12,0x12,0x0c,0x00,0x00,0x
5、00,0x00};//温度示字符 uchar code Alarm_Temp[]={"ALARM TEMP Hi Lo"}; uchar Alarm_HI_LO_STR[]={"Hi: Lo: "};uchar temp_data[2]={0x00,0x00}; uchar temp_alarm[2]={0x00,0x00}; uchar display[5]={0x00,0x00,0x00,0x00,0x00,}; //温度值 uchar display1[3]={0x00,0x00,0x00};
6、 //温度报警值 uchar code df_Table[]={0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9}; //温度小数位对照表 //....................................................... //报警温度上下限(取值范围:-128~+127)(DS18B20温度范围为:-55~+125) //数组中前一位为高温值,后一位为低温值 //此处类型注意设为char,否则不能进行有符号数的比较 char Alarm_Temp_HL[
7、2]={70,-20}; //............................................................ uchar CurrentT=0; //当前读取温度整数部分 uchar Temp_Value[]={0x00,0x00};//从DS18B20读取的温度值 uchar Display_Digit[]={0,0,0,0};//待显示的各温度数位 bit HI_Alarm=0,LO_Alarm=0; //高低温报警标志 bit DS18B20_IS_OK=1; //传感器正
8、常标志 uint Time0_Count=0; //定时器延时累加void DelayXus(int x) { uchar i; while(x--)for(i=0;i<200;i++); } //....................................... //忙检测 bit