99秒计数器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计说明书
课程名称:《单片机原理及其在煤矿中的应用》
设计题目:99秒计数器设计
院系:
学生姓名:
学号:
专业班级:
指导教师:
2013年12月27 日
课程设计任务书
摘要:本设计以AT89C51单片机为主控模块,利用汇编语言编写数码管静态显示的专用程序来实现两位数码管静态显示系统,系统主要由电源模块、复位模块、外部时钟电路模块、数码管显示模块构成。
电源电路通过桥堆2W10和三端稳压器7805将交流电压变为5V的直流电压。
复位电路采用上电自动复位来实现。
时钟通过外部12M的晶振来控制。
两位数码管显示由两个共阳极的三极管进行驱动。
将汇编语言编写的两位数码管动态显示程序写入单片机来控制P2口,使数码管相应段点亮,同时利用人眼视觉暂留的特性和数码管的余辉效应,在扫描频率足够高时,人眼无法感觉数码管的变化,从而实现数码的动态显示。
关键词:AT89C51;两位数码管;
目录
1.设计背景 (5)
1.1单片机简介 (5)
1.2单片机发展前景 (5)
1.3共阳极数码管的显示方法 (6)
1.4共阳极数码管的驱动设计 (6)
1.5设计要求 (7)
2.设计方案 (7)
2.1共阳极数码管静态显示 (8)
2.2共阳极数码管动态显示 (8)
2.3数码管静态与动态显示的优缺点比较 (9)
2.4晶振输入电路设计 (9)
2.5复位电路设计 (9)
3.方案实施 (10)
3.1设计目的 (10)
3.2硬件电路的分析 (11)
3.3电源电路设计 (13)
3.4 复位及振荡电路 (13)
3.5数码管显示 (13)
3.6连接方式 (13)
3.7软件设计 (14)
3.8系统调试 (19)
4.结果与结论 (20)
4.1 结果 (20)
4.2结论 (21)
5.设计心得与体会 (21)
6.参考文献 (21)
7.附件 (22)
7.1软件电路图 (22)
7.2演示效果图 (23)
一、设计背景
1.1单片机简介
1、AT89C51是一种带4K字节FLASH存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。
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、学会使用KEIL C和PROTEUS等软件,用汇编语言编写一个较完整的实用程序,并仿真运行,保证设计的正确性。
3、了解单片机接口应用开发的全过程:分析需求、设计原理图、选用元器件、布线、编程、调试、撰写报告等。
应用AT89C51的定时器设计一个2位的LED数码显示作为“秒表”:显示时间为00~99s,每秒自动加1,设计一个“开始”键,按下“开始”键秒表开始计时;设计一个“暂停”键,按下“暂停”键秒表停止计时;设计一个“复位”键,按下“复位”键后,秒表从0开始计时。
3.2硬件电路的分析
图3-1 硬件组成框图
该电路的工作原理:AT89S52从稳压电路中获得稳定的+5V电压,接到VCC端,提供稳定的电压;P2口通过电阻接到显示电路的七段数码管的a b c d e f g 端口上,数码管的共阳极接到三极管的集电极上;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中断流程图
程序如下:
STRT EQU P2.5
STP EQU P2.6
CLRR EQU P2.7
ORG 00H
AJMP MAIN
ORG 0BH
AJMP T0INT
ORG 30H
MAIN: MOV R0,#20
MOV TMOD,#01H
MOV TH0,#3CH MOV TL0,#0B0H
MOV DPTR,#TABLE SETB EA
SETB ET0
k1: LCALL DISP
JB STRT,K2
LCALL DISP
JNB STRT,$-3
AJMP START
k2: JB STP,K3
LCALL DISP
JNB STP,STOP
K3: JB CLRR,K1
LCALL DISP
JNB CLRR,CLEAR
AJMP K3
START: SETB TR0
AJMP K1
STOP: CLR TR0
AJMP K2
CLEAR: CLR TR0
MOV 40H,#0
AJMP K1
T0INT: MOV TH0,#3CH
MOV TL0,#0B0H
DJNZ R0,RTI
MOV R0,#20
MOV A,40H
CJNE A,#99,ADD1 MOV 40H,#00H
CLR TR0
AJMP RTI
ADD1: ADD A,#01H
MOV 40H,A
RTI: RETI
DISP: MOV A,40H
MOV B,#10
DIV AB ;//当前值除以10
MOV 20H,A ;//得出的商送给十位
MOV 21H,B ;//得出的余数送给个位
CLR P2.0
SETB P2.1
MOV A,20H ;//十位显示
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY
CLR P2.1
SETB P2.0
MOV A,21H ; //个位显示
MOVC A,@A+DPTR
MOV P0,A
RET
DELAY: ;误差0us
MOV R6,#01H
DL0:
MOV R5,#61H
DJNZ R5,$
DJNZ R6,DL0
RET
TABLE: DB 0C0H,0F9H,0A4H,0B0H,99H ;//共阳极0-9显示代码DB 92H,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单片机的定时器及数码管等外设,设计出了“99秒表”,基本上完成了本次课程设计的基本要求。
在本次课程设计中,我通过查阅书籍,上网查阅资料等手段,克服了种种困难,最终设计出符合要求的原理电路,并且能够仿真实现。
虽然成功完成了本次课设,但是在设计的过程中遇到了很多困难,不过还是通过种种手段逐一克服了。
下面就简单的谈一下本次课设的一些心得体会。
(1)本次课程设计主要是51单片机的一些运用,由于以前做过类似的课题,因此动手起来就简单多了,而且能够很快进入状态。
(2)这次课设要求设计出“99秒表”,我首先按着要求把需要完成功能以及可能解决的方法一一列举了出来:
1.完成1秒定时,也就是说要用定时器定时1秒.在51单片机中有三种定时器,分别是定时器T0、T1、T
2.通过对其中某种定时器的设定完成定时。
2.数码管显示,也就是说用两个数码管分别显示分和秒。
数码管有好多种,每种数码管又有共阳和共阴两种接法。
3.要有“开始”、“暂停”、“复位”功能,也就是说通过按键实现开始、暂停、复位功能。
可以采用三个按键,也可以采用一个按键实现。
(3)在列举出要求及可能的解决方案后,我就开始了电路原理图的设计。
通过在Preteus中进行电路图的设计,当然在设计之前头脑中要有一个简单的大体图像,比如单片机怎样放,数码管放在哪,开关又该放哪等等,我做了好多次才做出一份觉得还可以的原理图。
(4)在原理图画好之后,我就开始编程了。
当然,编程序也要有大体的轮廓,比如需要哪些函数,那些变量,每个函数要完成什么功能,每个变量有事干什么的都要有个简单的部署。
不然,想到哪个功能才编相应的程序会导致程序一改再改,相当麻烦。
就我个人而言,编程工作还是相当顺利的,毕竟有过类似的训练嘛。
(5)编号程序后,当然就是调试及运行了。
通过调试我又在程序中发现了很多不足之处,就慢慢地进行了改正。
运行的时候就要结合画好的原理图进行仿真,结合二者,仿真的时候,要么修改程序。
要么就修改原理图,使其完成需要的功能,通过一遍遍调试最后完成设计。
六.参考文献
高锋,2007,单片微型计算机原理与接口技术(第二版)。
北京:科学出版社
高锋,2004,单片微机应用系统设计及实用技术。
北京:机械工业出版社
何立民,1990,MCS—51系列单片机应用系统设计。
北京:北京航空航天大学出版社陈正义单片机控制实习人民邮电出版社
李飞单片机课程设计实例指导北京航空航天大学出版社
蔡朝洋单片机控制实习与专题制作北京航空航天大学出版社
楼然苗 51系列单片机设计实例北京航空航天大学出版社
七、附件。