单片机技术课程设计基于单片机的时钟电路设计.doc

上传人:文库蛋蛋多 文档编号:4147361 上传时间:2023-04-07 格式:DOC 页数:24 大小:551KB
返回 下载 相关 举报
单片机技术课程设计基于单片机的时钟电路设计.doc_第1页
第1页 / 共24页
单片机技术课程设计基于单片机的时钟电路设计.doc_第2页
第2页 / 共24页
单片机技术课程设计基于单片机的时钟电路设计.doc_第3页
第3页 / 共24页
单片机技术课程设计基于单片机的时钟电路设计.doc_第4页
第4页 / 共24页
单片机技术课程设计基于单片机的时钟电路设计.doc_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《单片机技术课程设计基于单片机的时钟电路设计.doc》由会员分享,可在线阅读,更多相关《单片机技术课程设计基于单片机的时钟电路设计.doc(24页珍藏版)》请在三一办公上搜索。

1、单片机技术课程设计说明书基于单片机的时钟电路设计专业电气工程及自动化学生姓名 班级学号指导教师完成日期2011年 6月 9 日 摘 要随着生活节奏的加快,人们时间观念的加强,时钟已经成为人们日常生活中不可或缺的一部分,而如何在时钟的基础上,根据人们生活的需要增加相应的功能以方便人们的生活,成为时钟设计方面的重点。单片机以其强大的功能,低廉的价格成为许多多功能电子产品的首选。本设计结合我所学的单片机原理及接口技术这门课程而拓展的电子方面的研究,在单片机时钟的基础上通过软件记时,实现时钟功能,同时通过按键开关来扩展功能,实现定时闹钟与秒表功能。C51语言作为高级语言C语言的移植,易于理解和操作,且

2、结构化较高,本设计即采用C51语言作为编程语言,流程比较清晰。本设计是以一片40引脚的单片机AT89C51为主体,结合16位定时器/计数器、I/O口扩展和LCD数码管共同设计完成电子数字钟(与MCS-51 兼容)。给出具体电路图对其做出详细的分析和说明。论文主要介绍了Protel 软件的仿真功能。并以数字电子钟设计为例,阐述如何应用该软件进行数字电路的设计与仿真。Proteus是深受广大电路设计者喜爱而成为家喻户晓的电路设计工具。它不但使绘制原理图、仿真等功能更加完备,而且它为用户提供功能强大、使用方便的电路仿真器。它可以对当前所画的电路原理图进行即时仿真,因此在电路的整个设计周期都可以仿真查

3、看和分析电路的性能指标,以便及时发现设计中所存在的问题并加以改正,从而更好的完成设计。关键词:AT89C51芯片 数码管 闹铃 设计与仿真 ABSTRACTWith the quickening pace of life, it enhanced sense of time, the clock has become an indispensable part of daily life. How the clock basis, according to peoples lives need to increase accordingly, function to facilitate pe

4、oples lives, become the focus of the clock design. Microcontroller with its powerful features, low price to become the first choice for many multi-functional electronic products. The design combines the science and application of the principle amount of SCM such courses to expand the e-research, bas

5、ed on the clock in the microcontroller software in mind, the realization of the clock function, and to extend the functionality through the key switch, alarm and stopwatch time to achieve function. C51 high-level language C language as the language of transplantation, easy to understand and operate,

6、 and the structure of the higher, the design of the C51 language as a programming language used, the process clearer.Keyword: electric oclock multifuntional AT89C51第1章 多功能数字时钟的功能1.1 设计背景及目的数字钟已经成为人们日常生活中必不可少的必需品,广泛应用于个人家庭以及办公室公共场所,给人们的生活、学习、工作、娱乐带来了极大地方便。由于数字集成电路技术的发展和采用了新进的石英技术,是数字钟具有走时准确、性能稳定、携带方便

7、等优点。它还用于计时、自动报时等各个领域。尽管目前市场上已有现成的数字集成电路芯片出售,价格便宜,使用也方便,但鉴于单片机的定时器功能也可以完成数字中电路的设计,因此进行数字钟的设计是必要的。在这里我们将以学过的比较零散的电路知识邮寄的、系统的结合起来用于实际,来培养我们的综合分析和设计电路,写程序、调试电路的能力。单片机具有体积小、功能可靠性高、价格低廉等一系列优点,不仅已成为工业测控领域普遍采用的智能化控制工具,而且已深入到人们的工作和生活的各个角落,有力地图动了个行业的技术改造和产品的更新换代,应用前景广阔。(1)在学习了数字电子技术和单片机原理及接口技术课程后,为了加深对理论知识的理解

8、,学习理论知识在实际中的运用,培养动手能力和解决实际问题的能力。(2)熟悉Ptoteus及Keil软件的调试和仿真。(3)通过实验提高对单片机的认识。(4)通过实验提高软件调试能力。(5)进一步熟悉和掌握单片机的结构及工作原理。(6)通过课程设计,掌握以单片机为核心的电路设计的基本方法和技术,了解电路参数的计算方法。(7)通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。(8)通过完成一个包括电路设计和程序开发的完整过程,了解开发一单片机应用系统的全过程,为今后从事相应打下基础。具体要求:(1)、实时显示秒、分、时、年等(可自动或手动设置显示)(2)、具有定时功能(3)、能调整时间

9、、日期(4)、能调整定时时间(5)、时钟走时误差一天少于1分钟课题研究的意义数字时钟是采用数字电路实现对时、分、秒。数字显示计时装置,广泛用于个人家庭、车站、码头办公室等公共场所,成为人们日常生活中不可缺少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动启闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电器的自动启用等,所有这些都是以钟表数字化为基础的。因此,研究数字时钟及扩大其运用,有着非常现实的意义。

10、通过89C51电子时钟的设计,可以对51单片机有了更加深刻的认识,对其各个引脚功能掌握的更为透彻。也再次认识到单片机的应用具有使用范围广的特点,对各个行业的技术改造和产品智能化的更新换代起着重要的推动作用。由于设计的电子时钟起定时,计时作用,所以在设计过程中,可以很好的了解其原理,掌握时钟芯片的结构和实现方法。在设计电子时钟的过程中,需要完成硬件设计和软件设计,所以需要设计电路硬件原理图。在绘制原理图过程中,再次对PROTUES软件进行了熟悉和复习,对软件中的各个文件编辑器进行了掌握,并且知道了在原理图设计和绘制时,要对元件有合理的布局和放置。另外,在导线的绘制和网络标号的放置时,也要符合设计

11、的要求。在PCB图设计过程中,复习了元件的封装步骤和由原理图生成网络表的过程,明确了PCB图设计和自动布线前的准备工作,这些对完成整个硬件电路设计过程有很大的帮助。在软件设计时,再次熟悉了汇编语言,了解了汇编语言程序设计步骤:(1) 建立数学模型(2) 确定算法(3) 制订程序流程图(4) 确定数据结构(5) 写出源程序(6) 上机调试程序另外,通过这次研究,在自己动手设计硬件原理图和软件编程的过程中,可以很好的了解到电子时钟的总体设计过程和功能的实现过程,自己着手硬件和软件的制作,一定程度上提高了自己的动手能力和解决问题的能力。这次课题研究,可以很好的把大学四年所学的知识得以应用,自己查阅资

12、料,在碰到问题时,想办法去解决,让自己在学习知识的同时,明白学以致用这个道理。1.2 数字电子钟简介数字电子钟是一个将“ 时”,“分”,“秒”显示于人的视觉器官的计时装置。它的计时周期为24小时,显示满刻度为23时59分59秒,另外应有校时功能和报时功能。因此,一个基本的数字钟电路主要由译码显示器、“时”,“分”,“秒”计数器、校时电路、报时电路和振荡器组成。主电路系统由秒信号发生器、“时、分、秒”计数器、译码器及显示器、校时电路、整点报时电路组成。秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,一般用石英晶体振荡器加分频器来实现。将标准秒信号送入“秒计数器”,“秒计数器”采用60

13、进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。“分计数器”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时计数器”。“时计数器”采用24进制计时器,可实现对一天24小时的累计。译码显示电路将“时”、“分”、“秒”计数器的输出状态用七段显示译码器译码,通过七段显示器显示出来。整点报时电路时根据计时系统的输出状态产生一脉冲信号,然后去触发一个音频发生器实现报时。校时电路时用来对“时”、“分”、“秒”显示数字进行校对调整。1.3 proteus简介 Proteus软件是英国Labcenter electronics公司出版的EDA

14、工具软件(该软件中国总代理为广州风标电子技术有限公司)。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。 Proteus功能特点P

15、roteus软件具有其它EDA工具软件(例:multisim)的功能。这些功能是:(1)原理布图 (2)PCB自动或人工布线 (3)SPICE电路仿真 革命性的特点 (1)互动的电路仿真 用户甚至可以实时采用诸如RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。 (2)仿真处理器及其外围电路 可以仿真51系列、AVR、PIC、ARM、等常用主流单片机。还可以直接在基于原理图的虚拟原型 上编程,再配合显示及输出,能看到运行后输入输出的效果。配合系统配置的虚拟逻辑分析仪、示波器等,Proteus建立了完备的电子设计开发环境。具有4大功能模块(1)智能原理图设计

16、(ISIS)(2)完善的电路仿真功能(Prospice)(3)独特的单片机协同仿真功能(VSM)(4)实用的PCB设计平台1.4 Protel99 SE的五个模块简介PCB设计(包含信号完整性分析)、自动布线器、原理图混合信号仿真、PLD设计。 以下介绍一些Protel99SE的部分最新功能:可生成30多种格式的电气连接网络表; 强大的全局编辑功能; 在原理图中选择一级器件,PCB中同样的器件也将被选中; 同时运行原理图和PCB,在打开的原理图和PCB图间允许双向交叉查找元器件、引脚、网络 既可以进行正向注释元器件标号(由原理图到PCB),也可以进行反向注释(由PCB到原理图),以保持电气原理

17、图和PCB在设计上的一致性; 满足国际化设计要求(包括国标标题栏输出,GB4728国标库); * 方便易用的数模混合仿真(兼容SPICE 3f5); 支持用CUPL语言和原理图设计PLD,生成标准的JED下载文件; * PCB可设计32个信号层,16个电源-地层和16个机加工层; 强大的“规则驱动”设计环境,符合在线的和批处理的设计规则检查; 智能覆铜功能,覆铀可以自动重铺; 提供大量的工业化标准电路板做为设计模版; 放置汉字功能; 可以输入和输出DXF、DWG格式文件,实现和AutoCAD等软件的数据交换; 智能封装导航(对于建立复杂的PGA、BGA封装很有用); 方便的打印预览功能,不用修

18、改PCB文件就可以直接控制打印结果; 独特的3D显示可以在制板之前看到装配事物的效果; 强大的CAM处理使您轻松实现输出光绘文件、材料清单、钻孔文件、贴片机文件、测试点报告等; 经过充分验证的传输线特性和仿真精确计算的算法,信号完整性分析直接从PCB启动; 反射和串扰仿真的波形显示结果与便利的测量工具相结合;第2章 系统硬件设计硬件电路: 该系统主要由时钟电路部分、中央处理单元、LCD显示部分组成,各组成部分如图所示。时钟电路中央处理单元显示部分主控芯片使用AT89C51单片机,AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C

19、2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。图2-1 数字钟电路原理图2.1 AT89C51结构与工作原理AT89C51是一个低功耗,高性能的CMOS 8位单片机,片内含4K字节可擦写存储器。AT89C51器件采用高密度、非易失性

20、存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,AT89C51的片内允许程序存储器通过传统编程器反复编程并行I/O口引脚的作用:P0口:P0口是一组8位漏极开路性双向I/O口,即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。P1口:P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可做输

21、入口。做输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。P2口:P2口是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动4个TTL逻辑门电路。在访问外部程序存储器或16位地址的外部数据存储器时,P2口送出高8位地址的外部数据存储器时,P2口线上的内容在整个访问期间不改变。P3口:P3是一组带有内部上拉电阻的8位双向I/O,P3口输出缓冲级可驱动4个TTL逻辑门电路,对P3口写入“1”时,他们被内部上拉电阻拉亮并可作为输入端口,做输入端时,被外部拉低的P3口将用上拉电阻输出电流。P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能。端口引脚 第二

22、功能 P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2INTO(外部中断0)P3.3INTI(外部中断1)P3.4T0(定时/计数器0外部输入)P3.5T1(定时/计数器1外部输入)P3.6WR(外部数据存储器写选通)P3.7RD(外部数据存储器读选通) 表2-1 P3口的功能 图2-2 单片机引脚2.2 晶振电路AT89C51中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成振荡器。如下图所示:外接石英晶体(或陶瓷谐振器)及电容C1、C2接在放大器的反馈回路中构成并

23、联振荡电路,对外接电容C1、C2虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程度及湿度稳定性,使用石英晶体和陶瓷谐振器要注意选择的大小。振荡器特性: XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平。 图2-3 晶体振荡电路2.3 复位电路复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。为可靠起见,

24、电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分合过程中引起的抖动而影响复位。RST:复位输入,当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。图2-4 复位电路2.4 按键及响铃功能本设计是基于MCS的时钟设计,用2个四位一体的共阴数码管做为显示器,它时实显示时间值;设计中有五个按键,其中K1为选择调整位置,K2为加控制键 K3为减控制键,K4为日期和时间的切换显示,K5为闹钟存储按键,按下该键时会存储好当前时间值,当到设计值时,蜂鸣器报警。这样的结果与设计要求完全相符,本设计成功。2.5 LCD显示功能LCD液晶显示器具有质量高、发光恒定、不会刷新亮点

25、、体积小、电流小字迹清晰以及功耗低的特点。由于CRT显示器是靠偏转线圈产生的电磁场来控制电子束的,而由于电子束在屏幕上又不可能绝对定位,所以CRT显示器往往会存在不同程度的几何失真,线性失真情况。而LCD由于其原理问题不会出现任何的几何失真,线性失真,这也是一大优点。与传统CRT相比液晶在环保方面也表现的表现,这是因为LCD内部不存在象CRT那样的高压元器件,所以其不至于出现由于高压导致的x射线超标的情况,所以其辐射指标普遍比CRT要低一些。(1)使用12MHz的晶振作为单片机的外部时钟输入,一个机器周期为1us(2)使用定时器0作为时钟计数器,当计数满8ms时定时器0产生中断,当中断满125

26、次时,调用时间模块进行加1操作。先对秒进行加1,若加1后等于60秒,则清除秒单元,同时向分进1,同理,对分、时进行同样操作。(3)P3.0选择键P3.1为加控制键P3.2减控制键P3.4为日期时间切换显示按键。利用发光二极管作为显示定时用,当定时时间到,从P3.3输出一低电平点亮发红光二极管。P3.3为发光二极管闪烁(4)年、月、日的判断。取年单元的数据除以4,若余数为零,则该年为闰年,再判断月单元是否为2月,若为2月则当月天数加1;若年单元数据除以4后余数不为零,则正常取表格的数据。第3章 系统软件设计软件设计是一个将需求转变为软件陈述的过程。这种陈述给一个对软件的全局观观点。系统通过逐步求

27、精使得设计陈述逐渐接近源代码。这里有两个基本步骤;第一步是初步设计,关注于如何将需求转换成数据和软件框架。第二步是 详细设计 ,关注于将框架逐步求精细化为具体的数据结构和软件的算法表达。发生中的设计行为、数据、算法和程序设计都需要由现代程序所需的界面设计,这一清晰的行为来结合起来。3.1 读写程序流程图本设计是基于MCS的时钟设计,用2个四位一体的共阴数码管做为显示器,它时实显示时间值;设计中有五个按键,其中K1为选择调整位置,K2为加控制键 K3为减控制键,K4为日期和时间的切换显示,K5为闹钟存储按键,按下该键时会存储好当前时间值,当到设计值时,蜂鸣器报警。这样的结果与设计要求完全相符,本

28、设计成功。3.2 编译软件介绍C语言是源于编写UNIX操作系统的一种语言,是一种结构化程序设计语言,产生的代码紧凑,可以深入到机器内部编程,具备若干汇编语言所具有的特点,又优于汇编语言。C程序本身并不依赖于机器的硬件系统,基本上不作修改就可以根据单片机的不同较快地移植过来。早在1985年就开始出现了8051单片机的C 语言编译器,将C语言代码编译成51 单片机的机器代码。常见的产品有American Automation,Archimedes,Avocet,Bso/Tasking, Franklin,Intermetrics,MCC,Dunfields等,它们各具特点,但用的比较多的还是Arc

29、himedes和Franklin。Franklin产生的代码紧凑,使用也方便;Archimedes 的性能完善,资料完善。51C程序结构与一般C语言程序结构并没有本质上的差别,也是只有一个主函数和若干函数组成。在51C的头文件中有其库函数的说明,可以通过include预处理指令将头文件包含在自己的文件中即可调用。每个函数的定义及调用规则基本上与一般的C一样,实际上51C程序的设计过程也就是一系列函数的定义过程,熟悉C语言程序设计的人很容易掌握。尽管51C与一般C程序设计方法基本相同,但毕竟是针对单片机及其硬件系统所进行的程序设计,与常规意义上的C编程有所区别。在进行程序设计时,必需注意以下几个

30、问题。存储区的定位及访问。必须了解编译器的数据类型以及与51单片机存储器结构的对应关系,编译器定义的任何数据类型必须以一定的存储类型方式定位在单片机的某一存储区中,否则没有任何实际意义。特殊功能寄存器的访问。对于片内特殊功能寄存器SFR 的访问,编译器都提供了专门的方法,这些方法与一般C语言是不兼容的,只适用于单片机C编程。并行接口的定义。51单片机有4个8位并行口,共32条I/O线,这是大家熟知的,这4 个口原则上都可以作为I/O使用,只是在需要外部总线扩展时,才将P0用作数据低地址总线, P2用作高地址总线。除此之外,还可以在片外扩展硬件I/O口。51单片机没有专用的I/O指令,所有口地址

31、与数据存储器地址时是统一编址的。在使用51C对单片机进行编程时,对这些口的访问也是通过关键字“sfr”定义的,可以在头文件中定义,也可以在程序的开始部分进行定义。例如:sfrP0=0x90,就定义了P0口的地址为90H。位变量的定义。51C除了支持一般C语言所具有的数据类型外,还支持“位”数据类型。它是通过关键字“Bit”来实现的。第4章 仿真及调试4.1 编译软件介绍Proteus是英国Labcenter Electro-nics公司开发的一款电路仿真软件,软件由两部分组成:一部分是智能原理图输入系统ISIS(Intelligent Schematic Input System虚拟系统模型V

32、SM(Virtual Model System);另一部分是高级布线及编辑软件ARES(Adv-Ancd Routing and Editing Softwave)也就是PCB。Proteus可以仿真模拟电路及数字电路,也可以仿真模拟数字混合电路,提供30多种元件库,超过8000种模拟、数字元器件。可以按照设计的要求选择不同生产厂家的元器件。此外,对于元器件库中没有的元件,设计者也可以通过软件自己创建。除拥有丰富的元器件外,Proteus还提供了各种虚拟仪器,如常用的电流表,电压表,示波器,计数/定时/频率计,SPI调试器等虚拟终端。支持图形化的分析功能等。Proteus特别适合对嵌入式系统进

33、行软硬件协同设计与仿真,其最大的特点是可以仿真8051,PIA,AVR,ARM等多种系列的处理器。Protues包含强大的调试工具,具有对寄存器和存储器、断点和单步模式IAR C-SPY,Keil、MPLAB等开发工具的源程序进行调试的功能;能够观察代码在仿真硬件上的实时运行效果;对显示,按钮,键盘等外设的交互可视化进行仿真。4.2 仿真过程一、绘制电路图1、运行Proteus的ISIS,进入仿真软件的主界面,主界面分为菜单栏,工具栏,模型显示窗口,模型选择区,元件列表区等。2、通过左侧的工具栏区的P(从库中选择元件)命令,在Pick Decices窗口中选择系统所需元器件,还可以选择元件的类

34、别,生产厂家等。本例所需主要元器件有:AT89C51芯片,ADC0808芯片,一个四位七段数码显示器,一个可变电阻,见表4-1。表4-1 元器件清单3、选择元器件后连接图,电路连接完成后,选中AT89C51单击鼠标左键,打开“Edit Component”对话窗口如图3所示,可以直接在“Clock Frequency”后进行频率设定,设定单片机的时钟频率为12MHz。在“Program File”栏中选择已经生成的data.hex文件,把在Keil编写的程序导入Proteus,然后单击“OK”按钮保存设计。至此,就可以进行单片机的仿真二、Proteus仿真结果单片机的仿真结果图如图4-2,模拟

35、信号经A/D转换后,结果送入单片机,再在数码管上显示;通过调节可调电阻的阻值,可以得到不同的显示结果。仿真结果表明,系统达到了预先的设计要求。在仿真的过程中每个管脚旁边会出现一个小方块,红色的方快表示高电平,蓝色的表示低电平。 通过方快颜色的变化可以很方便地知道每个管脚电平的变化,从而能对系统的运行有更直观的了解,这对程序的调试有很大的帮助。 图4-1仿真图4.3 调试方法电路仿真框中的暂停按钮可使电路从仿真状态切换到调试状态。在默认设置下系统会弹出两个窗口,如图4-3所示。一个是原程序调试窗口,另一个是寄存器窗口,另外,一些调试窗口可以通过DEBUG菜单选出显示。其中使用者可以直接在Watc

36、h Window中添加自己比较关心的变量进行实时监测。程序执行到某处,在该行程序的最多边会有一个红色的箭头出现,这行程序处于高亮状态。图4-2源程序调试窗口在源程序调试窗口用鼠标点选某行,然后按F9就可以设置断点,然后按F12使程序运行。从dubug菜单中,选择“8086 Registers”,可以从打开的寄存器串口中看到执行到断点处的寄存器的值,如图4-4所示。图4-3寄存器窗口在Debug菜单下有一系列的调试键,但是,多数时候我们用F11来单步运行程序。现在单击F11并注意左边的红色箭头下移到下一条指令,我们通过观察寄存器窗口来观察寄存器的变化,以校验指令的运行。五、程序如下:名称:功能完

37、备的数字钟共有6种工作模式:正常计时、按键调时、按键调分、按键调秒、闹钟调时、 闹钟调秒,按设置键切换工作模式。#include reg51.h#define uchar unsigned char#define uint unsigned int#define true 1#define faluse 1sbit set_key = P30;sbit up_key = P31;sbit down_key = P32;sbit sign = P33;sbit select_key= P34;sbit set_ring_key = P35;uint sec;uint min=23;uint ho

38、ur=12;uint day=10;uint month=10;uint yearl=7;uint yearh=20;uint tcnt;uint cnt=0;uint cursor=0;uint sjsz=0;uchar a=0xff;uchar code Seg=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;void delay(uint t) uint i; while(t-) for (i=0;i0;i-) for(j=248;j0;j-);void display(uchar L1,uchar L2,uchar L3,uchar

39、L4,uchar L5,uchar L6,uchar L7,uchar L8,uchar L9,uchar L10,uchar L11,uchar L12,uchar L13,uchar L14)if(cnt=1) if(cursor=6)P2=0x7F|a;P0=L1;delay(1);elseP2=0x7F;P0=L1;delay(1); /yearh if(cursor=6)P2=0xBF|a;P0=L2;delay(1);elseP2=0xBF;P0=L2;delay(1); /yearh if(cursor=6)P2=0xDF|a;P0=L3;delay(1);elseP2=0xDF

40、;P0=L3;delay(1); /yearl if(cursor=6)P2=0xEF|a;P0=L4;delay(1);elseP2=0xEF;P0=L4;delay(1); /yearl if(cursor=5)P2=0xF7|a;P0=L5;delay(1);elseP2=0xF7;P0=L5;delay(1); /month if(cursor=5)P2=0xFB|a;P0=L6;delay(1);elseP2=0xFB;P0=L6;delay(1); /month if(cursor=4)P2=0xFD|a;P0=L7;delay(1);elseP2=0xFD;P0=L7;delay

41、(1); /day if(cursor=4)P2=0xFE|a;P0=L8;delay(1);elseP2=0xFE;P0=L8;delay(1); /day P2=0xFF;else if(cursor=3)P2=0x7F|a;P0=L9;delay(1);elseP2=0x7F;P0=L9;delay(1); /hour if(cursor=3)P2=0xBF|a;P0=L10;delay(1);elseP2=0xBF;P0=L10;delay(1); /hour if(cnt!=1)P2=0xDF;P0=0X40;delay(1); if(cursor=2)P2=0xEF|a;P0=L1

42、1;delay(1);elseP2=0xEF;P0=L11;delay(1); /min if(cursor=2)P2=0xF7|a;P0=L12;delay(1);elseP2=0xF7;P0=L12;delay(1); /min if(cnt!=1)P2=0xFB;P0=0X40;delay(1); if(cursor=1)P2=0xFD|a;P0=L13;delay(1);elseP2=0xFD;P0=L13;delay(1); /sec if(cursor=1)P2=0xFE|a;P0=L14;delay(1);elseP2=0xFE;P0=L14;delay(1); /sec P1=

43、0xFF;main() TMOD=0x02; /设置模式为定时器T0的模式2 断的产生中断去执行中断函数本次定时时间为64ms TH0=0x06; /设置计数器初值,靠TH0存储重装的计数值X0=256-250=6 TL0=0x06; TR0=1; /启动T0 ET0=1; /开启定时器T0中断允许 EA=1; /开启中断总控制 while(1) if(set_key=0) Kdelay(); if(set_key=0) cursor+; if(cursor=7)cursor=0; /在选择到调整年时又返回秒设置,当CURSOR=7时不选中 if(up_key=0) Kdelay(); if(up_key=0) /加部分 if(cursor=1)sec+;if(sec=60)sec=0; if(cursor=2)min+;if(min=60)min=0; if(cursor=3)hour+;if(hour=24)hour=0; if(cursor=4)day+;if(day=31)day=1; if(cursor=5)month+;if(month=13)month=1; if(cursor=6)yearl+;if(yearl=100)yearl=0; if(cursor=7)yearh+;if(yearh=30)yearh=20; if(down_key=0)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号