《片机课程设计》word版.doc_第1页
《片机课程设计》word版.doc_第2页
《片机课程设计》word版.doc_第3页
《片机课程设计》word版.doc_第4页
《片机课程设计》word版.doc_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

单片机实习报告书摘要本设计是应用MCS-51单片机的原理和控制理论设计一个多功能系统,功能包括矩阵键盘输入,键盘内容显示,温度传感器操纵,温度显示,并实现双机通信以显示同样的内容。硬件系统包括单片机最小系统,ISP下载模块,矩阵键盘,独立键盘,温度传感器模块,数码管,流水灯等。除了课设规定的要求外,还加入一些有趣的扩展功能,如:利用led灯指示单片机工作状态,从机普通模式、空闲模式可选,用于节电。通过设计,加深对51单片机的理解,掌握实际的应用,增强动手能力。设计包括硬件设计、软件编程,仿真,制作实物,撰写报告等步骤。关键词: 51单片机 多功能系统设计 单片机编程IAbstractThis design is the application of the principle of the MCS-51 microcontroller and control theory to design a multi-functional system features include the matrix keyboard input, keyboard content display and manipulation of temperature sensor, temperature display, and dual-machine communication in order to display the same content. The hardware system including the minimum microcontroller system,ISP download module, matrix keyboard, separate keyboard, the temperature sensor module, digital tube, LED. In addition to the specified class-based requirements, but also added some interesting extended features, such as: the use of led lights indicating microcontroller working condition, optional from ordinary machine mode, idle mode, for power saving. This design is due to deepen the understanding of the 51 microcontroller design, mastering practical applications, and enhancing the practical ability.The design includes hardware design, software programming, simulation, making hardware, writing reports and other steps.Keywords: 51 microcontroller, multi-functional system design,microcontroller programmingII单片机实习报告书目录摘要IAbstractII目录3一 项目要求与说明4二 方案论证5三 硬件电路设计51 MCU控制器简介52 单片机最小系统63 矩阵键盘64 DS18B20温度检测电路74.1 DS18B20温度传感器特性74.2 DS18B20操作时序85 数码管显示电路106 流水灯107 串行口电路11四 软件设计121 系统软件开发工具122 系统流程图122.1 主机程序流程图122.2 从机程序流程图133 软件编程134 软件实现功能说明144.1 主机矩阵键盘功能144.2 从机独立键盘功能14五 仿真分析151 数据输入与显示功能仿真152 温度检测与显示功能仿真163 数据通信功能16六 心得体会17参考文献18附件A 单片机系统原理图19附件B 单片机系统实物20附件C 主机程序21附件D 从机程序32一 项目要求与说明1)完成包含如下系统功能组件的单片机最小系统的设计、焊接、调试(1)键盘一个4X4的矩阵键盘,其中,10个按键是09数字键;另外6个是功能键,用于功能选择和控制。(2)显示电路由6个7段LED数码管组成的显示电路。(3)温度检测利用DS18B20可编程1-Wire数字温度传感器芯片,或利用AD590温度传感器芯片和A/D转换器芯片采集温度温度信号。(4)串口串行通信利用51的串口实现串行通信接口电路。2)完成ISP下载电路的设计、焊接3)完成系统软件的设计,包括程序结构设计、流程图绘制、程序设计,实现如下功能(1)功能选择通过功能选择键,使得单片机处于不同工作状态并通过LED显示相应内容。(2)温度显示通过功能选择键选择温度检测、显示后,LED显示温度值。(3)数据输入通过功能选择键选择数据输入后,将通过键盘键入的09按键值显示在LED上,其中,最后输入的显示在最左边,之前键入向右移动一位。(4)数据通信将两个单片机最小系统通过串口连接起来,其中一个作为主系统,另一个作为辅系统。当通过功能选择键选择数据通信后,当在主系统上进行功能(2)、功能(3)的操作时,辅系统的LED上显示与主系统同样的内容。4)利用仿真软件完成系统仿真工作5)在单片机最小系统硬件上实现任务3中规定的功能二 方案论证温度检测模块方案选择:方案一、采用AD590设计温度检测模块,由于需要添加AD转换电路、放大电路,电路设计比较繁琐,成本较高。方案二、采用Dallas公司生产的DS18B20作为测温模块,DS18B20芯片内部自带AD转换电路,使用方便。它采用单总线协议传输技术,只需占用单片机一个IO口,电路容易设计,编程比较简单。温度的分辨率可以选择9到12位的分辨率。综上所述,温度检测模块选择方案二。三 硬件电路设计1 MCU控制器简介STC89C52是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,2个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口。另外 STC89X52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。2 单片机最小系统单片机最小系统包括振荡器电路,复位电路,单片机EA端接高电平(Vcc),P0口需要接上拉电阻(10K)。振荡器电路选用12MHz晶振,两个30pf电容,振荡器电路接单片机XTAL1和XTAL2引脚。单片机最小系统原理图如下。图1 单片机最小系统3 矩阵键盘矩阵键盘检测的原理和方法:矩阵键盘每个按键两端都与单片机I/O口相连,因此在检测时需人为通过单片机I/O口送出低电平。检测时,先送一列为低电平,其余几列全为高电平(此时确定了列数),然后立即轮流检测一次各行是否有低电平,若检测到某一行为低电平(这是有确定了行数),则便可以确认当前被按下的键是哪一列哪一行,用同样方法轮流送各列一次低电平,再轮流检测一次各行是否变为低电平,这样既可检测完所有的按键,当有键按下时便可判断出按下的是哪一个键。此外还需要消除按键在闭合或断开时的抖动。消抖的方法可采用消抖电路(RS触发器时锁电路硬件消除抖动),也可采用延时方式软件消除抖动(延时后再重读,以跳过抖动期),本设计采用软件消抖方式。矩阵键盘原理图如下。图2 矩阵键盘4 DS18B20温度检测电路4.1 DS18B20温度传感器特性适应电压范围宽,电压范围在3.05.5V,在寄生电源方式下可有数据线供电。独特的单线接口方式,它与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通信。支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温。在使用中不需要任何外围元件,全部传感器及转换电路集成在形如一只三极管的集成电路内。测温范围-55+125,在-10+85时精度为0.5。可编程分辨率为912位,对应的可分辨率温度分别为0.5,0.25,0.125和0.0625,可实现高精度测温。4.2 DS18B20操作时序4.2.1 初始化操作时序图3 ds18b20初始化时序4.2.2 读取时序图4 ds18b20读数据时序4.2.3 写入时序图5 ds18b2写数据时序4.2.4 DS18B20实物如图所示。图6 ds18b20实物4.2.5 DS18B20电路连接如下图所示。其DQ端接单片机的P2.2端。图7 ds18b20连接5 数码管显示电路数码管的显示原理是靠点亮内部的发光二极管来发光。本次设计中使用的是7端共阴极数码管,数码管的阳极,即标有a,b,c,d,e,f,g,h的引脚全部连在一起,与下面的U2元件(74HC573)锁存器的数据输出端相连,U2的数据输入端连单片机P0口。数码管中WE1,WE2,WE3,WE4,WE5,WE6是他们的位选端,每个数码管对应一个位选端,与U3元件(74HC573)数据出端低6位相连,U3的数据输入端连单片机P0口。两个锁存器的锁存端分别与单片机P2.6和P2.7相连。这样用单片机可以控制锁存器的锁存端,进而控制锁存器的数据输出,这种分时控制的方法便可方便地控制任意数码管显示任意数字。数码管显示电路下图所示。图8 数码管显示模块6 流水灯流水灯用于反映系统当前工作状态。流水灯是一组发光二极管,如下图所示。这组发光二极管的阴极端连接U5元件(74HC573)锁存器的输出端,阳极接一个排阻。U5的锁存端接单片机的P2.5口,这样就可以通过单片机对这组发光二极管的亮灭进行控制。图9 流水灯模块7 串行口电路单片机使用的是TTL电平,而计算机使用的是RS-232电平,要实现把电脑中的程序能下载到单片机上,就需要实现RS-232电平与TTL电平之间的转换。实现这一功能的芯片有很多,本次课设所使用的芯片为MAX232及电容元件构成RS232电平与TTL电平转换的串行口电路。本次课设要完成双机通信功能,需要两个单片机系统,一个单片机作为主机,一个作为从机。可以使用一根串口线连接两个单片机的串口即可完成课设要求的数据通信功能。串行口电路如下图所示。图10 串口模块四 软件设计1 系统软件开发工具系统软件开发工具采用C语言软件开发系统Keil uVision3。2 系统流程图Tempdisplay=1? 显示温度 读温度值启动温度转换温度指示灯亮 发送显示数字 键盘指示灯亮Dualcomm=1?NYNYYN 初始化 按键扫描 按键处理Keyinput=1?2.1 主机程序流程图图11 主机程序流程图2.2 从机程序流程图 初始化 键盘扫描 Key=1? 空闲模式 指示灯亮 正常模式 指示灯灭Testbyte=0xff?Testbyte=0xaa?显示键盘输入数字键盘显示指示灯亮显示温度温度指示灯亮YNNNYY图12 从机程序流程图3 软件编程见附录4 软件实现功能说明17空98空F3F2F11空5623044.1 主机矩阵键盘功能 图13 主机键盘功能09:数字输入。F1:矩阵键盘输入功能选择。F2:温度显示功能选择。F3:双机通信功能开关。按下F1,进行数字输入(09),显示在数码管上。按下F2,可显示温度,按下F3可以开关双机通信功能。空空空Key4.2 从机独立键盘功能 图14 从机独立键盘功能Key:空闲模式/正常模式功能切换。选择空闲模式时,LED灯会亮起,提示工作在空闲模式。当从机CPU检测到在一段时间内主机没有发送数据给从机时,从机CPU停止工作,此时可由中断唤醒,当主机再次给从机发送数据时,从机正常工作。五 仿真分析Proteus是世界上著名的EDA工具(仿真软件),它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051。在编译方面,它支持IAR、Keil和MPLAB等多种编译器。1 数据输入与显示功能仿真按下矩阵键盘第四排第一个键,再顺序按下440099,得到结果如图。图15 键盘输入显示仿真2 温度检测与显示功能仿真按下矩阵键盘第四排第二个键,则显示温度如图为9摄氏度。图16 温度显示仿真3 数据通信功能在数据输入模式下再按下矩阵键盘第四排第三个键,则左边从机显示与主机相同的内容。图17 双机通信功能仿真在温度显示模式下再按下矩阵键盘第四排第三个键,则左边从机显示与主机相同的内容。图18 双机通信功能仿真1六 心得体会在为期十天的单片机实习中,除了对51单片机的基础知识有了深刻的理解,还增强了动手的能力,硬件设计,软件设计,包括报告的撰写,每个步骤都让我受益颇深,。在此次设计中,我的系统采用了被广泛使用的单片机STC89C52为主控芯片,配合DS18B20温度传感器,LED数码管,键盘电路所设计的一个多功能系统。在报告中介绍了DS18B20的操作方法,介绍了键盘电路基本原理、特性及编程方法。对单片机软硬件资源和接口扩展也有部分的介绍和应用。在系统仿真中对各功能都实现了仿真。这次课程设计使我得到了很多收获,我不仅学到了许多了关于单片机方面的知识,熟悉了与单片机相关的两款软件Keil和Proteus,提高了实验技能;而且也使我的动手能力和电路设计能力得到了极大的提高。在此次设计中,我认为比较麻烦的是编程,本次设计使用的是C语言,七百行的程序写了近一天,之后陆续地修修改改、添加新功能,过程很艰难,结果是令人欣慰的。参考文献1 李群芳. 单片微型计算机与接口技术(第4版) 电子工业出版社2 郭天祥 新概念51单片机C语言教程 电子工业出版社3 谢自美.电子线路设计实验测试(第三版) 华中科技大学出版社4 Dallas 公司 DS18B20数据手册 Dallas公司5 刘教瑜. 单片机原理及应用 武汉理工大学出版社6黄智伟. 全国大学生电子竞赛常用电路模块制作 北京航空航天大学出版社7王永生. 电子测量学 西北工业大学出版社附件A 单片机系统原理图图19 单片机系统原理图附件B 单片机系统实物附件C 主机程序#include#define uchar unsigned char#define uint unsigned intsbit dula=P26;/段选sbit wela=P27;/位选sbit led1=P11;/键盘输入功能指示灯sbit led2=P12;/温度显示指示灯sbit led3=P13;/双机通信指示灯sbit DS=P22;/DS18B20数据端uchar temp1;/用于键盘读取uint key; /存储按键值 uchar A1,A2,A2t,A3;/三位温度值bit stateschange=0;/判别键盘输入现实的值是否发生变化,控制发送程序bit keyinput=0; /判别键盘输入 作为调用键盘显示函数的依据bit temdisplay=0; /判别温度显示 作为调用温度显示函数的依据bit dualcomm=0; /判别是否进行双机通信uchar s6; /键盘控制的6位数码管显示内容 uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x39; /无小数点uchar code table1=0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef; /带小数点uchar code wei=0xfe,0xfd,0xfb,0xf7,0xef,0xdf; /位选/*延时函数/*/void delay(uint count) uint i; while(count) i=50; while(i0) i-; count-; /*初始化函数/*/void init()dula=0;wela=0;TMOD=0x20;TH1=0xfd;TL1=0xfd;TR1=1;SM0=0;SM1=1;/*发送函数/*/void send()stateschange=0;if(keyinput=1) uint i=0; SBUF=0xff; while(!TI); TI=0; for(i=0;i0)i-; DS=1; i=4; while(i0)i-;bit tmpreadbit(void) /读取一位 uint i; bit dat; DS=0;i+; /i+延时 DS=1;i+;i+; dat=DS; i=8;while(i0)i-; return (dat);uchar tmpread(void) /读取一字节数据 uchar i,j,dat; dat=0; for(i=1;i=8;i+) j=tmpreadbit(); dat=(j1); /读出的数据最低位在最前面 return(dat);void tmpwritebyte(uchar dat) /写一个字节到 ds18b20 uint i; uchar j; bit testb; for(j=1;j1; if(testb) /写1 DS=0; i+;i+; DS=1; i=8;while(i0)i-; else DS=0; /写0 i=8;while(i0)i-; DS=1; i+;i+; void tmpchange(void) /DS18B20 启动转换 dsreset(); delay(1); tmpwritebyte(0xcc); tmpwritebyte(0x44); void gettmp() /获取温度 uint temp; float tt; uchar a,b; dsreset(); delay(1); tmpwritebyte(0xcc); tmpwritebyte(0xbe); a=tmpread(); b=tmpread(); temp=b; temp=8; /两字节组成一个整型变量 temp=temp|a; tt=temp*0.0625; temp=tt*10+0.5;A1=temp/100; A2t=temp%100; A2=A2t/10; A3=A2t%10;/*显示函数1 用于温度显示/*/void display() P0=tableA1;/显示百位 dula=1; dula=0; P0=0x7e; wela=1; wela=0; delay(1);wela=1;P0=0xff;wela=0; P0=table1A2;/显示十位 dula=1; dula=0; P0=0x7d; wela=1; wela=0; delay(1);wela=1;P0=0xff;wela=0; P0=tableA3;/显示个位 dula=1; dula=0;P0=0x7b; wela=1; wela=0; delay(1);wela=1;P0=0xff;wela=0;P0=table11;/显示C dula=1; dula=0;P0=0xf7; wela=1; wela=0; delay(1);wela=1;P0=0xff;wela=0;/*显示函数2 用于键盘/*/void display2()uint u;for(u=0;u=0&key=9)s5=s4;s4=s3;s3=s2;s2=s1;s1=s0;s0=key;else if (key=12)uint i;keyinput=1;temdisplay=0;led1=0;led2=1;for(i=0;i0;a-) display();if(dualcomm=1)send(); 附件D 从机程序#include#define uchar unsigned char#define uint unsigned intsbit dula=P26;/段选sbit wela=P27;/位选sbit led1=P11;/显示键盘输入数值指示灯sbit led2=P12;/显示温度指示灯sbit led3=P17;/显示是否工作在省电模式sbit key=P34; /独立按键检测bit recevflag=0;/判断是否受到数据uchar a; /存储串口接收到的数据uchar testbyte;/检测字节 帧头 用于判断显示的内容 调用不同的显示函数uint m=0;/键盘数据接收累加器uint k=0;/温度数据接收累加器uint p=0;/计数器中断次数累加器uchar s6=10,10,10,10,10,10;/存储键盘输入的6位数据uchar r3=10,10,10;/存储3位温度值uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x39; /不带小数点uchar code table1=0xbf,0x86,0xdb,0xcf, 0xe6,0xed,0xfd,0x87,0xff,0xef,0x00; /带小数点uchar code wei=0xfe,0xfd,0xfb,0xf7,0xef,0xdf; /位选/*延时函数/*/void delay(uint count) uint i;while(count) i=200; while(i0) i-; count-; /*系统初始化/*/void init()PS=1; /若不设置则空闲模式不能正常工作TMOD=0x21;TH1=0xfd;TL1=0xfd;TH0=0x00;TL0=0x00;TR1=1;SM0=0;SM1=1;REN=1;EA=1;ES=1;ET0=1;/*显示函数1 用于温度显示/*/void display()uint j

温馨提示

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

评论

0/150

提交评论