




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上江南大学单片机课程设计班级 姓名 学号 1.原理图放大器放大电压信号XXXXXXXXX将温度信号转换为电压信号输出热电偶放大器将电压信号放大输出报警电路 A/D转换电路 数字显示2.工作原理:热电偶将温度信号转换为电压信号输出,然后将模拟信号经A/D转换器转换为数字信号,经译码显示而得到相应的数字;同时,可以通过模拟量的大小来控制报警电路报警。电路图3.问题及解决方法首先遇到的问题就是选测量温度的传感器,选了热电偶传感器发现还有温度补偿、线性调整的问题,传感器的知识只停留在书本上,查阅资料询问同学后尝试了热电偶放大器,勉强完成了线性调整。刚开始对选择芯片等比较迷茫,后
2、来也是上网查资料,问同学。A/D转换器选用了ICL7107,但是对这个芯片不熟悉,选用之后看到芯片手册说温度范围是0-70摄氏度以为不能用,后来发现芯片手册说的温度范围是指芯片的工作温度范围,跟测量温度范围不是一个概念。4. 程序清单 #include<reg51.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int #define delayNOP()
3、 _nop_();_nop_();_nop_();_nop_(); sbit HI_LED=P23; /高温,低温白净闪烁 LED sbit LO_LED=P26; sbit DQ=P33; /DS18B20数据线 sbit BEEP=P37; /报警 sbit RS=P20; sbit RW=P21; sbit EN=P2
4、2; sbit K1=P17; /正常显示温度,越界时报警 sbit K2=P14; /显示报警温度 sbit K3=P11; /查看 ROM CODEchar code RomCodeStr="- ROM CODE -" uchar RomCode8=0x00,0x00,0x00,0x00,0x00,
5、0x00,0x00,0x00; uchar code Temp_Disp_Title ="Current Temp: " uchar Current_Temp_Display_Buffer="TEMPE: " uchar code Temperature_Char8=0x0c,0x12,0x12,0x0c,0x00,0x00,0x00,0x00;/温度示字符 uch
6、ar code Alarm_Temp="ALARM TEMP Hi Lo" uchar Alarm_HI_LO_STR="Hi: Lo: "uchar temp_data2=0x00,0x00; uchar temp_alarm2=0x00,0x00; uchar display5=0x00,0x00,0x00,0x00,
7、0x00,; /温度值 uchar display13=0x00,0x00,0x00; /温度报警值 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) /数组中
8、前一位为高温值,后一位为低温值 /此处类型注意设为char,否则不能进行有符号数的比较 char Alarm_Temp_HL2=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; /高低温报警标志 bi
9、t DS18B20_IS_OK=1; /传感器正常标志 uint Time0_Count=0; /定时器延时累加void DelayXus(int x) uchar i; while(x-)for(i=0;i<200;i+); /. /忙检测 bit LCD_Busy_Check() b
10、it LCD_Status; RS=0;/寄存器选择 RW=1;/读状态寄存器EN=1;/开始读 DelayXus(1); LCD_Status=(bit)(P0&0x80) EN=0; return LCD_Status; /写LCD指令 void Write_LCD_Command(uchar cmd) while(LCD_Busy_Check()&0
11、x80)=0x80); /忙等待 RS=0; /写选择命令寄存器 RW=0; /写 EN=0; P0=cmd; EN=1; DelayXus(1); EN=0; /向LCD写数据 void Write_LCD_Data(uchar
12、 dat) while(LCD_Busy_Check()&0x80)=0x80); /忙等待 RS=1;RW=0;EN=0;P0=dat;EN=1; DelayXus(1); EN=0; /设置液晶显示位置 void Set_LCD_POS(uchar pos) &
13、#160;Write_LCD_Command(pos |0x80); /LCD初始化 void LCD_Initialise() Write_LCD_Command(0x38); DelayXus(1); Write_LCD_Command(0x01); /清屏 DelayXus(1); Write_LCD_Command(0x0
14、6); /字符进入模式:屏幕不动,字符后移 DelayXus(1); Write_LCD_Command(0x0C); /显示开,关光标 DelayXus(1); /. /. /自定义字符写CGRAM /. void Write_NEW_LCD_Char()
15、160; uchar i; Write_LCD_Command(0x40); /写CGRAM for(i=0;i<8;i+) Write_LCD_Data(Temperature_Chari); /写入温度符号 void
16、60;Delay(uint num) while(-num); /. /初始化DS18B20 /. uchar Init_DS18B20() uchar status; DQ=1;Delay(8); DQ=0;Delay(90);
17、0; DQ=1;Delay(8); status=DQ; Delay(100); DQ=1; return status;
18、; /初始化成功时返回0 /. /读一节 /. uchar ReadOneByte() uchar i,dat=0;
19、0; DQ=1;_nop_(); for(i=0;i<8;i+) DQ=0;dat>>=1;DQ=1;_nop_(); _nop_(); if(DQ) dat |=0x80;Delay(30);DQ=1;
20、0; return dat; /. /写一字节 /. void WriteOneByte(uchar dat) uchar i; for(i=0;i<8;i+) DQ=0;DQ=dat&0x01;Del
21、ay(5);DQ=1;dat>>=1; /.if(Alarm_HI_LO_STR4='0') Alarm_HI_LO_STR4=' ' if(Alarm_HI_LO_STR4=' '&& Alarm_HI_LO_STR5='0') Alarm_HI_LO_STR5=' ' /"-"符号显示 if (n
22、g) if (Alarm_HI_LO_STR5=' ') Alarm_HI_LO_STR5='-' else if(Alarm_HI_LO_STR4=' ') Alarm_HI_LO_STR4='-' else Alarm_HI_L
23、O_STR3='-' /低温报警值 ng=0; if(Alarm_Temp_HL1<0) /如果为负数则取反加1 Alarm_Temp_HL1=Alarm_Temp_HL1+1; ng=1; /分解低温各数位到待显示串中 Alarm_HI_LO_STR12=Alarm_Temp_HL1/100+'0' Alarm_HI_LO_STR13=
24、Alarm_Temp_HL0/10%10+'0' Alarm_HI_LO_STR14=Alarm_Temp_HL0%10+'0' /屏蔽高位不显示的0 if(Alarm_HI_LO_STR12='0') Alarm_HI_LO_STR12=' ' if(Alarm_HI_LO_STR12=' '&& Alarm_HI_LO_STR13='0') Alarm_HI_LO_STR13=&
25、#39; ' /"-"符号显示 if (ng) if (Alarm_HI_LO_STR13=' ') Alarm_HI_LO_STR13='-' else if(Alarm_HI_LO_STR12=' ') Alarm_HI_LO_STR12='-'
26、60; else Alarm_HI_LO_STR11='-' /显示高低温报警温度值 Set_LCD_POS(0x00); /显示标题 for (i=0;i<16;i+) Write_LCD_Data(Alarm_Tempi); Set_LCD_POS(0x40); /显示
27、高低温 for (i=0;i<16;i+) Write_LCD_Data(Alarm_HI_LO_STRi); /. /主函数 void main() uchar Current_Operation=1; /默认当前操作为显示温度 LCD_Initialise(); IE=0x82;
28、; TMOD=0x01; TH0=-1000/256; TL0=-1000%256; TR0=0; HI_LED=0; LO_LED=0; Set_Alarm_Temp_Value(); Read_Temperature();
29、60; Delay(50000); Delay(50000); while(1) if (K1=0) Current_Operation=1; if (K2=0) Current_Operation=2;
30、60; if (K3=0) Current_Operation=3; switch (Current_Operation) case 1:/正常显示当前温度,越界时报警 &
31、#160; Read_Temperature(); if( DS18B20_IS_OK) &
32、#160; if (HI_Alarm=1 | LO_Alarm=1) TR0=1; else TR0=0; Display_Temperature();
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 江苏省苏州市梁丰2024-2025学年初三下学期(开学)考试化学试题试卷含解析
- 山东省烟台芝罘区六校联考2024-2025学年初三5月份考前模拟适应性联合考试化学试题试卷含解析
- 沈阳工业大学《云计算与虚拟化技术》2023-2024学年第二学期期末试卷
- 辽宁省辽河油田第二中学2025届高三高考信息卷(一)物理试题含解析
- 长沙市重点中学2025年高三4月联考历史试题试卷含解析
- 宁夏中卫市名校2024-2025学年高中毕业班3月复习教学质量检测试题(二)英语试题含答案
- 山西省右玉县重点达标名校2024-2025学年初三5月三校联考化学试题试卷含解析
- 上海市徐汇区2025年数学四年级第二学期期末复习检测试题含解析
- 山东省滨州市滨城区北城英才学校2025年三下数学期末考试试题含解析
- 短期护士雇佣合同2025年
- 植物生理学第十三章植物的逆境生理课件
- 宫颈癌护理查房
- 施工单位人员退场制度
- 汉译巴利三藏相应部3-蕴篇
- 建筑外窗抗风压性能计算书
- 年产万吨酒精发酵车间设计
- 生物化学与分子生物学人卫版教材全集
- 照片里的故事
- 土木工程毕业设计框架结构教学楼计算书
- 整理【越南】环境保护法
- 河北工业大学硕士生指导教师(含新申请者)简况表.
评论
0/150
提交评论