内部上拉为高电平。它也可作为通用的I/O口使用,传送用户的输入输出数据,P3口也作为一些特殊功能端口使用,如下所示: P3.0:RXD(串行数据接收口) P3.1:TXD(串行数据发送口) P3.2:INT0(外部中断0输入) P3.3:INT1(外部中断1输入) P3.4:T0(记数器0计数输入) P3.5:T1(记时器1外部输入) P3.6:WR(外部RAM写选通信号) P3.7:RD(外部RAM读选通信号) 图2.1.1 AT89C51单片机 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平状态。 ALE/PROG:地址锁存允许/编程线,当访问片外存储器时,在P0.7~P0.0引脚线上输出片外存储器低8位地址的同时还在ALE/PROG线上输出一个高电位脉冲,其下降沿用于把这个片外存储器低8位地址锁存到外部专用地址锁存器,以便空出P0.7~P0.0引脚线去传送随后而来的片外存储器读写数据。在不访问片外存储器时,单片机自动在ALE/PROG线上输出频率为1/6晶振频率的脉冲序列。 PSEN:外部程序存储器ROM的选通信号。在由外部程序存储器取指期间,每个机器周期两次PSEN有效。但在访问外部数据存储器时,这两次有效的PSEN信号将不出现。 EA/VPP:允许访问片外存储器/编程电源线,当EA保持低电平时,则在此期间允许使用片外程序存储器,不管是否有内部程序存储器。当EA端保持高电平时,则允许使用片内程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1和XTAL2:片内振荡电路输入线,这两个端子用来外接石英晶体和微调电容,即用来连接单片机片内OSC的定时反馈回路。 2.1.4 LED数码管简介
7
本系统选用五个LED数码管来进行温度显示。LED又称为数码管,它主要是由8段发光二极管组成的不同组合,其中 a~g为数字和字符显示段,dp为小数点的显示,通过a~g这7个发光二极管点亮的不同组合,可以显示0~9和A~F共16个数字和字母。LED数码管可以分为共阴极和共阳极两种结构,如下图2.1.2(a)和图2.1.2(b) 所示。共阴极结构把8个发光二极管阴极连在一起,共阳极结构把8个发光二极管阳极连在一起。通过单片机引脚输出高低电平,可使数码管显示相应的数字或字母,这种使数码管显示字形的数据称字形码,又称段选码[5]。 Rx8Rx8abcdefgdpgfgndababcdefg 数码管引脚分配图 dpedgndcdpa.共阴极 图2.1.2 七段LED数码管 表2.1.1 7段LED的段选码表
b.共阳极 显示字符 共阴极段码 共阳极段码 显示字符 共阴极段码 共阳极段码 0 1 2 3 4 5 6 7 3fH 06H 5bH 4fH 66H 6dH 7dH 07H C0H F9H A4H B0H 99H 92H 82H F8H 8 9 A B C D E F 7fH 6fH 77H 7fH 39H 3fH 79H 71H 80H 90H 88H 83H C6H A1H 86H 8EH 一个共阴极数码管接至单片机的电路,要想显示数字“7”须a、b、c这3个显示段发光 (即这3个字段为高电平)只要在P0口输入00000111(07H)即可。这里07H即为数字7的段选码。字形与段选码的关系见表2.1.1所示。
2.2 各部分电路设计
[5]
胡全.51单片机的数码管动态显示技术[J] .信息技术,2009,13:25—26
8
2.2.1 开关复位与晶振电路
在单片机应用系统中,除单片机本身需要复位以外,外部扩展I/O接口电路也需要复位,因此需要一个包括上电和按钮复位在内的系统同步复位电路。单片机上的XTAL1和XTAL2用来外接石英晶体和微调电容,即用来连接单片机片内OSC的定时反馈回路。本设计中开关复位与晶振电路如下图所示,当按下按键开关S1时,系统复位一次。其中电容C1、C2为20pF,C3为10uF,电阻R2、R3为10k,晶振为11.0592MHz。
图2.2.1 系统复位与晶振电路
2.2.2 独立键盘连接电路
键盘包括2个独立按键S2和S3,一端与单片机的P1.3和P1.4口相连,另一端接地,当按下任一键时,P1口读取低电平有效。系统上电后,进入键盘扫描子程序,以查询的方式确定各按键,完成温度初值的设定。其中按键S1为加按键,每按下一次,系统对最初设定值加一,按键S2为减按键,每按下一次,系统对初设定值进行减一计算。其接线图如下:
9
图2.2.2 独立键盘连接电路
2.2.3 数码管显示电路
本设计制作中选用5位共阴极数码管作为显示模块,它和单片机硬件的接口如图
2.2.3所示。其中前3位数码管DS1、DS2、DS3用于显示温度传感器实时检测采集到的温度,可精确到0.1摄氏度,显示范围为0~99.9摄氏度;后2位数码管DS4、DS5用于显示系统设置的初值温度,只能显示整数的温度值,显示范围为0~99摄氏度。5位数码管的段选a、b、c、d、e、f、g、dp线分别与单片机的P0.0~P0.7口连接,其中P0口需接一10K的上拉电阻,以使单片机的P0口能够输出高低电平。5位数码管的位选W1~W5分别与单片机的P2.0~P2.4口相连接,只要P2.0~P2.4中任一位中输出低电平,则选中与该位相连的数码管。
10
图2.2.3 数码管显示电路
2.2.4 温度采集电路
DS18B20数字温度传感器通过其内部计数时钟周期来的作用,实现了特有的温度测量功能。低温系数振荡器输出的时钟信号通过由高温度系数振荡器产生的门周期而被计数,计数器预先置有与-55℃相对应的一个基权值。如果计数器计数到0时,高温度系数振荡周期还未结束,则表示测量的温度值高于-55℃,被预置在-55℃的温度寄存器中的值就增加1℃,然后这个过程不断重复,直到高温度系数振荡周期结束为止。此时温度寄存器中的值即为被测温度值,这个值以16位二进制形式存放在存储器中,通过主机发送存储器读命令可读出此温度值,读取时低位在前,高位在后,依次进行。由于温度振荡器的抛物线特性的影响,其内用斜率累加器进行补偿 [6]。
DS18B20在使用时,一般都采用单片机来实现数据采集。只须将DS18B20信号线
[6]
李钢,赵彦峰.1-Wire总线数字温度传感器DSI8B20原理及应用[J].现代电子技术,2005,28(21):77—79.
11