




免费预览已结束,剩余8页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
用LED显示时钟摘要 现随着电子技术产业结构调整,生产工艺的飞速发展,人们生活水平的不断提高,家用电器逐渐普及,市场对于智能时钟控制系统的需求也越来越大。本文所述智能时钟控制系统主要指时钟显示、时间设置、闹铃及家用电器定时开关机(可扩展功能)等控制系统。 本文采用进入市场时间早、总线开放、仿真开发设备多、芯片及其开发设备价格低廉、速度较快、电磁兼容性较好的MCS-51型单片机为核心实现智能时钟控制。 本文主要介绍用单片机内部的定时/计数器来实现电子时钟的方法,本设计由单片机AT89C51芯片和LED数码管为核心,辅以必要的电路,构成了一个单片机电子时钟,并有定时功能。ED数码管时钟电路采用24h计时方式,时、分、秒用6位数码管显示。该电路采用AT89C51单片机,使用两个按键开关即可进入调时、调分。关键字 定时器 LED数码管 AT89C51 一、 钟电路硬件的设计数码管时钟电路如下图所示,其采用AT89C51单片机最小化应用设计,LED显示采用动态扫描方式实现,P0口输出段数码管,P2口作扫描输出,P1.6和P1.7接调时按钮。为了提供LED数码管的驱动电流,用三极管9012作电源驱动输出。为了提高秒计时的精确性,采用了06Mhz晶振。数码管时钟电路图如下:AT89C51简介:AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如图所示。主要特性:与MCS-51 兼容 ;4K字节可编程闪烁存储器 ;寿命:1000写/擦循环;数据保留时间:10年;全静态工作:0Hz-24MHz;三级程序存储器锁定;1288位内部RAM;32可编程I/O线;两个16位定时器/计数器;5个中断源 ;可编程串行通道;低功耗的闲置和掉电模式;片内振荡器和时钟电路管脚说明:VCC:供电电压。GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 P3口也可作为AT89C51的一些特殊功能口,如下表所示: 口管脚 备选功能:P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入) P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通) P3口同时为闪烁编程和编程校验接收一些控制信号。 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:来自反向振荡器的输出。 振荡器特性:XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。电路原理图如下:引脚排列如图: 二、系统主要程序的设计1、 主程序本设计中的计时采用定时器T0中断完成,其余状态循环调用显示子程序,当P1.6、P1.7端口开关按下,转入调时功能程序。系统主程序流程图如下图:2、显示子程序:数码管显示的数据存放在内存单元中,每一地址单元内均为十进制BCD码。显示时,先取出某一地址的数据,然后查得对应的显示用段码从P1口输出。P2口将对应的数码管选中,就能显示该地址单元的数据值。3、 定时器T0中断服务程序:定时器T0用于时间计时。定时溢出中断周期,中断累计后达1s时对秒计时单元进行加1操作。在时分计数单元中采用十进制BCD码计数,满60进位。T0中断服务程序流程图:三、程序清单CODE_SEGSEGMENT CODE DATA_SEGSEGMENT DATA STACK_SEGSEGMENTIDATAK1BITP1.6K2BITP1.7RSEG DATA_SEGKEY_S:DS 1KEY_V: DS 1DIS_DIGIT: DS 1SEC: DS 1DIS_INDEX: DS 1HOUR: DS 1MIN: DS 1SEC100: DS 1DIS_BUF: DS 8BUF_HOUR_HEQUDIS_BUF; 小时十位BUF_HOUR_LEQUDIS_BUF+1; 小时个位BUF_MIN_HEQUDIS_BUF+3; 分十位BUF_MIN_LEQUDIS_BUF+4; 分个位BUF_SEC_HEQUDIS_BUF+6; 秒十位BUF_SEC_LEQUDIS_BUF+7; 秒个位RSEGSTACK_SEGSTACK:DS20CSEGAT0000HJMPMAINCSEGAT0000BHLJMPTIMER0CSEGAT0001BHLJMPTIMER1RSEG CODE_SEGMAIN:USING0MOVSP, #(STACK-1);MOV P0,#0FFHMOV P2,#0FFHMOV TMOD,#011H; 定时器0, 1工作模式1, 16位定时方式MOV TH0,#0FCHMOV TL0,#017HMOV TH1,#0DCHCLR AMOV TL1,AMOV HOUR,#06; CLRA; MOV MIN,#01MOV SEC,#35MOV SEC100,AMOV A,HOURMOV B,#10DIV ABMOV DPTR,#DIS_CODEMOVC A,A+DPTRMOV BUF_HOUR_H,A; 时十位MOV A,HOURMOV B,#10DIV ABMOV A,BMOVC A,A+DPTRMOV BUF_HOUR_L,A; 时个位MOV A,MINMOV B,#10DIV ABMOVC A,A+DPTRMOV BUF_MIN_H,A; 分十位MOV A,MINMOV B,#10DIV ABMOV A,BMOVC A,A+DPTRMOV BUF_MIN_L,A; 分个位MOV A,SECMOV B,#10DIV ABMOVC A,A+DPTRMOV BUF_SEC_H,A; 秒十位MOV A,SECMOV B,#10DIV ABMOV A,BMOVC A,A+DPTRMOV BUF_SEC_L,A; 秒个位MOV BUF_HOUR_H+02H,#0f7H;显示数码管的-MOV BUF_HOUR_H+05H,#0f7H;显示数码管的- MOV DIS_DIGIT,#0FEHCLRAMOV DIS_INDEX,AMOV IE,#08AH; 使能timer0,1 中断SETBTR0SETBTR1MOV KEY_V,#03HMAIN_LP:LCALLSCAN_KEY; 键扫描JZ MAIN_LP; 无键返回MOVR7,#10; 延时10msLCALLDELAYMS; 延时去抖动LCALLSCAN_KEY; 再次扫描JZMAIN_LP; 无键返回MOV KEY_V,KEY_S; 保存键值LCALLPROC_KEY; 键处理SJMPMAIN_LP; 调回主循环SCAN_KEY:; 扫键扫描子程序; 保存按键状态到key_s; 返回: A - 按键是否按下(BOOL)CLRAMOV C,K1; 读按键K1MOVACC.0,CMOVC,K2; 读按键K2MOVACC.1,CMOVKEY_S,A; 保存按键状态到key_sXRL A,KEY_VRET PROC_KEY:; 键处理子程序; 传入参数: KEY_V - 按键值; 返回值: 无CLR EAMOV A,KEY_VJNBACC.0,PROC_K1JNBACC.1,PROC_K2SJMPEND_PROC_KEYPROC_K1:; 按键k1处理LCALLINC_HOUR; 小时加1SJMP END_PROC_KEYPROC_K2:; 按键K2处理INC MIN; 分钟加1MOV A,MIN; SETB CSUBB A,#59JC K2_UPDATE_MIN; 如果分钟等于60,则分清0,小时加1CLR A; MOV MIN,AK2_UPDATE_MIN:; 更新分显示缓冲区MOV A,MINMOV B,#10DIV AB; A = MIN / 10MOV DPTR,#DIS_CODEMOVC A,A+DPTRMOV BUF_MIN_H,A; 更新分十位MOV A,MINMOV B,#10DIV ABMOV A,B; A = MIN % 10MOVC A,A+DPTRMOV BUF_MIN_L,A; 更新分个位END_PROC_KEY:SETB EARET USING0TIMER0:; 定时器0中断服程序, 用于数码管的动态扫描; DIS_INDEX - 显示索引, 用于标识当前显示的数码管和缓冲区的偏移量; DIS_DIGIT - 位选通值, 传送到P2口用于选通当前数码管的数值, 如等于0xfe时,;选通P2.0口数码管; DIS_BUF - 显于缓冲区基地址PUSH ACCPUSH PSWPUSH AR0MOV TH0,#0FCHMOV TL0,#017HMOV P2,#0FFH; 先关闭所有数码管MOV A,#DIS_BUF; 获得显示缓冲区基地址ADD A,DIS_INDEX; 获得偏移量MOV R0,A; R0 = 基地址 + 偏移量MOV A,R0; 获得显示代码MOV P0,A; 显示代码传送到P0口MOV P2,DIS_DIGITMOVA,DIS_DIGIT; 位选通值左移, 下次中断时选通下一位数码管RLAMOVDIS_DIGIT,AINCDIS_INDEX; DIS_INDEX加1, 下次中断时显示下一位ANLDIS_INDEX,#0x07; 当DIS_INDEX等于8(0000 1000)时, 清0POP AR0POP PSWPOP ACCRETI USING0TIMER1:; 定时器1中断服务程序, 产生时基信号10msPUSHPSWPUSH ACCPUSH BPUSH DPHPUSH DPLMOV TH1,#0DCHINC SEC100MOV A,SEC100CLR CSUBB A,#100; 是否中断100次(达到1s)JC END_TIMER1; 1SMOV SEC100,#00H; 达到1s LCALLINC_SEC; 秒加1 END_TIMER1:POP DPLPOP DPHPOP BPOP ACCPOPPSWRETI ; INC_SEC:INC SECMOV A,SECSETB CSUBB A,#59; JC UPDATE_SECCLR AMOV SEC,ALCALLINC_MINUPDATE_SEC:MOV A,SECMOV B,#10DIV AB; A = SEC / 10MOV DPTR,#DIS_CODEMOVC A,A+DPTR; MOV BUF_SEC_H,A; MOV A,SECMOV B,#10DIV ABMOV A,B; A = SEC % 10MOVC A,A+DPTRMOV BUF_SEC_L,ARET INC_MIN:INC MIN; 分钟加1MOV A,MIN; SETB CSUBB A,#59JC UPDATE_MIN; 如果分钟等于60,则分清0,小时加1CLR A; MOV MIN,ALCALLINC_HOUR; 小时加1UPDATE_MIN:; 更新分显示缓冲区MOV A,MINMOV B,#10DIV AB; A = MIN / 10MOV DPTR,#DIS_CODEMOVC A,A+DPTRMOV BUF_MIN_H,A; 更新分十位MOV A,MINMOV B,#10DIV ABMOV A,B; A = MIN % 10MOVC A,A+DPTRMOV BUF_MIN_L,A; 更新分个位RET INC_HOUR:INC HOUR; 小时加1 MOV A,HOURSETB CSUBB A,#24JC UPDATE_HOUR; 如果小时等于24,则小时清0CLR AMOV HOUR,A; 小时清0 UPDATE_HOUR:MOV A,HOURSETB CSUBB A,#9JC UPDATE_HOUR1; 如果小时小于10,则十位0不显示MOV A,HOURMOV B,#10DIV ABMOV DPTR,#DIS_CODEMOVC A,A+DPTR; MOV BUF_HOUR_H,ASJMP UPDATE_HOUR2UPDATE_HOUR1:MOV BUF_HOUR_H,#0FFHUPDATE_HOUR2:MOV A,HOURMOV B,#10DIV ABMOV A,BMOV DPTR,#DIS_CODEMOVC A,A+DPTRMOV BUF_HOUR_L,ARET DELAYMS:; 延时子程序; 传入参数:R7
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度大型活动策划设计聘请专项合同
- 诸暨珍珠知识培训课件
- 2025装载机的买卖合同范本
- 2025年双边房屋租赁转让合同范本
- 红色景点培训课件教学
- 红细胞增多性疾病
- 诗经采薇节课件
- 红楼梦课件教学课件
- 商品车运输协议
- 诗经故国之思课件
- 中医运动养生 中医养生学课件
- GB/T 5563-2013橡胶和塑料软管及软管组合件静液压试验方法
- GB/T 1192-1999农业轮胎
- 人类学-课件精
- DBJ51-T 188-2022 预拌流态固化土工程应用技术标准
- 体育产业经营管理课件第一章导论
- 2023门球竞赛规则电子版图文并茂
- 部编版四年级语文上册第5课《一个豆荚里的五粒豆》优秀PPT课件
- 大班社会《班级规则我遵守》课件
- 能源概论__第一章能源概述PPT课件
- 小学一年级体育下册教案全册
评论
0/150
提交评论