99秒计数器.docx
- 文档编号:25258125
- 上传时间:2023-06-06
- 格式:DOCX
- 页数:23
- 大小:263.72KB
99秒计数器.docx
《99秒计数器.docx》由会员分享,可在线阅读,更多相关《99秒计数器.docx(23页珍藏版)》请在冰豆网上搜索。
99秒计数器
课程设计说明书
课程名称:
《单片机原理及其在煤矿中的应用》
设计题目:
99秒计数器设计
院系:
学生姓名:
学号:
专业班级:
指导教师:
2013年12月27日
课程设计任务书
设计题目
99秒计数器设计
学生姓名
所在院系
专业、年级、班
设计要求:
使用两位数码管显示器,显示两位数00-99计数;
具有启动按键、暂停按键、复位按键;
显示到99时有声音警报提示;
学生应完成的工作:
本设计以AT89C51单片机为主控模块,实现99秒计时及报警功能。
学生可以通过查阅手册和文献资料来选择合适的元器件,并设计合理的电路来实现符合要求的电路板实物。
主要任务包括:
(1)硬件原理图的设计。
(2)软件程序的设计:
学会对不同方案进行比较分析,并通过整体优点与缺点的比较,确定合理的方案。
(3)用汇编语言进行软件的编写与调试。
(4)撰写课程设计报告。
(5)该生负责流程图和软件编写。
课程设计提交的成果
1)设计说明书2)图样资料a)系统原理图;3)查阅文献不少于5篇
b)硬件电路图;
c)汇编语言源程序
d)PROTEUS运行仿真图
工作计划:
2013年12月30日—2013年12月30日:
搜索有关资料并进行硬件原理图设计;
2013年12月31日—2014年1月1日:
进行硬件电路与软件程序的编写及调试;
2014年1月2日—2014年1月2日:
编写课程设计说明书;
2014年1月3日—2014年1月3日:
提交课程设计。
任务下达日期:
2013年12月29日
任务完成日期:
2014年1月3日
指导教师(签名):
学生(签名):
摘要:
本设计以AT89C51单片机为主控模块,利用汇编语言编写数码管静态显示的专用程序来实现两位数码管静态显示系统,系统主要由电源模块、复位模块、外部时钟电路模块、数码管显示模块构成。
电源电路通过桥堆2W10和三端稳压器7805将交流电压变为5V的直流电压。
复位电路采用上电自动复位来实现。
时钟通过外部12M的晶振来控制。
两位数码管显示由两个共阳极的三极管进行驱动。
将汇编语言编写的两位数码管动态显示程序写入单片机来控制P2口,使数码管相应段点亮,同时利用人眼视觉暂留的特性和数码管的余辉效应,在扫描频率足够高时,人眼无法感觉数码管的变化,从而实现数码的动态显示。
关键词:
AT89C51;两位数码管;
1.1单片机简介...............................................................................................5
1.5设计要求...................................................................................................7
2.4晶振输入电路设计...................................................................................9
2.5复位电路设计...........................................................................................9
3.6连接方式.................................................................................................13
3.7软件设计.................................................................................................14
3.8系统调试..................................................................................................19
7.1软件电路图.............................................................................................22
7.2演示效果图.............................................................................................23
一、设计背景
1.1单片机简介
1、AT89C51是一种带4K字节FLASH存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除1000次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪速存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
这是按单片机适用范围来区分的。
80C51是通用型单片机,它不是为某种专用途设计的;专用型单片机是针对一类产品甚至某一个产品设计生产的,例如为了满足电子体温计的要求,在片内集成ADC接口等功能的温度测量控制电路。
2、单片机应用
(1)工业控制单片机广泛用于工业自动化控制系统中,数据采集、过程控制、过程测控和生产线上的机器人系统,都是用单片机作为控制器。
自动化使工业系统处于最佳工作状态,从而提高经济效益、、改善产品质量和减轻劳动强度,因此单片机技术广泛应用与机械、电子、石油、化工、纺织和食品等工业领域中。
(2)智能化仪器仪表在各类仪器仪表中引入单片机,可以使仪器仪表智能化、数字化、自动化,提高测试精度和准确度,简化结构,减小体积及重量,提高性能价格比。
例如:
只智能仪器,医疗器械和数字示波器等。
(3)智能家电家电产品智能化程度的进一步提高需要有单片机的参与,例如“微电脑控制”的洗衣机、电冰箱、微波炉、空调机、电视机和音响设备等,这里的“微电脑”实际上就是单片机。
(4)信息与通信技术图形终端机、传真机、复印机、调制解调器、声像处理器和数字滤波器等。
1.2单片机发展前景
目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。
导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。
更不用说自动控制领域的机器人、智能仪表、医疗器械了。
因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。
1.3共阳极数码管的显示方法
LED数码管是单片机控制系统中最常见的显示器件之一,一般用来显示处理结果或输入输出信号的状态。
数码管显示是一个系统工程中必不可少的人机交互环节,因此关于数码管的驱动也就是系统工程中的一个重要的环节。
数码管的驱动分为动态驱动和静态驱动两种。
所谓静态驱动,就是指无论多少位LED数码管,同时处于显示状态。
动态显示驱动是指无论在任何时刻只有一个LED数码管处于显示状态,及单片机采用“扫描”方式控制各个数码管轮流显示。
1.4共阳极数码管的驱动设计
将数码管每个LED灯对应单片机的一个I/O口。
通过单片机的P口来控制LED灯的亮和灭。
I/O口之间互相独立,需要用I/O口直接控制LED。
动态显示将数码管的每个引脚一对一连接在一起接单片机的数据,而将各个数码管的公共端单独送至单片机的I/O口进行片选。
此外,在此基础上,用单片机与三极管来驱动数码管,从而实现数码管的动态显示。
1.5设计要求
使用两位数码管显示器,显示两位数00-99计数;
具有启动按键、暂停按键、复位按键;
显示到99时有声音警报提示;
4.数码管动态显示,即扫描方式,每一位每间隔一段时间扫描一次。
字符的亮度及清晰度与每位点亮的停留时间和每位显示的时间内轮换导通次数有关。
二.设计方案
2.1方案一:
共阳极数码管静态显示
数码管静态显示电路如图2-1所示:
图2-1数码管静态显示电路
2.2方案二:
共阳极数码管动态显示
数码管动态显示电路如图2-2所示:
图2-2数码管动态显示电路
2.3数码管静态与动态显示的优缺点比较
静态显示方式简单不容易出错,如果电路设计合适,也能够用较少的线完成多个数码管的显示。
但与动态显示相比,动态显示电路连接更简单,节省单片机I/O口,从而节省单片机的资源,如今已经有很多这样成熟的基于动态扫描的芯片,并且采用动态显示方式极大的节省单片机的资源,特别是在单片机的I/O数量比较紧张的情况下,更能体现采用动态显示的优越性。
因此,在现在的多数电子系统中,数码管多数采用动态扫描技术来显示。
2.4晶振输入电路设计
AT89C51单片机内部的振荡电路是一个高增益反向放大器,引线XTAL1和XTAL2分别是放大器的输入端和输出端。
单片机内部虽然有振荡电路,但要形成时钟,外部还需附加电路。
AT89C51的时钟产生方式有两种:
内部时钟电方式和外部时钟方式。
由于外部时钟方式用于多片单片机组成的系统中,所以此处选用内部时钟方式。
即利用其内部的振荡电路在XTAL1和XTAL2引线上外接定时元件,内部振荡电路产生自激振荡。
最常用的是在XTAL1和XTAL2之间接晶体振荡器与电路构成稳定的自激振荡器,如图电路所示为单片机最常用的时钟振荡电路的接法,其中晶振可选用振荡频率为12MHz的石英晶体,电容器一般选择20PF左右。
2.5复位电路设计
本设计中AT89S51是采用上电自动复位和按键复位两种方式。
复位电路如图所示。
上电瞬间,电路充电,RST引线端出现正脉冲,只要RST端保持10ms以上的高电平,就能使单片机有效地复位。
其中R4和R5分别选择100Ω和4.7KΩ的电阻,电容器一般选择10μF。
2.6引脚介绍
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
单片机接口的选择:
MCS-51是标准的40引脚双列直插式集成电路芯片,有4种接口:
P0口,P1口,P2口,P3口.这4个I/O口具有不完全相同的功能P0口有三个功能:
外部扩展存储器时,当做数据总线;外部扩展存储器时,当作地址总线;不扩展时,可做一般的I/O使用,但内部无上拉电阻,作为输入或输出时应在外部接上拉电阻。
P1口只做I/O口使用:
其内部有上拉电阻。
P2口有两个功能:
扩展外部存储器时,当作地址总线使用;做一般I/O口使用,其内部有上拉电阻.P3口有两个功能:
除了作为I/O使用外(其内部有上拉电阻),还有一些特殊功能,由特殊寄存器来设置.
三、方案实施
3.1设计目的
为了进一步巩固学习的理论知识,增强学生对所学知识的实际应用能力和运用所学的知识解决实际问题的能力,开始为期两周的课程设计。
通过设计使学生在巩固所学知识的基础之上具有初步的单片机系统设计与应用能力。
1、通过本设计,使学生综合运用《单片机技术原理与应用》以及《数字电路》、《模拟电路》等课程的内容,为以后从事电子产品设计、软件编程、系统控制等工作奠定一定的基础。
2、学会使用KEILC和PROTEUS等软件,用汇编语言编写一个较完整的实用程序,并仿真运行,保证设计的正确性。
3、了解单片机接口应用开发的全过程:
分析需求、设计原理图、选用元器件、布线、编程、调试、撰写报告等。
应用AT89C51的定时器设计一个2位的LED数码显示作为“秒表”:
显示时间为00~99s,每秒自动加1,设计一个“开始”键,按下“开始”键秒表开始计时;设计一个“暂停”键,按下“暂停”键秒表停止计时;设计一个“复位”键,按下“复位”键后,秒表从0开始计时。
3.2硬件电路的分析
1.硬件原理框图如下:
图3-1硬件组成框图
该电路的工作原理:
AT89S52从稳压电路中获得稳定的+5V电压,接到VCC端,提供稳定的电压;P2口通过电阻接到显示电路的七段数码管的abcdefg端口上,数码管的共阳极接到三极管的集电极上;P0.0、P0.1口接三极管的基极作为位选;RST接复位电路,实现电路的复位;XTAL1、XTAL2接晶振电路;整个电路实现循环动态显示数字00~99.
3.3电源电路设计
图3-2电源电路
如图3-2所示,当外接交流电源经过变压通过桥堆2W10和7805时,经C1、C2、C3、C4对电源进行滤波,实现交流电压变为5V的直流电源,从而直接给单片机提供正常的工作电压。
3.4复位及振荡电路
图3-3复位电路图3-4振荡电路
如图3-3,复位电路用电容与按键的并联来实现,将它们并在一起,一端接高电平,另一端接地,从而实现高电平复位的功能。
如图3-4,时钟由12M的晶振来组成振荡电路,来控制单片机对数码管的动态扫描。
3.5数码管显示
图3-5数码管显示电路
如图3-5所示,两位数码管分别由两个PNP型三极管驱动,三极管的基极通过限流电阻接在单片机P0.0、P0.1,其中P0.0控制数码管的个位,P0.1控制数码管的十位。
数码管各段除小数点段外其余七段(a-g)通过限流电阻接在单片机P2口(P2.0-P2.6),两位数码管显示由单片机内部程序控制相应接口为低电平,从而实现从00—99动态循环显示。
例如:
十位和个位显示原理相同,谨以个位说明。
当个位数码管显示5时,5在程序中查表对应的十六进制数为92H,对应二进制为10010010B,其中P2.7、P2.4、P2.1为高电平,DP、e、b段熄灭,P2.6、P2.5、P2.3、P2.2、P2.0为低电平,g、f、d、c、a段点亮,则此时数码管上显示数字5。
3.6连接方式
单片机采用P2口的I/O来控制数码管的各个引脚。
复位键接到引脚9上,数码管的位选通过三极管和电阻分别与单片机的引脚1和39相连,晶振与单片机的引脚18和19连接,高电平与40引脚连接供电,20引脚直接接地。
3.7软件设计
此程序采用汇编语言用十六进制算法编写了两位数码管循环扫描动态显示的专用程序。
通过软件的控制使两位数码管能从00计数到99,到99秒后鸣声器发出警报声,按下复位键依次进行循环。
若在计数期间没有按下复位键时,不能重新从00开始计数而且鸣声器持续发出警报声。
并有电源开关控制让电路是否工作,且有指示灯只是电源是否正常。
通常可先编写简单的测试程序对硬件电路进行测试,排除硬件电路设计中存在的错误。
然后根据设计任务的要求确定系统程序的整体结构,尽可能采用模块化程序设计的方法,将任务划分为相对独立的功能模块,明确各模块的功能、时间顺序和相互关系,如系统管理、数据与信息采集、报警处理、误差处理、标度变换、数据处理、输出控制等;列出详细的资源划分表,确定各模块的出口和入口状态;建立必要的数学模型,正确描述出系统中输入和输出间的数学关系;画出各程序模块的详细流程图;根据流程图逐一编写程序;最后将各个模块连接成完整的程序
(1)软件设计的基本原则。
①程序整体结构清晰、简洁、流程合理,主程序尽可能简单明了。
②各种功能的实现应采用模块化、子程序化,以便于编制、阅读、连接、移植、修改和调试。
③对各子程序的入口、出口条件,占用的资源要明确,以便于分析、调试和共享。
④程序存储区、数据存储区、寄存器区、位寻址区、堆栈区应规划合理,做到既节约资源又不会发生相互间的冲突。
⑤运行状态标志化管理,对各功能程序的运行结果、操作状态应设置状态标志,以便查询和实现运行控制。
⑥运用软件或软硬件相结合等方法抑制干扰,提高系统的抗干扰能力。
⑦必要时可结合硬件采取加密措施。
(2)资源分配:
选用定时/计数器T0,定时方式1工作,每隔50ms溢出中断一次。
(3)软件流程框图
程序流程图如下:
(1)T0中断流程图
程序如下:
STRTEQUP2.5
STPEQUP2.6
CLRREQUP2.7
ORG00H
AJMPMAIN
ORG0BH
AJMPT0INT
ORG30H
MAIN:
MOVR0,#20
MOVTMOD,#01H
MOVTH0,#3CH
MOVTL0,#0B0H
MOVDPTR,#TABLE
SETBEA
SETBET0
k1:
LCALLDISP
JBSTRT,K2
LCALLDISP
JNBSTRT,$-3
AJMPSTART
k2:
JBSTP,K3
LCALLDISP
JNBSTP,STOP
K3:
JBCLRR,K1
LCALLDISP
JNBCLRR,CLEAR
AJMPK3
START:
SETBTR0
AJMPK1
STOP:
CLRTR0
AJMPK2
CLEAR:
CLRTR0
MOV40H,#0
AJMPK1
T0INT:
MOVTH0,#3CH
MOVTL0,#0B0H
DJNZR0,RTI
MOVR0,#20
MOVA,40H
CJNEA,#99,ADD1
MOV40H,#00H
CLRTR0
AJMPRTI
ADD1:
ADDA,#01H
MOV40H,A
RTI:
RETI
DISP:
MOVA,40H
MOVB,#10
DIVAB;//当前值除以10
MOV20H,A;//得出的商送给十位
MOV21H,B;//得出的余数送给个位
CLRP2.0
SETBP2.1
MOVA,20H;//十位显示
MOVCA,@A+DPTR
MOVP0,A
LCALLDELAY
CLRP2.1
SETBP2.0
MOVA,21H;//个位显示
MOVCA,@A+DPTR
MOVP0,A
RET
DELAY:
;误差0us
MOVR6,#01H
DL0:
MOVR5,#61H
DJNZR5,$
DJNZR6,DL0
RET
TABLE:
DB0C0H,0F9H,0A4H,0B0H,99H;//共阳极0-9显示代码
DB92H,82H,0F8H,80H,90H
END
3.8系统调试
1)输入源程序
输入源程序时,应以西文方式输入字母和符号,且中文注释前要加分号。
2)对源程序进行汇编和纠错
根据自动汇编提供的错误信息逐条纠正错误,直至汇编信息提示“错误(0)”、“汇编结束”。
3)确定调试方案
在调试程序前一定要认真分析源程序,明确各功能程序运行的预期结果。
然后结合源程序应达到的结果,确定出如何通过某些关键参数和实验现象检验程序运行结果正确与否。
例如:
程序运行过程中路径的变化、累加器A内容的变化、其他特殊寄存器内容的变化等。
并针对具体的分析和观察对象选择较合适的调试方法。
如单步运行、跟踪运行、连续运行、快速运行至光标处、设置断点等调试方法。
4)调试程序
(1)调试主程序。
主程序运行后,在无任何按键输入时观察有无显示,时钟是否工作,其时、分、秒显示的变化过程是否正确。
若运行结果不正确,首先应根据程序运行的实际现象分析判断哪些因素可引起相关故障,再通过调试方法逐一认证和排除。
例如:
若定时/计数器的初始化出错,则时钟将不能工作;若显示程序出错,则将不能正确显示时钟单元内容;若定时/计数器中断服务子程序出错,则其显示数据的变化规律将不正常。
(2)调试子程序。
在调试主程序时,必然要调用相关的功能子程序。
因此,首先应明确子程序的具体功能,通过对子程序的分析,确定子程序的入口、出口参数及相关标识位的状态,然后在满足入口条件的状态下,设法检查从主程序进入子程序,再由子程序返回到主程序的运行过程。
可采用跟踪运行或运行至光标处的方法,检查从主程序进入子程序内部的运行过程,再通过单步运行等方法检查子程序内部的运行情况和返回主程序的过程。
通过反复调试,发现并排除软件与硬件存在的各类问题,以满足系统设计的预期目的。
5)脱机运行
将调试已通过的程序写入单片机内部(或外部)程序存储器中,再将写好程序的单片机(或存储器)插入已设计好的单片机用户板上,把仿真系统与用户板脱离开来,最后将所设计的单片机应用系统独立通电运行。
四、结果与结论
4.1结果
经过对不同方案的分析、比较、取舍,然后进行原理图的设计与仿真,再经过电路板的焊接,软件的调试等环节的操作,最终实现了让数码管在单片机的控制下显示两位数00-99。
并且在正常的计数过程中,若按下复位键后,技术又重新从00开始计数。
有时在刚接入电源时,数码管显示的不是00,这是需要按下复位键才能使其正常工作。
最终现实的结果与预想的结果一致。
按下开始键两位数从00开始计时,直到数码管走到99秒时警报器鸣声,按下复位键警报声解除,数码管显示为00,复位成功,数码管循环显示秒数。
4.2结论
单片机有着很强大的功能,并有40个引脚,通过单片机的不同I/O端口与外设连接,能够控制外设的工作情况,从而实现不同的符合各种需求功能的电路板。
LED数码管是单片机控制系统中最常见的显示器件之一,一般用来显示处理结果或输入输出信号的状态。
00到99秒计数器是单片机比较简单的应用,通过做这个计数器,我们了解了单片机功能的强大,跟了解了单片机有自己的不足,促使我们努力学习!
五、设计心得与体会
通过这次课程设计,本人学会了应用AT89C51单片机的定
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 99 计数器