


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、ROMDS1820(); /跳过ROM TMRDS1820(); /读出温度指令 ReadDS1820(); /读出温度值和上限值 TMSetV = TMRomV; /拷贝保存在DS18B20ROM里的上限值到TMSetV EA = 1; /允许CPU中断 ET0 = 1; /定时器0中断打开 TMOD = 0x1; /设定时器0为模式1,16位模式 TH0=0xB1; TL0=0xDF; /设定时值为20000us(20ms) TR0 = 1; /开始定时 while(1); /定时器0中断外理中键扫描和显示 void KeyAndDis_Time0(void) interrupt 1 us
2、ing 2 TH0=0xB1; TL0=0xDF; /设定时值为20000us(20ms) LEDPort = 0xFF; if (!Key_UP) KeyV = 1; if (!Key_DOWN) KeyV = 2; if (!Key_SET) KeyV = 3; /KeySETDowning = 0; /清除 if (KeyV != 0) /有键按下 Delay_10ms(); /延时防抖 按下10ms再测 if (!Key_UP) TempKeyV = 1; if (!Key_DOWN) TempKeyV = 2; if (!Key_SET) TempKeyV = 3; if (KeyV
3、 = TempKeyV) /两次值相等为确定接下了键 if (KeyV = 3) /按下SET键,如在SET状态就退出,否则进入 /KeySETDowning = 1; /表明SET正在按下 PowTF = 0; /电源标识开 if (!KeyTF) if (SetTF) SetTF = 0; /标识位标识退出设定 InitDS1820(); /初始化 ROMDS1820(); /跳过ROM TMWDS1820(); /写温度上限指令 WriteDS1820(); /写温度上限到DS18B20ROM WriteDS1820(); /写温度上限到DS18B20ROM WriteDS1820();
4、 /写温度上限到DS18B20ROM InitDS1820(); /初始化 ROMDS1820(); /跳过ROM TMREDS1820(); /温度上限值COPY回E2PRAM else SetTF = 1; if (!KeySETDown) /没有第一次按下SET时,KeySETDown标识置1 KeySETDown = 1; else KSDNum = KSDNum + 1; /前一秒内有按过SET则开始计数 if (SetTF) /在SET状态下 if (KeyV = 1) && (!KeyTF) TMSetV = TMSetV + 1; /上调温度 if (KeyV
5、= 2) && (!KeyTF) TMSetV = TMSetV - 1; /下调温度 if (TMSetV <= -55) /限制温度上下限 TMSetV = -55; if (TMSetV >= 125) TMSetV = 125; if (!KeyTF) && (IntNum3 = 0) KeyTF = 1; /当键盘处于可用时,锁定 if (KeySETDown) /在2秒内按下了SET则计中断发生次数用于长按SET时计时用 IntNum = IntNum + 1; if (IntNum > 55) /中断发生了55次时(大约1.2秒)
6、75为1.5秒左右 IntNum = 0; KeySETDown = 0; if (KSDNum = 55) /如一直长按了SET1.2秒左右 RelayOutPort = 1; /关闭继电器输出 PowTF = 1; /电源标识关 LEDOneC = 0; LEDTwoC = 0; LEDThreeC = 0; LEDPort = 0xBF; /显示"-" Delay_4s(); /延时 LEDOneC = 1; LEDTwoC = 1; /关显示 LEDThreeC = 1; Delay_4s(); IntNum = 0; IntNum2 = 0; IntNum3 =
7、0; KSDNum = 0; KeyV = 0; TempKeyV = 0; /清空变量准备下次键扫描 if (!PowTF) InitDS1820(); /初始化 ROMDS1820(); /跳过ROM TMVDS1820(); /温度转换指令 Delay_510(); Delay_510(); /延时等待转换完成 InitDS1820(); /初始化 ROMDS1820(); /跳过ROM TMRDS1820(); /读出温度指令 ReadDS1820(); /读出温度值 V2ToV(); /转换显示值 if (TMV > TMSetV) /根据采集到的温度值控制继电器 RelayO
8、utPort = 0; else RelayOutPort = 1; if (SetTF) IntNum2 = IntNum2 + 1; /用于闪烁计数 if (IntNum2 > 50 ) IntNum2 = 0; if (KeyTF) IntNum3 = IntNum3 + 1; /用于防止按键连按 if (IntNum3 > 25) IntNum3 = 0; KeyTF = 0; if (SetTF) && (IntNum2 < 25) goto InitEnd; /计数在后半段时显示 LEDPort = LED_One; LEDOneC = 0; De
9、lay_510(); LEDOneC = 1; /显示百位数 LEDPort = LED_Two; LEDTwoC = 0; Delay_510(); LEDTwoC = 1; /显示十位数 LEDPort = LED_Three; LEDThreeC = 0; Delay_510(); LEDThreeC = 1; /显示个位数 InitEnd:; void V2ToV(void) /数值转换 TLV = TLV >> 4; THV = THV << 4; /读出的高低位数值移位 TMV = TLV | THV; /合并高低位放入TM为实际温度值 Sign = 0;
10、if (SetTF | !Key_SET) Sign = TMSetV >> 7; /取符号 else Sign = TMV >> 7; if (Sign) if (SetTF | !Key_SET) LED_One = (TMSetV-1) / 100; /SET状态下显示设定值 LED_Two = (TMSetV-1) - LED_One * 100)/10; LED_Three = (TMSetV-1) - LED_One * 100 - LED_Two * 10; else LED_One = (TMV) / 100; /转换百位值 LED_Two = (TMV
11、) - LED_One * 100)/10; LED_Three = (TMV) - LED_One * 100 - LED_Two * 10; else if (SetTF | !Key_SET) LED_One = (TMSetV) / 100; /SET状态下显示设定值 LED_Two = (TMSetV - LED_One * 100)/10; LED_Three = TMSetV - LED_One * 100 - LED_Two * 10; else LED_One = (TMV) / 100; /转换百位值 LED_Two = (TMV - LED_One * 100)/10;
12、LED_Three = TMV - LED_One * 100 - LED_Two * 10; /转LED字段 if (LED_One) /超过百时十位的处理 LED_Two = LEDDisLED_Two; else if (LED_Two = 0) LED_Two = LEDDis10; else LED_Two = LEDDisLED_Two; if (Sign) LED_One = LEDDis11; else if (LED_One = 0) LED_One = LEDDis10; else LED_One = LEDDisLED_One; LED_Three = LEDDisLED
13、_Three; void InitDS1820(void) /初始化DS1820 TMPort = 1; /拉高TMPort _nop_(); /保持一个周期 TMPort = 0; /拉低TMPort Delay_510(); /延时 DS1820复位时间要500us的低电平 TMPort = 1; /拉高TMPort _nop_(); /保持 _nop_(); _nop_(); Delay_110(); /延时110us 等待DS1820回应 if (!TMPort) /回应信号为低电平 DS1820ON = 1; else DS1820ON = 0; Delay_110(); /延时 D
14、elay_110(); TMPort = 1; /拉高TMPort void ROMDS1820(void) /跳过ROM匹配 #pragma asm MOV A,#0CCH MOV R2,#8 CLR C WR1: CLR P3_7 MOV R3,#6 DJNZ R3,$ RRC A MOV P3_7,C MOV R3,#23 DJNZ R3,$ SETB P3_7 NOP DJNZ R2,WR1 SETB P3_7 #pragma endasm void TMVDS1820(void) /温度转换指令 #pragma asm MOV A,#44H MOV R2,#8 CLR C WR2:
15、CLR P3_7 MOV R3,#6 DJNZ R3,$ RRC A MOV P3_7,C MOV R3,#23 DJNZ R3,$ SETB P3_7 NOP DJNZ R2,WR2 SETB P3_7 #pragma endasm void TMRDS1820(void) /读出温度指令 #pragma asm MOV A,#0BEH MOV R2,#8 CLR C WR3: CLR P3_7 MOV R3,#6 DJNZ R3,$ RRC A MOV P3_7,C MOV R3,#23 DJNZ R3,$ SETB P3_7 NOP DJNZ R2,WR3 SETB P3_7 #prag
16、ma endasm void TMWDS1820(void) /写入温度限制指令 #pragma asm MOV A,#04EH MOV R2,#8 CLR C WR13: CLR P3_7 MOV R3,#6 DJNZ R3,$ RRC A MOV P3_7,C MOV R3,#23 DJNZ R3,$ SETB P3_7 NOP DJNZ R2,WR13 SETB P3_7 #pragma endasm void TMREDS1820(void) /COPY RAM to E2PRAM #pragma asm MOV A,#48H MOV R2,#8 CLR C WR33: CLR P3_
17、7 MOV R3,#6 DJNZ R3,$ RRC A MOV P3_7,C MOV R3,#23 DJNZ R3,$ SETB P3_7 NOP DJNZ R2,WR33 SETB P3_7 #pragma endasm void TMERDS1820(void) /COPY E2PRAM to RAM #pragma asm MOV A,#0B8H MOV R2,#8 CLR C WR43: CLR P3_7 MOV R3,#6 DJNZ R3,$ RRC A MOV P3_7,C MOV R3,#23 DJNZ R3,$ SETB P3_7 NOP DJNZ R2,WR43 SETB P
18、3_7 #pragma endasm void WriteDS1820(void) /写入温度限制值 #pragma asm MOV A,26H /发出4EH写ROM指令后连发两个字节分别为上下限 MOV R2,#8 CLR C WR23: CLR P3_7 MOV R3,#6 DJNZ R3,$ RRC A MOV P3_7,C MOV R3,#23 DJNZ R3,$ SETB P3_7 NOP DJNZ R2,WR23 SETB P3_7 #pragma endasm void ReadDS1820(void) /读出温度值 #pragma asm MOV R4,#3 ; 将温度高位和低位,高温限制位从DS18B20中读出 MOV R1,#29H ; 低位存入29H (TEMPER_L),高位存入28H(TEMPER_H),高温限制位存入27H(TMRomV) RE00: MOV R2,#8 RE01: CLR C SETB P3_7 NOP NOP CLR P3_7 NOP NOP NOP SETB P3_7 MOV R3,#09 RE10: DJNZ R3,RE10 MOV C,P3_7 M
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医学资料 早产儿护理查房文稿 学习课件
- 计算机二级复习资料及试题及答案
- 山东省海洋知识竞赛(小学生组)考试题(附答案)
- 毕业顶岗实习鉴定
- 高中学校社团活动总结
- 银行大堂经理年终工作总结
- 食品买卖合同
- 2025年签订销售合同的重点留意事项
- 2025年某建筑外墙防水隔热工程施工合同
- 2025年博尔塔拉a2货运资格证考试题
- 马拉松赛事运营服务方案
- 四年级下册劳动教育全册教案设计
- 电梯钢结构井道技术方案-
- 一般公共预算支出编制流程图
- 四川大学-刘龙飞-毕业答辩PPT模板
- 丽声北极星分级绘本第一级下The King's Yu Player教学设计
- 显微操作技术(全面)
- 两立体相交相贯
- fTU使用说明书
- 日本文学史-中世17页
- 幼儿园班本课程的在实践中的研究
评论
0/150
提交评论