数字时钟的设计与仿真

合集下载

简易数字钟设计(已仿真)

简易数字钟设计(已仿真)

简易数字钟设计摘 要 本文针对简易数字钟的设计要求,提出了两种整体设计方案,在比较两个方案的优缺点后,选择了其中较优的一个方案,进行由上而下层次化的设计,先定义和规定各个模块的结构,再对模块内部进行详细设计。

详细设计的时候又根据可采用的芯片,分析各芯片是否适合本次设计,选择较合适的芯片进行设计,最后将设计好的模块组合调试,并最终在EWB 下仿真通过。

关键词 数字钟,EWB ,74LS160,总线,三态门,子电路一、引言:所谓数字钟,是指利用电子电路构成的计时器。

相对机械钟而言,数字钟能达到准确计时,并显示小时、分、秒,同时能对该钟进行调整。

在此基础上,还能够实现整点报时,定时报闹等功能。

设计过程采用系统设计的方法,先分析任务,得到系统要求,然后进行总体设计,划分子系统,然后进行详细设计,决定各个功能子系统中的内部电路,最后进行测试。

二、任务分析:能按时钟功能进行小时、分钟、秒计时,并显示时间及调整时间,能整点报时,定点报时,使用4个数码管,能切换显示。

总体设计本阶段的任务是根据任务要求进行模块划分,提出方案,并进行比较分析,最终找到较优的方案。

方案一、采用异步电路,数据选择器将时钟信号输给秒模块,秒模块的进位输给分模块,分模块进位输入给时模块,切换的时候使用2选1数据选择器进行切换,电路框图如下:该方案的优点是模块内部简单,基本不需要额外的电路,但缺点也很明显,该方案结构不清晰,模块间关系混乱,模块外还需使用较多门电路,不利于功能扩充,且使用了异步电路,计数在59的时候,高一级马上进位,故本次设计不采用此方案。

方案二、采用同步电路,总线结构时钟信号分别加到各个模块,各个模块功能相对独立,框图如下: 显示 切换秒钟分钟 小时 控制1Hz 脉冲信号闹钟该方案用总线结构,主要功能集中在模块内部,模块功能较为独立,模块间连线简单,易于扩展,本次设计采用此方案。

综上所述,本次设计采用方案二。

秒计数和分计数为60进制,时计数为24进制,为了简化设计,秒和分计数采用同一单元。

毕业设计(论文)-基于单片机多功能电子时钟的设计与仿真(含程序仿真)[管理资料]

毕业设计(论文)-基于单片机多功能电子时钟的设计与仿真(含程序仿真)[管理资料]

程序仿真等全套设计,联系153893706第1章绪论二十一世纪的今天,最具代表性的计时产品就是电子万年历,它是近代世界钟表业界的第三次革命。

第一次是摆和摆轮游丝的发明,相对稳定的机械振荡频率源使钟表的走时差从分级缩小到秒级,代表性的产品就是带有摆或摆轮游丝的机械钟或表。

第二次革命是石英晶体振荡器的应用,发明了走时精度更高的石英电子钟表,使钟表的走时月差从分级缩小到秒级。

第三次革命就是单片机数码计时技术的应用(电子万年历),使计时产品的走时日差从分级缩小到1/600万秒,从原有传统指针计时的方式发展为人们日常更为熟悉的夜光数字显示方式,直观明了,并增加了全自动日期、星期、温度以及其他日常附属信息的显示功能,它更符合消费者的生活需求!因此,电子万年历的出现带来了钟表计时业界跨跃性的进步……我国生产的电子万年历有很多种,总体上来说以研究多功能电子万年历为主,使万年历除了原有的显示时间,日期等基本功能外,还具有闹铃,报警等功能。

商家生产的电子万年历更从质量,价格,实用上考虑,不断的改进电子万年历的设计,使其更加的具有市场。

本设计为软件,硬件相结合的一组设计。

在软件设计过程中,应对硬件部分有相关了解,这样有助于对设计题目的更深了解,有助于软件设计。

基本的要了解一些主要器件的基本功能和作用。

除了采用集成化的时钟芯片外,还有采用MCU的方案,利用AT89系列单片微机制成万年历电路,采用软件和硬件结合的方法,控制LED数码管输出,分别用来显示年、月、日、时、分、秒,其最大特点是:硬件电路简单,安装方便易于实现,软件设计独特,可靠。

AT89C52是由ATMEL公司推出的一种小型单片机。

95年出现在中国市场。

其主要特点为采用Flash存贮器技术,降低了制造成本,其软件、硬件与MCS-51完全兼容,可以很快被中国广大用户接受。

本文介绍了基于AT89C52单片机设计的电子万年历。

选题背景及研究的目的与意义设计的目的电子钟已成为人们日常生活中必不可少的物品,广泛用于个人家庭以及车站码头、剧院、办公室等公共场所,给人们的生活、学习、工作、娱乐带来了极大的方便。

Multisim仿真—数字钟的设计

Multisim仿真—数字钟的设计

数字钟的设计一、设计任务数字钟设计二、设计条件基于Multisim 10 仿真软件的调试三、设计功能要求1、时间以12小时为一个周期;2、显示时、分、秒。

四、电路中允许使用的主要元器件555:时钟电路74LS161:计数器4511:数码管驱动7400:与非门7404:非门SEVEN_SEG_COM_K:共阴数码管五、提供的参考电路:1、时钟秒位的参考电路2、时、分、秒功能仿真参考电路说明:后期将为同学们提供在面包板上插接实际电路的机会,但实验室只能提供555、74LS161、4511、7400、7404、SEVEN_SEG_COM这些元器件,所以必须按上述元器件设计完整的时、分、秒电路。

3.1 时钟秒位的参考电路(10进制和6进制计数器及数码管显示)电路说明:先画以555芯片为中心的时钟电路部分,然后再画74LS161、4511、数码管为中心的显示电路部分。

①按照电路图选择放置元器件:点击中的放置电阻、电容和电感;点击放置电源和地。

②点击中的放置LM555CM时钟元件。

③点击中的放置共阴极数码管。

④点击中的放置计数器74LS161N、与非门7400N(一个芯片中含4个与非门资源)、非门7404N (一个芯片中含6个非门资源)。

⑤点击中的放置数码管驱动4511BD_5V。

⑥点击元器件的管脚按照电路图进行连线。

⑦点击仿真按钮进行仿真。

3.2 时、分、秒功能仿真参考电路电路说明:先画以555芯片为中心的时钟电路部分,然后再画秒位时钟电路、分位时钟电路、小时位时钟电路。

①按照电路图选择放置元器件:点击中的放置电阻、电容和电感;点击放置电源和地。

②点击中的放置LM555CM 时钟元件。

③点击中的放置共阴极数码管。

④点击中的放置计数器74LS161N、与非门7400N(一个芯片中含4个与非门资源)、非门7404N(一个芯片中含6个非门资源)。

⑤点击中的放置数码管驱动4511BD_5V。

⑥点击元器件的管脚按照电路图进行连线。

基于Proteus的数字电子钟的设计与仿真

基于Proteus的数字电子钟的设计与仿真

基于Proteus的数字电子钟的设计与仿真一、设计目的与要求 (1)二、设计内容与方案制定 (1)三、芯片简介 (1)1、AT89C52 (1)2、AT24C02 (2)四、设计步骤 (3)1、硬件电路设计 (3)1.1.硬件电路组成框图 (3)1.2.各单元电路及工作原理 (3)1.3.绘制原理图 (5)1.4.元件清单列表 (6)2、程序设计 (7)2.1程序流程 (7)2.2主程序 (9)2.2.源程序 (10)五、调试与仿真 (22)六、心得体会 (23)七、参考文献 (23)一、设计目的与要求设计目的:通过课程设计,培养学生运用已学知识解决实际问题的能力、查阅资料的能力、自学能力和独立分析问题、解决问题的能力和能通过独立思考。

设计要求:设计一个时、分可调的数字电子钟、断电后将数据保存,开启后时间将从断电后时间继续行走。

二、设计内容与方案制定具有校时功能,按键控制电路其中时键、分键六个键分别控制时、分时间的调整。

按下小时数实现对小时数加减,按下分钟数实现对分钟数进行加减,并设置有复位键,启始键。

以AT89C51单片机进行实现秒、分、时上的正常显示和进位,其中显示功能由单片机控制共阴极数码管来实现,数码管进行动态显示。

通过AT24C02分别写入时、分、秒数据在断电后实现保存,在下次通电后将数据读出保持为断电前数据。

三、芯片简介1、AT89C52AT89C52是一个低电压,高性能CMOS8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系2、AT24C02AT24C02支持I2C,总线数据传送协议I2C,总线协议规定任何将数据传件为接收器。

数据传送是由产生串行时钟和所有起始停止信号的主器件控制的。

主器件和从器件都可以作为发送器或接收器,但由主器件控制传送数据(发送或接收)的模式,由于A0、A1和A2可以组成000~111八种情况,即通过器件地址输入端A0、A1和A2可以实现将最多8个AT24C02器件连接到总线上,通过进行不同的配置进行选择器件。

简单的数字时钟(verilog设计)

简单的数字时钟(verilog设计)
Verilog作为一种硬件描述语言,可用于设计和实现数字系统,包括数字时钟。 通过Verilog设计数字时钟,可以加深对数字系统和Verilog语言的理解,并提高 设计能力。
设计目标与要求
设计一个简单的数字 时钟,能够显示时、 分、秒。
时钟应具有可靠性、 稳定性和可扩展性。
要求使用Verilog语 言实现,并能够在 FPGA或ASIC上实现。
设计思路及流程
• 设计思路:采用模块化设计方法,将数字时钟划分为不同的模 块,如计数器模块、显示模块等。每个模块负责实现特定的功 能,并通过接口与其他模块进行通信。
设计思路及流程
设计流程 1. 确定设计需求和目标。 2. 制定设计方案和计划。
设计思路及流程
3. 编写Verilog代码,实现各个模块的功能。 5. 根据测试结果进行调试和优化。
未来改进方向探讨
提高计时精度
通过改进算法或采用更高 性能的硬件平台,提高数
字时钟的计时精度。
降低资源占用
优化代码结构,减少不 必要的资源占用,提高 时钟系统的运行效率。
增加实用功能
拓展应用领域
考虑增加闹钟、定时器 等实用功能,使数字时 钟更加符合用户需求。
探索将数字时钟应用于 更多领域,如智能家居、
数据类型与运算符
Verilog中的数据类型包括
整型、实型、时间型、数组、结构体等。
Verilog中的运算符包括
算术运算符、关系运算符、逻辑运算符、位运算符等。
顺序语句与并行语句
Verilog中的顺序语句包括
赋值语句、条件语句、循环语句等,用于描述电路的时序行为。
Verilog中的并行语句包括
模块实例化、连续赋值语句、门级电路描述等,用于描述电路的并行行为。

数字钟系统电路的设计方案与仿真分析

数字钟系统电路的设计方案与仿真分析

数字钟系统电路的设计方案与仿真分析
在电子技术实验教学中,构建学生的电路设计理念,提高学生的电路设计能力,是教学的根本目的和核心内容。

数字钟电路的设计和仿真,涉及模拟电子技术、数字电子技术等多方面知识,能够体现实验者的理论功底和设计水平,是电子设计和仿真教学的典型案例。

文中采用了555 定时器电路、计数电路、译码电路、显示电路和时钟校正电路,来实现该电路。

1 系统设计方案
数字钟由振荡器、分频器、计时电路、译码显示电路等组成。

振荡器是数字钟的核心,提供一定频率的方波信号;分频器的作用是进行频率变换,产生频率为1 Hz 的秒信号,作为是整个系统的时基信号; 计时电路是将时基信号进行计数;译码显示电路的作用是显示时、分、秒时间;校正电路用来对时、分进行校对调整。

其总体结构图,如图1 所示。

2 子系统的实现
2.1 振荡器
本系统的振荡器采用由555 定时器与RC 组成的多谐振荡器来实现,如图2 所示即为产生1 kHz 时钟信号的电路图。

此多谐振荡器虽然产生的脉冲误差较大,但设计方案快捷、易于实现、受电源电压和温度变化的影响很小。

2.2 分频器
由于振荡器产生的频率高,要得到标准的秒信号,就需要对所得到的信号进行分频。

在此电路中,分频器的功能主要有两个:1)产生标准脉冲信号;2)提供电路工作需要的信号,比如扩展电路需要的信号。

通常实现分频器的电路是计数器电路,选择74LS160 十进制计数器来完成上述功能[5]。

如图3 所示,555 定时器产生1 kHz 的信号,经过3 次1/10 分频后得到1 Hz 的脉冲信号,为秒个位提供标准秒脉冲信号。

数字时钟课程设计报告

数字时钟课程设计报告

一.设计题目数字时钟仿真设计二.设计目的和要球1)目的掌握数字时钟的工作原理和设计方法,学会用Multisim10软件操作实验内容,掌握设计性试验的实验方法。

数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的应用。

数字钟从原理上讲是一种典型的数字电路,其中包括了组合逻辑电路和时序电路。

因此,我们此次设计数字钟就是为了了解数字钟的原理,从而学会制作数字钟。

而且通过数字钟的制作进一步的了解各种在制作中用到的中小规模集成电路的作用及实用方法。

且由于数字钟包括组合逻辑电路和时序电路。

通过它可以进一步学习和掌握各种组合逻辑电路与时序电路的原理和方法。

2)要求(1)设计一个具有时、分、秒的十进制数字显示的计时器。

(2)具有手动校时、校分的功能。

(3)通过开关能实现小时的十二进制和二十四进制转换。

(4)具有整点报时的功能,应该是每个整点完成相应点数的报时,如3点钟响3声。

三.设计原理1)总体方案设计数字时钟由振荡器、分频器、计数器、译码现实、报时等电路组成。

其中,振荡器和分频器组成标准信号发生器,直接决定计时系统的精度。

由不同进制的计数器、译码器和显示器组成计时系统。

将标准秒信号送入采用六十进制的“秒计数器”,每累计60s就发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。

“分计数器”也采用六十进制计数器,每累计60min,发出一个“时脉冲”信号,该信号将被送到“时计数器”。

“时计数器”采用二十四进制或十二进制计时器,可实现对一天24h 或12h 的累计。

译码显示电路将“时”、“分”、“秒”计数器的输出状态通过六位七段译码器显示器显示出来,可进行整点报时,计时出现误差时,可以用校时电路校时、校分。

数字时钟的原理框图如图1所示。

2)单元电路设计1.秒脉冲产生电路秒脉冲产生电路用一个1Hz 的秒脉冲时钟信号源代替。

基于STC89C52单片机时钟的设计与实现

基于STC89C52单片机时钟的设计与实现

基于STC89C52单片机时钟的设计与实现1. 本文概述本文主要介绍了基于STC89C52单片机和DS1302时钟芯片的电子时钟设计与实现。

该电子时钟系统具有年月日等基本时间显示功能,并集成了秒表计时处理、闹钟定时、蜂鸣器和温度显示等附加功能。

系统采用LCD1602作为液晶显示器件,通过单片机对时钟和温度等数据进行处理后传输至LCD进行显示。

用户可以通过按键对时间进行调节,同时,单片机还通过扩展外围接口实现了温度采集等功能。

本文的目标是提供一个功能丰富、易于操作的电子时钟系统,为学习和应用单片机技术提供一个实用的案例。

2. 系统设计要求在设计基于STC89C52单片机的时钟系统时,我们需要考虑以下几个关键的设计要求:时钟系统必须具备基本的时间显示功能,能够以小时、分钟和秒为单位准确显示当前时间。

系统还应支持设置闹钟功能,允许用户设定特定的时间点进行提醒。

系统需要保证长时间稳定运行,具备良好的抗干扰能力,确保在各种环境下都能准确计时。

还应具备一定的容错能力,即使在操作失误或外部干扰的情况下,也能保证系统的正常运行。

用户界面应简洁直观,便于用户快速理解和操作。

时钟的显示部分应清晰可见,即使在光线较暗的环境下也能保持良好的可视性。

同时,设置和调整时间的操作应简单易懂,方便用户进行日常使用。

在设计时钟系统时,应考虑到未来可能的功能扩展,如温度显示、日期显示等。

系统的设计应具有一定的灵活性和扩展性,以便在未来可以轻松添加新的功能模块。

鉴于时钟系统可能需要长时间运行,能耗是一个重要的考虑因素。

设计时应选择低功耗的元件,并优化电源管理策略,以延长电池寿命或减少能源消耗。

在满足上述所有要求的同时,还需要控制成本,确保产品的市场竞争力。

这可能涉及到对单片机的编程优化、选择性价比高的外围元件等措施。

通过满足上述设计要求,我们可以确保开发出一个功能完善、稳定可靠、用户友好、易于扩展、节能环保且成本效益高的STC89C52单片机时钟系统。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

湖北民族学院课程设计报告数字时钟设计与仿真课程:电子线路课程设计专业:电子信息科学与技术班级: 0312409学号: 031240910学生姓名:谢加龙指导教师:易金桥2014年 06月 21日信息工程学院课程设计任务书2014-06-21摘要基于单片机AT89c51设计而成的简易数字电子时钟,其主要功能皆由对单片机编程即由软件完成,外围硬件电路只包括报时电路、键盘输入电路和显示电路三个模块。

具有外围硬件电路简单、运行功能可靠的优点。

关键词:单片机时钟键盘输入显示目录1、系统设计要求 (1)1.1 基本功能 (1)1.2扩展功能 (1)2、硬件设计 (2)2.1系统设计方案选择 (2)2.2系统原理框图 (2)2.3各单元的功能描述 (2)2.4电路连接图 (2)2.5元器件清单列表 (2)2.6所用芯片的管脚图 (2)3、软件设计 (3)3.1主程序的流程图 (3)3.2键盘扫描程序流程图 (3)3.3发声程序流程图 (3)3.4总程序 (3)4、调试 (4)4.1仿真调试 (4)4.2硬件调试 (4)5、总结 (5)参考文献 (6)1、系统设计要求1.1 基本功能(1)、要求准确显示“时”、“分”、“秒”,24 小时制;(2)、具有整点报时功能,在每小时59 分51 秒、53 秒、55 秒、57 秒发出低音,59秒整发出高音;(3)、系统工作符合一般时钟要求。

1.2扩展功能:(1)、具有校时功能,用户可修改“时”、“分”,且互不影响;(2)、可切换12 小时制和24 小时制。

2、 硬件总体设计方案2.1系统设计方案选择本次设计时钟电路,最初的设想方案是用AT89C51单片机芯片控制外围电路,用6位共阴数码管显示时间,用上拉电阻来驱动数码管的显示,用按键来调时和实现12小时制和24小时制的转换,用喇叭进行整点报时,单片机编程用汇编语言。

但由于在编程过程中,汇编语言指令多、编程难,因此改为用C 语言编程。

在用C 语言编程来实现用按键转换12小时制和24小时制的时候遇到了困难,因此又把按键改为开关。

另外学校只有4位和2位及1位的共阳数码管,因此又把6位共阴数码管换掉,同时接受老师的建议,把数码管的驱动电路改为数码管的段选用74LS245来驱动,位选用74LS04驱动。

最后在领元件的时候老师说单片机也不能驱动喇叭,把喇叭换成蜂鸣器。

因此我们最后的方案是:使用AT89C51单片机芯片控制电路,单片机控制电路简单且省去了很多复杂的线路,使得电路简明易懂;使用键盘键上的按键来调整时钟的时、分以及键盘上的开关实现12小时制和24小时制的转换;用一蜂鸣器来进行整点报时;同时使用C 语言编程,使得编程变得更容易;用一个4位和一个2位共阳数码管来显示时间,且数码管的段选用74LS245来驱动,位选用74LS04驱动。

这样通过四个模块:键盘、单片机芯片、蜂鸣器、数码管显示即可满足设计要求。

2.2系统原理框图此电路包括以下四个部分:单片机,键盘,报时电路及显示电路。

设计原理框图如图3-1所示图3-1 设计原理框图2.3各单元的功能描述(1)对单片机进行编程,使主要功能由软件控制实现,从而简化硬件电路。

(2)单片机通过程序控制输出各种电脉冲信号来驱动数码管以及报时电路的正常工作。

(3)单片机通过对端口高低电平的扫描从而判断键盘的工作情况,键盘通过单片机输出来影响显示电路和报时电路的工作。

整个电路的工作流程为:单片机内部计数器持续计数,得到的数据通过程序的控制转化成时间,并通过对输出端口输出不同的高低电平来控制数码管和蜂鸣器的工作。

与此同时,单片机还在不停地扫描连接键盘的输入端口,通过得到输入端口的不同电平来判断键盘的工作情况,再通过程序的控制来影响数码管和蜂鸣器的工作。

2.4电路连接图设计的电路主要由四模块构成:单片机控制电路,显示电路、报时电路以及调时电路。

详细电路功能图如图3-2:23图3-2 详细电路功能图该电路的单片机复位采用上电复位,即给电路一通电,电路就从程序最初设置的状态开始工作。

为了方便检测报时,我们把时钟的初始值设为00点59分48秒,当电路一通电,数码管就显示此值,三秒后蜂鸣器开始发音报时,并按59 分51 秒、53 秒、55 秒、57 秒发出低音,59秒整发出高音的规律发音。

图中三个按键开关从上到下一次为小时加1、分钟加1按键和12/24转换开关,即按一下小时加1或分钟加1按键则小时或分钟自动加1,按下进制转换开关为12进制,断开进制转换开关为24进制.2.5元器件清单列表2.6所用芯片的管脚图4位共阳数码管引脚图74LS04管脚图74LS245管脚最后实物图3、软件设计流程及描述3.1主程序的流程图程序设计的总体思路是:首先在主程序里初始化单片机的计数器,使单片机计数器一直计数,然后给主程序设定一个死循环,在这个死循环里,主程序在不断地调用键盘扫描、显示和发音三个子程序,而时钟功能在子程序中设计完成。

主程序的流程图如图4-1所示。

图4-1 主程序流程图3.2键盘扫描程序流程图小时加1按键定义在单片机的P3^0端口,分钟加1按键定义为P3^1端口,12/24转换开关定义为P3^2端口。

单片机端口默认输出为高电平,当按一下小时(分钟)加1键时,延时10ms,此时单片机端口与地相连,呈低电平,单片机检测到该电平时,对小时(分钟)加1。

同理,按下12/24转换键,延时10ms,P3^2端口为低电平,单片机检测到该电平时,把时间转化为12小时制并通过显示电路显示出来。

其流程图如图4-2所示。

Y Y Y图4-2键盘扫描流程图3.3发声程序流程图蜂鸣器低电位端通过三极管连接到单片机的P3^3端口,高电位端接一5v电压。

单片机端口默认输出为高电平,当单片机检测到已符合报时条件时,给P3^3端口取反,使其变为低电位,蜂鸣器导通,根据程序中定义的不同频率而发出不同的高低音。

其流程如图4-3所示。

3.4总程序#include<reg51.h>sbit BUZ =P3^3;sbit HOURADD=P3^0;//小时加1sbit MITADD=P3^1;//分钟加1sbit change=P3^2;//进制转换unsigned int tmcnt;//定时器计数unsigned int h=0,m=59,s=50;//h为小时,m为分钟,s为秒钟unsigned char code seg7[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳数码管0-9码值unsigned char code disp[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};//位扫描unsigned char data disdata[6];void Delayms(int ms) //延时函数{while(ms){unsigned char i;for (i=0; i<120; i++);ms--;}}void display()//扫描显示{ unsigned char i;disdata[0]=h/10;//数据处理,小时高位disdata[1]=h%10;//小时低位disdata[2]=m/10;//分钟高位disdata[3]=m%10;//分钟低位disdata[4]=s/10;//秒钟高位disdata[5]=s%10;//秒钟低位for(i=0;i<6;i++)//循环显示{P1=0xff;P1=seg7[disdata[i]];P2=disp[i];Delayms(2);//显示延时}}void time0(void)interrupt 1 using 0 //时间计数函数{TH0=0xfc;//计数器高八位赋初值TL0=0x18;//计数器低八位赋初值if(++tmcnt==1000)//计数1000次1秒{tmcnt=0;s++;if(s==60){s=0;m++;if(m==60){m=0;h++;if(change==0&&h==12)//按下进制转换键为12进制{h=0;}if(change==1&&h==24)//未按下进制转换键为24进制{h=0;}}}}}void voice()//发声函数{if((m==59)&&(s==51))//判断时间符合低音条件{BUZ =~BUZ;Delayms(80);}if((m==59)&&(s==53))//判断时间符合低音条件{BUZ =~BUZ;Delayms(80);}if((m==59)&&(s==55))//判断时间符合低音条件{BUZ =~BUZ;Delayms(80);}if((m==59)&&(s==57))//判断时间符合低音条件{BUZ =~BUZ;Delayms(80);}if((m==59)&&(s==59))//判断时间符合高音条件{BUZ =~BUZ;Delayms(55);}}void keyscan()//键盘扫描{if(change==0)//判断是否按下进制转换键,{Delayms(10);if(change==0&&h>=12)//若h>12,则执行h-12,转换成12进制{ h=h-12;}}if(HOURADD==0)//判断是否按下小时加1键{Delayms(10);if(HOURADD==0){while(HOURADD==0);h++;if(h==24){h=0;}}}if(MITADD==0)//判断是否按下分钟加1键{Delayms(10);if(MITADD==0){while(MITADD==0);m++;if(m==60){m=0;}}}}main(){ unsigned int time();TMOD=0x01;//软件启动计数器、工作方式为方式1 EA=1;ET0=1;//允许定时计数器中断TR0=1;//启动计数while(1){ keyscan();//扫描键盘display();//显示voice();//发声}}4、调试4.1仿真调试4.1.1共阳数码管的显示的调试我们最开始用的数码管是共阴数码管,由于所领元件为共阳,于是将程序中的共阴段选码改为共阳段选码,编译后重新仿真。

但共阳数码管不显示,我们怀疑位选也需要改变,但是通过查阅大量资料,我们组员一致认为跟位选无关。

通过多次试验性的调试无果之后,我们给单片机重新加载了一次程序,怀着不报任何希望的心情再次调试,这次居然成功了。

从共阳数码管的显示的调试中,我们认识到:每次修改了程序之后要重新加载一次程序,否则单片机运行的仍然是未修改之前的程序。

相关文档
最新文档