简易秒表的制作完结.docx
《简易秒表的制作完结.docx》由会员分享,可在线阅读,更多相关《简易秒表的制作完结.docx(12页珍藏版)》请在冰豆网上搜索。
简易秒表的制作完结
课题设计论文
课题名称:
简易秒表的制作
班级:
P14电气2班
姓名:
潘娟康盼红
学号:
201403170131201403170130
指导教师:
李红艳
2015年12月28日
一、设计任务与设计要求
1、设计任务
用8051单片机设计4位LED数码管显示“分值”和“秒值”。
2、设计要求
用8051单片机,采用动态扫描的方式,用4位LED数码管显示秒值,晶振采用6赫兹。
具体要求如下:
a.从右向左显示秒值的个位、十位,分值的各位和十位,个位能向十位进位。
b.上电后首先显示00.00,表示从00.00秒开始计时,当时间显示到59.59时,
4位显示都清零从头开始。
c.以三个独立式按键实现复位、启动、停止。
二、设计方案
本设计分为时钟电路、复位电路、显示电路和单片机四大部分,这些模块中单片机占主控地位。
时钟电路常用的有内部时钟方式和外部时钟方式,但因为本设计中只需要一片单片机,所以采用内部时钟方式。
复位电路中的“复位”按钮是按键手动复位,它有电平和脉冲两,种方式,本设计选择了按键电平复位电路,显示电路所用的数码管有共阴和共阳之分,不管使用何种数码管,P0口作为I/O使用时都是需要上拉电阻才能驱动数码管。
另外,因为单片机的4个并行I/O口的输出电流一般是1mA,短路电流为4mA左右,而数码管的最少驱动电流也需要10mA,因而不管在使用共阴数码管时,单片机输出口也必须使用上拉电阻提高输出电流,才能驱动数码管。
为了使电路简单化,本设计选用共阳数码管。
使用动态显示方式是将所有显示位的段码线的相应段并联在一起,由一个8位I/O口控制,而各位的共阴或共阴极分别由相应的I/O线控制,形成各位的分时选通。
根据硬件设计,由单片机的p2口控制位码输出,p0口控制段码输出。
动态显示程序中,在单片机内部RAM中设置待显示数据缓冲区,由查表程序完成显示译码,将缓冲区内待显示数据转换成相应的段码,再将段码通过8051的p0口输出:
位码数据由累加器循环左移指令产生,再通过p2口输出。
整体程序主要分为3部分:
主程序、显示子程序、和定时器中断程序。
主程序主要是初始化部分和不断调用动态显示子程序部分。
动态显示子程序完成4位LED的轮流位扫描,它被主程序不断调用,以保证稳定可靠的显示。
显示时间的刷新由定时器中断产生,定时器每秒50ms中断一次,当中断20次后(即1s后),对时间单元(秒计数单元、分计数单元)进行更新,然后通过拆字子程序将时间单元里面的十六进制数拆开为两个BCD码,并送到显示缓冲区。
返回主程序后显示缓冲区的待显示数据被刷新一次,数码管相应的显示数值也就随之发生变化。
通过键盘扫描方式取得KE0、KE1、KE2的键值,用键盘的中断处理程序实现秒表的启动、停止、复位。
三、主要硬件电路设计
1、单元电路设计
(1)时钟电路
注:
//单元电路设计中的网络标号的数字即为单片机的管脚//
时钟电路如图所示,时钟电路的晶振频率越高,系统的时钟频率越高,单片机的运行速度也就越快。
晶振频率根据设计需要设为6MHz,又根据谐振性质,电路中的电容C1、C2选择为30pF左右。
该电容的的大小会影响振荡器频率的高低、振荡器的稳定性和起振的快速性。
(2)复位电路
复位电路如图所示,单片机复位条件是,必须使RST\VPD或RST引脚9加上持续2个机器周期的高电平。
在本次设计中时钟频率为6MHz,每个机器周期为2us,则需要4us以上时间的高电平,在RST引脚出现高电平后的第二个机器周期执行复位。
(a)为上电复位电路,它是利用电容充电来实现的。
在接电瞬间,RST端的电位与VCC相同,随着充电电流的减少,RST的电位逐渐下降。
只要保证RST为高电平的时间大于两个机器周期,便能正常复位。
(b)为按键复位电路,该电路除了具有上电复位功能外,若要复位只需按图中的RESET键,此时电源VCC经电阻R1、R2分压,在RST端产生一个复位高电平。
(3)显示电路
4位LED显示的位码由单片机的P2口输出,段码由P0口输出,P2口线与LED之间接有500欧母限流电阻;LED为共阳极数码管,显示方式为动态显示方式;3个按键可以采用独立式键盘,其中两个按键分别连接到外部中断INT0、INT1,第3个按键连接到定时器1的T1端口,以中断方式实现键盘的扫描。
动态显示程序中,在单片机内部RAM中设置待显示数据缓冲区,由查表程序完成显示译码,将缓冲区内待显示数据转换成相应的段码,再将段码痛过8051的P0口输出;位码数据由累加器循环左移指令产生,再通过P2口输出。
2、电路元件介绍
51单片机的引脚图
8051微控制器属于MCS-51系列,自1980年开始由inter公司设计以来,由于其完善的指令集,在嵌入系统中占有很大的市场。
其资源包括8K的程序存储器,1K的数据存储器,两个16bit的计数控制器和四组八位的通用I\O口。
CPU结构:
8051内部CPU是一个字长为二进制8位的中央处理单元,也就是他对数据的处理是按字节为单位进行的。
8051内部CPU也是由运算器、控制器和专用寄存器组三部分电路组成。
存储器:
标准8501单片机在物理上有4个存储空间:
片内程序存储器和片外程序存储器、片内数据存储器、片外数据存储器。
I\O输入、输出端口:
1、P0.0~P0.7P0口位双向口线(在引脚的39—32号端子)。
2、P1.0~P1.7P1口8位双向口线(在引脚的1—8号端子)。
3、P2.0~P2.7P2口8位双向口线(在引脚的21—28号端子)。
4、P3.0~P3.7P3口8位双向口线(在引脚的10—17号端子)
其中单片机的P3口有第二功能:
8051单片机P0、P1、P2、P3口介绍:
P0口:
P0口是一个8位漏极开路的双向I/O口。
作为输出口,每位能驱动8个TTL逻辑电平。
对P0端口写“1”时,引脚用作高阻抗输入端用。
在访问外部数据存储器或程序存储器时,P0口被分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。
P1口:
P1口是一个具有内部上拉电阻的8位双向I/O口,P1输出缓冲器能驱动4个TTL逻辑电平。
对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。
P2口:
P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口P2写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。
P3口:
P3口是一组带有内部上拉电阻的8位双向I/O口。
P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。
此时,被外部拉低的P3口将用上拉电阻输出电流。
RST——复位端:
当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。
数码管
数码管由8个发光二极管构成数码管又分为共阴极和共阳极二种结构。
共阳极数码管的8个发光二极管的阴极连接在一起,通常接高电平,其他管脚接段驱动电源输出端。
当某段驱动电源的输出端为低电平时,该端所连接的字段导通并点亮。
共阴极数码管的8个发光二极管的阴极连在一起,通常接低电平,其他管脚接段驱动电源输出端当某段驱动电路的输出端为高电平时,该端所连接的字段导通并点亮。
元件清单
元件名称
数量
备注
元件名称
数量
备注
数码管
4块
80c51
1块
按钮
3个
电容
2个
33pF
电阻
2个
电容
1个
100uF
晶振
1个
6MHz
四、主要软件电路设计
1、资源分配表
名称
地址分配
用途
初始化值
MSEC
20H
定时器50ms计数单元
14H
SECOND
21H
秒计数单元
00H
MIN
22H
分计数单元
00H
30H~35H
显示缓冲区
30H:
秒的个位31H秒的十位
32H:
分的个位33H分的十位
00H
40H以上
堆栈区
2、程序流程图
显示子程序流程图
主程序流程图
定时器中断子程序
源程序设计如下:
MSECEQU20H
SECONDEQU21H
MINEQU22H
ORG0000H
AJMPMAIN
ORG0003H
AJMPKE1
ORG000BH
AJMPCONT
ORG0013H
AJMPKE0
ORG001BH
AJMPKE2
MAIN:
MOVTMOD,#61H
MOVTH0,#9EH
MOVTL0,#58H
MOVTH1,#0FFH
MOVTL1,#0FFH
MOVSECOND,#00H
MOVMIN,#00H
MOVMSEC,#14H
MOVSP,#3FH
MOV30H,#00H
MOV31H,#00H
MOV32H,#00H
MOV33H,#00H
MOVIE,#8FH
SETBTR1
START:
LCALLDISP
SJMPSTART
DISP:
MOVR0,#30H
MOVR7,#00H
MOVR2,#04H
MOVR3,#08H
MOVA,@R0
MOVP2,#0FFH
DISP1:
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVP0,A
MOVA,R3
MOVP2,A
DJNZR7,$
DJNZR7,$
RRA
MOVR3,A
INCR0
MOVA,@R0
DJNZR2,DISP1
RET
TAB:
DB0C0H,0F9H,0A4H,0B0H,99H
DB92H,82H,0F8H,80H,90H
CONT:
PUSHACC
MOVTH0,#9EH
MOVTL0,#58H
DJNZMSEC,RN
MOVMSEC,#14H
INCSECOND
MOVA,SECOND
MOVR1,#31H
LCALLBINBCD
MOVA,SECOND
CJNEA,#60,RN
MOVA,#00H
MOVSECOND,A
MOVR1,#31H
LCALLBINBCD
MOVA,MIN
CJNEA,#60,RN
MOVA,#00H
MOVMIN,A
MOVR1,#33H
LCALLBINBCD
RN:
POPACC
RETI
BINBCD:
MOVB,#10H
DIVAB
MOV@R1,A
DECR1
MOVA,B
MOV@R1,A
KE0:
SETBTR0
RETI
KE1:
CLRTR0
RE