单片机系统设计方案与制作技术报告说明书模板_第1页
单片机系统设计方案与制作技术报告说明书模板_第2页
单片机系统设计方案与制作技术报告说明书模板_第3页
单片机系统设计方案与制作技术报告说明书模板_第4页
单片机系统设计方案与制作技术报告说明书模板_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

中国矿业大学徐海学院单片机系统设计与制作技术报告姓名:孙天/马玲玲学号:22909327/22091180班级:电气09-5题目:温度计与流水灯任课教师:胡明老师2011年9月单片机设计与制作任务书班级电气09—5学号22090327学生姓名孙天任务下达日期:年月日设计日期:年月日至年月日设计题目:设计主要内容和完成功能:教师签字:摘要本文首先描述系统硬件工作原理,并附以系统结构框图加以说明,着重介绍了本系统所应用的各硬件接口技术和各个接口模块的功能及工作过程,其次,详细阐述了程序的各个模块和实现过程。本设计以数字集成电路技术为基础,单片机技术为核心.本文编写的主导思想是软硬件相结合,以硬件为基础,来进行各功能模块的编写。关键词:AT89S52DS18B20LCD1602蜂鸣器目录TOC\o”1—3”\h\z\u_Toc312691783”2、硬件设计 PAGEREF_Toc312691783\h7HYPERLINK\l"_Toc312691784"2。1单片机主控模块 PAGEREF_Toc312691784\h7HYPERLINK3、软件设计 PAGEREF_Toc312691788\h10HYPERLINK\l"_Toc312691789”3。1主程序 PAGEREF_Toc312691789\h10HYPERLINK\l"_Toc312691790"3.2LCD1602的驱动ﻩPAGEREF_Toc312691790\h11HYPERLINK\l"_Toc312691791”3。3DS18B20的驱动 PAGEREF_Toc312691791\h13HYPERLINK\l"_Toc312691792"3.4蜂鸣器驱动 PAGEREF_Toc312691792\h14HYPERLINK\l"_Toc312691793"4、系统调试 PAGEREF_Toc312691793\h14HYPERLINK\l"_Toc312691794"5、结束语 PAGEREF_Toc312691794\h15HYPERLINK\l"_Toc312691795"6。参考文献ﻩPAGEREF_Toc312691795\h15HYPERLINK\l"_Toc312691796"7、附录ﻩPAGEREF_Toc312691796\h15包括系统硬件电路图、源程序(加注释)、实物作品调试和演示照片1、系统概述数字温度计功能要求是用51单片机(AT89S52)和温度传感器(DS18B20)通过程序控制来实现在液晶屏LCD1602上显示当前温度值、报警温度值,并可以通过蜂鸣器模块在过温时报警。设计思路是根据普通温度计的功能,在单纯测量温度的基础上增加蜂鸣器模块实现温度报警功能,并可以设定报警温度值。系统以AT89S52单片机作为核心控制器件,外围主要有液晶显示LCD1602、DS18B20和蜂鸣器,均为串行通信器件,使得系统线路简单可靠性高.Proteus仿真图2、硬件设计2.1单片机主控模块AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案.它主要负责各个模块的初始化工作;设置定时器、寄存器的初值;读取并处理来自温度传感器的信号;处理按键响应;控制液晶实时显示等。图2.AT89S52管脚排布AT89S52的管脚排布如图2所示:VCC:电源GND:地P0口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0口写“1"时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用.在这种模式下,P0具有内部上拉电阻。在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。P1口:P1口是一个具有内部上拉电阻的8位双向I/O口,p1输出缓冲器能驱动4个TTL逻辑电平。对P1端口写“1"时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1。0/T2)和时器/计数器2的触发输入(P1.1/T2EX),具体如下表所示。在flash编程和校验时,P1口接收低8位地址字节。P2口:P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平.对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用.作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX@DPTR)时,P2口送出高八位地址。在这种应用中,P2口使用很强的内部上拉发送1。在使用8位地址(如MOVX@RI)访问外部数据存储器时,P2口输出P2锁存器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号.P3口:P3口是一个具有内部上拉电阻的8位双向I/O口,p2输出缓冲器能驱动4个TTL逻辑电平。对P3端口写“1"时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。在flash编程和校验时,P3口也接收一些控制信号。RST:复位输入。ALE/PROG:地址锁存控制信号。PSEN:外部程序存储器选通信号。EA/VPP:访问外部程序存储器控制信号。XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。XTAL2:振荡器反相放大器的输出端。在本设计中所用到的引脚有VCC,GND,RST,EA/VPP,XTAL1,XTAL2,P0口,P2口,P3口.硬件电路连接如图3所示.系统采用12M晶振;P0口为单片机与液晶显示器通信的数据端口,其中P0口有8个1K的上拉电阻;AT89S52单片机的复位靠外部电路来实现,信号由RESET(RST)引脚输入,高电平有效,在振荡器工作时,只要保持RESET(RST)引脚高电平两个机器周期,单片机即可以复位,系统既有上电复位电路又可以手动复位S4;P2.0~P2。2为液晶显示器的控制信号端口:P3.7为蜂鸣器的控制端口;P1。4~P1。5为按键模块的接口;P3.3为温度传感器通信端口。2。2液晶显示模块系统中采用LCD1602作为显示器件输出信息.与传统的LED数码管显示器件相比,液晶显示模块具有体积小、功耗低、显示内容丰富等优点,而且不需要外加驱动电路,现在液晶显示模块已经是单片机应用设计中最常用的显示器件了.LCD1602可以显示2行16个字符,具有8位数据总线D0-D7,和RS、R/W、E三个控制端口,工作电压为5V,并且带有字符对比度调节和背光设置.管脚功能简介:VL:LCD对比度调节端,电压调节范围为0—5V。接正电源时对比度最弱,接地电源时对比度最高,可以用一个5K的电位器来调整对比度;RS:数据或者指令选择端。处理器写入指令时,RS为低电平,写入数据时,RS为高电平R/W:读写控制端。R/W为高电平时,读取数据;R/W为低电平时,写入数据E:LCD模块使能信号控制端。写数据时,需要下降沿触发模块D0—D7:8位数据总线,三态双向BL+:LED背光正极。需要背光时,BLA串接一个限流电阻接VCCBL-:LED背光负极LCD1602的管脚功能排布如图2.2.1所示2.3温度传感器模块系统采用DS18B20作为温度信息采集模块.DS18B20支持“一线总线”,温度测量范围为-55℃~+125℃,在-10℃~+85℃精度为±5℃。现场温度直接以“一线总线"的数字方式进行传输,大大提高系统的可靠性,温度数字量转换时间为200ms(典型值)DS18B20的管脚功能排布如图2。3。1所示:。2.4报警模块系统采用蜂鸣器作为报警的输出,蜂鸣器的电路连接图如图2.4.1所示:电路中采用PNP管8550来做为信号功率放大来驱动喇叭闹铃,由图可以看出PNP管8550的集电极接电源正5伏。过温时从AT89S52的P3。7脚输出低频的方波信号使蜂鸣器报警。3、软件设计根据设计任务的要求确定系统程序的完整结构,尽可能采用模块化程序设计方法,将任务划分为相对独立的功能模块,明确各模块的功能、时间顺序和相互关系,系统的软件设计可以分为几个部分,首先是各个模块的底层驱动程序编写,而后是系统联机调试,编写上层系统程序。本系统软件程序主要包括:液晶LCD1602的底层驱动模块、DS18B20的低层驱动模块、定时器0定时温度检测模块、蜂鸣器报警模块等。3.1主程序voidmain(){ ucharnum; init(); delay(2000); delay(2000); delay(2000);ﻩﻩwrite_com(0x01);//清除LCD的显示内容ﻩwhile(1){ﻩP0=0xaa; write_com(0x80);P0=0x55; for(num=0;num<15;num++){ write_data(table2[num]); delay(5); }P0=0xcc; wendu=ReadTemp(); P0=0x33; write_wendu(2,wendu);P0=0x0f;P0=0xf0;ﻩﻩDela(50);ﻩ P0=0x00;ﻩ Dela(25); P0=0xff; Dela(25);ﻩﻩP0=0x00; Dela(25);ﻩﻩP0=0xff;ﻩﻩDela(25); }}3.2LCD1602的驱动液晶显示分两个子程序,一个是初始化时候使用,如图3。2。1.所示。另一个接受来自温度采集子程序的数据,送入液晶显示LCD1602显示。以下是LCD1602的程序://lcd的写指令voidwrite_com(ucharcom){ lcdrs=0; lcden=0; P1=com; delay(5);ﻩlcden=1; delay(5); lcden=0;}//lcd的写数据voidwrite_data(ucharda){lcdrs=1; lcden=0; P1=da;ﻩdelay(5); lcden=1; delay(5);ﻩlcden=0;}//初始化voidinit(){ucharnum; lcdwrite=0;lcden=0; write_com(0x38);//16*2显示,5*7点阵,8位数据write_com(0x0c);//显示开,关光标 write_com(0x06);//移动光标 write_com(0x01);//清除LCD的显示内容write_com(0x80);for(num=0;num〈10;num++){ write_data(table[num]);ﻩdelay(5); ﻩ} ﻩﻩwrite_com(0x80+0x40);ﻩfor(num=0;num<11;num++){ write_data(table1[num]); delay(5); }}voidwrite_wendu(ucharadd,charda){ucharshi,ge; shi=da/10;ﻩge=da%10; write_com(0x80+0x40+add); write_data(0x30+shi);ﻩﻩwrite_data(0x30+ge);}voidDela(uintdel){ﻩuinti,j;ﻩfor(i=0;i<del;i++)ﻩfor(j=0;j〈1827;j++)ﻩ;}3。3DS18B20的驱动温度采集子程序程序框图如图3。2.1所示。程序在定时器2中断产生时候响应,进入采集。首先检测DS18B20是否正常,不正常进行温度报警,激活报警程序。发送转换信号,等待转换完成,读DS18B20寄存器。把接受的数据转换为10进制。返回一个表示温度的整形数据。以下是温度采集子程序的底层驱动源程序:/**************读取ds18b20当前温度************/ReadTemp(void){ﻩ float val;uchartemp_value,value; unsignedchara=0; unsignedcharb=0;ﻩunsignedchart=0;ﻩInit_DS18B20();ﻩWriteOneChar(0xCC);ﻩ//跳过读序号列号的操作 WriteOneChar(0x44); //启动温度转换ﻩdelay_18B20(100);//thismessageisweryimportantﻩInit_DS18B20(); WriteOneChar(0xCC); //跳过读序号列号的操作ﻩWriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器)前两个就是温度 delay_18B20(100); a=ReadOneChar();ﻩ//读取温度值低位 b=ReadOneChar();ﻩ //读取温度值高位 temp_value=b〈〈4; temp_value+=(a&0xf0)>〉4; value=a&0x0f;ﻩval=temp_value+value; return(val); }3.4蜂鸣器驱动voidbeep()//蜂鸣器子程序{unsignedchari;for(i=0;i<180;i++){Delay(80);BEEP=!BEEP;//BEEP取反}BEEP=1;//关闭蜂鸣器delayms(100);}4、系统调试这套系统里运用的是按钮复位,单片机在刚通电的时候可能会没用发现,这次只需按下单片机左边的方形按钮便可。在温度计去流水灯的作品板上LCD1602需要调节它的VEE端。通过一个10K的电阻进行调节,将“鬼影”去掉。调节后的的效果如下:5、结束语本次用单片机设计的数字温度计已经完成。同其他温度采集系统相比,这次的设计还有可以改进的地方.主要有如下几点:1.可以组建温度测量网络,实时显示各网点的温度。2.DS18B20最高精度可达±0.0625℃(12位)。3。使用片内具有eeprom的单片机,即可实现可记录温度数据和可在线设定报警温度的温度计.6.参考文献[1]龚运新.《单片机C语言开发技术》[M].清华大学出版社,2006[2]张迎新。《单片机原理及应用》[M].电子工业出版社,2004附录程序代码:/***********ds18b20子程序*************************//***********ds18b20延迟子函数(晶振12MHz)*******/#include<reg52。h>sbitDQ=P3^3;#defineucharunsignedchar#include"18b20.h"#defineuintunsignedintucharcodetable[]=”WelcomeTo";//初始化日期和星期ucharcodetable1[]=”OurSystem!”;//初始化时间ucharcodetable2[]="Temperatureis:”;//初始化时间voiddelay_18B20(unsignedinti){ while(i-—);}/**********ds18b20初始化函数**********************/voidInit_DS18B20(void){ﻩunsignedcharx=0;ﻩDQ=1;//DQ复位 delay_18B20(8);//稍做延时ﻩDQ=0;//单片机将DQ拉低ﻩdelay_18B20(80);//精确延时大于480us DQ=1;//拉高总线 delay_18B20(4);ﻩx=DQ;//稍做延时后如果x=0则初始化成功x=1则初始化失败 delay_18B20(20);}/***********ds18b20读一个字节**************/unsignedcharReadOneChar(void){ﻩuchari=0; uchardat=0; for(i=8;i〉0;i—-) { ﻩDQ=0;//给脉冲信号 dat>>=1;ﻩ DQ=1;//给脉冲信号ﻩﻩif(DQ)ﻩ dat|=0x80;ﻩ delay_18B20(4);ﻩ} return(dat);}/*************ds18b20写一个字节****************/voidWriteOneChar(uchardat){ unsignedchari=0; for(i=8;i〉0;i——)ﻩ{ﻩﻩDQ=0;ﻩ DQ=dat&0x01;ﻩdelay_18B20(5); ﻩDQ=1; dat〉>=1;}}/**************读取ds18b20当前温度************/ReadTemp(void){ﻩﻩfloatﻩval;uchartemp_value,value; unsignedchara=0; unsignedcharb=0; unsignedchart=0;ﻩInit_DS18B20();ﻩWriteOneChar(0xCC); //跳过读序号列号的操作ﻩWriteOneChar(0x44);ﻩ//启动温度转换ﻩdelay_18B20(100);//thismessageisweryimportantﻩInit_DS18B20();ﻩWriteOneChar(0xCC);ﻩ//跳过读序号列号的操作ﻩWriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器)前两个就是温度ﻩdelay_18B20(100); a=ReadOneChar(); //读取温度值低位 b=ReadOneChar(); //读取温度值高位ﻩtemp_value=b<<4;ﻩtemp_value+=(a&0xf0)>>4;ﻩvalue=a&0x0f;ﻩval=temp_value+value-6;ﻩreturn(val);ﻩ}//以上是DS18B20的驱动程序。然后在主程序中直接调用函数就可以了。//以上是在主程序中的调用,你看关于温度的那个就可以.//以下三个是定义LCD的引脚ﻩsbitlcden=P2^2;ﻩsbitlcdwrite=P2^1;ﻩsbitlcdrs=P2^0;charwendu;//延时程序voiddelay(uintz){uintx,y;for(x=z;x>0;x—-)for(y=110;y〉0;y—-);}//lcd的写指令voidwrite_com(ucharcom){ lcdrs=0; lcden=0;ﻩP1=com; delay(5);ﻩlcden=1;ﻩdelay(5); lcden=0;}//lcd的写数据voidwrite_data(ucharda){lcdrs=1; lcden=0; P1=da; delay(5);ﻩlcden=1;ﻩdelay(5); lcden=0;}//初始化voidinit(){ucharnum; lcdwrite=0;lcden=0;ﻩwrite_com(0x38);//16*2显示,5*7点阵,8位数据write_com(0x0c);//显示开,关光标ﻩwrite_com(0x06);//移动光标ﻩwrite_com(0x01);//清除LCD的显示内容write_com(0x80);f

温馨提示

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

评论

0/150

提交评论