单片机实习报告.docx
《单片机实习报告.docx》由会员分享,可在线阅读,更多相关《单片机实习报告.docx(55页珍藏版)》请在冰豆网上搜索。
单片机实习报告
摘要
本次单片机实习的主要目的是巩固单片机的理论知识及锻炼实际动手能力。
主要任务是在最小系统的基础上设计键盘显示电路,然后编程实现数字时钟,数字温度计和数字频率计。
其中数字时钟要有调时调分调秒的功能;而温度计能完成串行通信,将温度显示在另一个单片机上.最后要求整个系统能通过按键实现数字时钟与温度计和频率计之间的相互切换。
在实习过程要记录每天的实习内容包括方案的论证,硬件设计,软件设计,仿真分析及实物制作等。
关键词:
单片机,数字时钟,温度计,频率计
Abstract
ThemaingoaloftheSingleChipMicrocomputerpracticeistorenforcethespeculativeknowledgeandtraintheabilityofhandwork.
ThemaintaskistodesignthekeyboarddisplaycircuitonthebaseofDIY.Thenweshouldprogrammetorealizethedigitalclock,digtalthermometeranddigitalfrequencymeter.what’more,thedigitalclockisrequiredtohavethefunctionofadjustthesecond,muinuteandhour.The
Digtalthermometerisrequiredtoaccomplishthecommunicationoftwo
SingleChipMicrocomputers,thetemperaturecanbedisplayedonthesecondSingleChipMicrocomputer.Atlast,thewholesystemisrequiredtorealizethemutualswitchbetweentheclockandthethermometer,theclockandthefrequencymeter.Inthepracticecourse,weshouldwritedownthepracticecontentseveryday,includingthechoiceofscheme,hardwaredesign,softwaredesign,simuationanalysis,makingmaterialobjectandsoon.
Keywords:
SingleChipMicrocomputer,digitalclock,digtalthermometer,digitalfrequencymeter
1.实习任务与要求
1.1实习目的
1、巩固《单片机原理与应用》理论课的理论知识;
2、熟悉单片机应用系统的硬件设计及软件设计的基本方法;
3、将《单片机原理与应用》理论课的理论知识应用于实际的应用系统中;
4、训练单片机应用技术,锻炼实际动手能力。
1.2实习任务
(1)利用上述材料完成单片机最小系统的设计、焊接、调试;
(2)完成ISP下载电路的设计、焊接;
(3)完成应用系统扩展电路部分的设计、焊接、调试,应用系统扩展电路的具体要求如下:
1)键盘、显示电路
利用单片机最小系统、6个7段LED数码管、12个按键,设计制作一个键盘、显示电路。
可以使用8279键盘显示接口电路,也可以使用单片机的并行接口作为键盘显示接口。
2)数字时钟
在键盘、显示电路的基础上完成一个数字时钟的设计,完成以下功能:
a.要求以24小时计时方式显示时、分、秒;
b.时、分、秒可以通过按键分别调整。
3)数字温度计
在上题的硬基础上,制作一个数字温度计。
完成以下功能:
a.利用DS18B20可编程1-Wire数字温度传感器芯片,或利用AD590温度传感器芯片和A/D转换器芯片采集温度温度信号;
b.当按下键盘上的温度显示按键时将实时温度信息显示在LED显示器上,当按下键盘上的时钟显示按键时,恢复时钟的正常显示;
c.通过串行通信的方式,将采集到的实时温度信息送至第二个单片机系统,并在二个单片机系统显示实时温度。
4)数字频率计
在上题的硬基础上,制作一个数字频率计。
完成以下功能:
a.利用MCU设计一个数字频率计,用于检测0~500kHz周期信号的频率,输入信号幅度范围:
0.1~10V;
b.当按下键盘上的频率显示按键时将测量的频率信息显示在LED显示器上,当按下键盘上的时钟显示按键时,恢复时钟的正常显示;
(4)利用仿真软件完成系统仿真工作;
(5)完成系统软件的设计,包括程序结构设计、流程图绘制、程序设计。
1.3实习要求
1)利用PROTEL等软件进行硬件设计;
2)利用KeiluV2软件完成应用系统软件设计;
3)利用PROTEUS软件进行仿真设计;
4)完成单片机最小系统和应用系统电路板的焊接;
5)对电路进行调试;
6)利用stc-isp软件完成在系统编程、下载,并完成系统软件调试;
7)题目由指导教师提供;
8)要求每个学生单独完成硬件软件设计、仿真、焊接、调试任务;
9)写出实习报告,实习报告主要包括以下内容:
目录、摘要、关键词、基本原理、方案论证、硬件设计、软件设计(带流程图、程序清单)、仿真结果、实物运行结果照片、结论、参考文献等;
10)实习完成后通过答辩;
11)答辩时交实习报告电子文档,通过答辩后根据修改意见修改并打印、装订成册。
2.基本原理
2.1数字时钟基本原理
数字时钟是利用单片机的内部的定时/计数器工作与定时方式,对机器周期计数形成基准时间(如10ms),然后用另外一个计数器或软件计数的形式对基准时间里德计数形成秒(如对10ms计数100次),“秒”计数60次形式“分”,“分”计数60次形成“时”,然后通过软件程序使它们的内容在相应的位置显示出来。
在具体设计时定时器采用中断方式工作,对时钟的形成在终中断程序中实现,在主程序中只是对定时/计数器的定义初始化,调用显示程序。
并在设计中加入了按键,可以通过按键对时,分,秒进行调整。
2.2温度计工作基本原理
在单片机电路设计中,大多都是使用传感器,所以可以采用一个温度传感器,它会将温度转换成数字量后存贮在自身内部,将其连在单片机的一个IO口,即一种单总线串行接口,然后通过软件程序在数码管或液晶屏上显示出来就可以直接读取被测温度值。
2.3频率计工作基本原理
频率计的基本设计原理是直接用十进制数字显示被测信号频率。
所谓频率,就是周期信号在单位时间(1s)内变化的次数。
若在一定时间间隔T内测得这个周期信号的重复变化次数N,则其频率可表示为f=N/T。
即可利用单片机内部的定时/计数器来对外部输入脉冲进行计数,从而测得频率。
3.方案论证
3.1键盘显示接口部分
方案一:
使用8279键盘显示接口电路,即键盘和显示器通过8279芯片然后再接到单片机上,8279可以通过对键盘的自动扫描,将键盘信号存入FIFORAM里,再通过显示子程序显示按键的信息。
具体来说,扫描输出线,通过138译码后,作为列与回送线交叉成键,输出数据分别用三位来体现扫描码和回送码,读键时屏蔽高两位,使键值正好等于输出数据的查表值,从而在数码管上显示出来。
方案二:
使用单片机的并行接口作为键盘显示接口,即键盘引脚直接接到单片机的IO口上。
从以上两种方案可以看出,方案一占用的单片机IO口少,精度高,稳定性好,但导致整个电路所用芯片增加,成本提高。
相比较而言方案二虽然占用单片机的IO口较多,但这个可以通过设计矩阵键盘来解决,并且也较方案一所用的芯片少,降低了成本。
综合考虑选择方案二。
3.2温度计部分
方案一:
采用热电偶温差电路测温,温度检测部分可以使用低温热偶,热电偶由两个焊接在一起的异金属导线所组成,热电偶产生的热电势由两种金属的接触电势和单一导体的温差电势组成。
通过将参考结点保持在已知温度并测量该电压,便可推断出检测结点的温度。
数据采集部分则使用带有A/D通道的单片机,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来。
热电偶的优点是工作温度范围非常宽,且体积小,但是它们也存在着输出电压小、容易遭受来自导线环路的噪声影响以及漂移较高的缺点,并且这种设计需要用到A/D转换电路,感温电路比较麻烦。
系统主要包括对A/D0809的数据采集,自动手动工作方式检测,温度的显示等,这几项功能的信号通过输入输出电路经单片机处理。
此外还有复位电路,晶振电路,启动电路等。
故现场输入硬件有手动复位键、A/D转换芯片,处理芯片为51芯片,执行机构有4位数码管、报警器等。
方案二:
采用数字温度芯片DS18B20测量温度,输出信号全数字化。
便于单片机处理及控制,省去传统的测温方法的很多外围电路。
且该芯片的物理化学性很稳定,它能用做工业测温元件,此元件线形较好。
在0—100摄氏度时,最大线形偏差小于1摄氏度。
DS18B20的最大特点之一采用了单总线的数据传输,由数字温度计DS18B20和微控制器AT89S51构成的温度测量装置,它直接输出温度的数字信号,可直接与计算机连接。
这样,测温系统的结构就比较简单,体积也不大。
采用51单片机控制,软件编程的自由度大,可通过编程实现各种各样的算术算法和逻辑控制,而且体积小,硬件实现简单,安装方便。
既可以单独对多DS18B20控制工作,还可以与PC机通信上传数据,另外AT89S51在工业控制上也有着广泛的应用,编程技术及外围功能电路的配合使用都很成熟。
【1】
该系统利用AT89S51芯片控制温度传感器DS18B20进行实时温度检测并显示,能够实现快速测量环境温度,并可以根据需要设定上下限报警温度。
该系统扩展性非常强,它可以在设计中加入时钟芯片DS1302以获取时间数据,在数据处理同时显示时间,并可以利用AT24C16芯片作为存储器件,以此来对某些时间点的温度数据进行存储,利用键盘来进行调时和温度查询,获得的数据可以通过MAX232芯片与计算机的RS232接口进行串口通信,方便的采集和整理时间温度数据。
从以上两种方案,容易看出方案一的测温装置可测温度范围宽、体积小,但是线性误差较大。
方案二的测温装置电路简单、精确度较高、实现方便、软件设计也比较简单,故本次设计采用了方案二。
4.硬件设计
4.1最小系统设计
4.1.1晶振振荡器电路
单片机是一个复杂的同步时序电路,为了保证同步工作方式的实现,其所有的工作都在唯一的时钟信号控制下严格的按时序进行的。
时序就是单片机内部以及内部与外部互联必须遵守的规律。
单片机的时序可以通过两种方式产生:
内部振荡方式和外部振荡方式。
外部振荡方式需要引入外部时钟信号作为单片机的时钟信号,它可以使各单片机之间的时钟信号同步,常用于多片单片机组成的系统中,而本次设计只需使用一片单片机,所以本次系统设计采用了内部振荡方式。
单片机内部有一个用于构成振荡器的高增益反相放大器,引脚X1和X2分别是该放大器的输入端和输出端。
这个放大器与作为反馈原件的片外石英晶体及电容一起构成一个自激振荡器。
电容C1和C2通常取30pF,对振荡器有微调的作用。
晶振的实际频率与标称频率的关系为:
ƒx为实际频率,ƒ0为标称频率,ƒ0范围是1.2MHz~12MHz。
所以本设计晶振Y采用12HMz,电容C1和C2取30pF,则ƒx为12MHZ。
图4-1振荡电路
4.1.2复位电路
单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始工作。
除了进入系统的正常初始化之外,由于程序运行出错或者操作出错而使单片机系统处于死锁状态,为了摆脱死锁状态,也需要使单片机重新启动。
单片机的复位操作一般有上电自动复位和按键电平复位两种方式。
本设计采用上电自动复位和按键电平复位都有的复位电路。
手动按键复位需要人为在复位输入端RESET上通过按钮加入高电平,其复位过程是:
当按下按键S时,RESET端直接与VCC相连,从按下按键到松开按键的时间内,能使RESET端维持一段时间的高电平,这段时间的高电平使单片机复位。
当按键被松开后,RESET端回到低电平,单片机系统完成复位,恢复正常工作状态。
上电复位电路是在RESET复位输入引脚上接一电容至VCC端,下接一个电阻到地。
上电复位的工作过程是:
在系统上电瞬间,电容相当于短路,电源电压通过电容加给RESET引脚以高电平信号,此高电平信号随着VCC对电容的充电过程而逐渐回落,在其高电平期间,系统复位;当电容两端电压达到电源电压时,电容充电电流为零,电容相当于开路,RESET端为低电平,单片机复位完成,恢复正常工作状态。
这里要注意的是,要想实现复位,必须保证复位信号高电平持续时间
大于两个机器周期,而
。
本设计的单片机机器周期为:
。
而
,所以
满足要求。
图4-2复位电路
图4-3最小系统电路
4.2下载电路
MAX232是电平转换芯片。
1970年,美国电气学会规定“RS232”串口通信协议。
规定逻辑“1”,-5—-15V;逻辑“0”,+5—+15.噪声容限为2V.要实现利用串口与单片机进行通信,就要进行电平转换,把标准转化成单片机可以识别的。
MAX220—MAX249都是电平转换芯片,在单片机最小系统中,使用MAX232.
图4-4下载电路
4.3键盘电路
键盘分编码键盘和非编码键盘,键盘上闭合键的识别由专用的硬件编码器实现,并产生按键编码号或键值的称为编码键盘,如计算机键盘。
而靠软件编程来识别的称为非编码键盘,在单片机组成的各种系统中,用的最多的是非编码键盘,也有用到编码键盘的,我们这里用的就是非编码键盘。
在这种非编码键盘的单片机系统中,键盘处理程序首先执行有无按键按下的程序段,当确认有按键按下后,下一步就要识别哪一个按键被按下,对键的识别常采用逐行(逐列)扫描的方法。
单片机检测按键是否被按下的依据是检测与该键对应的I/O口是否为低电平。
判断键盘哪一个键被按下。
方法是:
一次给行线送低电平,然后查所有列线状态,称为行扫描,如果全为1,则所按下键不在此行,如果不全为1,则所按下键必在此行,而且是在与零电平列线相交的交点上的那个键。
本设计中有2*4矩阵键盘和独立键盘。
矩阵键盘可以有效的减少键盘与单片机接口时所占用的I/O接口。
图4-5键盘电路
如图所示,2*4矩阵键盘的行线和列线者接到了单片机的P3口。
S1,S2,S3,S4为独立键盘。
4.4显示电路
4.4.1数码管结构
数码管内部有8个发光二极管,公共端由8个发光二极管的阴极并接而成,正常显示时公共端接低电平(GND),各发光二极管是否点亮取决于a-dp各引脚上是否是高电平。
LED数码管的外形结构如图4-5,外部有10个引脚,其中3,8脚为公共端也称位选端,其余8个引脚称为段选端,当要使某一位数码管显示某一数字((0-9中的一个)必须在这个数码管的段选端加上与数字显示数字对应的8位段选码(也称字形码),在位选端加上低电平即可。
LED有共阴极和共阳极两种。
如图4-5所示。
二极管的阴极连接在一起,通常此公共阴极接地,而共阳极则将发光二极管的阳极连接在一起,接入+5V的电压。
一位显示器由8个发光二极管组成,其中7个发光二极管构成字型“8”的各个笔划(段)a~g,另一个小数点为dp发光二极管。
当在某段发光二极管施加一定的正向电压时,该段笔划即亮;不加电压则暗。
符号和引脚共阴极共阳极
图4-6LED结构图
表4-1LED显示段码
字型
共阳极段
共阴极段
字型
共阳极段
共阴极段
0
C0H
3FH
9
90H
6FH
1
F9H
06H
A
88H
77H
2
A4H
5BH
B
83H
7CH
3
B0H
4FH
C
C6H
39H
4
99H
66H
D
A1H
5EH
5
92H
6DH
E
86H
79H
6
82H
7DH
F
84H
71H
7
F8H
07H
空白
FFH
00H
8
80H
7FH
P
8CH
73H
4.4.2LED显示器工作原理:
(1)LED静态显示方式
LED显示器工作于静态显示方式时,各位的共阴极连接在一起并接地;每位的段码分别与8位的锁存器输出相连。
各个LED的显示字符一经确定,相应锁存的段码输出将维持不变,直到送入另一个字符为止,故静态显示器的亮度较高。
(2)LED动态显示方式
在多位LED显示时,为简化硬件电路,通常将所有的段码线相应段并联在一起,由1个8位I/0口控制,形成段码线的多路复用,而各位的共阴极分别由相应的I/O线控制,形成各位的分时选通。
设计中采用八个共阴LED管,其中段码线采用CD4511译码占用4位I/O口,而位选信号使用74LS138占用3个I/O口,则只要7个I/O口。
由于各位的段码线并联,4位I/O口输出的段码对各个显示位来说都是相同的。
因此,在同一时刻,如果各位选线都处于选通状态的话,8位LED将显示相同的字符。
若要各位LED能够同时显示出与本位相应的显示字符,就必须采用动态显示方式,即在某一时刻,只让某一位的位选线处于选通状态,而其它各位的位选线处于关闭状态,同时,段码线上输出相应位要显示的字符的段码。
这样,在同一时刻,8位LED中只有选通的那1位显示出字符,而其他7位则是熄灭的。
同样,在下一时刻,只让下一位的位选线处于选通状态,而其他各位的位选线处于关闭状态,在段码线上输出将要显示字符的段码,则同一时刻,只有选通位显示出将要显示的字符,而其他各位则是熄灭的。
如此循环下去,就可以使各位显示出将要显示的字符。
虽然这些字符是在不同时刻出现的,而在同一时刻,只有一位显示,其他各位熄灭,但由于LED显示器的余辉和人眼的视觉暂留作用,只要每位显示间隔足够短,则可以造成多位同时亮的假象,达到同时显示的效果。
发光二极管从导通到发光有一定的延时,导通时间太短,则发光太弱,人眼无法看清;但也不能太长,因为要受限于临界闪烁频率,而且此时间越长,占用CPU时间也越多。
另外,显示位数增多,也将占用大量的CPU时间,因此动态显示的实质是以牺牲CPU时间来换取器件的减少。
本次设计中,6位LED七段数码管采用共阴极接法。
图4-7显示电路
如图所示,单片机的P0口通过U2锁存器(74HC573)与数码管相连,来实现位选;通过U3与数码管相连来实现段选。
4.5温度传感器电路设计
4.5.1DS18B20的工作原理
根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过三个步骤:
1.每一次读写之前都必须要对DS18B20进行复位;
2.复位成功后发送一条ROM指令;
3.最后发送RAM指令,这样才能对DS18B20进行预定的操作。
复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待15~60微秒左右后发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位成功。
其工作时序包括初始化时序、写时序和读时序,具体工作方法如图4-8,4-9,4-10所示。
(1)初始化时序
图4-8初始化时序
总线上的所有传输过程都是以初始化开始的,主机响应应答脉冲。
应答脉冲使主机知道,总线上有从机设备,且准备就绪。
主机输出低电平,保持低电平时间至少480us,以产生复位脉冲。
接着主机释放总线,4.7KΩ上拉电阻将总线拉高,延时15~60us,并进入接受模式,以产生低电平应答脉冲,若为低电平,再延时480us。
(2)写时序
图4-9写时序
写时序包括写0时序和写1时序。
所有写时序至少需要60us,且在2次独立的写时序之间至少需要1us的恢复时间,都是以总线拉低开始。
写1时序,主机输出低电平,延时2us,然后释放总线,延时60us。
写0时序,主机输出低电平,延时60us,然后释放总线,延时2us。
(3)读时序
图4-10读时序
总线器件仅在主机发出读时序是,才向主机传输数据,所以,在主机发出读数据命令后,必须马上产生读时序,以便从机能够传输数据。
所有读时序至少需要60us,且在2次独立的读时序之间至少需要1us的恢复时间。
每个读时序都由主机发起,至少拉低总线1us。
主机在读时序期间必须释放总线,并且在时序起始后的15us之内采样总线状态。
主机输出低电平延时2us,然后主机转入输入模式延时12us,然后读取总线当前电平,然后延时50us。
当主机收到DSl8B20的响应信号后,便可以发出ROM操作命令之一,这些命令如表4-2所示。
RAM指令集如表4-3所示。
主机控制DS18B20完成温度转换过程是:
每一次读写之前都要对DS18B20进行复位,即将数据总线下拉500us,然后释放,DS18B20收到信号后等待16-60us左右,之后发出60-240us的存在低脉冲,主CPU收到此此信号表示复位成功;复位成功后发送一条ROM指令,然后发送RAM指令,这样才能对DS18B20进行预订的读写操作。
表4-2ROM操作命令
指令
约定代码
功能
读ROM
33H
读DS18B20中的编码
符合ROM
55H
发出此命令后,接着发出64位ROM编码,访问单线总线上与该编辑相对应的DS18B20使之做出响应,为下一步对该DS18B20的读写作准备
搜索ROM
0F0H
用于确定挂接在同一总线上的DS18B20个数和识别64位ROM地址,为操作各器件作准备
跳过ROM
0CCH
忽略64位ROM地址,直接向DS18B20发送温度变换指令
告警搜索命令
0ECH
执行后,只有温度跳过设定值上限或下限的片子才能做出反应
表4-3RAM指令集
指令
约定代码
功能
温度转换
44H
启动DS18B20进行温度转换
读暂存器
0BEH
读暂存器9个字节内容
写暂存器
4EH
将数据写入暂存器的TH、TL字节
复制暂存器
48H
把暂存器的TH、TL字节写到E2RAM中
重调E2RAM
0B8H
把E2RAM中的TH、TL字节写到暂存器TH、TL字节
读供电方式
0B4H
启动DS18B20发送电源供电方式的信号给主CPU
4.5.2DS18B20的测温原理
DS18B20的测温原理是这这样的,器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1;高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入。
器件中还有一个计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。
计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将最低温所对应的一个基数分别置入减法计数器1、温度寄存器中,计数器1和温度寄存器被预置在最低温所对应的一个基数值。
减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时,温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器计数到0时,停止温度寄存器的累加,此时温度寄存器中的数值就是所测温度值。
其输出用于修正减法计数器的预置值,只要计数器门仍未关闭就重