基于s08的温度检测显示系统的设计(编辑修改稿)内容摘要:
/*禁止转换完成中断,单次转换 */ 13 } /******************************************************\ * *函数名称: convert_begin() * *作用:启动 A/D转换 \******************************************************/ unsigned int convert_begin(void) { unsigned int Vtemp。 ADC1SC1=0X00。 /* 写 ADC1SC1启动转换 */ while(!(ADC1SC1_COCO))。 /* 等待转换结束 */ Vtemp=ADC1RL。 /*读取转换结果 */ return Vtemp。 /* 返回结果 */ } 热敏电阻阻值和温度的非线性对性模块原理及程序 热敏电阻的阻值温度特性曲线是一条指数曲线,非线性度较大,因此在使用时要进行线性化处理。 可采用简单的 查表法从电压值中查出相应的温度值。 预先将一系列温度与电压对应值存贮到 AW60 微控制器程序存储器中的一个表内,当给定任意一个电压值时,即可通过查表得出所对应的温度值。 当表中没有对应的电压值时,可找出电压值在表中的区域,然后在区间的相邻两点经线性插值得出对应温度值。 存入表中点的多少影响温度值的精度。 这里以选 16 个点为例,选 8 位模式 A/D 可转换结果范围是 0~255,因此每两个点的间隔是 16。 使用插值算法如下: 1_12/121 xV a lu eADxxyyyT ( ) 式中: T —— 当前温度; ValueAD_ —— 当前温度的 A/D 转换值; 2y , 1y —— 相邻点的温度值; 2x , 1x —— 相邻点的 A/D 转换值; 当 A/D 转换结果在区间 0~16 或 240~255 时,不再计算,直接按温度值 79℃或40℃处理。 14 C语言编写的获得温度值的节选程序代码如下: /******************************************************\ * *函数名称: GetTemperature() * *作用:查表及插值程序得到温度值 \******************************************************/ signed int GetTemperature(int Value) { signed int T。 int i。 if(Value= V_T_table[0][1]) T=V_T_table[1][1]。 /* 当 A/D 转换值在 0~16 时,按 79 摄氏度赋值 */ else if(Value= V_T_table[0][15]) T=V_T_table[1][15]。 /* 当 A/D 转换值在 240~255 时,按 40 摄氏度赋值 */ else { for(i=1。 i=14。 i++) { if(Value== V_T_table[0][i]) /* 表中是否有值 */ { T=V_T_table[1][i]。 /* 有值,赋值给 T */ break。 } else if((Value V_T_table[0][i])amp。 amp。 (Value V_T_table[0][i+1])) { T=((V_T_table[1][i+1]V_T_table[1][i])*100)/16。 T=T*(ValueV_T_table[0][i])。 /* 没有,找到区间并插值 */ T=V_T_table[1][i]+T/100。 break。 } } 15 } return T。 /* 返回温度值 T */ } 温度显示模块程序 LCD1602 采用 +5V 电压驱动,其数据接口和读写 控制引脚与 MC9S08AW60 单片机的 I/O 口直接相连。 MC9S08AW60 单片机将采集到的模拟电压值经过 A/D 转换后,查表得到温度值,通过 I/O 口传输给 LCD1602 显示。 C语言编写的温度值显示的节选程序代码如下: /******************************************************\ * *函数名称: LCD1602_init() * *作用 LCD1602初始化 \******************************************************/ void LCD1602_init(void) { LCD1602_DB(0x08 ,0x03)。 /*显示模式 8位总线 双行显示 5*7点阵 */ RS_RW_E_init()。 LCD1602_DB(0x04 ,0x01)。 /*光标移动 每输入一次该指令 光标向右移一格 整体画面不滚动 */ RS_RW_E_init()。 LCD1602_DB(0x0C ,0x00)。 /* 屏幕开关 打开显示屏 不显示光标 不闪烁 */ RS_RW_E_init()。 LCD1602_DB(0x06 ,0x00)。 //输入方式 RS_RW_E_init()。 LCD1602_DB(0x01 ,0x00)。 //清屏 RS_RW_E_init()。 } /******************************************************\ * *函数名称: LCD1602_display() * *作用 LCD1602 显示 16 \******************************************************/ void LCD1602_display(void) { if(neg_flag) /* 如果是负,最高位显示 */ { LCD1602_DB(0x00,0x08)。 /*需要显示的字符的地址 */ RS_RW_E_init()。 LCD1602_write_dat(0x0d,0x02)。 } else /* 如果是正 ,最高位显示 +*/ { LCD1602_DB(0x00,0x08)。 /*需要显示的字符的地址 */ RS_RW_E_init()。 LCD1602_write_dat(0x0b,0x02)。 } LCD1602_DB(0x01,0x08)。 /*需要显示的字符的地址 */ RS_RW_E_init()。 LCD1602_write_dat(Disp_Value[0][s],Disp_Value[1][s])。 LCD1602_DB(0x02,0x08)。 /*需要显示的字符的地址 */ RS_RW_E_init()。 LCD1602_write_dat(Disp_Value[0][g],Disp_Value[1][g])。 } 17 总结 硬件方面。 选择硬件,要比较同类产品的稳定性、功耗、体积、价格等,另外还要符合设计的全部要求。 在显示方案上,利用 LCD1602 显示,程序简单,在硬件电路的设计方面,用 Protel绘制电路图时要标明元件的大小,有些封装元件要标明名称和封装。 其次,软件方面。 把程序分块编写能够有效地提高正确性和编程效率。 通过本次实验,我学习了很多关于 S08AW60 的知识,并能通过所学设计一款基于 S08AW60 的温度测量显示系统,虽然有很多不足,也有很多不理解的地方,但是通过学习和讨论,一一得到了解决,受益匪浅。 18 参考文献 [1] 王威.嵌入式微控制器 S08AW 原理与实践 [M].北京 :北京航空航天大学出版社, 20xx [2] 陈杰 . 传感器与检测技术 [M].北京 :高教出版社, 20xx [3] 邵贝贝 . 龚光华 .单片机认识与实践 [M].北京 :北京航空航天大学出版 社,20xx [4] 阎石 .数字电子技术基础(第三版) . 北京:高等教育出版社, 1989 [5] 沈兰荪 .数据采集与处理 [M]北京 :能源出版社 ,1987 [6] 沙占友、王彦朋、孟志永 .单片机外围电路设计 .电子工业出版社, 20xx [7] 谢宜仁 .单片机实用技术问答 . 人民邮电出版社, 20xx [8] 孙传友、汉泽西 .测控系统原理与设计 .北京航空航天大学出版社, 20xx [9] 章吉良,周勇,戴旭涵等 . 微传感器原理、技术及应用 [M]. 上海 : 上海交通大学出版社, 20xx 19 附录 A 温度采集与显示程序 /*****************************************************\ * *文件名 * *MCU: MC9S08AW60 * *调试环境: CodeWarrior * *日期: \****************************************************/ include /* for EnableInterrupts macro */ include /* include peripheral declarations */ const unsigned char Disp_Value[2][10]={{0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09}, {0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03}}。 /*存放显示段码 */ const signed int V_T_table[2][17]={{0,16,32,48,64,80,96,112,128,144,160,176,192,208,224,240,2。基于s08的温度检测显示系统的设计(编辑修改稿)
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。
用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。