基于AT89C51单片机数字时钟精品资料.doc

上传人:封****n 文档编号:96699084 上传时间:2024-03-10 格式:DOC 页数:40 大小:1.05MB
返回 下载 相关 举报
基于AT89C51单片机数字时钟精品资料.doc_第1页
第1页 / 共40页
基于AT89C51单片机数字时钟精品资料.doc_第2页
第2页 / 共40页
点击查看更多>>
资源描述

《基于AT89C51单片机数字时钟精品资料.doc》由会员分享,可在线阅读,更多相关《基于AT89C51单片机数字时钟精品资料.doc(40页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、广东农工商职业技术学院毕业论文(设计)题 目 基于单片机89c51时钟设计 姓 名 蒋祖承 黄烈 专 业 2009电子信息工程技术 年级班级 一班 学 号 20093309119 20093309124 指导教师 完成日期 2012年4月 目 录摘 要 1第一章 绪论 1.1 数字电子钟的发展与历史 41.2 数字电子时钟的基本特点 41.3 数字电子钟的应用 4数字钟的构成与原理第二章 选择与介绍2.1 单片机的选择 62.2 89C51单片机介绍 8第三章 数字钟的硬件设计3.1 最小系统设计 123.2 LED显示电路 15第四章 数字钟的软件设计4.1 系统软件设计流程图 184.2

2、数字电子钟的原理图 214.3 主程序 224.4 时钟设置子程序 214.5 定时器中断子程序 214.6 LED显示子程序 224.7 按键控制子程序 24第五章 系统仿真5.1 PROTUES软件介绍295.2 电子钟系统PROTUES仿真29第六章 调试与功能说明6.2 系统性能测试与功能说明 326.3 系统时钟误差分析 326.1 硬盘调试 326.4 软件调试问题及解决 32结束语.34参考文献35致谢.36摘 要单片计算机即单片微型计算机。由RAM ,ROM,CPU构成,定时,计数和多种接口于一体的微控制器。它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。而51系列

3、单片机是各单片机中最为典型和最有代表性的一种,这次课程设计通过对它的学习,应用,从而达到学习、设计、开发软、硬件的能力;本设计主要设计了一个基于AT89C51单片机的电子时钟。数字钟实际上是一个对标准频率(1Hz)进行计数的计数电路。振荡器产生的时钟信号经过分频器形成秒脉冲信号,秒脉冲信号输入计数器进行计数,并把累计结果以“时”、“分”、“秒”的数字显示出来。秒计数器电路计满60后触发分计数器电路,分计数器电路计满60后触发时计数器电路,当计满24小时后又开始下一轮的循环计数。一般由振荡器、分频器、计数器、译码器、数码显示器等几部分组成。振荡电路:主要用来产生时间标准信号,因为时钟的精度主要取

4、决于时间标准信号的频率及稳定度,所以采用石英晶体振荡器。分频器:因为振荡器产生的标准信号频率很高,要是要得到“秒”信号,需一定级数的分频器进行分频。计数器:有了“秒”信号,则可以根据60秒为1分,24小时为1天的进制,分别设定“时”、“分”、“秒”的计数器,分别为60进制,60进制,24进制计数器,并输出一分,一小时,一天的进位信号。译码显示:将“时”“分”“秒”显示出来。将计数器输入状态,输入到译码器,产生驱动数码显示器信号,呈现出对应的进位数字字型。由于计数的起始时间不可能与标准时间(如北京时间)一致,故需要在电路上加一个校时电路可以对分和时进行校时。另外,计时过程要具有报时功能,当时间到

5、达整点前10秒开始,蜂鸣器1秒响1秒停地响5次。为了使数字钟使用方便,在设计上使用了一个变压器和一个整流桥来实现数字钟电能的输入,使得可以方便地直接插入220V的交流电就可以正常地使用了。关键词 数字钟 振荡 计数 校正 报时1.1 数字电子钟的发展与历史单片机诞生于20世纪70年代末,经历了SCM、MCU、SoC三大阶段。1、SCM即单片机微型计算机(Single Chip Microcomputer)阶段,主要是寻求最佳的单片形态嵌入式系统的最佳体系结构。“创新模式”获得成功,奠定了SCM与通用计算机完全不同的发展道路。在开创嵌入式系统独立发展道路上,Intel公司功不可没。2、MCU即微

6、控制器(Micro Controller Unit)阶段,主要的技术发展方向是:不断扩展满足嵌入式应用时,对象系统要求的各种外围电路与接口电路,突显其对象的智能化控制能力。它所涉及的领域都与对象系统相关,因此,发展MCU的重任不可避免地落在电气、电子技术厂家、从这一角度来看,Intel逐渐淡出MCU的发展也有其客观因素。在发展MCU发展,最著名的厂家当数Philips公司。Philips公司以其在嵌入式应用方面的巨大优势,将MCS-51从单片微型计算机迅速发展到微控制器。因此,当我们回顾嵌入式系统发展道路时,不要忘记Intel和Philips的历史功绩。3、单片机是嵌入式系统的独立发展之路,向

7、MCU阶段发展的重要因素,寻求应用系统在芯片上的最大化解决;因此专用单片机的发展自然形成了SoC化趋势。随着微电子技术、IC设计、EDA工具的发展,基于SoC的单片机应用系统设计会有较大的发展。因此,对单片机的理解可以从单片微型计算机、单片微控制器延伸到单片机应用系统。单片机作为微型计算机的一个重要分支,应用面很广,发展很快。自单片机诞生至今,已发展为上百种系列的近千个机种。3.2 单片机的发展历程3.2.1 第一阶段(1976-1978):单片机的控索阶段 以Intel公司的MCS-48为代表。MCS-48的推出实在工控领域的控索,参与这一控索的公司还有Motorola、Zilog等,都取得

8、了满意的效果。这就是SCM的诞生时代,“单片机”一词即由此而来。3.2.2第二阶段(1978-1982):单片机的完善阶段Intel公司在MCS-48基础上推出了完善的、典型的单片机系列MCS-51。它在以下几个方面奠定了典型的通用总线型单片机体系结构。(1)完善的外部总线。MCS-51设置了经典的8位单片机的总线结构,包括8位数据总线、16位地址总线、控制总线及具有很多机通信功能的串行通信接口。(2)CPU外围功能单元的集中管理模式。(3)体现工控特性的位地址空间及位操作方式。(4)指令系统趋于丰富和完善,并且增加了许多突出控制功能的指令。3.2.3第三阶段(1982-1990):单片机向微

9、控制器发展的阶段 Intel公司推出的MCS-96系列单片机,将一些用于测控系统的模数转换器、程序运行监视器、脉宽调制器等纳入片中,体现了单片机的微控制器特征。随着MCS-51系列的广泛应用,许多电气厂商竞相使用80C51为内核,将许多测控系统中使用的电路技术、接口技术、多通道A/D转换部件、可靠性技术等应用到单片机中,增强了外围电路功能,强化了智能控制的特征。3.2.4第四阶段(1990-):微控制器的全面发展阶段 随着单片机在各个领域全面深入地发展和应用,出现了高速、大寻址范围、强运算能力的8位/16位/32位通用型单片机,以及小型廉价的专用型单片机。1.2 数字电子时钟的基本特点现在高精

10、度的计时工具大多数都使用了石英晶体振荡器,由于电子钟、石英钟、石英表都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调试,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时、分、秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。1.3 数字电子钟的应用1家用电器领域目前国内各种家用电器已普遍采用单片机控制取代传统的控制电路,如洗衣机、电冰箱、空调机、微波炉、电饭煲、电视机、录像机及其他视频音像设备的控制器。1.2办公自动化领域现代办公室中所使用的大量通信、信息产品多数都采用了单片机,如通用计算机系统中的

11、键盘、磁盘驱动器、打印机、绘图仪、复印机、电话、传真机及考勤机等。.1.3智能产品领域单片机微处理器与传统的机械产品相结合,使用传统机械产品结构简化、控制智能化,构成新一代的机电一体化的产品。例如传真打字机采用单片机,可以取代近千个机械器件;缝纫机采用单片机控制,可执行多功能自动操作、自动调速,控制缝纫花样的选择。51单片机还可以应用于智能仪表,用单片机微处理器改良原有的测量、控制仪表,能使仪表数字化、智能化、多功能化、综合化,而测量仪器中的误差修正、线性化等问题也可迎刃而解。数字钟的构成与工作原理数字钟实际上是一个对标准频率(1HZ)进行计数的计数电路,由于计数的起始时间不可能与标准时间一致

12、,故需要在电路上加一个校时电路,同时标准的1MHZ时间信号必须做到准确稳定,通常使用石英晶体振荡器电路构成数字钟。(1) 晶体振荡器电路晶体振荡器电路给数字钟提供一个频率稳定准确的12MHZ的方波信号,可保证数字钟的走时准确及稳定,不管是指针式的电子中还是数字显示的电子钟都使用了晶体振荡器电路。(2) 时间计数器电路时间计数器电路由分个位和分十位计数器,时各位和时十位计数器电路构成,分个位和分十位计数器为60进制计数器,时各位和时十位计数器为24位进制计数器。(3) 译码驱动器译码驱动器电路将计数器输出的8421BCD码转换为数码管需要的逻辑状态,并且为保证数码管正常工作提供足够的工作电流。(

13、4) 数码管数码管通常有发光二极管(LED)数码管和液晶(LCD)数码管,本设计提供的为LED数码管。数字钟的工作原理图如图1所示:时显示器时译码器时显示器时译码器分显示器分译码器分显示器分译码器振荡器89C51图1 数字钟的工作原理图第二章 选择与介绍单片机型号的选择 通过对多种单片机性能的分析,最终认为89C51是最理想的电子时钟开发芯片。89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的8

14、9C51是一种高效微控制器,而且它与MCS-51兼容,且具有4K字节可编程闪烁存储器和1000写/擦循环,数据保留时间为10年等特点,是最好的选择。89C51单片机介绍 VCC:电源。 GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程 序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚

15、写入1后,被内部上拉为高,可用作 输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻 拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存 储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器 的内容。P2

16、口在FLASH编程和校验时接收高八位地址信号和控制信号。 图2.1 89C51单片机 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(外部数据

17、存储器写选通)P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE 端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器 时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE

18、才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。EA/VPP:当/EA保持低电平时,则在此期间外部程序存储(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时, /EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。第三章 数字钟的硬件设计3.1 最小系统设计单片机的最小系统是由电源、复位、晶振、/EA=

19、1组成,下面介绍一下每一个组成部分。1.电源引脚 Vcc电源端GND接地端工作电压为5V,另有AT89LV51工作电压则是2.7-6V, 引脚功能一样。 2.外接晶体引脚图3-1 晶振连接的内部、外部方式图XTAL119XTAL218 XTAL1是片内振荡器的反相放大器输入端,XTAL2则是输出端,使用外部振荡器时,外部振荡信号应直接加到XTAL1,而XTAL2悬空。内部方式时,时钟发生器对振荡脉冲二分频,如晶振为12MHz,时钟频率就为6MHz。晶振的频率可以在1MHz-24MHz内选择。电容取30PF左右。系统的时钟电路设计是采用的内部方式,即利用芯片内部的振荡电路。AT89单片机内部有一

20、个用于构成振荡器的高增益反相放大器。引脚XTAL1和XTAL2分别是此放大器的输入端和输出端。这个放大器与作为反馈元件的片外晶体谐振器一起构成一个自激振荡器。外接晶体谐振器以及电容C1和C2构成并联谐振电路,接在放大器的反馈回路中。对外接电容的值虽然没有严格的要求,但电容的大小会影响震荡器频率的高低、震荡器的稳定性、起振的快速性和温度的稳定性。因此,此系统电路的晶体振荡器的值为12MHz,电容应尽可能的选择陶瓷电容,电容值约为22F。在焊接刷电路板时,晶体振荡器和电容应尽可能安装得与单片机芯片靠近,以减少寄生电容,更好地保证震荡器稳定和可靠地工作。3. 复位RST9在振荡器运行时,有两个机器周

21、期(24个振荡周期)以上的高电平出现在此引腿时,将使单片机复位,只要这个脚保持高电平,51芯片便循环复位。复位后P0P3口均置1引脚表现为高电平,程序计数器和特殊功能寄存器SFR全部清零。当复位脚由高电平变为低电平时,芯片为ROM的00H处开始运行程序。复位是由外部的复位电路来实现的。片内复位电路是复位引脚RST通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,它的输出在每个机器周期的S5P2,由复位电路采样一次。复位电路通常采用上电自动复位和按钮复位两种方式,此电路系统采用的是按钮复位电路。4.输入输出引脚(1) P0端口P0.0-P0.7 P0是一个8位漏极开路型双向I/O端口

22、,端口置1(对端口写1)时作高阻抗输入端。作为输出口时能驱动8个TTL。对内部Flash程序存储器编程时,接收指令字节;校验程序时输出指令字节,要求外接上拉电阻。在访问外部程序和外部数据存储器时,P0口是分时转换的地址(低8位)/数据总线,访问期间内部的上拉电阻起作用。(2) P1端口P1.0P1.7 P1是一个带有内部上拉电阻的8位双向I/0端口。输出时可驱动4个TTL。端口置1时,内部上拉电阻将端口拉到高电平,作输入用。对内部Flash程序存储器编程时,接收低8位地址信息。(3) P2端口P2.0P2.7 P2是一个带有内部上拉电阻的8位双向I/0端口。输出时可驱动4个TTL。端口置1时,

23、内部上拉电阻将端口拉到高电平,作输入用。对内部Flash程序存储器编程时,接收高8位地址和控制信息。在访问外部程序和16位外部数据存储器时,P2口送出高8位地址。而在访问8位地址的外部数据存储器时其引脚上的内容在此期间不会改变。(4) P3端口P3.0P3.7 P2是一个带有内部上拉电阻的8位双向I/0端口。输出时可驱动4个TTL。端口置1时,内部上拉电阻将端口拉到高电平,作输入用。对内部Flash程序存储器编程时,接控制信息。除此之外P3端口还用于一些专门功能,具体请看下表。P3引脚兼用功能P3.0串行通讯输入(RXD)P3.1串行通讯输出(TXD)P3.2外部中断0( INT0)P3.3外

24、部中断1(INT1)P3.4定时器0输入(T0)P3.5定时器1输入(T1)P3.6外部数据存储器写选通WRP3.7外部数据存储器写选通RD表3-1P3端口引脚兼用功能表3.2 LED显示电路显示器普遍地用于直观地显示数字系统的运行状态和工作数据,按照材料及产品工艺,单片机应用系统中常用的显示器有: 发光二极管LED显示器、液晶LCD显示器、CRT显示器等。LED显示器是现在最常用的显示器之一,如下图所示。图3-2 LED显示器的符号图发光二极管(LED)由特殊的半导体材料砷化镓、磷砷化镓等制成,可以单独使用,也可以组装成分段式或点阵式LED显示器件(半导体显示器)。分段式显示器(LED数码管

25、)由7条线段围成8字型,每一段包含一个发光二极管。外加正向电压时二极管导通,发出清晰的光。只要按规律控制各发光段亮、灭,就可以显示各种字形或符号。LED数码管有共阳、共阴之分。图是共阳式、共阴式LED数码管的原理图和符号.图3-3 共阳式、共阴式LED数码管的原理图和数码管的符号图显示电路显示模块需要实时显示当前的时间,即时、分、秒,因此需要6个数码管,另需两个数码管来显示横。采用动态显示方式显示时间,硬件连接如下图所示,时的十位和个位分别显示在第一个和第二个数码管,分的十位和个位分别显示在第四个和第五个数码管,秒的十位和个位分别显示在第七个和第八个数码管,其余数码管显示横线。LED显示器的显

26、示控制方式按驱动方式可分成静态显示方式和动态显示方式两种。对于多位LED显示器,通常都是采用动态扫描的方法进行显示,其硬件连接方式如下图所示。图3-4 数码管的硬件连接示意图数码管使用条件:a、段及小数点上加限流电阻 b、使用电压:段:根据发光颜色决定; 小数点:根据发光颜色决定c、使用电流:静态:总电流 80mA(每段 10mA);动态:平均电流 4-5mA 峰值电流 100mA数码管使用注意事项说明:()数码管表面不要用手触摸,不要用手去弄引角;()焊接温度:度;焊接时间:()表面有保护膜的产品,可以在使用前撕下来。3.3 键盘控制电路该设计需要校对时间,所以用三个按键来实现。按hour来

27、调节小时的时间,按 minute来调节分针的时间,按 sceond来调节秒的时间。下图是按键硬件连接图。图3-5 按键控制电路的硬件连接图当用手按下一个键时,如图3-6所示,往往按键在闭合位置和断开位置之间跳几下才稳定到闭合状态的情况;在释放一个键时,也回会出现类似的情况。这就是抖动。抖动的持续时间随键盘材料和操作员而异,不过通常总是不大于10ms。很容易想到,抖动问题不解决就会引起对闭合键的识别。用软件方法可以很容易地解决抖动问题,这就是通过延迟10ms来等待抖动消失,这之后,在读入键盘码。键按下前沿抖动后沿抖动闭合稳定图3-6 按键抖动信号波形第四章 数字钟的软件设计系统的软件设计也是工具

28、系统功能的设计。单片机软件的设计主要包括执行软件(完成各种实质性功能)的设计和监控软件的设计。单片机的软件设计通常要考虑以下几个方面的问题:(1)根据软件功能要求,将系统软件划分为若干个相对独立的部分,设计出合理的总体结构,使软件开发清晰、简洁和流程合理;(2)培养良好的编程风格,如考虑结构化程序设计、实行模块化、子程序化。既便于调试、链接,又便于移植和修改;(3)建立正确的数学模型,通过仿真提高系统的性能,并选取合适的参数;(4)绘制程序流程图;(5)合理分配系统资源;(6)为程序加入注释,提高可读性,实施软件工程;(7)注意软件的抗干扰设计,提高系统的可靠性。4.1 系统软件设计流程图 这

29、次的数字电子钟设计用到很多子程序,它们的流程图如下所示。开始启动定时器按键检测时间显示 主程序是先开始,然后启动定时器,定时器启动后在进行按键检测,检测完后,就可以显示时间。图4-1 主程序流程图按键处理是先检测秒按键是否按下,秒按键如果按下,秒就加1;如果没有按下,就检测分按键是否按下,分按键如果按下,分就加1;如果没有按下,就检测时按键是否按下,时按键如果按下,时就加1;如果没有按下,就把时间显示出来。 NYNYNYhour加1显示时间结束开始sceond按键按下?sceond加1minute按键按下?minute加1hour按键按下? 图4-2 按键处理流程图定时器中断时是先检测1秒是否

30、到,1秒如果到,秒单元就加1;如果没到,就检测1分钟是否到,1分钟如果到,分单元就加1;如果没到,就检测1小时是否到,1小时如果到,时单元就加1,如果没到,就显示时间。N24小时到?分单元清零,时单元加1NNNYY时单元清零时间显示中断返回开始一秒时间到?60秒时间到?60分钟到?秒单元加1秒单元清零,分单元加1YY图4-3 定时器中断流程图时间显示是先秒个位计算显示,然后是秒十位计算显示,再是分个位计算显示,再然后是分十位显示,再就是时个位计算显示,最后是时十位显示。时十位计算显示结束开始秒个位计算显示秒十位计算显示分个位计算显示分十位计算显示时个位计算显示 图4-4 时间显示流程图4.2

31、数字钟的原理图用PROTUES软件,根据要求画出数字电子钟的原理图如下所示。图4-5 数字钟的原理图 在此有必要介绍一下数字电子钟的工作原理。工作原理 : 数字电子钟是一个将“ 时”,“分”,“秒”显示于人的视觉器官的计时装置。它的计时周期为24小时,显示满刻度为23时59分59秒,另外还有校时功能。因此,一个基本的数字钟电路主要由显示器“时”,“分”,“秒”和单片机,还有校时电路组成。8个数码管的段选接到单片机的P0口,位选接到单片机的P2口。数码管按照数码管动态显示的工作原理工作,将标准秒信号送入“秒单元”,“秒单元”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分

32、单元”的时钟脉冲。“分单元”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时单元”。“时单元”采用24进制计时器,可实现对一天24小时的累计。显示电路将“时”、“分”、“秒”通过七段显示器显示出来。校时电路时用来对“时”、“分”、“秒”显示数字进行校对调整,校时电路时用来对“时”、“分”、“秒”显示数字进行校对调整,按一下second,秒单元就加1 ,按一下minute,分就加1,按一下hour,时就加1。4.3 中断子程序timer0 (void) interrupt 1 using 1 u+; TH0=(65536-50000)/256; TL0=(6553

33、6-50000)%256; 4.4延时程序void delay() unsigned int time,p; for(time=30;time0;time-) for(p=0;p10;p+); 4.5主程序和定时器中断子程序#includechar mod=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;char sceond,minute,hour,i,k,l,j,x,y;int u;sbit P1_0=P10;sbit P1_1=P11;sbit P1_2=P12;void main() TMOD=0x01; TH0=(65536-500

34、00)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1; do kongzhi(); xianshi(); while(1);在这里,我们有必要介绍一下单片机的中断系统,以利于我们的学习。中断技术在单片系统中有着十分重要的作用,它不仅可以提高单片机CPU的效率,也可以对突发事件处理。所谓中断就是当CPU正在执行程序A时,发生了另一个急需处理的事件B,这是CPU暂停当前执行的程序A,立即转去执行处理事件B的程序,处理完事件B后,再返回到程序A继续执行,这个过程被叫做中断。关于中断的概念有下列几个名词:(1)程序A称为主程序,(2)处理事件B的程序称为

35、中断服务程序,(3)主程序中转向中断服务程序的地方称为断点,(4)引起中断的原因即事件B称为中断源,(5)转去执行中断服务程序称为中断响应。关于中断的概念可以打个如下的比喻。领导(CPU)在自己的房间办公(执行主程序),下属(外设)有问题打电话来请示(中断源),领导停下正在进行的工作,通过电话给下属做指示(执行中断服务程序),指示完后,领导挂断电话,继续做自己的工作(返回主程序继续执行)。中断是一个过程,当中央处理器CPU在处理某件事情时,外部又发生了另一紧急事件,请求CPU暂停当前的工作而去迅速处理该紧急事件。处理结束后,再回到原来被中断的地方,继续原来的工作。引起中断的原因或发出中断请求的

36、来源,称为中断源。单片机一般允许有多个中断源,当几个中断源同时向CPU请求中断时,就存在CPU优先响应哪一个中断请求源的问题(优先级问题),一般根据中断源的轻重缓急排队,优先处理最紧急事件的中断请求,于是便规定每一个中断源都有一个中断优先级别,并且CPU总是响应级别最高的中断请求。当CPU正在处理一个中断源请求的时候,又发生了另一个优先级比它高的中断源请求,如果CPU能够暂时中止对原来中断处理程序的执行,转而去处理优先级更高的中断源请求,待处理完以后,再继续执行原来的低级中断处理程序,这样的过程称为中断嵌套。4.6 LED显示子程序void xianshi() if(u=20) u=0; sc

37、eond+; while(sceond=60) sceond=0; minute+; if(minute=60) minute=0; hour+ ; if(hour=24) hour=0; x=hour%10; y=hour/10; l=minute%10; j=minute/10; i=sceond%10; k=sceond/10; P2=0x7f; P0=modi; delay(); P2=0xbf; P0=modk; delay(); P2=0xdf; P0=0x40; delay(); P2=0xef; P0=modl; delay(); P2=0xf7; P0=modj; delay

38、(); P2=0xfb; P0=0x40; delay(); P2=0xfd; P0=modx; delay(); P2=0xfe; P0=mody; delay();4.7 按键控制子程序void kongzhi() if(P1_0=0) TR0=0; while(P1_0=0); while(1) if(P1_1=0) sceond+; if(sceond=60) sceond=0; while(P1_1=0); if(P1_2=0) sceond-; if(sceond0) sceond=0; while(P1_2=0); i=sceond%10; k=sceond/10; P2=0x7

39、f; P0=modi; delay(); P2=0xbf; P0=modk; delay(); if(P1_0=0) while(P1_0=0); while(1) if(P1_1=0) minute+;while(minute=60) minute=0; while(P1_1=0); if(P1_2=0) minute-; if(minute0) minute=0; while(P1_2=0); l=minute%10; j=minute/10; P2=0xef; P0=modl; delay(); P2=0xf7; P0=modj; delay(); if( P1_0=0) while(P1_0=0); while(1) if(P1_1=0) hour+; while(hour=24) hour=0; while(P1_1=0); if(P1_2=0) hour-; if(hour0) hour=0; while(P1_2=0); x=hour%10; y=hour/10; P2=0xfd; P0=modx; delay(); P2=0xfe; P0=mody; delay(); if(P1_0=0) while(P1_0=0); TR0=1;return; 第五章 系统仿真5.1 PROTUES软件介

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 期刊短文 > 互联网

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁