单片机原理及系统课程设计.doc_第1页
单片机原理及系统课程设计.doc_第2页
单片机原理及系统课程设计.doc_第3页
单片机原理及系统课程设计.doc_第4页
单片机原理及系统课程设计.doc_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机原理及系统课程设计报告单片机原理及系统课程设计评语:考勤(10)守纪(10)过程(40)设计报告(30)答辩(10)总成绩(100)专 业: 班 级: 姓 名: 学 号: 指导教师: 摘 要单片机是把中央量的C语言程序,然后连接硬件电路,通过与DS18B20温度传感器连接,将温度信号输出到LED数码管,可显示具体温度。仿真实验中数码管正确显示出传感器的温处理器(CPU)、随机存取存储器(RAM)、只读存储器(ROM)、输入/输出接口、定时器/计数器、中断系统等主要功能部件集成在一块半导体芯片上的数字电子计算机,主要用于控制,又称为微控制器或嵌入式控制器。本设计应用单片机进行温度测量,首先编写用于温度测度值,符合程序语言的设定。结果表明单片机通过与温度传感器后可用于温度的测量及显示,能促进仪表箱数字化、智能化、综合化等方面发展,应用领域相当广泛。关键词:单片机;温度测量;传感器;数码管;仿真AbstractSingle Chip Microcomputer is a Electronic Digital Computer which contains chief functional unit such as CPU、RAM、ROM、I/O interface、Timer/Counter and interrupt system in a semiconductor chip. It mainly used in controlling system , also called by Microcontroller Unit or Embedded Controller . In this design , we use it to make up a temperature controlling system . First of all , we need to write C programming language to realize its function . Next , we can connect its hardware circuit and load the code , that is , using a Single Chip Microcomputer to link a temperature sensor named by DS18B20 and a led display . In the simulation experiment , we get a result which goes perfectly true with its expectant result . The result make it clear that the Single Chip Microcomputer can be widely used in temperature measurement and controlling and It can promote meter box to develop in a digital 、intelligent 、integrated way.Key words : Single Chip Microcomputer,Temperature measurement,Sensor,Led display,Simulation experiment基于单片机的温度测量系统1引言随着社会的发展,科技的进步以及人们生活水平的逐步提高,各种方便与生活的自动控制系统开始进入了我们的生活,单片机作为微型计算机发展的一个重要分支,具有高可靠性、高性能价格比、低电压、低功耗等优势,以其为核心的自动控制系统赢得了广泛的应用。该课程设计的题目是基于单片机的温度测量系统,目的重在对于单片机的实际应用,加深对单片机这一课程的理解,达到学以致用。该系统以单片机为核心,实现对温度信息的输入和输出,通过在图书馆及网上搜索相关信息并向老师进行咨询,我认为可以用一个温度传感器和LED数码管实现对温度的测量。选择元器件的时候,考虑到电路需要简单、连接方便、显示精度、便于调试,在比较了同类型的元器件后,决定使用DS18B20温度传感器,其优点在于测温精度高、需要外围设备少、连接方便、系统简单。因此,该系统的硬件电路由时钟电路、复位电路、传感器电路、显示电路和表示灯电路构成。在编写完C语言程序对电路进行仿真得到了正确的温度显示,说明该系统具有良好的温度检测功能。2设计方案及原理2.1温度测量系统设计方案以AT89C51单片机作为电路核心器件,并构建该单片机的时钟电路核心电路,温度测量DS18B20温度传感器件实现,通过连接单片机的P3.7口将测量信息输入到单片机,然后通过P0口将温度信息输出到LED数码管显示出来。2.2温度测量系统设计原理图1 温度测量原理图如图1所示,在该温度测量系统中没有对数据的大量运算和存取,单片机内部具有4KB的存储空间,能满足该系统对温度的测量,无需扩展。单片机的时钟电路可以使单片机的程序有条不紊的运行,复位电路可以使单片机正常运行防止数据丢失。DS18B20是数字芯片不需要AD转换,可直接与单片机进行连接,然后通过单片机对信息处理输出到LED数码管实现对温度信息输出显示。3硬件设计3.1系统原理电路图基于前面对各电路模块的阐述,连接电路时单片机与传感器间用P3.7口相连,单片机的XTAL1和XTAL2接晶振电路,RST端口接复位电路,数码管并接上拉电阻和单片机连接,数码管段选P0口,位选P2口低4位。系统原理电路图如图2所示。图2 系统原理电路图3.2时钟复位电路设计单片机时钟信号由时钟电路产生,可通过芯片引脚XTAL1和XTAL2外接晶体振荡器和微调电容实现。51单片机内部有一个用于构成振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是反相放大器的输入端和输出端,由这个放大器与作为反馈元件的片外晶体或陶瓷谐振器一起构成自激振荡器,是单片机工作的原始动力。晶体振荡频率高,系统的时钟频率高,相应的单片机运行速度就高。复位电路对单片机的片内电路重新进行初始化,使有关部件都恢复到原先规定的初始状态。复位电路由单片机提供的RST引脚,外接电阻、电容和电源组成。时钟电路和复位电路如图3所示。图3 时钟复位电路3.3表示灯电路表示灯电路由3个LED灯接共阳极构成,分别接在单片机P1.2P1.4口,分别显示蓝色、红色、绿色,如图4所示。图4 表示灯电路3.4传感器电路和数码管显示电路设计由于DS18B20是一线式传感器,温度数据直接从DQ端口串行输出,传感器上集成模拟数字转换器,输出的就是数字量,单片机可以直接接收。DS18B20主要由64位光刻ROM、温度传感器、非挥发性的温度报警触发器TH和TL、配置寄存器四部分组成。工作时序包括初始化时序、写时序和读时序,温度转换时的延时时间为750ms。根据DS18B20的通信协议,单片机控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位操作,复位成功后发送一条ROM指令,然后再发送RAM指令,这样才能对DS18B20进行预定的操作。该温度测量系统用到的指令及其注释具体见附录所示。设计数码管电路时,采用共阳极的方式外接电源和上拉电阻与单片机进行连接。由于温度显示一般采用十进制,且温度有正负之分,所以在编写程序时需要注意代码的范围是09和负号,小数点可通过单片机的P0.7口输出显示。编写程序时对温度显示精确0.5,故采用的数码管具有四位数据显示,从左到又依次显示负号位、十位、个位及十分位。传感器电路和数码管显示电路如图5所示,图中上部分为数码管显示电路,下部分为传感器电路。图5 传感器电路和数码管显示电路4软件设计4.1程序流程图程序流程图如图6所示。为正确显示传感器所送出的温度信息,程序需要先对温度传感器初始化,由于只用了一片DS18B20,可在ROM指令中发跳过ROM匹配指令,直接在RAM发送温度转换命令,然后再次对DS18B20进行初始化,读出温度显示到数码管上面,主程序不断循环持续对感应器发送来的温度信息输出显示。图6 系统流程图4.2主程序程序代码见附录。5系统仿真根据硬件原理图,在Proteus环境下进行搭建温度测量系统的仿真图,检测无误后导入在KeilC51中编译程序后生成的HEX文件,通过不断调试后得到仿真结果如图7、图8、图9所示,指示灯分别表示适宜温度、低温和高温。图7 常温仿真显示图8 低温仿真显示图9 高温仿真显示6总结通过这次课程设计,我实现了基于单片机的温度测量系统的设计和模拟仿真,完成了此课程设计的基本要求,即硬软件设计,口接线、设计报告等。在课程设计过程中,我遇到了好多问题,例如,虽然说上学期认真地学习了单片机课程,熟悉了Proteus和Keilc51的基本操作,但由于自己学得不太好,又间隔了一段时间,变得有些生疏,刚拿到这次设计要求时闷头苦想仍是无从下手。后来通过对书本知识的回顾,并向老师请教课程设计的一些技巧方法,方能设计出基本的电路。接下来我开始编写程序,经过调试后装入Proteus仿真软件,第一次直接得不到任何温度显示,检测温度显示程序并未发现错误,然后我翻看书本相关知识并修改了传感器电路部分,删减了一些冗余元件,在得出显示后却发现数码管显示为乱码,明白了程序编写有误。后面通过对程序的不断调试和装入电路进行仿真,终于得到了对温度传感器所发送信息的正确显示。虽然自己所设计出来的温度测量系统跟同学们的一些优秀设计比起来有些粗制滥造,但这也毕竟是自己努力的成果,个人能力也在这个过程中得到了提高。通过这次课程设计,我对单片机这门课程有了更深的理解,初步学会运用单片机设计出简单的测量装置。千里之行,始于足下,我相信只要自己不断努力学习新的知识,刻苦去钻研,就能够使自己的综合能力得到提高。在此,也要感谢本次设计过程指导老师的帮助和同学的支持,使我顺利完成了自己的课题。7参考文献1 王思明,张金鑫.单片机原理及应用系统设计M.北京:科学出版社,2001:32-36. 2 李华,单片机原理及应用M.兰州:兰州大学出版社,2001,25(60):26-29.3 张金敏,董海棠.单片机原理与应用系统设计J .成都:西南交通大学出版社,2010:33-35.4 杜树春.基于Proteus和Keilc51的单片机设计与仿真M.北京:电子工业出版社,2012:29-31.5 薛均义.单片机微型计算机及其应用M.西安:西安交通大学出版社,1997:43-46.8附录源程序代码:#include /51单片机头文件#include/包含循环移位函数的头文件#define uchar unsigned charuchar tempint,tempdf;/温度整数部分和小数部分sbit DATA=P37;/输入端口定义sbit ld7=P11;/初始化成功标志端口sbit ld6=P10;/负温度标志端口sbit point=P07;/小数点显示端口sbit P1.2=P12;/高温红灯表示端口sbit P1.3=P13;/适宜温度绿灯表示端口sbit P1.4=P14;/低温蓝灯表示端口uchar fu; /负温度标志code unsigned chardaima =0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xBF;/7段数码管09数字和负号位共阳极显示代码void set_ds18b20();/DS18B20初始化子程序void get_temperature();/温度转换和获取子程序void read_ds18b20();/对DS18B20进行读操作子程序void write_ds18b20(uchar command);/对DS18B20进行写一字节子程序void delayms(uchar count);/温度显示子程序void display_temp();void temp_biaoshi(uchar tempind);/表示灯子程序void main()SP=0x60;/堆栈指针设置while(1)get_temperature();/调用温度获取子程序if(tempdf=8)/调整精度为0.5度tempdf=5;elsetempdf=0;display_temp();/温度显示void set_ds18b20()while(1)uchar delay,flag;flag=0;DATA=1;/对数据线置高电平delay=1;while(-delay);/短暂延时DATA=0;/数据线置低电平delay=250;while(-delay);/低电平保持500sDATA=1;delay=30;while(-delay);/高电平保持60swhile(DATA=0)/DS18B20是否发出低电平信号delay=210;while(-delay);/DS18B20作出响应,延时420sif(DATA)/DS18B20发出高电平初始化成功flag=1;/DS18B20初始化成功标志ld7=0;/LED初始化成功标志break;if(flag)/应时序要求,初始化成功后再延时 480sdelay=240;while(-delay);break;void get_temperature()set_ds18b20();write_ds18b20(0xCC);/发跳过ROM匹配命令write_ds18b20(0x44);/发温度转换命令display_temp();/显示温度,等待AD转换set_ds18b20();write_ds18b20(0xCC);/发跳过ROM匹配命令write_ds18b20(0xBE);/发读温度命令read_ds18b20(); /读出温度数据,整数保存到寄存器tempint,小数保存到寄存器tempdfvoid read_ds18b20()uchar delay,i,j,k,temp,temph,templ,fu;j=2;/2位字节数据读取dofor(i=8;i0;i-)/一个字节分8位读取temp=1;/读取1位并右移1位DATA=0;/数据线置低电平delay=1;while(-delay);DATA=1;delay=4;while(-delay);/延时8sif(DATA)temp|=0x80;delay=25;/读取1位后延时50swhile(-delay);if(j=2)templ=temp;/读取的第一字节存temp1elsetemph=temp;/读取的第二字节存temp2while(-j);fu=0;if(temph&0xf8)!=0x00)/温度为负则进行二进制求补处理fu=1;/负温度标志置1ld6=0;temph=temph;templ=templ;k=templ+1;templ=k;if(k255)/第一字节溢出进位temph+;elsefu=0;ld6=1;tempdf=templ&0x0f;/对读取的数据转换,小数部分存在 tempdf,整数部分存在tempinttempl=4;temph0;i-)/对一个字节逐位进行写入DATA=0;delay=6;while(-delay);/延时12sDATA=command&0x01;/将数据置于数据线上del

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论