




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、/PT100 自身温度范围#define M_temper_MIN -200/ 最低温度#define M_temper_MAX 500/ 最高温度/CPU 引脚定义#define P_LED P0sbit LED_S1 = P2 A 0;/LED1 位选sbit LED_S2 =P2 A 1;/LED2 位选sbit LED_S3 =P2 A 2;/LED3 位选sbit LED_S4 =P2 A 3;/LED4 位选sbit KEY_S1 =P1 A 0;/上下限温度设置sbit KEY_S2 =P1 A 1;/温度加sbit KEY_S3 =P1 A 2;/温度减/全局变量寄存器ucha
2、r M_LED1, M_LED2, M_LED3, M_LED4;/4 位 LED 显示寄存器uchar LED_DISP_TAB = /LED 编码表0X3f, 0X06, 0X5b, 0X4f, 0X66,0X6d, 0X7d, 0X07, 0X7f, 0X6f, /0-90X40, 0X23, 0X1c, 0X58/字符: - n u c;/温度设置按钮计数uchar T0_count;/T0 定时中断计数uint T1_count;/T1 定时中断计数char M_temper_up;/温度上限char M_temper_down;/温度下限char M_temper_AI;/设置中温
3、度char M_temper_conver;/当前温度bit B_set,B_set_AI;/温度设置标志bit B_set_T0,B_set_T1;/定时器中断标志uchar Set_count;/函数声明void T1int_init();/* 定时器 T1 初始化:设置工作方式赋初值开启中断 */void T0int_init();/* 定时器 T0 初始化:设置工作方式赋初值开启中断*/void Set_temper();/* 设置上下限温度:按键次数 =1:显示上限温度并处于操作状态按键次数 =2:显示下限温度并处于操作状态按键次数 =3:保存设置值并退出*/void Inc_tem
4、per();/* 提高设置的温度*/void Dec_temper();/* 降低设置的温度*/void LED_data_BCD(char Disp_dat);/* 数码管显示温度*/void PT100_delay(uint count);/* PT100 延时程序 */void PT100_reset(void);/*PT100 复位初始程序:根据 PT100 要求对其进行复位初始控制 */bit PT100_readbit(void) ;*/*PT100 位读子程序: 从 PT100 取出一位数据 uchar PT100_readbyte(void);/*PT100 字节读子程序: 读
5、出的一字节数据并返回数据值 */ void PT100_writebyte(uchar dat);/*PT100 字节写子程序: 将输入参数值写入 PT100 */void PT100_change(void); /启动 PT100 温度转换uchar PT100_Gettemper(void);/*读取PT100温度数据:单线方式读取PT100转换的温度数据,并返回处理后的温度值*/void Delay_ms(uint count);/延时子程序:延时 count (ms)void main() uchar M_temper_curr;SP=0x50;/堆栈起始地址M_temper_up =
6、100;/初始温度上下限M_temper_down=0;Delay_ms(500);T0int_init();/T0 T1 初始化T1int_init();while(1)if (B_set_T0)/T0 定时读取温度标志EA=0;/关总中断B_set_T0=0;if(!B_set)/上下限设置状态时,取消温度读取PT100_change();/读取温度M_temper_curr=PT100_Gettemper();M_temper_conver=(M_temper_curr 126 ? (127-M_temper_curr):M_temper_curr);/转换正负温度LED_data_BC
7、D(M_temper_conver);/转换 LED 显示EA=1;if (B_set_T1) /T1 定时 LED 显示扫描标志TR1=0;B_set_T1=0;+T1_count;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 =
8、 0;break;case 4:LED_S3 = 1;P_LED = LED_DISP_TABM_LED4;LED_S4 = 0;T1_count = 0;break;TR1=1;/开 T1 定时器if (M_temper_converM_temper_down)&(M_temper_converM_temper_up) / 温度在上下限范围内BUZZ=B_BUZZ_OFF;RED_ALARM=B_RED_OFF;GREEN_ALARM=B_GREEN_OFF;else BUZZ=B_BUZZ_ON;if(M_temper_converM_temper_down)RED_ALARM=B_RED
9、_ON;/ 低于下限温度elseGREEN_ALARM=B_GREEN_ON;/ 高于上限温度/按键检测if (!KEY_S1)Set_temper(); / 设置温度Delay_ms(200);if (B_set)if (!KEY_S2)Inc_temper(); / 温度加Delay_ms(200);if (!KEY_S3)Dec_temper(); / 温度减Delay_ms(200);void Set_temper()/设置温度/设置标志/设置上限+Set_count;B_set = 1;if (Set_count = 1)B_set_AI = 0; LED_data_BCD(M_te
10、mper_up);M_temper_AI = M_temper_up; / 将原上限温度取出else if (Set_count = 2)/设置下限B_set_AI = 1;M_temper_up = M_temper_AI; /存入新的上限温度LED_data_BCD(M_temper_down);M_temper_AI = M_temper_down;/ 将原下限温度取出else / 确认 退出B_set = 0;/存入新的下限温度Set_count = 0;M_temper_down = M_temper_AI;void Inc_temper()/温度加if (B_set_AI)/判断当
11、前是设置上限 (0)还是下限 (1)if (M_temper_AI M_temper_MAX) & (M_temper_AI M_temper_up)M_temper_AI+;/ 不能加到上线温度和温度范围elseif (M_temper_AI M_temper_MIN)M_temper_AI-;elseif (M_temper_AI M_temper_MIN) & (M_temper_AI M_temper_down)M_temper_AI-;/PT100 特定延时LED_data_BCD(M_temper_AI);void PT100_delay(uint count)uint i;whi
12、le(count)i=200;while(i0)i-;count-;void PT100_reset(void) /PT100 复位初始 uint i;DQ=0;i=103;while(i0)i-;DQ=1;i=4;while(i0)i-;bit PT100_readbit(void) /PT100 位读子程序uint i;bit dat;DQ=1;_nop_();DQ=0;i+;DQ=1;i+;i+;dat=DQ;i=8;while(i0)i-;return (dat);uchar PT100_readbyte(void) /PT100 字节读子程序uchar i,j,dat;dat=0;f
13、or(i=1;i=8;i+)j=PT100_readbit();dat=(j1);/ 把读取的数据一位一位放进去return(dat);void PT100_writebyte(uchar dat) /PT100 字节写子程序uint i;uchar j;bit testb;for(j=1;j1;if(testb) /write 1DQ=0;i+;i+;DQ=1;i=8;while(i0)i-;elseDQ=0; /write 0i=8;while(i0)i-;DQ=1;i+;i+;void PT100_change(void) / 启动 PT100 温度转换PT100_reset();PT1
14、00_delay(1);PT100_writebyte(0xcc); PT100_writebyte(0x44); uchar PT100_Gettemper()/读取 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();M_LED2 = (0-Disp_dat) / 10;temp=M_temper_H;/温度数据处理temp0xf0)/正(0) 负(1)温度值temp=(0x1000-(temp&0x0fff)/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
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 ISO/IEC 27553-2:2025 EN Information security,cybersecurity and privacy protection - Security and privacy requirements for authentication using biometrics on mobile devices
- 代驾司机安全岗位面试问题及答案
- 2025届河北省阜平一中化学高二下期末质量检测模拟试题含解析
- 2025届云南省保山市昌宁一中化学高一下期末经典模拟试题含解析
- 母鸡孵化小鸡管理办法
- 公务接待出差管理办法
- 保健食品备案管理办法
- 巨细胞病毒抑制机制-洞察及研究
- 公安监管医院管理办法
- 三查四定知识详解与应用
- 机加工工艺培训
- CT增强扫描造影剂外渗的预防与处理
- GA 1283-2015住宅物业消防安全管理
- midas分析设计原理
- 质量管理手册(隧道)(中交路桥建设有限公司)
- 黄大年式教学团队申报材料
- 出香港货物发票样板样本空白
- 医院免疫室标准化操作程序免疫室内质量控制操作指南(ELISA)人民医院检验科免疫SOP人民医院质量管理体系课件
- 柳州市柳东新区南庆安置区项目工程基坑支护方案
- 卵巢肿瘤ppt课件
- 发电可靠性考试真题及答案
评论
0/150
提交评论