1 任务和要求
1.1设计背景设计背景:
近年来随着计算机在社会领域的发展, 单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。时间是日常生活、工业、医学、环境保护、化工、石油等领域最常遇到的一个物理量。测量时间的基本方法是使用秒表直接测量。其中秒表的精度是人们最关心的,这就要求它的计时最小单位足够小,显示模块的灵敏度足够高。其中采用单片机进行控制的计时系统就是一个典型的例子,它为现代人工作、科研、生活提供更好的更方便的测量手法。单片机使得一切向着数字化控制、智能化控制方向发展。本篇论文讨论了简单的数字秒表的设计与制作 ,采用LED液晶模块进行显示。其中单片机通过定时器中断的方式产生了10ms的最小计时单位,通过加一后判断的方式依次进行处理,将每个单位进行十进制处理后进行显示。
1.2设计目的和意义秒表计时器是电器制造,工业自动化控制、国防、实验室及科研单位理想的计时仪器,它广泛应用于各种继电器、电磁开关、控制器、延时器、定时器等的时间测试。
有关计时钟表的发展历史,大致可以分为三个演变阶段。
一、从大型钟向小型钟演变。
二、从小型钟向袋表过渡。
三、从袋表向腕表发展。
每一阶段的发展都是和当时的技术发明分不开的。
设计目的:
本课题是基于单片机的数字秒表系统设计。其利用单片机作为系统的主要控制器,通过单片机自身的定时计数器溢出标志产生最小计时单元,经过变量的累加和判断后,将数据送入数码显示屏显示。
(1)根据单片机课程所学内容,结合其他相关课程知识,设计电子秒表,以加深对单片机知识的理解,锻炼实践动手能力,为以后的毕业设计和工作打下坚实基础。
(2)熟悉汇编语言或C语言的程序设计方法,熟悉51系列单片机的使用。
(3)掌握单片机的内部功能模块的应用,如定时器/计数器、中断、I/O口、串行口通讯等功能。
(4)掌握单片机应用系统的软硬件设计过程、方法及实现。
1.3设计任务和要求(1)任务:采用两位LED数码管和单片机定时/计数器设计一个秒表显示电路,
(2)电子秒表性能要求
- 工作温度范围:-40℃-+50℃
- 显示时间从0开始:,每隔1s显示时间加1。
- 秒值到99后自动清0,依次循环显示
- 外部扩展2位LED数码管。
2 总体方案设计与选择2.1 LED数码管
LED数码管结构及工作原理
7段发光数码管,简称LED。LED数码管的显示与应用是非常普遍的,可用于显示0-9的数字,也可以显示A、B、C、D、E、F、H、L、P等字符。
(1)LED数码管结构
LED显示器是由若干个发光二极管组成的,按“日”字排列成的数码管,LED数码显示器有如下两种连接方法,共阳极接法:把发光二极管的阳极连在一起构成公共阳极,使用时公共阳极接+5V,每个发光二极管的阴极通过电阻与输入端相连。共阴极接法:把发光二极管的阴极连在一起构成公共阴极,使用时公共阴极接地。每个发光二极管的阳极通过电阻与输入端相连。每段LED的笔画分别称为a、b、c、d、e、f、g,另有一段构成小数点。一位LED数码管的结构如图1所示。
(2)LED数码管的工作原理
选用共阳极数码管时,只要在某个发光二极管加上高电平,当发光二极管导通时,相应一个点或一个笔画即被点亮。而选用共阴极数码管时,要使某一端发光二极管发亮,则需加上低电平。控制不同组合的二极管导通,就能显示出各种数字或字符。LED数码管的使用与发光二极管类同,根据其材料不同,正向压降一般为1.5到2V,额定电流为10MA,最大电流为40MA。静态显示时,取10MA为宜,动态扫描显示时,可加大脉冲电流,但一般不超过40MA。
(a)8段数码管外型 (b)共阳极数码管 (c)共阴极数码管
图1 LED数码管
2.2 单片机的选型本课题在选取单片机时充分借鉴了许多成形产品使用单片机的经验并根据自己的实际情况选择了AT89C51。
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
控制芯片的介绍
AT89C51是一种低功耗、高性能的片内含有4KB快闪可编程/擦除只读存储器的8位CMOS微控制器,使用高密度、非易失存储技术制造,并与80S52引脚和指令系统完全兼容。
主要性能:
1)与MCS-51微控制器产品系列兼容。
2)片内有4KB可在线重复编程的快闪擦写存储器
3)存储数据保存时间为10年
4)宽工作电压范围,VCC可为2.7V到6V
5)全静态工作,可从0Hz至16MHz
6)程序存储器具有3级加密保护
7)128*8位内部RAB
8)32条可编程I/O线
9)两个16位定时器/计数器
10)中断结构具有5个中断源和2个优先级
11)可编程全双串行通道
12)空闲状态维持低功耗和掉电状态保存存储内容
AT89C51单片机采用40引脚的双列直插封装方式。
图2为引脚排列图,40条引脚说明如下
主电源引脚Vss和Vcc
① Vss接地
② Vcc正常操作时为+5伏电源
外接晶振引脚XTAL1和XTAL2
① XTAL1内部振荡电路反相放大器的输入端是外接晶体的一个引脚。当采用外部振荡器时,此引脚接地。
② XTAL2内部振荡电路反相放大器的输出端。是外接晶体的另一端。当采用外部振荡器时,此引脚接外部振荡源。
输入/输出引脚P0.0 - P0.7P1.0 - P1.7P2.0 - P2.7P3.0 - P3.7。
① P0口P0.0 - P0.7是一个8位漏极开路型双向I/O口在访问外部存储器时,它是分时传送的低字节地址和数据总线,P0口能以吸收电流的方式驱动八个LSTTL负载。
② P1口P1.0 - P1.7是一个带有内部提升电阻的8位准双向I/O口。能驱动(吸收或输出电流)四个LSTTL负载。
③ P2口P2.0 - P2.7是一个带有内部提升电阻的8位准双向I/O口。在访问外部存储器时,它输出高8位地址。P2口可以驱动(吸收或输出电流)四个LSTTL负载。
④ P3口P3.0 - P3.7是一个带有内部提升电阻的8位准双向I/O口。能驱动(吸收或输出电流)四个LSTTL负载。
/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
图2.AT89C51单片机引脚图
整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。
此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。
2.3系统选用元器件系统所用元器件清单
3 电路总原理框图设计3.1电路设计在硬件上采用单片机的P2口,输出个位、P0口,输出十位,两个I/O口经限流电阻后将输出数据送到两个共阳极的LED数码管。打开protues的ISIS,通过对象选择器按钮,从元件库中选出如下元器件:AT89C51(单片机)、RES(电阻)、CAP(电容)、CAP-ELEC(电解电容)、BUTTON(按钮开关)、CRYSTAL(晶振)、RESPACK-8(上拉电阻)、RX8(限流排阻)、7SEG-COM-AN-GRN(绿色共阳数码管),并置入对象选择器窗口。然后将选择的元器件、电源和地线放置在编辑窗口中。
3.2秒表的初始化①将I/O口P3全写一,为秒表的控制输入做好准备;
②将数码管全部置零,使其处于秒表计时的初始状态;
③将工作寄存器R0~R2以及30H初始化,留待后面的计时程序备用;
④将定时器0置于工作方式1,并为其装入计时预置数D8FE(因为程序运行过程中占用的时间会导致一定误差,此为经实物测试之后的修正值),即将定时器定为每10ms溢出;
⑤开总中断允许和定时器0中断允许。初始化完成后,即进入之后的按键扫描程序。
3.3显示电路的设计显示部分由一个共阳极两位数码管构成,如图3。
显示部分采用动态显示。数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。动态显示是利用人眼视觉暂留特性来实现显示的。事实上,显示器上任何时刻只有一个数码管有显示。由于各数码管轮流显示的时间间隔短、节奏快,人的眼睛反应不过来,因此看到的是连续显示的现象。为防止闪烁延时的时间在1ms左右,不能太长也不能太短。
图3显示部分示意图
3.4 时钟电路的设计对于时钟它有两方面的含义,一是指为保障系统正常工作的基准振荡定时信号主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟即定时时间,是用软件实现,即用单片机内部的可编程定时/计数器来实现,但误差很大。
3.5 键盘部分的方案键盘控制采用独立式按键,每个按键的一端均接地,另一端直接和P1口相连,在按键和P1口之间通过10K电阻与+5V电源相连。键盘通过检测输入线的电平状态就可以很容易地判断哪个键被按下了,这种方法操作速度高而且软件结构很简单,比较适合按键较少或操作速度较高的场合,这种独立式接口的应用很普遍。
3.6计时程序定时器0计时至10ms,溢出,引发中断,程序跳转至定时器0中断服务程序入口000BH处执行。程序跳转至中断服务程序TIME0。由于秒表的最小计时单位是0.1s,即100ms,因此需加入软件计时,使定时器0溢出10次之后才改变数码管的显示状态。因此每来一次中断就将30H中的数加1,若30H中的数没有到10,则给定时器重新装入预置数,之后中断返回并继续等待中断;到10了,才进入显示程序,改变数码管的显示状态,执行完毕之后中断返回并继续等待中断。
4编程思路系统采用12MHz晶振,定时/计数器T0工作在模式一,定时时间为1s。利用查表编程结构,每隔1s送出两位显示值,首先送出当前个位置,然后加1在判断为10吗?不为10将继续;否则十位加1,并判断为10吗?如此循环,从而实现秒值的输出,定时/计数器的计数值可选择定时时间为50ms,再循环20次。确定定时器T0的初值为
X=M-计数值=65536-50000=15536=3CB0H
即TH0=3CH,TL0=B0H,又因采用方式1定时,故TMOD=01H。程序流程如图4。
该实验要求进行计时并在数码管上显示时间,则可利用proteus仿真软件设计电路并仿真AT89C51。 使用AT89C51单片机作为核心控制部件,采用12M晶体振荡器及微小电容构成振荡电路,用两个四位一体共阳极或共阴极数码显示管作为显示部分,构成数字式秒表的主体结构。
根据以上思路将所需元件备好,进行组合,使用protues仿真判断是否可行,还要对显示电路、计时电路、时钟电路、键盘电路进行检测,再比较单片机书中的内容,检查是否有误,最后根据所需要求及内容编写汇编语言,灵活运用计数器与定时器的相关内容,制定相应的程序语言。
图4程序流程图
5源程序设计源程序:
ORG 0000H
AJMP MAIN
ORG O100H
MAIN: MOV TMOD,#01H
MOV TH0,#3CH
MOV TL0,#0B0H
MOV R2,#00H
MOV P0,#0C0H
SATRT: MOV R1,#00H
MOV DPTR,#TAB
DISP: MOV A,R1
MOVC A,@A+DPTR
MOV P2,A
LCALL DEALY1S
TNC R1
CJNE R1,#10,DISP
MOV R1,#00H
INC R2
MOV A,R2
MOVC A,@A+DPTR
MOV P0,A
CJNE R2,#10,SATRT
MOV R2,#00H
MOV P0,#0C0H
LCALL SATRT
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H
DB 80H,90H
DEALY1S:
MOV R3,#14H
SETB TR0
LP1: JBC TF0,LP2
SJMP LP1
LP2: MOV TH0,#3CH
MOV TL0,#0B0H
DJNZ R3,LP1
RET
END
以上为汇编语言的源程序设计
6编译与仿真6.1系统调试系统调试包括硬件调试和软件调试,而且两者是密不可分的。我们设计好的硬件电路和软件程序,只有经过联合调试,才能验证其正确性。软硬件的适配情况以及是否达到设计任务的要求,也只有经过调试,才能发现问题并加以解决、完善,最终开发成实用产品。
(1)硬件调试
硬件调试分单元电路调试和联机调试,单元电路试验在硬件电路设计时已经进行,这里的调试只是将其制成印刷电路板后试验电路是否正确,并排除一些加工工艺性错误,如错线、开路、短路等。这种调试可单独模拟进行,也可通过开发装置由软件配合进行,硬件联机调试则必须在系统软件的配合下进行。
本设计硬件是用proteus上的部件搭建而成的,在proteus的软件中进行连线仿真模拟。
(2)软件调试
由于本设计简单,所以是在proteus软件中直接导入AT89C51芯片运行并观察结果,其中在proteus上对keil软件进行联调,查错时可以通过调试里面的单步运行、进入子函数内部和设置断点分析。
6.2仿真与编译将编写的程序添加到protues自带的编译器中,对其进行编译,生成hex文件。单机“运行”按钮,启动系统仿真,观察仿真结果,仿真电路如图5所示。此时电路显示值为0-99s。
图5总电路设计图
7 结论本次报告主要从硬件方面说明设计的总体思路和设计的实现过程,预期的设计目的是,能够实现秒表的基本功能,正常计时0-99s。在设计过程中,曾经遇到很多的障碍,设计图经过许多次的修改最后才定下来,但在调试的过程中又出现了问题,需要修改原理图,比如硬件的布局,要作到使连接的线路最短,并没有想象中的那么容易。
在设计中有好多问题都是因为理论知识不扎实,在有些管脚的置零置一上,概念的模糊,这使我明白要把所学到的理论转化为实践需要一段努力学习的过程,在做一个设计的过程中,一定要注意理论和实践同步进行,光有理论知识还是远远不够的,要用时间去检验理论,用理论指导实践。
刚开始接到课程设计任务,自己认为挺简单的,然而真正开始动手制作时才知道并不是那么简单,从初期的资料收集以及原理图的绘制,都受到了同学的帮助,大家一起研究探讨解决了我不少问题,不得不说,科研成果的研究真的跟团队合作有很大的关系。
最近几年,科学发展很快,渗透在工农业生产的许多领域。通过此次课程设计,我们有了更深的认识,只有在设计制作的过程中不断的学习,才能有更新的进步.不论在什么地方,什么岗位我门都要以学为主.学以置用.才能把我们的工作做的更好。
东北石油大学课程设计成绩评价表
| |
| |
| | | | | | | |
| | | | |
| | 按期圆满的完成了规定的任务,难易程度和工作量符合教学要求,工作努力,遵守纪律,出勤率高,工作作风严谨,善于与他人合作。 | |
|
| | 课程设计选题合理,计算过程简练准确,分析问题思路清晰,结构严谨,文理通顺,撰写规范,图表完备正确。 | |
|
| | 工作中有创新意识,对前人工作有一些改进或有一定应用价值。 | |
|
| | | |
|
|
|
|