武汉职业技术学院电信学院09届毕业论文
P3口 引脚P3.0~P3.5与P3.7为7个带内部上拉的双向I/0引脚。P3.6在内部已与片内比较器输出相连,不能作为通用I/O引脚访问。P3口的输出缓冲器能接收20mA的灌电流;P3口写入“1”后,内部上拉,可用输入。P3口同时也可为闪速存储器编程和编程校验接收控制信号。
3
武汉职业技术学院电信学院09届毕业论文
二、PROTEUS的基本应用
2.1 proteus中仿真点亮一个LED指示灯
首先使用单片机51编写一个灯亮的程序,使用Keil uVision2同步仿真调试程序,然后在proteus中进行仿真测试,结果与Keil结果一致。AT89C51中,经常用P0端口驱动外部负载,在这里,通过Proteus用P0.0端口驱动一个LED指示灯,用Keil编程,驱动该LED指示灯亮。
这里我们直接在P0.0口接一个LED灯。其电路图1所示。
图1 Proteus驱动LED硬件电路图
程序见如下。 ORG 0000H LJMP MAIN
ORG 0030H
MAIN:MOV A,#0FFH MOV P1,A SJMP $ END
通过Protues仿真LED灯随着程序的写入被点亮,说明电路连接正确,程序输入正确,圆满完成第一阶段课题研究。为后续课题研究做铺垫。
在Keil中,对单片机的汇编文件的Debug进行设置,选择使用Proteus VSM Simulator进行调试。如图2所示。
然后,对程序进行调试,当程序运行时,由P0.0口驱动的LED指示灯点亮。
4
武汉职业技术学院电信学院09届毕业论文
图2 KEIL Debug 设置图
5
武汉职业技术学院电信学院09届毕业论文
三、 倒数定时器的设计
3.1整体硬件结构
把结构图稍微说明一下,由哪几个部分组成,如图3所示。
报警部分 单片机控制 显示部分 驱动部分 频率提供
图3 系统硬件框图
3.2 硬件方案论证
(一)控制部分
方案:选择89C2051单片机,由于74系列、40系列小规模数字芯片设计的倒计时器非常多,但有显示不直观,调整参数不灵活,计时精度低(采用RC振荡)等缺点。2051内部自带2K字节可编程FLASH存储器的低电压、高性能COMS八位微处理器,与Intel MCS-51系列单片机的指令和输出管脚相兼容。2051将多功能八位CPU和闪速存储器结合在单个芯片中,构成的单片机系统是具有结构最简单、造价最低廉、效率最高的微控制系统,省去了外部的RAM、ROM和接口器件,节省了成本,提高了系统的性价比。因此采用89C2051单片机作为倒计时器的核心器件。
(二)频率部分
方案:选择XTAL 6MHz晶振,晶振的品质因素Q和特性阻抗都非常高,而且接入系数很小,因此具有很高的频率稳定度。工作电压在2.6-5.5V之间,I/O口的输出电压能够提供这个无源晶振的正常振荡。
(三)驱动部分
方案:选择三极管驱动,1K的上拉电阻,限流作用使得三极管工作于放大状态,它同时起到片选某个数码管的作用,也就是开关单片机输出0和1控制数码管的亮与灭。另外三极管成本低,硬件连接方便。
3.3 硬件实现
整机由89C2051、三位led数码管、K1-K10、R、T等元器件组成。89C2051内部T1定时器完成100mS定时中断功能。为了减少硬件,由89C2051的P1口直接输出led的段码,BCD转换由软件完成。位选码由P3.0,P3.1,P3.7输出。
6
武汉职业技术学院电信学院09届毕业论文
键盘扫描与led位选码的脚共用,由于89C2051的灌入电流:20mA,故直接驱动蜂鸣器、PNP晶体管。Led数码管采用共阴型。
整机电路图见附录附图1。 (一)时分显示部件
二极管的阴极连接在一起,通常此公共阴极接地,接入-5V的电压。一位显示器由8个发光二极管组成,其中7个发光二极管构成字型“8”的各个笔划(段)a~g,另一个小数点为dp发光二极管。当在某段发光二极管施加一定的正向电压时,该段笔划即亮;不加电压则暗。为了保护各段LED不被损坏,需外加限流电阻。
众所周知,LED显示数码管通常由硬件7段译码集成电路,完成从数字到显示码的译码驱动。本系统采用软件译码,以减小体积,降低成本和功耗,软件译码的另一优势还在于比硬件译码有更大的灵活性。所谓软件译码,即由单片机软件完成从数字到显示码的转换。从LED数码管结构原理可知,为了显示字符,要为LED显示数码管提供显示段码,组成一个“8”字形字符的7段,再加上1个小数点位,共计8段,因此提供给LED数码管的显示段码为1个字节。各段码位与显示段的对应关系如表1所示。
表1 各段码位的对应关系
段码位 显示段 D7 dp D6 g D5 f D4 e D3 d D2 c D1 b D0 a 需说明的是当用数据口连接LED数码管a~dp引脚时,不同的连接方法,各段码位与显示段有不同的对应关系。通常数据口的D0位与a段连接,D1位与b段连接,??D7位与dp段连接,如表1所示,表2为用于LED数码管显示的十六进制数和空白字符与P的显示段码。
表2 LED显示段码
字型 0 1 2 3 4 5 6 7 8 共阴极段码 3FH 06H 5BH 4FH 66H 6DH 7DH 07H 7FH 字型 9 A B C D E F 空白 P 共阴极段码 6FH 77H 7CH 39H 5EH 79H 71H 00H 73H 注: “空白”字符即没有任何显示。 7