《项目八 电子体温计的制作与实现电子教案 中职 单片机c语言程序设计及仿真.doc》由会员分享,可在线阅读,更多相关《项目八 电子体温计的制作与实现电子教案 中职 单片机c语言程序设计及仿真.doc(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 项目八 电子体温计的制作与实现 教学设计任务(课题)名称任务1 模拟温度传感器LM35授课班级课 型理实一体化课 时4授课时间任务(教学内容)描述本任务主要学习ADC0808的工作原理;LM35的工作原理;编写模拟温度传感器LM35的程序等内容。教学目标知识目标理解ADC0808的工作原理;理解LM35的工作原理;理解温度计算原理;能力目标会利用Keil软件编写模拟温度传感器LM35的程序;会利用Proteus软件仿真调试模拟温度传感器LM35程序;情感态度与价值观目标培养学生自主讨论学习的能力;教学重难点重点ADC0808的工作原理;难点ADC0808的工作原理;教学方法讲授法、分组讨论教
2、学资源多媒体教学设备、PPT、EDA仿真机房教学过程教学环节教学内容知识点与技能点一、布置任务任务描述利用温度传感器LM35检测外界环境温度,检测结果经LM358放大后,送到ADC0808中进行模数转换,转换结果送给单片机AT89C51,通过单片机控制1602显示模块将温度显示在显示屏上。二、新课讲解1.ADC0808工作原理ADC0808采用双列直插式(DIP)封装,具有28条引脚,各引脚功能如下:IN0IN7:8路模拟量输入端,通过3根地址译码线ADDA、ADDB、ADDC来选通一路。D0D7:A/D转换后的数据输出端,为三态可控输出,故可直接和微处理器数据线连接。8位排列顺序是D7为最低
3、位,D0为最高位。ADDA,ADDB,ADDC:模拟输入通道地址选择线。模拟通道选择地址信号,ADDA为低位,ADDC为高位。2.LM35工作原理LM35是由National Semiconductor所生产的模拟温度传感器,其输出电压与摄氏温标呈线性关系,即0时输出电压为0V,每升高1,输出电压增加10mV,这使得A/D转换后的“电压温度”换算非常简单。在常温下,LM35不需要额外的校准处理即可达到0.25的线性度和0.5的精度。其电源供应模式有单电源与正负双电源两种,其接脚如图8-1-3所示,双电源供电可以测量负温度,测量范围是55110;单电源模式在25下电流约50mA,工作电压较宽,可
4、在420V的供电电压范围内正常工作非常省电。温度与电压的转换公式为:3.LM358放大器4.数字温度计的数学计算原理假设当前温度为T,LM35输出电压为Uo,Uo经过运算放大电路放大5倍后变为5Uo,该信号输入到ADC0808的IN0,经过A/D转换后输出数字量为x。由于数字量x与ADC0808的输入电压值U关系为:U/5Vx/255,即Ux/51。而U5Uo,Uo0.01T,则:0.05Tx/51。因此温度T与数字量x的关系为:T20x/511.任务分析因为LM35的输出电压是毫伏级,而ADC0808的输入电压范围为05V,虽然在ADC0808的电压允许范围内,但电压信号较弱,直接进行模数转
5、换会导致数字量太小、精度低等不足,因此需要经过放大后再输入到ADC0808进行转换。LM35的输出电压范围为00.8V,放大5倍后,输出电压为04V,在ADC0808的输入电压范围05V之内,而LM35温度传感器的测温范围为080,完全可以满足日常生活的需要,所以设计放大倍数为5倍。2.程序流程图3.程序编写void conv_start(void) /ADC模数转换函数 ALE = 1; START = 1; delay_ms(1); ALE = 0; START = 0;int read_data(void) /读出ADC转换的结果函数 uchar i=0; OE = 1; conv_st
6、art(); while(!EOC); i = P3; OE = 0; return i;void init_interrupt() /定时器初始化函数TMOD = 0x02; TH0 = 0xfb; TL0 = 0xfb; EA = 1; ET0 = 1; TR0 = 1;void timer_T0(void) interrupt 1 /定时器中断函数(产生500KHz的时钟信号)clk = clk;void write_cmd(uchar com) /向1602模块写指令函数 RS = 0; LCDRW = 0; DATA_PORT = com; delay_ms(5); EN = 1;
7、delay_ms(5); EN = 0;void write_data(uchar dat) /向1602模块写数据函数 RS = 1; LCDRW = 0; DATA_PORT = dat; delay_ms(5); EN = 1; delay_ms(5); EN = 0;void convers_temp (void) /数字信号转温度函数并显示到1602模块上int res = 0; int vol = 0.0;res = read_data(); /将读出的数据放入变量res中 vol = 200/51*res; /放大10倍后进行电压到温度的转换(46度10460度)temp0 =
8、vol/100+48; /取放大之后的百位数值 temp1 = vol%100/10+48; /取放大之后的十位数值temp3 = vol%10+48; /取放大之后的个位数值 write_cmd(0x80); /写LCD的第一行的第一个字符存放地址for(frt=0;frt16;frt+)write_data(arrayfrt); /写字符数组“temperature”write_cmd(0xC6); /写LCD的第二行的第六个字符存放地址for(scn=0;scn10;scn+)write_data(tempscn); /写温度值void lcd_init (void) /LCD初始化函数
9、 delay_ms(5); /延时10ms write_cmd(0x38); /连续执行3次,等待LCM上电自复位结束 delay_ms(2); write_cmd(0x38); delay_ms(2); write_cmd(0x38); /功能设定,接口DB宽度8位,2行显示 delay_ms(2); write_cmd(0x08); /显示关闭 delay_ms(2); write_cmd(0x01); /清屏 delay_ms(2); write_cmd(0x06); /进入模式设定 delay_ms(2); write_cmd(0x0c); /显示开关控制void main() ini
10、t_interrupt(); RS = 0; LCDRW = 0; EN = 0; lcd_init(); while(1) convers_temp(); 4.程序仿真学生:在机房电脑上完成程序录入、仿真。教师:巡回指导。讲解仿真结果三、课堂总结1.学生总结(1)你的收获有哪些?(2)你还有哪些知识没有掌握好?2.教师总结点评作业布置试用4位7段数码管来显示最终温度值,请编写程序来实现该控制电路。 项目八 电子体温计的制作与实现 教学设计任务(课题)名称任务2电子体温计的制作与实现授课班级课 型理实一体化课 时4授课时间任务(教学内容)描述本任务主要18B20的工作原理及读取温度方法;电子体
11、温计程序编写及仿真等内容。教学目标知识目标理解18B20的工作原理;掌握18B20读数据原理及驱动程序;能力目标会编写电子体温计语言程序;会利用Proteus软件调试仿真电子体温计程序;情感态度与价值观目标培养学生自主讨论学习的能力;教学重难点重点18B20读数据原理及驱动程序难点18B20读数据原理及驱动程序教学方法讲授法、分组讨论教学资源多媒体教学设备、PPT、EDA仿真机房教学过程教学环节教学内容知识点与技能点一、布置任务1.任务描述利用18B20制作一个电子体温计,要求能够测量人体温度,并在4位共阳数码管上显示出来。二、新课讲解1.DS18B20的结构DS18B20的内部有64位的RO
12、M单元和9字节的暂存器单元。64位ROM包含了DS18B20唯一的序列号(唯一的名字)。2.DS18B20工作过程DS18B20的一般工作过程为:初始化发送ROM操作命令发送存储器操作命令读写数据。(1)初始化时序(2)单总线读/写时序3.数据处理TCL、TCH为转换后的温度数据低、高字节数据。当配置为12位采样精度时,数值乘以0.0625即得实际温度值;TH、TL分别为高、低温度超限报警阈值。配置字节,为定义采样精度,可选912位A/D转换。位数不同,转换的速度也不同。出厂时被设置为12位模式。4.DS18B20的操作命令(1)ROM操作命令读取ROM0x33:可读出64位编码:匹配ROM0
13、x55:以此指令对某一个1820操作;跳过ROM0xCC:用于总线只有一个1820;搜索ROM0xFO:用于一次读取多个1820的6位编码;报警搜索0xEC:从多个1820中搜索哪个在报警;(2)存储器操作命令温度转换0x44:启动DS18B20进行温度转换读暂存器0xBE:读暂存器9个字节内容;写暂存器0x4E:将数据写入暂存器的TH、TL字节;复制暂存器0x48:把暂存器的TH、TL字节写到E2RAM中;调回暂存器0xB8:把E2RAM中的TH、TL字节写到暂存器TH、TL字节;读电源供电方0xB4:启动DS18B20发送电源供电方式的信号给主CPU。1.任务分析(1)根据电路分析可知:单
14、片机的P0端口作为四位共阳数码管的数据总线,由两个74HC573锁存器分别控制段码和位码。单片机P2.2作为DS18B20数据传输端口。(2)DS18B20驱动函数如下:DS18B20初始化函数void ds_reset();读DS18B20函数:首先读取一位bit ds_read_bit();再读取一个字节uchar ds_read_byte();读取温度实现温度转换函数:uint read_temp();2.程序流程图3.程序编写/*18b20初始化*/void ds_reset() DQ=1; delayus(5); DQ=0; delayus(80); DQ=1; delayus(14
15、); if(DQ=0) flag=1; else flag=0; delayus(20);/*读一位18b20*/bit ds_read_bit() bit dat; DQ=0; _nop_(); _nop_(); DQ=1; _nop_(); dat=DQ; delayus(10); return dat;/*读一个字节*/uchar ds_read_byte() uchar i,j,k; for(i=0;i8;i+) j=ds_read_bit(); k=(j1); return k;/*写一个字节*/void ds_write_byte(uchar dat) uchar i; for(i
16、=0;i1; delayus(6);/*读取温度*/uint read_temp() uchar a,b; ds_reset(); ds_write_byte(0xcc); ds_write_byte(0xbe); a=ds_read_byte(); /低8位 b=ds_read_byte(); /高8位 temp=b; temp=temp8; temp=temp|a; temp=temp*0.0625*10+0.5; return temp;void segxian(uint x) a0=x/100; a1=x%100/10+10; a2=x%10; a3=20; segdisplay(); /*主函数*/void main() while(1) ds_reset(); ds_write_byte(0xcc); ds_write_byte(0x44); segxian(read_temp(); /温度监测 4.程序仿真学生:在机房电脑上完成程序录入、仿真。教师:巡回指导。讲解仿真结果三、课堂总结1.学生总结(1)你的收获有哪些?(2)你还有哪些知识没有掌握好?2.教师总结点评作业布置利用LCD1602、DS18B20制作电子体温计,完成电路设计及程序仿真。