


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、温度控制器程序/PT100自身温度范围#defi ne M_temper_MIN -200#defi ne M_temper_MAX 500/最低温度/最高温度/CPU引脚定义#defi ne P_LED P0/LED1位选sbit LED_S1 =P2 八 0;sbit LED_S2 =P2 八 1;/LED2位选sbit LED_S3 =P2 八 2;/LED3位选sbit LED_S4 =P2 八 3;/LED4位选sbit KEY_S1 =P1 八 0;上下限温度设sbit KEY_S2 = P1 八 1;温度加sbit KEY_S3 = P1 八 2;温度减全局变量寄存器uchar
2、M_LED1, M_LED2, M_LED3, M_LED4;/4位LED显示寄存器ucharLED_DISP_TAB=/LED编码表0X3f, 0X06, 0X5b,0X4f, 0X66,0X6d, 0X7d, 0X07, 0X7f, 0X6f,/0-90X40, 0X23, 0X1c,;uchar Set_co unt;uchar T0_co unt;uint T1_co unt;char M_temper_up;char M_temper_dow n;char M_temper_AI;char M_temper_c on ver;bit B_set,B_set_AI;温度设置按钮计数/T
3、O定时中断计数/T1定时中断计数/温度上限/温度下限/设置中温度/当前温度/温度设置标志bit B_set_T0,B_set_T1;/ 定时器中断标志函数声明void T1i nt_in it();/*定时器T1初始化:设置工作方式赋初值开启中断*/void T0i nt_in it();/*定时器T0初始化:设置工作方式赋初值开启中断*/void Set_temper();/*设置上下限温度:按键次数=1:显示上限温度并处于操作状态按键次数=2:显示下限温度并 处于操作状态按键次数=3 :保存设置值并退 出*/void In c_temper();/* 提 高 设 置 的 温 度*/void
4、 Dec_temper();/* 降 低 设*/ void LED_data_BCD(char Disp_dat);/* 数 码 管 显 示*/voidPT100_delay(ui nt cou nt);/*PT100 延 时*/void PT100_reset(void);/*PT100复位初始程序:根据PT100要求对其进 行复位初始控制*/bit PT100_readbit(void);/*PT100位读子程序:从PT100取出一位数据*/uchar PT100_readbyte(void);/*PT100字节读子程序:读出的一字节数据并返回数据值*/void PT100_writeby
5、te(uchar dat);/*PT100字节写子程序:将输入参数值写入PT100*/void PT100_cha nge(void);/启动PT100温度转换uchar PT100_Gettemper(void);/*读取PT100温度数据:单线方式读取PT100转换的温度数据,并返回处理后的温度值*/延时子void Delay_ms(uint count);程序:延时 count (ms)void mai n() uchar M_temper_curr;SP=0x50;堆栈起始地址M_temper_up =100;/ 初始温度上下限M_temper_dow n=0;Delay_ms(500
6、);T0i nt_ini t();/TO T1 初始化T1i nt_in it();while(1)if (B_set_TO)/TO定时读取温度标志EA=0;关总中断B_set_TO=O;if(!B_set)/上下限设置状态时,取消温度读取PT1OO_cha nge();/ 读取温度M_temper_curr=PT1OO_Gettemper();M_temper_c on ver=(M_temper_curr(127-M_temper_curr):M_temper_curr);转换正负温度LED_data_BCD(M_temper_co nver);转换LED显示EA=1;if (B_set_
7、T1)/T1 定时 LED 显示扫描标志TR1=0;B_set_T 仁0;+T1_co unt;switch (T1_count)依次显示 4 位 LED case 1:LED_S4 = 1;P_LED = LED_DISP_TABM_LED1;LED_S1 = 0;break;case 2:LED_S1 = 1;P_LED = LED_DISP_TABM_LED2;LED_S2 = 0;break;case 3:LED_S2 = 1;P_LED = LED_DISP_TABM_LED3;LED_S3 = 0;break;case 4:LED_S3 = 1;P_LED = LED_DISP_T
8、ABM_LED4;LED_S4 = 0;T1_count = 0;break;TR1=1;/开T1定时器if(M_temper_co nver>M_temper_dow n)&&(M_t emper_c on ver<M_temper_up) / 温度在上下限范围内BUZZ=B_BUZZ_OFF;RED_ALARM=B_RED_OFF;GREEN_ALARM=B_GREEN_OFF;else BUZZ=B_BUZZ_ON;if(M_temper_c on ver<M_temper_dow n)RED_ALARM=B_RED_ON;低于下限温度elseGREEN
9、_ALARM=B_GREEN_ON;高于上限温度if(!KEY_S1)按键检测/Set_temper();设置温度Delay_ms(200);if (B_set)if (!KEY_S2)In c_temper();Delay_ms(200);if (!KEY_S3)Dec_temper();温度加/温度减Delay_ms(200);/设置温度/设置标志/设置上限void Set_temper()+Set_co unt;B_set = 1;if (Set_c ount = 1)B_set_AILED_data_BCD(M_temper_up);M_temper_AI =上限温度取出=M_temp
10、er_up; /将原else if (Set_count限B_set_AI = 1;=2)设置下M_temper_up入新的上限温度=M_temper_AI;/存LED_data_BCD(M_temper_dow n);M_temper_AI将原下限温度取出=M_temper_dow n;/else确认退出B_set = 0;Set_co unt = 0;LED_data_BCD(M_temper_co nver);M_temper_dow n存入新的下限温度M_temper_AI;void In c_temper()温度加if (B_set_AI)判断当前是设置上限(0)还是下限(1)if
11、(M_temper_AI <M_temper_MAX) && (M_temper_AI < M_temper_up)M_temper_AI+;/不能加到上线温度和温度范围elseif (M_temper_AI <M_temper_MAX)M_temper_AI+; LED_data_BCD(M_temper_AI);/温度减判断当前是设置void Dec_temper()if (B_set_AI)上限(0)还是下限if (M_temper_AI > M_temper_MIN) M_temper_AI-;elseif (M_temper_AI > M
12、_temper_MIN)&& (M_temper_AI > M_temper_dow n)M_temper_AI-;LED_data_BCD(M_temper_AI)/PT100 特void PT100_delay(ui nt cou nt)定延时uint i;while(co un t)i=200;while(i>0) count-;void PT100_reset(void)/PT100 复位初始 uint i;DQ=0;i=103;while(i>O)i-;DQ=1;i=4;while(i>0)i-;bit PT100_readbit(void)
13、/PT100 位读子程序uint i;bit dat;DQ=1;_nop_();DQ=O;i+;DQ=1;i+;i+;dat=DQ;i=8;while(i>0)i-;return (dat);uchar PT100_readbyte(void)读子程序uchar i,j,da t;dat=0;for(i=1;i<=8;i+)j=PT100_readbit(); dat=(jv<7)|(dat>>1);位一位放进去 /PT100 字节/把读取的数据return(dat);/PT100 字void PT100_writebyte(uchar dat)节写子程序uint
14、 i;uchar j;bit testb;for(j=1;jv=8;j+)testb=dat&0x01;dat=dat>>1;if(testb) /write 1DQ=O;i+;i+;DQ=1;i=8;while(i>0)i-;elseDQ=0;/write 0i=8;while(i>0)i-;DQ=1;i+;i+;void PT100_change(void) 启动 PT100 温度转换PT100_reset();PT100_delay(1);PT100_writebyte(0xcc);PT100_writebyte(0x44);读取uchar PT100_G
15、ettemper()PT100温度数据uint temp;uchar M_temper_L=0,M_temper_H=0;PT100_reset();PT100_delay(1);PT100_writebyte(0xcc);PT100_writebyte(0xbe);M_temper_L=PT100_readbyte();M_temper_H=PT100_readbyte();temp=M_temper_H;数据处理/温度temp<<=8;temp=temp|M_temper_L;if (M_temper_H>OxfO)/正(0)负(1)温度值temp=(0x1000-(te
16、mp&0 x0fff)/16)+127;计算温度elsetemp=temp/16;M_temper_H=temp;return M_temper_H;void LED_data_BCD(char Disp_dat) /显示 数据LED编码处理if (Disp_dat <0)M_LED1 = OXOa;/负温度/ 调M_LED2 =(0-Disp_dat) / 10;M_LED3 =(0-Disp_dat) % 10;用第10个elseM_LED1 = Disp_dat / 100;/正温度M_LED2 = (Disp_dat % 100) / 10;M_LED3 = (Disp_
17、dat % 100) % 10;if (B_set)设置状态时显示字符if (B_set_AI)M_LED4 = 0x0c;elseM_LED4 = OxOb;elseM_LED4 = OxOd;void TOi nt_in it()/定时器TO初始化TMOD = 0X11;THO = (65536-XTAL/12*T0_TIMER) / 256;TLO = (65536-XTAL/12*T0_TIMER)256;EA = 1;ET0 = 1;TR0 = 1;void T1i nt_ini t()定时器T1初始化TMOD = 0X11;TH1 = (65536-XTAL/12*T1_TIMER) / 256;TL1 = (65536-XTAL/12*T1_TIMER)256;EA = 1;ET1 = 1;TR1 = 1;延时countvoid Delay_ms(uint count)(ms) uint i;while(-co un t>0)for (i = 0; i < 125; i+);1 using 1 /TO 定void Timer0() int
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 步行街个人店铺租赁合同书
- 区商贸城商铺租赁合同
- 健身场地租赁合同
- 农副产品购销合同
- 土地租赁建房合同
- 借款抵押担保合同
- 停车位代理销售合同
- 知识产权专项法律服务合同
- 焦作师范高等专科学校《高尔夫球具维护》2023-2024学年第二学期期末试卷
- 长沙航空职业技术学院《广播电视技术实务》2023-2024学年第二学期期末试卷
- 5数据中台解决方案
- 电厂零星保温脚手架施工方案
- Q∕SY 17088-2016 钻井液用液体润滑剂技术规范
- 数理统计考试试卷及答案解析
- 排水沟施工合同电子版(精选5篇)
- 2022年苏州卫生职业技术学院单招语文模拟试题及答案
- 《酒店品牌建设与管理》课程教学大纲
- TSG11-2020 锅炉安全技术规程
- 大气商务企业培训之团队合作的重要性PPT模板
- Opera、绿云、西软、中软酒店管理系统对比分析
- 人教版八年级(上册)物理习题全集(附答案)
评论
0/150
提交评论