用8031单片机控制可测方波1~100Hz,并显示每分钟计数的脉冲
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
桂林电子科技大学单片机最小应用系统
设
计
报
告
指导老师:吴兆华
学生:
学号:
桂林电子科技大学机电工程系
目录
一、实验课题及要求 (3)
二、实验目的 (3)
三、系统硬件电路 (3)
3.1硬件电路说明 (4)
3.3最小系统控制部分 (6)
3.3.1晶振电路 (6)
3.3.2复位电路 (8)
四、软件设计 (11)
4.1程序流程图 (11)
4.2程序源代码 (12)
五、设计总结 (14)
六、参考文献 (15)
一、实验课题及要求
用8031单片机控制可测方波1~100Hz,并显示每分钟计数的脉冲
二、实验目的
1、加深外部中断指令的基本使用方法;
2、熟悉外部中断处理程序的编程方法;
3、进一步熟悉8051内部定时/计数器的初始化、使用方法及编程方
法;
4、进一步掌握8051中断处理程序的编程方法和应用;
5、掌握I/O接口的基本方法;
6、学会使用并熟练掌握电路绘制软件Protel99SE(或DXP)。
三、系统硬件电路
整个设计主要包括单片机基本的晶振电路,按键复位电路,设计中需要的LED管,开关、按键等。
具体的电路图如下图1所示
图1系统设计总电路图
3.1硬件电路说明
本次硬件系统包括单片机最小系统、外部中断电路、LED显示电路三部分在下面介绍中对每一部分都有详细的说明。
3.2 AT89C51单片机简介
AT89S51单片机是美国ATMEL公司生产的低功耗,高性能CMOS 8位单片机,片内含4K bytes的可系统编程的Flash只读程序存储器,器件采用ATMEL 公司的高密度,非易失性存储技术生产,兼容标准8051指令系统及引脚。
它集Flash程序存储器,既可在线编程(ISP)也可用传统方法进行编程及通用8位微处理器于单片芯片中,ATMEL公司的功能强大,低价AT89S51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。
图2 AT89S51引脚图
AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含8k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及89C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。
1、AT89S51具有如下特点:
40个引脚,8k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电
路,片内时钟振荡器。
2、AT89S51的运行模式
(1)空闲模式
在空闲模式下,CPU处于睡眠状态,振荡器和所有片内外围电路仍然有效。
空闲模式可由软件设置进入(设IDL=1)。
在这种模式下,片内RAM和SFR中的内容保持不变。
空闲模式可通过任何一个允许中断或硬件复位退出。
若用硬件复位方式结束空闲模式,则在片内复位控制逻辑发生作用前长达约两个机器周期时间内,器件从断点处开始执行程序。
片内硬件禁止访问内部RAM,但不禁止访问端口。
为避免采用复位方式退出空闲模式时对端口的不应有的访问,在紧随设置进入空闲指令(即设IDL=1)的后面,不能是写端口或外部RAM 的指令。
(2)掉电模式
引起掉电模式的指令是执行程序中的最后一条指令(使PD=1的指令)。
在掉电模式下,振荡器停止工作,CPU和片内所有外围部件均停止工作,但片内RAM和SFR中的内容保留不变,直到掉电模式结束。
退出掉电模式可用硬件复位或任何一个有效的外部中断INT0和INT1。
复位可重新设置SFR中的内容,但不改变片内RAM中的内容。
在Vcc电源恢复到正常值并维持足够长的时间之后,允许振荡器恢复并达到稳定,方可进行复位,以退出掉电模式。
3、MCS-51系列单片机的并行I/O口
接口电路是微机必不可少的组成部分,并行输入确出接口是CPU和外部进行信息交换的主要通道。
MSC-51系列单片有4个8位并行双向I/O口P0~P3,共32根I/O线。
每一根线能独立用作输入或输出。
单片机可以外接键盘、显示器等外围设备.还可以进行系统扩展,以解决硬件资源不足问题。
4个并行口都是双向口,既可以输入又可以输出。
P0、P2口经常作外部扩展存储器时的数据、地址线,P3口除作I/O口外,每一根都有第二功能。
这4个I/O口结构基本相同,但仍存在差别。
(1) P1口是最常用的I/O口如图3所示,因为不作数据地址线,其结构中没有数据地址线,也没有多路开关MUX,输出驱动电路接有上拉电阻。
P1口输入输出时与P0作I/O时相似,输出数据时.先写入锁存器,经Q端反相,再经场效应管反相输出到引脚。
输入时,先向锁存器写l,使v管截止.外部引脚信号由下方读缓冲器送入内部总线,完成读引脚操作。
P1口也可以读锁存器。
外部提升电阻将引脚拉升至高电平,但输人的低电平信号能将其拉低,不会影响低电平的输入。
图3 P1口一位结构
(2) P3口为双功能口,当P3口作为通用I/O口使用时,它为准双向口,且每位都可定义为输入或输出口,其工作原理同P1口类似。
(3)P3口还具有第二功能,其引脚描述,P3口特殊功能
3.3最小系统控制部分
3.3.1晶振电路
电源引脚Vcc和Vss
Vcc:电源端,接+5V。
Vss:接地端。
时钟电路引脚XTAL1和XTAL2
XTAL1:接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,若使用外部TTL时钟时,该引脚必须接地。
XTAL2:接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出,若使用外部TTL时钟时,该引脚为外部时钟的输入端。
系统扩展时,ALE用于控制地址锁存器锁存P0口输出的低8位地址,从而实现数据与低位地址的复用。
图4 系统晶振电路
系统的时钟电路设计是采用的内部方式,即利用芯片内部的振荡电路(如图5所示)。
AT89S单片机内部有一个用于构成振荡器的高增益反相放大器。
引脚XTAL1和XTAL2分别是此放大器的输入端和输出端。
这个放大器与作为反馈元件的片外晶体谐振器一起构成一个自激振荡器。
外接晶体谐振器以及电容C1和C2构成并联谐振电路,接在放大器的反馈回路中。
对外接电容的值虽然没有严格的要求,但电容的大小会影响震荡器频率的高低、震荡器的稳定性、起振的快速性和温度的稳定性。
因此,此系统电路的晶体振荡器的值为12MHz,电容应尽可能的选择陶瓷电容,电容值约为22μF。
在焊接刷电路板时,晶体振荡器和电容应尽可能安装得与单片机芯片靠近,以减少寄生电容,更好地保证震荡器稳定和可靠地工作。
外部程序存储器读选通信号,是读外部程序存储器的选通信号,低电平有效。
程序存储器地址允许输入端/VPP。
当为高电平时,CPU执行片内程序存储器指令,但当PC中的值超过0FFFH 时,将自动转向执行片外程序存储器指令。
当为低电平时,CPU只执行片外程序存储器指令。
输入/输出口引脚P0、P1、P2和P3。
P0口(P0.0~P0.7):该端口为漏极开路的8位准双向口,负载能力位8高LSTTL负载,它为8位地址线和8位数据线的复用端口。
P1口(P1.0~P1.7):它是一个内部带上拉电阻的8位准双向I/O口,P1口的驱动能力为4个LSTTL负载。
P2口(P2.0~P2.7):它为一个内部带上拉电阻的8位准双向I/O口,P2口
的驱动能力也为4个LSTTL负载。
在访问外部程序存储器时,它作存储器的高8位地址线。
P3口(P3.0~P3.7):P3口同样是内部带上拉电阻的8位准双向I/O口,P3口除了作为一般的I/O口使用之外,其还具有特殊功能。
3.3.2复位电路
复位使单片机处于起始状态,并从此状态开始运行MCS5-51单片机RST引脚为复位端,该引脚连续保持2个机器周期(24个时钟振荡周期)以上的高电平。
可使单片机复位。
本论文使用的是外部复位电路,单片机在启动后要从复位状态开始运行,因此上电时要完成复位工作,称上电复位,如图6-a所示。
上电瞬间电容两端的电压不能发生突变,只RST端为高电平+5v,上电后电容通过及RC电路放电RST端电压逐渐下降,直至低电平0V,如图6-c所示。
适当选择R、C的值,使RST端的高I电平维持2个机器周期以上即可完成复位。
单片机L在运行过程中,出于本身或外并干扰的原因会导致出错。
这时可按复位键以重新开始远行,按键复位可分为按键电平复位或按健脉冲复位,如图6-b所示。
按键脉冲复位和上电平复值的原理是一样的,都是利用RC电路的放电原理,如图6-d所示。
让RST端能保持一段时间的高电平,以完成复位,按键电平复位时,按键时间也应保持在两个机器周期以上。
(a) 上电复位 (b) 按键电平复位
(c) RC放电过程 (d) 电平复位过程
图5 单片机常用复位电路
根据设计要求和计算简便的原则,我们选择12M的石英晶振、30PF的电容、+5V电源,最小系统如下:
图6最小系统连接图
3.4LED显示电路
数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、4位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。
共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。
共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。
当某一字段的阴极为高电平时,相应字段就不亮。
共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。
共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。
当某一字段的阳极为低电平时,相应字段就不亮。
数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。
①静态显示驱动:静态驱动也称直流驱动。
静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。
静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,要知道一个89S51
单片机可用的I/O端口才32个呢:),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。
②动态显示驱动:数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。
通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。
在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。
图7四位数码管引脚图
四位数码管引脚如上图所示,在实际判别中,让有小数点的端对着自己,上面引脚的功能为1,a,f,2,3,b下面引脚为e,d,p,c,g,4 根据七段数码管的连接原则,可以将abcdefg分别依次连接在P0口,然后由P2口控制片选信号就可以了
四、软件设计
4.1程序流程图
4.2程序源代码
LED1 equ 40h
LED2 equ 41h
LED3 equ 42h
;存放三个数码管段码
org 0003h;外部中断0入口地址
Ljmp T0_INT
org 1bh;定时器1中断入口
jmp t1_int;
org 0000h
ljmp main
org 0030h
main:
MOV R1,#00H
SETB EA
SETB EX0;外部中断
SETB ET1;定时器中断
setb it0;外部中断0在下降沿时工作
mov tmod,#00010000b;1作定时器
setb tr1;激活定时器
MOV TL1,#00H
MOV TH1,#4CH
MOV SP,#60H
mov R0,#200;延迟10S
;MOV R3, #40H
BCD:
mov A,R1;
mov B,#100;
DIV AB;
DA A
MOV LED3,A;存百位
MOV A,B
MOV B,#10
DIV AB
DA A
MOV LED2,A;存十位
MOV LED1,B;存个位
LCALL DISPLAY
LJMP BCD
DISPLAY:
MOV P0,#0FFH
MOV R4,#11111110B
MOV R3,#3
LOOP:
MOV A,R4
MOV P2,A
;MOV R5,LED1
;MOV A,R5
;MOV A,@R5
MOV A,LED1
MOV DPTR , #TAB
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY
MOV A,R4
RLC A
MOV R4,A
;INC R5
;MOV LED1,LED2
INC LED1
DJNZ R3,LOOP
;JB ACC.3,DISPLAY
RETI
t0_int: ;外部中断0
PUSH PSW
PUSH ACC
INC R1
POP ACC
POP PSW
RETI
t1_int: ;定时器中断
PUSH PSW
PUSH ACC
DJNZ R0,GO
CLR EX0
GO:
POP ACC
POP PSW
RETI
delay:;5MS
MOV R6,#10
D1:
MOV R7,#250
DJNZ R7,$
DJNZ R6,D1
RET
tab:db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh;数码管的显示码表
end
五、设计总结
Protues功能强大,为我们进行电子电路原理图和仿真提供了良好的操作环境。
用Protues进行电路设计分为两大部分:原理图的设计和电路板的设计。
用protues进行电路板设计的第一步是其原理图的设计。
显然,原理图决定整个电路的基本功能。
具体步骤如下:
(1)图面设置:
Protues允许用户根据电路的规模设置图面的大小,按照偏好和习惯设置图面的样式。
实际上,设置图面就是设置了一个工作平面,以后的工作就要在这个平面上进行。
所以图面应该设置得足够大,为进一步工作提供一个足够大的工作空间。
(2)放置元件:
所谓放置元件就是从元件库中选取所需得元件,将其布置到图面上合适的位置,有时还要重定义元件的编号、封装。
元件的封装很重要,要根据元件的实际尺寸和实际封装来决定,要是元件没封装好,将会给以后电路板的制作带来很大的麻烦。
这些都是下一步工作的基础。
Protues为用户提供了一个非完备的元件库,并且允许用户对这个元件库进行编辑或者新建自己的元件库。
六、参考文献
[1]陈明萤.8051单片机记仇教程[M].科学出版社,2001.
[2]李林功.单片机原理与应用[M].机械工业出版社,2007.
[3]余修武. 单片机原理与应用[M].电子科技大学出版社,2008.
[4]黄菊生.单片机原理及接口技术[M].国防工业出版社,2007.。