电子信息工程专业毕业论文—单板微型计算机论文27410.doc

上传人:文库蛋蛋多 文档编号:4029547 上传时间:2023-04-01 格式:DOC 页数:19 大小:532.50KB
返回 下载 相关 举报
电子信息工程专业毕业论文—单板微型计算机论文27410.doc_第1页
第1页 / 共19页
电子信息工程专业毕业论文—单板微型计算机论文27410.doc_第2页
第2页 / 共19页
电子信息工程专业毕业论文—单板微型计算机论文27410.doc_第3页
第3页 / 共19页
电子信息工程专业毕业论文—单板微型计算机论文27410.doc_第4页
第4页 / 共19页
电子信息工程专业毕业论文—单板微型计算机论文27410.doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《电子信息工程专业毕业论文—单板微型计算机论文27410.doc》由会员分享,可在线阅读,更多相关《电子信息工程专业毕业论文—单板微型计算机论文27410.doc(19页珍藏版)》请在三一办公上搜索。

1、温度计学院、 专业 物理与电子信息学院 电子信息工程 研 究 方 向 单板微型计算机 基于51单片机设计简单的温度计摘要 随着科技的不断发展,电子设备的应用已经取得了非凡的成就。即使是高度集成化的今天,单片机技术依旧在我们的日常生活中占据着重要的地位。温度是日常生活、工业、医学、环境保护、化工、石油等领域最常用到的一个物理量。测量温度的基本方法是使用温度计直接读取温度。最常见到得测量温度的工具是各种各样的温度计。它们常常以刻度的形式表示温度的高低,人们必须通过读取刻度值的多少来测量温度。利用单片机和温度传感器构成的电子式智能温度计就可以直接测量温度,得到温度的数字值,既简单方便,有直观准确。本

2、文讲叙了一种基于51系列单片机的数字温度计的设计过程与仿真结果。通过Proteus画图以及Keil编程,成功的仿真出了能够实时测量温度并显示温度的数字温度计。关键字单片机,温度计,仿真,AT89C52,DS18B20The Design of The Intelligence IC card Ammeter姓名英文(姓在前,名在后)School of Physics and Electronic Information, Huai Bei Normal University, Anhui Huaibei, 235000Abstract With the continuous developme

3、nt of science and technology,the application of electronic equipment has made remarkable achievementsEven the highly integrated single-chip technology today,still in our daily life plays an important role inTemperature is the daily life, industry, medicine, environmental protection,chemical industry

4、,petroleum and other areas of the most commonly used of a physical quantityTemperature measurement is the basic method used to directly read temperature thermometerThe most common to measuring the temperature of the tool is various thermometerThey often graduated form high and low temperature,people

5、 must read through the scale value number to measure temperatureUsing single chip computer and a temperature sensorThe electronic type intelligent thermometer can measure temperature,the temperature of the digital values,are simple and convenient,is intuitive and accurateThis article tells of a micr

6、ocontroller based on the Series 51 digital thermometers design process and simulation resultsThrough the Proteus drawing and keil programming,a successful simulation of a real-time temperature measurement and display the temperature of the digital thermometer。Keywords:Single-chip Microcomputer,Therm

7、ometer,simulation,AT89C52,DS18B20。目 录1 引言11.1设计的目的11.2设计的背景12 方案设计22.1 DS18b20的选取22.2 AT89C51单片机的选取22.3 LCD1602液晶的选取23 硬件设计33.1 时钟电路33.2 复位电路33.3 DS18b20温度传感电路43.4 1602液晶显示电路44 软件设计64.1 DS18b20与单片机之间的信息交换程序74.2 单片机向1602发送命令及数据的程序74.3 主函数对各子函数的调用过程75 仿真结果96 总结与体会10参考文献11附录1121 引言1.1设计的目的通过本次设计,锻炼自己的动

8、手能力,加深对protel,protues等软件的了解,加深对单片机原理、接口课程的全面认识、复习和掌握,对单片机的应用进一步的了解。1.2设计的背景温度计在现在的生活、工业生产方面都有着广泛的应用,好多场合都需要测量温度,温度计的精度是选择温度计的重要指标,尤其许多重要场合温度的测定,误差必须限定在某一很小的范围内,因此要设计一个温度计,做好测量精度误差也是最重要的工作之一。本课程设计要求能够测量的温度范围是-50摄氏度到+110摄氏度,测量误差在0.5C之内。综合这两个条件,经过查找分析,可以选择温度传感器。该传感器测量范围是-55C到+125C,其温度控制寄存器为16位,其中高5位是符号

9、位,0表示正,1表示负,低11位表示温度数值,负温度用补码形式表示,在分辨率为0.0625C,即最低位的一代表0.0625C,符合精度要求。设计时,要求显示到小数点后一位,由于误差在0.5C之间,因此可以只让小数点后的数显示0与5,当实际温度的小数点位为0到4时,显示0,当实际温度的小数点位为5到9时,显示5。 2 方案设计要求用单片机设计温度计并在液晶上显示,这就要求必须有个温度传感器来收集温度信息,送入主控部分,再由主控部分将数据送显示部分显示。主控电路测温电路显示电路图2.1 系统方案框图总体设计框图为:2.1 DS18b20的选取 DS18B20的集成度很高导致该元器件需要的外围电路相

10、当简单。并且DS18B20体积小,输出方便也使得该方案更加节省空间资,需要的元器件少更加经济实惠。准确度:DS18B20是高封装的传感器件,能够直接和单片机进行串口通信,获取温度值较为简便。测温范围55+125,固有测温分辨率05。通信信号为数字信号,抗干扰能力强。综上所述,本设计选取DS18b20作为温度传感芯片。2.2 AT89C51单片机的选取本次设计电路相对简单,转换速率要求不高一般的单片机便可以担此任务,因此,单片机的选取应本着低成本的原则。AT89C51是一种带4K字节FLASH存储器(FPEROMFlash Programmable and Erasable Read Only

11、Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。因此本设计选取AT89C51单片机作为控制器。2.3 LCD1602液晶的选取由于本次设计要求显示的内容简单且全

12、是字符形式的,因此液晶的选取应本着简单、节约成本的原则。LCD1602是字符型液晶,显示字母和数字比较方便,控制简单,成本较低。因此选取LCD1602液晶作为显示器。3 硬件设计用到的器件有DS18b20、1602液晶及AT89C51(含晶振与复位电路)。硬件设计框图为:图3.1 硬件设计框图51单片机时钟电路复位电路DS18b20LCD1602显示器3.1 时钟电路晶振电路由一个晶振与两个电容连接组成,与单片机的18、19管脚相连,另一端接地,电路图为:图3.2 单片机时钟电路电容大小没有固定值,一般5到30pf,晶振是给单片机提供工作信号脉冲的。这个脉冲就是单片机的工作速度。一般用内部振荡

13、方式,这种方式比较稳定。晶振频率为12MHZ,单片机工作速度就是每秒 12M。单片机的工作频率是有范围的,不能太大,一般 24M就不上去了,不然不稳定。3.2 复位电路复位电路由一个有极性电容、一个电阻与一个按键连接而成,一端连单片机的RST端,另一端接电源,电源另一端接单片机的EA。其中电容是通过充放电来实现维持一段时间的高电平,电容充电时间与R C的值成正比,当按下按键时,由于电容充电,RST维持一段时间高电平以达到复位的目的。一般情况下,选择大小为10到30uF的电容,而电阻一般选用1到10K的。电路图为:图3.3 单片机与复位电3.3 DS18b20温度传感电路此部分电路负责温度信号的

14、采集、将温度信号转换成数字代码储存在温度控制寄存器中,向单片机发送温度数据等重要功能,主要由DS18b20芯片来完成,该电路的电路图为:图3.4 DS18b20电路其中DQ为DS18b20的数据输入/输出端引脚,与单片机的P2.0口相连,单片机通过P2.0口向DS18b20发出各种命令,并读取其转换后的温度数据。3.4 1602液晶显示电路其电路图为:图3.5 1602液晶电路该电路为我们肉眼直接观看的部分,它会时时的将DS18b20收集到的温度信息显示出来。数据端口接P3口,数据/命令控制端、读写控制端、与使能端分别接单片机的P2.5、P2.6与P2.7口,单片机也是通过这3个口向1602液

15、晶发送命令及数据,以达到控制1602显示的功能。 4 软件设计对DS18b20初始化设定1602的显示位置1602对转换的结果进行处理分离出要显示数据的各位获取转换数据结果1602对转换的结果进行符号判定对1602初始化将要显示的各位依次在1602上显示开启温度转换在液晶中写入“temperature is:”设定1602的显示位置开始软件部分的设计主要是写程序的一个过程,写程序前先应画一个整体流程如下:图4.1 软件程序流程图4.1 DS18b20与单片机之间的信息交换程序首先对DS18b20进行初始化,以释放输入/输出总线并延时,由于只用到一片DS18b20,因此可以发命令跳过ROM指令,

16、跳过的指令是向DS18b20发送命令字0xcc,然后向DS18b20发出命令字0x44,来启动温度转换,然后延时一段时间,确保温度转换完成。温度转换完成后要获取转换的数据,同样要先对DS18b20进行初始化并延时,并跳过ROM指令,要获取转换结果要从字节0开始,直到字节9结束,要用到读暂存器指令0xbe,然后便开始读取转换的数据,由于转换结果的数据是16位的,而每次读取8位,要读取两次,先读取低8位,再读取高8位,分别存起来,由于获得的数据都是补码形式,而负温度的补码与原码又不相同,因此读完之后要进行符号位的判定,根据温度的正负不同分别对数据进行不同的处理,都转换成我们要的温度数值,但要显示数

17、据是将各位数据分离出来,而小数点后一位的数据不好分离,为方便分离,将实际温度数值乘以10,将其挪到小数点前。4.2 单片机向1602发送命令及数据的程序1602液晶,能够同时显示16x2即32个字符(16列2行)。对1602进行操作首先要知道如何向1602液晶写数据与写指令,对1602的写操作是将读/写选择端R/W端置地,然后通过控制数据/命令选择端RS来控制。当写指令时,将RS置低,然后给使能端一个从低到高跳变的脉冲并延时一段时间便可以了,最后释放使能端置为低电平;当写数据时,将RS置高,然后给使能端一个从低到高跳变的脉冲同样延时一段时间,最后也要释放使能端置为低电平。知道了如何向1602中

18、写数据与写命令便可以控制1602显示,但在让1602正式显示之前还要对其进行初始化。对1602的初始化首先要写入显示模式设置命令字0X80,用来设置16x2显示,5x7点阵,8位数据端口;然后再写入显示开/关及光标设置指令,这里我们写入0X0C,设置开显示,不显示光标,光标不显示;再写入显示开/关及光标设置指令0X06,设置当读或写一个字符后地址指针加一且光标加一,当写一个字符,整屏显示不左移;最后写入清屏指令0X01进行显示清屏操作。4.3 主函数对各子函数的调用过程首先整体初始化,然后将液晶初始化,由于上电后DS18b20默认85摄氏度,因此要在显示前先进行温度转换并加程序延时,使显示的时

19、候直接显示我们要的温度值,然后进入正式显示部分,正式显示部分为循环执行的,包括每次都进行一次温度转换,并读取转换结果,之后再将温度数据中的各位分离出来,然后确定液晶显示字符的位置,依次显示符号、百位、十位、个位、小数点及小数点后一位等字符,每显示一个字符,都要延时一段时间。整体程序设计见附录1。5 仿真结果在Proteus中画好连线图,然后往单片机中下载好编译程序后生成的hex文件,就可以进行仿真了,其结果如图所示:6 总结与体会附录1/* writer:shopping.w */#include #include #define uint unsigned int#define uchar

20、unsigned char#define delayNOP() _nop_();_nop_();_nop_();_nop_();/* DS18B20 指令*/ #define ds18B20_READ_ROM 0x33 / 读 ROM 指令 #define ds18B20_MATCH_ROM 0x55 / 匹配 ROM 指令 #define ds18B20_SKIP_ROM 0xCC / 跳过 ROM 指令 #define ds18B20_SEARCH_ROM 0xF0 / 搜索 ROM 指令 #define ds18B20_ALARM_SEARCH 0xEC / 报警搜索指令 #define

21、 ds18B20_WRITE_SCRATCHPAD 0x4E / 写暂存寄存器指令 #define ds18B20_READ_SCRATCHPAD 0xBE / 读暂存寄存器指令 #define ds18B20_COPY_SCRATCHPAD 0x48 / 复制暂存寄存器指令 #define ds18B20_CONVERT_T 0x44 / 启动温度转换指令 #define ds18B20_RECALL_E2 0xB8 / 重新调出 E2PROM 的数据 #define ds18B20_READ_POWER_SUPPLY 0xB4 / 读电源#define LCD_Data P0 /定义数据指

22、令端口sbit ds18B20_data = P20; /温度探头(DQ)数据端口对应的单片机引脚 sbit LCD_RS = P25;sbit LCD_RW = P26;sbit LCD_EN = P27;uchar Minus_Flag=0;uchar code Temp_Disp_Title=Current Temp : ;uchar Current_Temp_Display_Buffer=TEMP: ;uchar Temp_Value=0x00,0x00;uchar Display_Digit=0,0,0;void Delay(uint x) while(-x);/*延时10us*/

23、/先执行一个LCALL指令(2 s),然后执行6个_NOP_( )语句(6 s),最后执行了一个RET指令(2 s) void Delay_10us(void) _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); /*延时 time*15us* */void delay_15us(uint time) uint i; for (i=0;itime;i+); void DelayXus(uint x) uchar i;while(x-) for(i=0;i480us delay_15us(40); / 延时 480-960us ds18B2

24、0_data = 1; / 拉高总线,延时 15us-60us 后等待ds18B20 响应 delay_15us(2); / 15us-60us for (i=0;i6;i+) / 60us-240us delay_15us(1); if (ds18B20_data=0) RstFlag=0; / 接收 ds18B20 的存在信号 delay_15us(20); / 240us return RstFlag; /*写一个字节 ds18B20 数据、命令子程序* 功能:向 ds18B20 写入数据或命令 入口:待写入 ds18B20 的数据或命令 出口:无 */ void Writeds18B2

25、0(uchar ch) uchar i; ds18B20_data = 1; / 拉高总线,延时 1us,准备启动 _nop_(); for (i=0;i1; /先写低位,后写高位 _nop_(); /*读一个字节 ds18B20 数据子程序* 功能:从 ds18B20 读出数据 入口:无 出口:读出的 ds18B20 的数据 */ uchar Readds18B20(void) uchar i,ch; ch = 0; ds18B20_data = 1; / 拉高总线,延时 1us,准备启动 _nop_(); for (i=0;i1; if (ds18B20_data = 1) / 接收 ds

26、18B20 的数据 ch = ch+0x80; delay_15us(2); / 延时 45us,保证整个读命令有 60us return ch; /*启动 ds18B20 温度转换程序* 功能:读取 18B20 的温度值 入口:无 出口:0xffff18B20 不正常 0x8000温度低于零度 01250摄氏温度(0125) */ uint GetTempValue(void) uchar temp1=0,temp2=0; uint T=0; float TC; /TC(浮点数)实际温度 if(!Rstds18B20() /如果探头连接正常 Rstds18B20(); / 复位 ds18B2

27、0 Writeds18B20(ds18B20_SKIP_ROM); / 跳过 ROM 操作 Writeds18B20(ds18B20_CONVERT_T); / 启动 ds18B20 温度转换 if(!Rstds18B20() / 如果探头连接正常 Rstds18B20(); / 复位 ds18B20 Writeds18B20(ds18B20_SKIP_ROM); / 跳过 ROM 操作 Writeds18B20(ds18B20_READ_SCRATCHPAD); /* 发读 ds18B20 数据, 前两位是温度值 */ temp1 = Readds18B20(); / 温度值的低位数据 te

28、mp2 = Readds18B20(); / 温度值的高位数据/ temp1=0x56;/ temp2=0x05; T = temp1+(temp28); if(temp2&0xfc)=0xfc) Minus_Flag=1;TC=T+1; else Minus_Flag=0;TC=T; / TC=T*0.0625; /将测量的数据转换成实际温度 /TC=0x0556; return (TC*0.625); /返回 TC else return 0xffff; else return 0xffff; void Display_Temperature(uint num)uchar m,n,q,i;

29、 m=num/100; /得到十位 n=num%100/10; /得到个位 q=num%10; /对上述整数求余得到小数点后第一位 Display_Digit2 = m;Display_Digit1 = n;Display_Digit0 = q; if(Minus_Flag) Current_Temp_Display_Buffer7 =-; else Current_Temp_Display_Buffer7 = ;Current_Temp_Display_Buffer11 = Display_Digit0 + 0;Current_Temp_Display_Buffer10 = .;Curren

30、t_Temp_Display_Buffer9 = Display_Digit1 + 0;Current_Temp_Display_Buffer8 = Display_Digit2 + 0;if(Display_Digit2 = 0)Current_Temp_Display_Buffer8 = ;Set_LCD_POS(0x00);for(i=0;i16;i+)Write_LCD_Data(Temp_Disp_Titlei); Set_LCD_POS(0x40);for(i=0;i16;i+)Write_LCD_Data(Current_Temp_Display_Bufferi); /Set_L

31、CD_POS(0x4d);/Write_LCD_Data(0x00);Set_LCD_POS(0x4d);Write_LCD_Data(C); void main() uint Temperature; LCD_Initialise();Delay(50000);while(1)Temperature=GetTempValue();Display_Temperature(Temperature);/Display_Temperature(865);DelayXus(100); 致谢 在论文完成之际,本人谨向我的指导老师致以衷心的感谢,导师严谨的治学态度、敏锐的直觉和对科学的执着追求都深深地影响了我,他对我的严格要求,让我学到了知识,掌握了科研的方法,也获得了实践锻炼的机会。同时,他对论文中的文字斟酌,对论文要求的尽善尽美,都让我觉得学习是一种享受,更使我终生受益。在此祝愿他身体健康、前程似锦。对于淮北煤炭师范学院物理系我的师长和同学给予的指导和帮助,在此表示衷心的感谢!在他们的关心帮助下,我很顺利完成了毕业论文,同时感谢物理系09级电子信息工程班我的同学们,感谢他们大学四年来在学习和生活上给予我的帮助和支持。在即将大学毕业之际,我很感激他们为我做出的一切付出,祝他们以及给予我关爱的朋友们幸福、健康!

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号