《测控系统原理与设计》课程设计报告
课题:基于单片机的多功能数字钟设计
班级 测控1082班 学号 1081203202 学生姓名 指导教师
淮阴工学院 电子与电气工程学院
2011年12月
- 1 - / 31
文档可能无法思考全面,请浏览后下载!
目 录
第1章 绪 论 ···························································································· 4
1.1 前言 ······························································································· 4 1.2 设计的目的及意义 ············································································· 4 第2章 数字钟的功能实现与设计方案 ······························································ 5
2.1 数字钟的功能及设计要求 ···································································· 5 2.2 数字钟的实现形式 ············································································· 5 2.3 方案的确定 ······················································································ 5
2.3.1 微处理器 ················································································· 6 2.3.2 显示电路 ················································································· 6 2.3.3 按键电路 ················································································· 6
第3章 数字钟的硬件系统设计 ······································································· 7
3.1 数字时钟的硬件系统框架 ···································································· 7 3.2 数字时钟的主机电路设计 ···································································· 7
3.2.1 系统控制芯片CPU(AT89C2051)的选择 ······································· 7 3.2.2 系统时钟电路设计 ···································································· 12 3.2.3 系统复位电路设计 ···································································· 14 3.2.4 按键与按钮电路设计 ····························································· - 15 - 3.2.5 闹铃声光指示电路设计 ·························································· - 15 - 3.2.6 数字钟的显示电路设计 ·························································· - 15 - 3.3 电源设计 ························································································ 19 第4章 程序设计 ···················································································· - 23 -
4.1 主控模块设计 ·············································································· - 23 - 4.2 基本现实模块设计 ········································································ - 24 - 4.3 当前编辑位闪烁功能的实现 ···························································· - 25 - 4.4 时间设定模块设计 ········································································ - 25 - 4.5 脉冲发生器原理与走时处理 ···························································· - 26 - 4.6 闹铃功能的实现 ··············································································· 27 第5章 系统的调试及结果 ············································································ 29
5.1 系统调试环境 ·················································································· 29 5.2 软件调试 ························································································ 29
- 2 - / 31
文档可能无法思考全面,请浏览后下载!
5.3 硬件调试 ························································································ 29 5.4 调试结果 ························································································ 29 结 论 ······························································································· - 30 - 参考文献 ······························································································· - 31 -
- 3 - / 31
文档可能无法思考全面,请浏览后下载!
第1章 绪 论
1.1前言
计算机尤其是以微细加工技术支持的微型计算机技术飞速发展,其应用渗透到了各行各业。以单片机、嵌入式处理器、数字信号处理器(DSP)为核心的计算机系统,以其软硬件可裁剪、高度的实时性、高度的可靠性、功能齐全、低功耗、适应面广等诸多优点而得到极为广泛的应用。目前计算机硬件技术向巨型化、微型化和单片机化三个方向告诉发展[1]。自1975年美国德州仪器公司(Texas Instruments)第一块微型计算机芯片TMS-1000问世以来,在短短的20年间,单片机技术已发展成为计算机领域一个非常有前途的分之,它有自己的技术特征、规范和应用领域。单片机是自动控制系统的核心部件,主要用于工业控制、智能化仪器仪表、家用电器中。它具有体积小、性能突出可靠性高(某些方面的性能指标大大优于通用微机中央处理器)、价格低廉等一系列优点,应用领域不断扩大,除了工业控制、智能化仪表、通信、家用电器外,在智能化高档电子玩具产品中也大量采用单片机芯片作为核心控制部件,已经渗入到人们工作和生活的各个角落,有力地推动了各行业的技术改造和产品的更新换代,前景广阔。数字钟具备单片机最小系统的基本组成,对于我们了解单片机有很大的帮助[2]。
1.2 设计的目的及意义
本设计通过用对一个能实现定时,时钟显示功能的时间系统的设计学习,详细介绍了51单片机应用中的数据转换显示,数码管显示原理,静态扫描显示原理,单片机的定时中断原理等,从而达到学习、了解单片机相关指令在各方面的应用。对于单片机学习者而言,这个程序基本上是一道门槛,掌握了电子钟程序,基本上就可以说把51单片机掌握了80%。
- 4 - / 31
文档可能无法思考全面,请浏览后下载!
第2章 数字钟的功能实现与设计方案
2.1 数字钟的功能及设计要求
(1) 可以实现时/分/秒/百分秒的显示,可以调整时/分 (2) 使用LED显示
(3) 有表示时钟正常工作的装置
(4) 能稳定工作,可控制时钟的启动复位 (5) 有实现闹铃功能
2.2 数字钟的实现形式
数字钟既可以通过纯硬件实现,也可以通过软硬结合实现,根据电子时钟的核心部件——秒信号的产生原理,通常有三钟形式:
(1) 用NE555时基电路的形式 (2) 采用石英钟专用芯片的实现形式 (3) 采用基于单片机的实现形式
利用单片机的智能性,可方便的实现具有智能数字钟的设计。而且,微处理系统具有时钟振荡系统,利用系统时钟并借助微处理器的定时/计数器功能可以实现数字钟的功能。本设计采用AT89C2051单片机设计。
2.3 方案的确定
可以从以下几个方面来确定电子闹钟的设计方案。 2.3.1 微处理器
采用ATMEL的AT89C2051微处理器,是基于以下几个因素:
①内含Flash 存储器,这在系统的开发过程中,可随意进行程序修改,既便错误编程之后仍可以重新编程,故不存在废品且大大缩短了程序的开发周期;同时在系统工作过程中能有效地保存数据信息。②采用静态时钟方式,节省电能,这对于降低便携式产品的功耗十分有利。③由于它是以8031 核构成的,所以它与MCS251 系列单片机是兼容的④AT89C2051为51内核,仿真调试软硬件资源丰富;⑤性价比高,货源充足;⑥DIP20封装,体积小,便于产品小型化;⑦为E2PROM程序存储介质,1000次以上擦/写周期,便于变成调试;⑧具有IDLE和POWER-DOWN两种工作模式,便于进行低功耗设计;⑨工作电压范围宽:2.7~6V,便于交直流供电[5]。
- 5 - / 31
文档可能无法思考全面,请浏览后下载!
2.3.2 显示电路
就时钟而言,通常可采用液晶显示或数码管显示。对于一般的段式液晶屏,需要专门的驱动电路,而且也经显示作为一种被动显示,可视性相对较差;对于具有驱动电路和微处理器接口的液晶显示模块(字符或点阵),一般多采用并行机接口,对于微处理器的接口要求较高,占用资源多。另外,89C2051本身没有专门的液晶驱动接口,因此,本时钟设计采用了数码管显示方式。数码管作为一种主动显示器件,具有亮度高、价格便宜等优点,而且市场上也有专门的时钟显示组合数码管。 2.3.3 按键电路
考虑到对时和设定闹铃时间这两种操作的使用频率不是很高,为了精简系统 和节省成本,本时钟系统只设两个按键:
(1) SET键,对应系统的不同工作状态,具有三个功能:
● 在复位后的待机状态下,用于启动设定时间参数(对时和定闹); ● 在设定时间参数状态而且不是设定最低位(即分个位)的状态下,用于
结束当前位的设定,当前设定为下移;
● 在设定最低位(分个位)的状态下,用于结束本次时间设定。
(2)+1键,用于对当前设定位(编辑位)进行加1操作,根据12/24小时工作模式和正在编辑的当前位的含义(时十位、时各位、分十位、分个位)自动进行 数据的上限和下限判断。例如,对12小时制,小时的十位只能是0、1,如果当前值为0,则按+1键后为1,再按+1键后为0。
- 6 - / 31
文档可能无法思考全面,请浏览后下载!
第3章 数字钟的硬件系统设计
电子时钟硬件部分的设计应包括秒信号发生器、时间显示电路、按键电路、供电电路,以及闹铃指示电路等几部分。
3.1 数字时钟的硬件系统框架
电子时钟的系统框架入图3-1所示。
图3-1 数字钟的系统框架
电源系统 复位等辅助电路 闹铃声光指示电路 按键电路 数码管显示电路 CPU 3.2 数字时钟的主机电路设计
数字时钟的主电路指的是图1中框内部分,主要涉及到微处理器电路和按键县按钮电路。主机的设计具体地说有:(1)系统控制芯片的选择(2)系统时钟电路设计;(3)系统复位电路设计;(4)按键与按钮电路设计;(5)闹铃声光指示电路设计。
3.2.1 系统控制芯片CPU(AT89C2051)的选择
AT89C系列单片机是Atmel公司1993年开始研制生产的,优越的性能价格比使其成为颇受欢迎的8位单片机。
AT89C系列与MCS-51系列单片机相比有两大优势:第一,片内程序存储器采用闪速存储器,使程序的写入更加方便;第二,提供了更小尺寸的芯片(AT89C2051/1051),使整个电路的体积更小[6]。
(1)AT89C2051主要性能:
AT89C2051是Atmel公司生产的戴2KB闪速可编程可擦除只读存储器(PEROM)的8位单片机,它具有如下主要特征:
- 7 - / 31
文档可能无法思考全面,请浏览后下载!
1 AT89C2051为51内核; ○
2 内部带2KB可编程闪速存储器(E2PROM)○,寿命为1000次擦/写循环,据保
留时间为10年;
3 DIP20封装,体积小 ○
4 工作电压范围为2.7~6V; ○
5 全静态工作频率为0Hz~24Hz; ○
6 两极程序存储器锁定; ○
7 1288位内部RAM; ○
8 15条可编程I/O线;○、 9 2个16位定时器/计数器; ○
10 5个两级终端源; ○
11 可编程全双工串行UART通道; ○
12 直接对LED驱动输出 ○
13 片内精确的模拟比较器; ○
14 片内振荡器和时钟电路; ○
15 低功耗的休眠和掉电模式; ○
(2)AT89C2051内部结构及引脚描述
AT89C2051单片机的内部与8051单片机的内部结构基本一致,区别只是增加了一个模拟比较器[7],减少了两个对外的端口(P0、P2口),输出端口P1、P3有独特的功能。
AT89C2051减少了两个外部端口,因而芯片的外部引脚可以大大减少,芯片尺寸可以很小,其引脚配置如图3-2所示。
图3-2 AT89c2051引脚配置
它是一个有20个引脚排列直插式的芯片,其引脚描述如下:
- 8 - / 31
文档可能无法思考全面,请浏览后下载!
VCC:电源电压; GND:接地;
RST:复位输入。当RST变为高电平并保持2个机器周期时,所有I/O引脚复位至高阻状态。
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡放大器的输出。
P1口:8位双向I/O口,引脚P1.1和P1.2需要外部上拉,可用作片内精确模拟比较器的正向输入(AIN0)和反向输入(AIN1)[8]。P1口输出缓冲器能接收20mA电流,并能直接驱动LED显示器;P1口引脚写入“1”后,可用作输入。在闪速编程和编程校验期间,P1口也可接收编码数据。
P3口:引脚P3.0~P3.5与P3.7为7个带内部上拉的双向I/O引脚。P3.6在内部已与片内比较器输出相连,不能作为通用I/O引脚访问。P3口的输出缓冲器能接收20Ma电流;P3写入“1”后,内部上啦,可用作输入。P3口也可用作特殊功能口,其功能见表3-1。P3口同时也可为闪速存储器编程和编程校验接收控制信号[9]。
表3-1 P3口引脚的特殊功能
P3口引脚 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 特殊功能 RXD(串行输入口) TXD(串行输出口) INT0(外部中断0) INT1(外部中断1) T0(定时器0外部输入) T1(定时器1外部输入) 从上述引脚说明看出,AT89C2051没有提供外部扩展存储器与I/O设备所需的地址、数据、控制信号,因此利用AT89C2051构成的单片及应用系统不能在AT89C2051之外扩展存储器或I/O设备,也即AT89C2051本身即构成了最小的单片机系统。 (3)振荡器
振荡器特征:XTAL1和XTAL2分别构成片内振荡器的反相放大器的输入和输出端,如图3-3所示。可采用石英晶体或陶瓷振荡器组成振荡器。要从外部时钟源驱动AT89C2051,则XTAL2应悬空,而XTAL1的驱动如图3-4所示。由
- 9 - / 31
文档可能无法思考全面,请浏览后下载!
于输入到内部时钟电路经过一个二分频触发器,故不需要对外部时钟信号的工作周期提出特殊要求,但它必须遵守最小和最大电压高低电平的时间规范。
图3-3 振荡的外部连接方法
图3-4 外部时钟驱动结构
(4) 特殊功能寄存器SFR
与8051单片机特殊功能寄存器相对应,AT89C2051片内设置了19个特殊功能寄存器,统称为特殊功能寄存器块SFR,它们的地址散布在80H~0F0H区域内。
(5)低功耗工作模式
AT89C2051优良中低功耗工作模式:待机方式与掉电方式。
1 待机方式(休眠方式) ○
当利用软件使待机方式位ADL(PCON.0)=0时,单片机进入空闲方式。此时,CPU处于休眠状态,而片内所有其它外围设备都保持工作状态,片内RAM和所有特殊功能寄存器内容保持不变。
- 10 - / 31
文档可能无法思考全面,请浏览后下载!
在待机方式下,当晶振fosc=12MHz,电源电压VCC=6V时,电源电流ICC从20Ma降至5Ma;而VCC由5.5mA降至1mA。 中断或硬件复位可以终止待机方式。
当待机方式由硬件复为终止时,CPU要从休眠处恢复程序的执行,执行2的周期后,内部复位电路才起作用。此时,硬件禁止访问内部RAM,但允许访问端口引脚。为了防止休眠被复位终止时对端口以外写入的可能性,在生成待机方式的指令后不应紧跟对端口引脚的写指令。
如果不采用外部上拉,P1.0和P1.1应置“1”。
2 掉电方式 ○
掉电方式由掉电方式位PD(PCON.1)=1摄制。此时振荡器停止工作,设置掉电方式的指令成为最后执行的一条指令,片内RAM和特殊功能寄存器内容保持不变。
在掉电模式下,VCcmin=2V。当VCC=6V时,ICCmax=100μA;当VCC=3时,ICcmax=20μA。
退出掉电方式的唯一方式是硬件复位。
硬件复位将重新定义特殊功能寄存器,但不影响片内RAM。复位的保持时间应足够长,以便振荡器能重新开始工作并稳定下来。在VCC没有恢复得到正常工作电压之前,不应进行复位。
如果不采用外部上拉,P1.0和P1.1应置“0”,否则置“1”。 (6) 闪速存储器的编程
AT89C2051单片机内部有2KB的闪速存储器阵列,一片新的AT89C2051,其存储阵列处于擦除状态(FFH),此时可对其编程,存储阵列一次编程1字节,若编程任何非空字节时,需对整个存储阵列进行片擦除[10]。
编程时,AT89C2051利用内部存储器地址计数器提供寻址存储器的地址信号,RST上升沿将该地址计数器复位至000H,引脚XTAL1所施加的正向脉冲使地址计数器不断加1。[11]RST上出现12V(编程电源VPP)高压时,预示着1字节
的编程操作开始,这时P3口提供编程所需的控制与状态信号,P1口为数据通道。 (7) 在线编程
AT89C2051编程时需要利用RST、XTAL1、P1口、P3口提供控制信号与加载编程数据,而这一要求又常与用户系统对这些引脚的要求或操作冲突。因此,在线编程不能直接在用户工作电路中进行,而要通过特殊电路处理才能实现。例如图
- 11 - / 31
文档可能无法思考全面,请浏览后下载!
3-5所示为在线编程的示例,其采用2选1的方法实现连接线路的切换,达到在线编程的目的。利用微动开关SW来选择XTAL1的加载,产生选择控制信号Select,其它线路的切换用2选1器件74LS157与三态缓冲器74LS244实现。当AT89C2051正常工作时,选择控制信号(Selecg=0)控制所有的74LS157输入A端与输出Y接通,且74LS244-1输出有效,74LS244-2三态输出,使得AT89C2051可以对用户电路进行控制操作;当AT89C2051需要编程时,选择控制信号(Select=1)控制所有的74ALS157输入B端与输出Y端接通,且74LS244-1三态输出,74LS244-2输出有效,使得AT89C2051可以接受编程电路的控制,实现编程操作。
图3-5 在线编程示复位电路 AT89C2051 RST XTAL2 XTAL1 输入接口 输入设备 输出接口 输出设备
3.2.2 系统时钟电路设计
系统利用晶体振荡器作为时钟电路,根据晶振的不同使用要求及特点,通常分为以下几类:普通晶振、温补晶振、压控晶振、温控晶振等。安装晶振时,应根据其引脚功能标识与应用电路应连接,避免电源引线与输出引脚相接输出。
在测试和使用时所供直流电源应没有足以影响其准确度的纹波含量,交流电压应无瞬变过程[12]。测试仪器应有足够的精度,连线合理布置,将测试及外围电路对晶振指标的影响降至最低。
(1) 普通晶振(PXO):是一种没有采取温度补偿措施的晶体振荡器,在整个温度范围内,晶振的频率稳定度取决于其内部所用晶体的性能,频率稳定度在10-5量级,一般用于普通场所作为本振源或中间信号,是晶振中最廉价的产品。
(2) 温补晶振(TCXO):是在晶振内部采取了对晶体频率温度特性进行补偿,以达到在宽温温度范围内满足稳定度要求的晶体振荡器。
(3) 恒温晶振(OCXO):采用精密控温,使电路元件及晶体工作在晶体
- 12 - / 31
文档可能无法思考全面,请浏览后下载!
的零温度系数点的温度上。中精度产品频率稳定度为10-7~10-8,高精度产品频率稳定度在10-9量级以上。主要用作频率源或标准信号。
(4) 压控晶振(VCXO):是一种可通过调整外加电压使晶振输出频率随之改变的晶体振荡器,主要用于锁相环路或频率微调。压控晶振的频率控制范围及线性度主要取决于电路所用变容二极管及晶体参数两者的组合。 晶体振荡器选择参考标准:
(1) 总频差:在规定的时间内,由于规定的工作和非工作参数全部组合而引起的晶体振荡器频率与给定标称频率的最大频差。
(2) 温度稳定度:在标称电源和负载下,工作在规定温度范围内的不带隐含基准温度或带隐含基准温度的最大允许频偏。
(3) 频率稳定预热时间:以晶体振荡器稳定输出频率为基准,从加电到输出频率小于规定频率允差所需要的时间。
(4) 频率老化率:在恒定的环境条件下测量振荡器频率时,振荡器频率和时间之间的关系。这种长期频率漂移是由晶体元件和振荡器电路元件的缓慢变化造成的,可用规定时限后的最大变化率(如±10ppb/天,加电72小时后),或规定的时限内最大的总频率变化(如:±1ppm/(第一年)和±5ppm/(十年))来表示。
(5) 频率压控范围:将频率控制电压从基准电压调到规定的终点电压,晶体振荡器频率的最小峰值改变量。
(6) 频率压控线性:与理想(直线)函数相比的输出频率-输入控制电压传输特性的一种量度,它以百分数表示整个范围频偏的可容许非线性度[7]。
本系统时钟电路的设计如图3-6。对于实践要求不是很高的系统,图中电路设计就能使系统可靠起振并稳定运行。在本系统的实际应用中特别注意了电容参数的选择(3010pF),并尽量保证电路的对称性(尽可能匹配),选用正派厂家生产的瓷片或云母电容,条件允许的话温度系数要尽可能低。
图3-6 振荡电路 - 13 - / 31
文档可能无法思考全面,请浏览后下载!
3.2.3 系统复位电路设计
智能系统一般应有手动或上电复位电路。复位电路的实现通常有两种形式:即专用µp监控电路和RC复位电路。前者电路实现简单,成本低,但复位可靠性相对较低;后者成本较高,但复位可靠性高,尤其是高可靠重复复位。对于复位要求高,并对电源电压进行监视的场合,大多采用这种方式。
(1) 专用µP监控电路
专用µP监控电路有称为电源监视电路,具有上电时可靠产生复位信号和电源电压跌落到“门槛值”时可靠产生复位信号等功能[17]。按时效电平分,有高电平输出、低电平输出两种;按功能分,有简单的电源监视复位电路、带看门狗定时器(WATCH DOG Timer,WDT)的监控电路和WDT+E2PROM的监控电路等多种类型。
(2) RC复位电路
本系统采用的是RC复位方式。RC复位电路的实质是一阶充放电电路,如图3-7:
图3-7 RC复位电路
系统上电时该电路提供有效的复位信号RST(高电平)直至系统电源稳定后撤销复位信号(低电平)。从理论上说,51系列单片机复位引脚只要外两个机器周期的有效信号即可复位,即只要保证t=RC>2M(机器周期)便可。但在实际设计中,通常C1取值为10µF以上,R1通常取值10ΚΩ左右。实践发现,R1如果取值太小,例如1ΚΩ,则会导致RST信号驱动能力变差而无法使系统可靠复位。另外,从图3-8所示的复位信号波形图可以明显看出,续流二极管对于改善复位性能,起到了重要作用。它的作用是在电源电压瞬间下降时使电容迅速放电,因此一定宽度的电源毛刺(如波形中A点)也可令系统可靠复位。
图3-8 加二极管前后的复位信号特性对比
- 14 - / 31
文档可能无法思考全面,请浏览后下载!
3.2.4 按键与按钮电路设计
按键与按钮电路的设计参见系统原理图中的S1、S2和S3对应部分。按键与按钮电路设计中关键要考虑的就是按键去抖动问题(简称“去抖”),一般由硬件去抖和软件去抖两种方式。硬件去抖可以采用分立元件或触发器实现,目前市场上也有硬件去抖专用接口芯片,例如:MAXIM公司MAX6816~6818,均为单电源供电,电压为2.7~5.5V,分别为单输入、双输入和八输入,输出端具有欠压锁定功能[19]。考虑到系统的硬件简化和控制成本问题,本次设计采用软件去抖方式。
3.2.5 闹铃声光指示电路设计
闹铃指示可以由声或光亮中形式,本系统设计中采用声音指示。关键元件是蜂鸣器。
蜂鸣器有无源和有源两种,前者属要输入声音频率信号才能正常发声,后者则只需外加适当直流电源电压即可;元件内部已经封装了音频振荡电路,在得电状态下即起振发声。市场上的有源蜂鸣器分为3V、5V、6V等系列,以适应不同的应用要求。其电路设计见电路原理图。其中PNV小功率三极管Q2采用9012,其最大集电极电流为800mA,完全满足蜂鸣器驱动的需要。适当调节基极电阻可改变蜂鸣器的发声功率(即响度)。如图3-9
图3-9 闹铃声光指示电路
3.2.6 数字钟的显示电路设计
(1) LED的选择
单片机I/O的应用最典型的是通过I/O口与7段LED数码管构成显示电路,7段LED数码管,在一定形状的绝缘材料上,利用单只LED组合排列成“8”字型的数码管,分别引出它们的电极,点亮相应的点划来显示出0-9的数字。LED
- 15 - / 31
文档可能无法思考全面,请浏览后下载!
数码管根据LED的接法不同分为共阴和共阳两类,了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外 ,编程方法也是不同的。下图3-10阴和共阳极数码管的内部电路,它们的发光原理是一样的,只是它们的电源极性不同而已。
图3-10 数码管电路
将多只LED的阴极连在一起即为共阴式,而将多只LED的阳极连在一起即为共阳式。以共阴式为例,如把阴极接地,在相应段的阳极接上正电源,该段即会发光。当然,LED的电流通常较小,一般均需在回路中接上限流电阻。假如我们将\"b\"和\"c\"段接上正电源,其它端接地或悬空,那么\"b\"和\"c\"段发光,此时,数码管显示将显示数字“1”。而将\"a\"、\"b\"、\"d\"、\"e\"和\"g\"段都接上正电源,其它引脚悬空,此时数码管将显示“2”。其它字符的显示原理类同。
用单片机驱动LED数码管有很多方法,按显示方式分,有静态显示和动态(扫描)显示,按译码方式可分硬件译码和软件译码之分。静态显示就是显示驱动电路具有输出锁存功能,单片机将所要显示的数据送出后就不再控制LED,直到下一次显示数据需要更新时再传送一次新数据,显示数据稳定,占用很少的CPU时间;动态显示需要CPU时刻对显示器件进行数据刷新,显示数据有闪烁感,占用的CPU时间多。
这两种显示方式各有利弊:动态显示虽然有闪烁感,占用的CPU时间较多,但是用的硬件少,能节省线路板的空间。动态扫描显示接口是单片机种应用最广泛的一种显示方式。其接口电路是把所有的LED显示器的8个笔画段A~G、DP的同名端连在一起,而每一个数码管的公共端COM是各自独立地受I/O线控制。CPU向字段输出口送出字形码时,所有显示器接收到相同的字形码,但究竟是哪个显示器亮,则取决于COM端,而这一端由I/O控制的,可以自行决定何时显示哪一位了。而所谓动态扫描就是指我们采用分时的方法,轮流控制各个显示器的COM端,使各个显示器轮流点亮。在轮流点亮扫描过程中,每位显示器的点亮时间是极为短暂的,约1ms左右,但是由于人的视觉暂留现象及发
- 16 - / 31
文档可能无法思考全面,请浏览后下载!
光余晖效应,尽管实际上各位显示器并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。
静态显示虽然数据稳定,占用很少的CPU时间,但每个显示单元都需要单独的显示驱动电路,使用的硬件较多,但是编程相对于动态显示比较简单,本设计采用的是静态显示方案。
(2) LED的驱动和显示
单片机对LED数码管的驱动方法可以分为串行和并行两种,分别适用于不同的使用场合,两者的硬件电路和程序区别也很大。
并行驱动:在一般情况下,单片机使用并行驱动的方式进行LED的显示。并行驱动的结构较简单,并且非常适用于说明地址和数据总线复用的情况。 LED并行驱动的电路原理图如图3-11所示。
图3-11 LED并行驱动的电路原理
图中显示的是使用8155与LED显示器的接口,8155的PB0~PB7作为段选码口,经过7407驱动与LED的段相连;8155的PA0~PA5作为位选码口,经过7406驱动与LED的位相连。图中的P2.7反相后作为8155的片选信号,P2.6接8155的IO端。这样确定8155片内的4个端口地址。(7407:驱动门电路,提供数码管显示的驱动电流)
本设计采用的是串行驱动方式,具体方法如下:
在某些情况下,可供使用的单片机并行I/O口不足8根,数据的并行输出已不可能此时可以考虑串行输出方法,图3-12本设计采用的串行口扩展的四位LED显示电路。
- 17 - / 31
文档可能无法思考全面,请浏览后下载!
图3-12本设计采用的串行口扩展的四位LED显示电路
该显示电路只使用单片机的三个端口P1.7、P3.0、P3.1,并配以四片串入并出移位寄存器74LS164(LED驱动)。如果再配1片三端可调稳压器LM317,则可调LED亮度。其中74LS164的引脚Q0~Q7为8位并行输出端;引脚A、B为串行输入端;引脚CLK为时钟脉冲输入端,在CLK脉冲的上升沿作用下实现移位,在CLK=0、清除端MR=1时,74LS164保持原来数据状态;MR=0时,74LS164输出清零。
其工作过程如下:
2051的串行口设定在方式0移位寄存器状态下,串行数据由P3.0发送,移位时钟由P3.1送出
在移位时钟的作用下,串行口发送缓冲器的数据一位一位地移入74LS164中。
4片74LS164串级扩展为4个8位并行输出口,分别连接到4个LED显示器的段选端作静态显示。
需要指出的是,由于74LS164无并行输出控制端,因而在串行输出过程中,其输出端的状态会不断变化,造成不应显示的字段有较暗的亮度,影响了显示的效果。可以采用的做法是在74LS164的输出端加接4片锁存器或三态门,使移位寄存器串行输入数据时其输出端的变化不反映到LED上,待串行输出结束后再打开锁存器或三态门;也可以采用1片三端可调稳压器LM317即解决此问题。LM317的3、2脚分别是电压输入、输出端,LM317的1脚是电压的调整端,在一脚与接地电阻之间并入一个NPN三极管,它的基极受P1.7口线控制。串行输出时P1.7口线为高电平,三极管截至,LM317的脚1约为0.3V,脚2输出电压
- 18 - / 31
文档可能无法思考全面,请浏览后下载!
便下降到1.5V不足以使共阳极LED发光,故此时串行输入的影响不会反映到LED上。串行输入结束后P1.7口线为低电平,三极管截止,脚2输出电压便上升到20V使LED正常发光,因此不会引起显示闪烁。增加了可调稳压器LM317的电路,其另一个特点是通过可调电位器P1在线调整脚2的输出电压,可使LED的显示亮度均匀可调,而且省掉了大量的限流电阻。
显示采用共阳数码管,其目的是为了简化限流电路的设计和实现亮度可调的要求。从图中可以看出,该显示电路采用了与一般的段电流电阻限流方式不同的显示方式,由此减少了88个限流电阻,简化了硬件系统。每笔画段二极管正常发光时的电流一般为10mA左右(电流大小还取决于数码管是普亮、高亮还是超高亮类型的不同),其两端压降约为2.0V,也就是说,只要数码管的公共端(COM)加+2.0以上电压,即可满足每笔画段发光二极管的发光要求,而且适当调节此电压值即可改变发光二极管的电流,从而达到调节亮度的目的。此电压采用三端可调稳压电路W1(LM317)来实现。其输入为+5V,按照图中参数其输出电压由式3-1决定:1.25×(1+R4/(R5+R6)) (3-1)
在式3-1中,R5为200Ω,R6可调,R4为220Ω,因此输出电压为2.17~2.63V。但由于输入输出压差至少为2.5V,因此极限电压为2.5V。图-15中只画出了一个数码管的连接。接口P3.2的作用是通过LM317控制数码管的开启与关闭,当P3.2为低电平,Q1关断,LM317的输出电压低于1.5V,不足以发光,避免了显示数据刷新时的抖动现象。
详细电路图见附录2。
上述分析表明,移位寄存器74LS164仅有串入左右没有译码作用,因此,在编写显示驱动程序之前,首先需要计算列写出与本程序电路相应的LED段选码
[3]
,然后由2051的P3.0口送入74LS164的串行输入端,再并行输出到LED的
段选端。需要指出的是,本电路采用TOS28106BHK型号的共阳极LED数码管。这种稳定的静态显示方式也省去了CPU的动态扫描过程,此为本电路的又一特点。
3.3 电源设计
电源电路用来为控制电路和各外围电路提供稳定可靠的工作电源。 稳压电源的技术指标可以分为两大类:一类是特性指标,如输出电压、输入电流及电压调节范围;另一类指标是质量指标,反映一个稳压电源的优劣,包括稳定度、等效内阻、纹波电压及温度系数等。对于稳压电源的性能,主要有以下
- 19 - / 31
文档可能无法思考全面,请浏览后下载!
四个要求:
1稳定性好 ○
当输入电压Usr(整流、滤波的输出电压)在规定范围内变动时,输入电压Usc的变化应该很小,满足一般要求:
Usc1%(3-2)
Usc
当输入电压变化而引起输出电压变化的程度,称为稳定度指标,常用稳定系数S表示:
Usr(3-3) S UscUscUsr 注:S的大小,反映一个稳压电源克服输入电压变化的能力。在同样的输入电压变化条件下,S越小,输出电压的变化越小,电源的稳定度越高。通常S约为0.01~0.0001
2输出电阻小 ○
负载变化时(从空载到满载),输出电压Usr,应基本保持不变。稳压电源这方面的性能可用输出电阻表征。
r nUsrIfz量之比:
(3-4)
输出电阻(又叫等效内阻)用rn表示,它等于输出电压变化量和负载电流变化
rn反应负载变动时,输出电压维持恒定的能力,m越小,则Ifz变化时输出电压的变化也越小。性能优良的稳压电源,输出电阻可小到1欧,甚至0.01欧。
3电压温度系数小 ○
当环境温度变化时,会引起输出电压的漂移。良好的稳压电源,应在环境温度变化时,有效的抑制输出电压的漂移,保持输出电压的稳定。
4输出电压文波小 ○
所谓纹波电压,是指输出电压中50Hz或者100Hz的交流分量,通常用有效值或者峰值表示。经过稳压左右,可以使整流滤波后的纹波电压大大降低,降低的倍数反比于稳压系数S。
稳压电源一般由变压器、整流器和稳压器三大部分组成。
变压器把市交流电压转变为所需要的低压交流电。整流器把交流电变为直流电。经过滤波后,稳压器再把不稳定的直流电压变为稳定的直流电压输出。
- 20 - / 31
文档可能无法思考全面,请浏览后下载!
在本设计中,由于AT89C2051通常有-12和-24两种型号,对应的时钟频率分别为12MHz和24MHz,前者的工作电压是2~6V,后者的工作电压是4~6V。考虑到本设计目标电源交直流两用的要求和三端稳压电路选用的方便(通常的系列为5V,6V%…),选择工作电压为5V。电源系统设计如图3-19示。
图3-19 系统电源原理图
应当说明的是,尽管有很多型号的7805三端稳压集成芯片,但标称最大输出电流均为1.5A,但在实际应用中,该最大输出电流值往往取决于两个方面:(1)足够的散热面积;(2)不同的生产厂家。其中,比较好的有ST公司的7805三端稳压块,它能接近标称值。在设计中,必须保证7805的输入电压Vi和输出电压Vo的压差大于2.5V,即Vi-Vo≥2.5V,否则失去稳压能力。同时考虑到功耗问题,此压差又不易太大,太大则增加7805本身的功率消耗,增加芯片的温升,不利于安全。因此,选用9V。当交流电源失电或时效时,电压为6V的直流电源(电池组或蓄电池)通过二极管投入工作,硅二极管的导通电压降约为0.2V,因此满足系统的电源要求。
- 21 - / 31
1234VCCAP1N1VinVoutGNDRCAC2C4C50.1uFU112345678910Vpp/Rstp3.0/RxDP3.1/TxDXTAL1XTAL2P3.2P3.3P3.4P3.5GNDVCCP1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0P3.7AT89C2051201918171615141312111KR2R31KS4S2DS2LED00.1uF47uFC3Cap Pol147uFR1Res210KS1SW-PBC122uFADS1LED0327pFB1VT19012R4S31KLS121C728pFY16M文档可能无法思考全面,请浏览后下载!
BellR7Res22KR8VCCRPot10012987129871298712987129871298712987129872Q19013R5Res2220R6Res21KADJOUTINC6U2LM317KCBCLRCLKCLRCLKCLRCLKCLRCLKCLRCLKCLRCLKCLRCLKCLRCLKGNDGNDGNDGNDGNDGNDGNDVCCVCCVCCVCCVCCVCCVCCVCCQAQBQCQDQEQFQGQHQAQBQCQDQEQFQGQHQAQBQCQDQEQFQGQHQAQBQCQDQEQFQGQHQAQBQCQDQEQFQGQHQAQBQCQDQEQFQGQHQAQBQCQDQEQFQGQH345610111213345610111213345610111213345610111213345610111213345610111213345610111213109854237109854237109854237109854237109854237109854237109854237D1Dpy Amber-CCD2Dpy Amber-CCD3Dpy Amber-CCabcdefgDPD4Dpy Amber-CCabcdefgDPD5Dpy Amber-CCabcdefgDPD6Dpy Amber-CCabcdefgDPD7Dpy Amber-CC109854237VCCVCCabcdefgDPVCCVCCVCCVCCVCCVCC3456101112131414141414141414CQAQBQCQDQEQFQGQHGNDU3SN74LS164NU4SN74LS164NABABU5SN74LS164NU6SN74LS164NABU7SN74LS164NABU8SN74LS164NABU9SN74LS164NABU10SN74LS164NCD8Dpy Amber-CCabcdefgDPabcdefgDPKKKKKKKKKKKKKK16161616161616系统设计原理图
DTitle16KKabcdefgDPDSizeA4Date:File:123NumberRevision2007-6-8Sheet of C:\\Documents and Settings\\..\\shizhong.SCHDOCDrawn By:
4
- 22 - / 31
ABAB文档可能无法思考全面,请浏览后下载!
第4章 程序设计
软件设计的重点在于秒信号的产生,显示的实现及按键的处理等方面。基于软件的秒脉冲信号通常有延时法和定时中断法。延时法一般采用查询方式,在延时子程序前后必然需要查询和处理的程序,导致误差的产生,因此其秒脉冲的产生,因此秒脉冲的精度不高。中断法的原理是利用单片机内部的定时器溢出中断来实现。例如,设定某定时器每100ms中断1次,这10次的周期为1s,这种实现法的特点是精度高,秒脉冲的发生和其他处理可以并行进行。[10]本系统即采用这种方式,实现的关键是定时器的工作方式的选择和定时参数的计算确定。具体内容将在原程序中给于说明。本系统设计中使用的晶振频率为12MHz。
4.1主控模块设计
主模块是系统软件的主框架。结构化程序设计一般有“自上而下”和“自下而上”两种方式,“自上而下”法的核心就是主框架的构建。它的合理与否关系到程序最终功能的多少和性能的好坏。本系统主模块的程序框图如图4-1。
开始 CPU 系统初始化 定时器0初始化 定时器0初始化 串口初始化 显示待机指示符 N 设定闹铃? Y 设定闹铃时间 显示刷新
- 23 - / 31
文档可能无法思考全面,请浏览后下载!
N N 启动走时 有关变量初始化 判断时和分变化? Y 刷新显示 N 判1秒到否? Y 秒指示 是否到闹铃时间? Y 闹铃 延时
图4-1 主模块的程序框图
4.2 基本现实模块设计
基本现实模块设计的重点是有显示代码取得相应的段码,显示段码数据的串行发送,其程序流程如图4-2所示。其中,时个位、分个位、秒个位的段码必须加上小数点,即带小数点显示时各位、分个位、秒个位,目的是以小数点符号代替时间分割符“:”,(一般的数码管无法显示字符“:”)。
- 24 - / 31
文档可能无法思考全面,请浏览后下载!
开 始 关显示,以免显示抖动 通过串口将时十位段码送入对应的74LS164 将十个位段码送入对应的74LS164(以小数点代替:) 将分十位和个位段码送入相应的74LS164 将百分秒十位和个位段码送入相应的74LS164 打开显示 图4-2 基本显示模块的程序流程图 4.3 当前编辑位闪烁功能的实现
当前编辑位闪烁功能能使时间设定编辑模块的人机环境更加友善,其实现的原理是:利用定时器1每100ms的溢出中断,实现每0.5s亮-灭交替效果,即闪烁。用程序框图表示就是如图4-3:
闪烁标志为真 将显示全灭段码送显示缓冲区 将目前设定的时间参数送显示 调用基本显示程序模块 图4-3 当前编辑位闪烁功能实现的程序流程图 4.4 时间设定模块设计
时间设定模块的设计要点是按键的去抖与“一键多态”的处理。即只涉及两个键完成了8位时间参数的设定。软件发去抖动的实质是软件延时,即检测到某一键状态变化后延时一段时间,再检测该按键的状态是否还保持着,如果是,则作为按键处理,否则,视为抖动,不予理睬。去抖的延时时间一般应大于20ms,
- 25 - / 31
文档可能无法思考全面,请浏览后下载!
否则会导致按一次键做多次处理,影响程序正常执行。“一键多态”即多功能键的实现理想是,根据按键时刻的系统状态,决定按键采取何种动作,即何种功能。其实现流程如图4-4。
设置键 设置模块初始化 将在编参数送显示缓冲区 N 闪烁标志为真?Y 将当前位的显示代码置暗代码 +1键吗? Y 调基本显示模块刷新显示 N设置键? Y 当前的编辑是分个位Y 当前编辑位下移一位 N 结束设定 根据当前位的性质分别进行+1处理(含上下限判断) N 图4-4 时间设定模块流程图 4.5 脉冲发生器原理与走时处理
软件秒脉冲发生器的实质是定时器T0的定时溢出中断。此设计中由于校时秒信号为10ms,所以内部电子钟以10ms为最小计时单位,故我们将定时器T0定时为10ms.单片机时钟频率为12MHz,用T1模式产生10ms定时,T1的初值为:
T1的初值=216 -10*12*106/12=60536=FC18H
- 26 - / 31
文档可能无法思考全面,请浏览后下载!
有了秒脉冲发生器,10次中断为1s,秒指示灯闪亮一次,秒变量单元加1,
到60s后分变量单元加1,如果为60min则时变量单元加1。任何一个变量的变化,则显示刷新一次(更新)。其流程如图4-5:
重装定时时间常数 中断次数加1 N 中断返回 到10次了吗 Y 秒变量+1 到60秒否 N 中断返回 Y 秒变量回00,分+1 闹铃判别 N 到60分否 Y 中断返回 分变量回00,时+1 闹铃判别 N 到24h否 Y 中断返回 时变量回00 图4-5 T0的中断子程序流程图 闹铃判别 4.6 闹铃功能的实现
闹铃功能的实现设计到两个方面:闹铃时间设定和是否闹铃判别和处理。闹铃时间设定模块的设计可参照时间设计模块,这里着重阐述闹铃判别与处理模块的设计问题。闹铃判别与闹铃处理的关键在于判别何时要进行闹铃判别。闹铃判别与处理的代码包含在定时器0的中断子程序中,其程序设计思想如图4-6:
- 27 - / 31
文档可能无法思考全面,请浏览后下载!
闹铃判别处理 时十位、个位,分十位、个位改变了 是否设置了闹铃 Y 判当前时间是设定的时间Y N 设置闹铃 N 闹铃响 中断返回 中断返回 图4-6 包含在T0中断程序中的闹铃判别与处理程序流程图
S3 BIT P1.5 ;闹铃设置开关 BEEP BIT P3.7 ;闹铃控制
WARNHH EQU 2FH ;报警时高位 WARNHL EQU 30H ;报警时地位 WARNMH EQU 31H ;报警分高位 WARNML EQU 32H ;报警分低位
WARNCNT EQU 33H ;已设定闹铃时间标志 WARNING BIT 0CH ;闹铃标志 WARNSETTED BIT 0DH ;已设定闹铃标志
- 28 - / 31
文档可能无法思考全面,请浏览后下载!
第5章 系统的调试及结果
5.1 系统调试环境
本系统所有的电路都设计在一块电路板上,整个电路板结构紧凑、分布合理,便于加工和调试,并且降低了相互间以及监控器与其他仪器间的干扰。电路焊接好过后进行简单的调试、定标过后,系统便能正确、可靠的运行。系统PCB图如图附录3所示。
5.2 软件调试
本设计的软件部分,全部采用汇编语言编写,软件模块较多,程序代码段很长,因此采用分块调试的方法来调试程序。首先用单片机汇编程序编译器(WAVE6000)调试,无误后,再通过编程器烧到单片机用装置实验调试,采用了自下到上的调试方法,即先单独调试好每一项功能,然后再连接成一个完整的系统调试。根据实验结果和指标对照,若有不符,再修改,直到程序完全正确为止。这样保证了软件编写的正确性和可行性。
5.3 硬件调试
将烧入程序的89C2051安装在硬件电路中,然后通电。先调节看按键工作是否正常,LED是否能正常显示。将时钟调至12:59:00,一分钟之后看其是否变化为1:00:00。最后设置好闹钟时间,看其到时间是否响铃。
在调试过程中遇到了很多的问题:
1LED不显示。由于没有买到PCB板中那种封装的LED,所以在焊接的○
时候采用另外一种封装的LED来代替,采用将从PCB板上的每个管脚连线出来与另外一块板子上的LED管脚对应相连,由于连线过多,有一些线连错或者虚焊,在检查出错误后改正。
2发光二极管不亮。经检查后发现发光二极管正负极接反。 ○
3按下按键无动作。○检查后发现在焊接过程中轻触按键的内部结构被破坏,不能正常的起到左右,后将其换掉。
5.4 调试结果
基本实现了设计的要求,长时间运行容易有误差,在稳定性方面还有待改
进。
- 29 - / 31
文档可能无法思考全面,请浏览后下载!
结 论
单片机多功能数字钟理论上能很好的达到了学校教学要求,发挥了单片机在智能化方面的应用。该系设计很好的满足当前学校教学的需要,是一个理想的智能化的设计。它具有一个走时精确的实时钟,可以任意设置时间,时钟的显示功能,校时等。可以通过按键操作和数字显示。其中利用短波自动校时是这个设计最大的特点之一。本设计规模小,但是功能较多,操作简单,造价低,应用非常广泛。
通过两个月的学习和调试过程,终于完成了单片机多功能数字钟的工作。并且使数字钟够顺利运行,完成了预期的目标。从单片机多功能数字钟的设计过程中也找到了一些单片机开发的规律:先了解所有元件的具体内容,从而画出其电路图,使数字钟从简易变成多功能的方式,虽没有做多功能数字钟,却知晓了其方法。从而让我踏入了单片机应用领域的第一步。然而在调试过程中有也有许多的不足之处:例如编写调试程序有点不足。希望能够在以后的不断深入学习中能够弥补自己的不足之处。同时更是朝着单片机应用领域迈进。
单片机是一个软件和硬件相结合的系统,其在现代的电子技术领域里起着越来越重要的作用,对于我们应电专业的学生来说,这无疑是一种挑战,当然,也是机遇。通过本课题的设计,系统运用了各方面的知识,检验了自己大学四年来的学习效果,同时也让自己对单片机有了更进一步的认识,为在以后的生活和工作中继续研究和开发单片机系统都会有很大的帮助。
- 30 - / 31
文档可能无法思考全面,请浏览后下载!
参考文献
[1] 沈红卫. 基于单片机的智能系统设计与实现[M]. 北京. 电子工业出版社,2005.
[2] 楼然苗. 51系列单片机设计实例[M]. 北京. 北京航空航天大学出版社,2003.
[3] 董传岱、于云华. 数字电子技术[M]. 石油大学出版社,2001.
[4] 吴秀清、周荷琴. 微机原理与接口技术[M]. 中国科技大学出版社,2002 [5] 何立民. 单片机应用系统设计[M]. 北京:北京航空航天大学出版社,1995. [6] 李华. MCS-51系列单片机实用接口技术[M]. 北京:北京航空航天大学出版社,1990.
[7] 江雪山 新型日历钟、打铃定时仪[J] 北京 家庭电子 2001,5:22-23
[8] 李春玲 自校准高精度单片机时钟系统[A] 江西 南昌陆军学院机电教研室
华东交通大学学报 1999,9 (3) 51-55
[9] 贡春梅 日历电子钟设计[A] 西安航空技术高等专科学校学报 2004,
1(22)21-23
[10] 刘飞等 两种数字钟电路设计比较[J] 湖北师范学院学报 2003,
2(23)40-43
[11] 胥筱门 单片机系统的试验及应用[J] 电子制作 1999(6)20-30
[12] 郑惠芳 单片机报时时钟控制系统的一种设计方法[J] 福建广播电视大学学报 2005 (6) 63-67
[13] 管立锐 用8031实现日历时钟及时钟显示[J] 长春光学精密机械学院学报
1999,6 (22) 68-70
[14] 林军等 用8031单片机控制的数字钟[J] 半导体技术 2002,2(27) 40-44 [15] 张景元等 一种基于单片机的多功能数字钟[J] 微计算机信息
2005(21)117-119
[16] 翟玉文等 实用多功能数字钟的设计[A] 吉林化工学院学报 2001,
3(18)31-33
- 31 - / 31
因篇幅问题不能全部显示,请点此查看更多更全内容