单片机 电子时钟课程设计报告
电子时钟单片机课程设计报告

单片机课程设计报告题目电子时钟专业班级学号学生姓名指导教师学院名称电子信息工程学院2014年 6月10日目录一、课程设计教学目标 (2)二、设计目的 (2)三、设计任务及要求 (2)四、程序框图 (3)1.计时模块 (3)2.显示模块 (3)3.按键判断及处理程序 (4)4.音乐响铃模块 (5)5.主函数流程图 (6)五、程序清单 (7)六、感想体会 (16)一、课程设计教学目标通过电子时钟等单片机技术课程十个题目的设计,使学生学会应用单片机技术的基本知识和基本技能,初步了解形成解决实际问题的能力及实际动手的能力。
能正确使用实验开发平台或仿真器,会观察实验现象、记录有关数据,并能通过分析得出正确结论。
学会阅读、分析或设计简单的单片机应用系统线路图及设备的线路方框图。
掌握阅读和编写简单的汇编程序或 C51 语言程序。
思考利用单片机系统的开发、研制过程,初步具备设计和调试单片机应用系统的能力;并逐步培养学生的辩证思维能力,提高学生的全面素质。
二、设计目的通过电子时钟综合设计,使学生学会利用 8051 定时器时间计时处理功能,了解按键扫描及控制 LED 数码管显示原理,掌握单片机和按键以及 LED 数码管硬件电路设计及控制程序的设计方法。
思考按键消除抖动、LED 动态显示与静态显示的特点,从而提高学生解决实际问题的能力。
三、设计任务及要求利用实验平台上 4 个 LED 数码管,设计带有闹铃功能的数字时钟,要求:1.在 4 位数码管上显示当前时间。
显示格式“时时分分”2.由 LED 闪动做秒显示。
3.利用按键可对时间及闹玲进行设置,并可显示闹玲时间。
当闹玲时间到蜂鸣器发出声响,按停止键使可使闹玲声停止。
四、程序框图1.计时模块利用单片机定时器0完成计时功能。
定时器0计时中断程序每隔5ms中断一次并当作一个计数,每中断一次计数加1,当计数200次时,则表示1s到了,秒变量加1。
当秒变量达到60时,秒变量清零同时分变量加1。
(2023)单片机电子时钟课程设计报告2(一)

(2023)单片机电子时钟课程设计报告2(一)(2023)单片机电子时钟课程设计报告2项目简介本项目是一款基于单片机的电子时钟,具有时间显示、闹钟、定时等功能。
主要硬件为STC89C52单片机和LCD12864液晶显示屏。
硬件设计•CPU:STC89C52单片机•显示屏:LCD12864液晶显示屏•晶振:11.0592MHZ•动态RAM:24C02 EEPROM•按键:4个,分别为模式切换、时间调整、闹钟调整、确定键•电源:220V AC/9V DC电源适配器软件设计主要功能模块•时间显示:采用DS1302时钟芯片定时,单片机通过SPI通讯读取当前时间,并在液晶屏上显示。
•闹钟:通过按键调整,设置闹钟时间,并在设定时间响铃。
•定时:通过按键调整,设置定时时间,在设定时间完成特定操作(如开关灯、控制电器等)。
软件工具•Keil uVision5:C语言编程软件•Proteus 8:电路仿真软件实现效果经过测试,本项目能够准确地显示时间,并能够响应用户的设定,完成指定的功能要求。
同时,通过调整代码和电路连接方式,还可以实现更多功能的扩展,如调整亮度、自定义显示内容等。
总结本项目完成了基于单片机的电子时钟设计,实现了时间显示、闹钟、定时等功能,并且实现效果稳定可靠。
在项目中,我们不仅掌握了单片机的基本原理和编程技能,还提高了对电路设计和仿真的操作能力,是一次非常有益的学习和实践。
改进方向在项目完善过程中,可以考虑以下方向进行改进:•加入天气显示功能,通过网络或传感器获取当地天气信息,与时间一起显示。
•优化UI界面,考虑加入图像、背光等元素,提升用户体验。
•采用更高性能的单片机,提升系统稳定性和响应速度。
总体评价本项目难度适中,能够较全面地考察学生在单片机原理、编程能力和电路设计等方面的知识掌握程度,是一次有益的实践。
同时,项目具有一定的功能性和实用性,能够满足用户的基本需求。
因此,本项目是一次成功的课程设计。
单片机课程设计报告单片机的电子钟设计

单片机课程设计报告---单片机的电子钟设计单片机课程设计报告---单片机的电子钟设计一、设计简介本课程设计是以单片机为核心,设计一个具有显示时间和闹钟功能的电子钟。
电子钟是人们日常生活中必备的计时工具,其精度和稳定性直接影响到人们的时间安排和生活质量。
因此,本设计的目的是通过学习和实践,掌握单片机的应用和电子钟的设计方法,提高我们的实践能力和理论知识水平。
二、硬件设计1.单片机选择本设计选用AT89C51单片机作为主控制器。
AT89C51是一种低功耗、高性能的8位单片机,具有丰富的I/O口和片内资源,适合用于各种嵌入式系统开发。
2.显示模块显示模块采用LED数码管,用于显示时间、日期和闹钟状态。
为了方便调试和编程,我们选用4位一体式数码管。
3.按键模块按键模块包括功能键和调整键,用于设置时间、日期和闹钟。
我们选用4个独立式按键,分别实现上调、下调、设置和闹钟功能。
4.蜂鸣器模块蜂鸣器模块用于发出闹钟声音。
我们选用一款常见的无源蜂鸣器,通过单片机的一个IO口控制其频率,实现声音提示功能。
三、软件设计1.时钟芯片驱动本设计选用DS1302时钟芯片,用于提供实时时间和日期的信息。
DS1302与单片机通过I2C协议进行通信,需要编写相应的驱动程序。
驱动程序包括时钟芯片的初始化、数据读写和中断处理等。
2.显示驱动显示驱动程序负责控制数码管的显示。
驱动程序包括延时函数、位选函数和段选函数等。
通过调用这些函数,我们可以实现时间、日期和闹钟状态的动态显示。
3.按键驱动按键驱动程序负责识别用户的按键操作。
驱动程序通过检测独立式按键的状态变化,识别出不同的按键操作,并执行相应的功能。
例如,当用户按下上调键时,驱动程序将调用时钟芯片的读秒函数,并将时间的小时数加1。
4.蜂鸣器驱动蜂鸣器驱动程序负责控制蜂鸣器的声音频率。
驱动程序通过设置单片机的定时器寄存器,产生一定频率的方波信号,驱动蜂鸣器发声。
为了实现不同的声音效果,我们可以通过改变方波信号的频率和持续时间来实现。
单片机电子时钟课程设计设计报告

单片机电子时钟设计一、作品功能介绍该作品是个性化电子钟设计,技术上主要用单片机(AT89S52)主控,6位LED数码显示,分别显示“小时:分钟:秒”。
该作品主要用于24小时计时显示,能整时报时,能作为秒表使用,能定时闹铃1分钟。
功能介绍:(1)上电以后自动进入计时状态,起始于00:00:00。
(2)设计键盘调整时间,完成时间设计,并设置闹钟。
(3)定时时间为1/100秒,可采用定时器实现。
(4)采用LED数码管显示,时、分,秒采用数字显示。
(5)采用24小时制,具有方便的时间调校功能。
(6)具有时钟和秒表的切换功能。
使用方法:开机后时钟在00:00:00起开始计时。
(1)长按P3.2进入调分状态:分单元闪烁,按P3.2加1,按P3.3减1.再长按P3.2进入时调整状态,时单元闪烁,加减调整同调分.按长按退出调整状态。
(2)(2)按P3.3进入设定闹时状态: 12:00: ,可进行分设定,按P3.4分加1,再按P3.2为时调整,按P3.4时加1,按P3.3调闹钟结束.在闹铃时可按P3.2停闹,不按闹铃1分钟。
(3)按下P3.4进入秒表状态:再按P3.4秒表又启动,按P3.4暂停,再按P3.4秒表清零,按P3.4退出秒表回到时钟状态。
二、电路原理图如原理图所示,硬件系统主要由单片机最小应用系统、LED数码管显示模块、电源模块、晶振模块、按键模块等组成。
电子时钟原理图各个模块设计1.单片机系统 AT89S52 AT89S52概述:是一款非常适合单片机初学者学习的单片机,它完全兼容传统的8051,8031的指令系统,他的运行速度要比8051快最高支持达33MHz的晶体震荡器,在此系统中使用12MHz的晶振。
AT89S52具有以下标准功能: 8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
单片机多功能电子数字钟课程设计报告

多功能电子数字钟设计数字钟在日常生活中最常见, 应用也最广泛。
本文主要就是设计一款数字钟, 以89C52单片机为核心, 配备液晶显示模块、时钟芯片、等功能模块。
数字钟采用24小时制方式显示时间, 定时信息以及年月日显示等功能。
文章的核心主要从硬件设计和软件编程两个大的方面。
硬件电路设计主要包括中央处理单元电路、时钟电路、人机接口电路、信号处理电路、执行电路等几部分组成。
软件用C语言来实现, 主要包括主程序、键盘扫描子程序、时间设置子程序等软件模块。
关键词单片机液晶显示器模块数字钟一硬件电路设计及描述;1.MCS-51单片机单片机是在一块硅片上集成了各种部件的微型计算机。
这些部件包括中央处理器CPU、数据存储器RAM、程序存储器ROM、定时器/计数器和多种I/O接口电路。
8051单片机的结构特点有以下几点: 8位CPU;片内振荡器及时钟电路; 32根I/O线;外部存储器ROM和RAM;寻址范围各64KB;两个16位的定时器/计数器; 5个中断源, 2个中断优先级;全双工串行口。
定时器/计数器8051内部有两个16位可编程定时器/计数器, 记为T0和T1。
16位是指他们都是由16个触发器构成, 故最大计数模值为2 -1。
可编程是指他们的工作方式由指令来设定, 或者当计数器来用, 或者当定时起来用, 并且计数(定时)的范围也可以由指令来设置。
这种控制功能是通过定时器方式控制寄存器TMOD来完成的。
在定时工作时, 时钟由单片机内部提供, 即系统时钟经过12分频后作为定时器的时钟。
技术工作时, 时钟脉冲由TO和T1输入。
中断系统8051的中断系统允许接受五个独立的中断源, 即两个外部中断申请, 两个定时器/计数器中断以及一个串行口中断。
外部中断申请通过INTO和INT1(即P3.2和P3.3)输入, 输入方式可以使电平触发(低电平有效), 也可以使边沿触发(下降沿有效)。
2.8051的芯片引脚如图1-2所示VCC: 供电电压。
单片机电子时钟课程设计实验报告(1)

单片机电子时钟课程设计实验报告(1)单片机电子时钟课程设计实验报告一、实验内容本次实验的主要内容是使用单片机设计一个电子时钟,通过编程控制单片机,实现时钟的显示、报时、闹钟等功能。
二、实验步骤1.硬件设计根据实验要求,搭建电子时钟的硬件电路,包括单片机、时钟模块、显示模块、按键模块等。
2.软件设计通过C语言编写单片机程序,用于实现时钟功能。
3.程序实现(1)时钟显示功能通过读取时钟模块的时间信息,在显示模块上显示当前时间。
(2)报时功能设置定时器,在每个整点时,通过发出对应的蜂鸣声,提示时间到达整点。
(3)闹钟功能设置闹钟时间和闹铃时间,在闹钟时间到达时,发出提示蜂鸣,并在屏幕上显示“闹钟时间到了”。
(4)时间设置功能通过按键模块实现时间的设置,包括设置小时数、分钟数、秒数等。
(5)年月日设置功能通过按键模块实现年月日的设置,包括设置年份、月份、日期等。
三、实验结果经过调试,电子时钟的各项功能都能够正常实现。
在运行过程中,时钟能够准确、稳定地显示当前时间,并在整点时提示时间到达整点。
在设定的闹铃时间到达时,能够发出提示蜂鸣,并在屏幕上显示“闹钟时间到了”。
同时,在需要设置时间和年月日信息时,也能够通过按键进行相应的设置操作。
四、实验感悟通过本次实验,我深刻体会到了单片机在电子设备中的广泛应用以及C 语言在程序设计中的重要性。
通过实验,我不仅掌握了单片机的硬件设计与编程技术,还学会了在设计电子设备时,应重视系统的稳定性与可靠性,并善于寻找调试过程中的问题并解决。
在今后的学习和工作中,我将继续加强对单片机及其应用的学习与掌握,努力提升自己的实践能力,为未来的科研与工作做好充分准备。
单片机电子时钟课程设计报告

单片机电子时钟课程设计报告一、设计目的。
本课程设计旨在通过单片机技术的应用,设计并制作一个简单的电子时钟。
通过这一设计,学生将能够掌握单片机的基本原理和应用,培养学生的动手能力和创新意识,提高学生的实际操作能力。
二、设计原理。
本电子时钟采用单片机作为控制核心,通过晶振产生的时钟信号来实现时间的计时和显示。
利用数码管来显示小时和分钟,通过按键来调整时间。
同时,通过蜂鸣器发出报时信号,实现基本的闹钟功能。
三、设计方案。
1. 硬件设计。
(1)单片机选择,本设计选用常见的51单片机作为控制核心,具有成本低、易于编程的特点。
(2)时钟电路,采用晶振作为时钟信号源,通过单片机的定时器来实现时间的计时。
(3)显示模块,采用数码管来显示小时和分钟,通过数码管的扫描显示来实现时间的动态显示。
(4)按键输入,设计按键来调整时间,包括调整小时和分钟。
(5)报时功能,通过蜂鸣器来实现基本的报时功能,可以设置闹钟时间。
2. 软件设计。
(1)时钟控制,通过单片机的定时器来实现时间的计时和更新。
(2)显示控制,设计数码管的扫描显示程序,实现时间的动态显示。
(3)按键处理,设计按键扫描程序,实现对时间的调整。
(4)报时功能,设计蜂鸣器的报时程序,实现基本的闹钟功能。
四、设计实现。
1. 硬件实现。
根据上述设计方案,完成了电子时钟的硬件连接和布线,保证各个模块之间的正常通讯和工作。
2. 软件实现。
编写了单片机的程序,实现了时钟的计时、显示和控制功能,保证了电子时钟的正常运行。
五、实验结果。
经过调试,电子时钟能够准确显示当前的时间,并能够通过按键调整时间和设置闹钟功能,报时功能也能够正常工作。
六、总结与展望。
通过本课程设计,学生掌握了单片机的基本原理和应用,培养了动手能力和创新意识。
在今后的学习和工作中,学生将能够更好地应用单片机技术,设计和制作更加复杂的电子产品。
同时,也为学生今后的科研和创新工作奠定了良好的基础。
单片机电子时钟设计报告

电源模块的设计与实现
电源模块的选择
根据设计需求和预算,选择合适的电源模块。常用的电源模块包括线性电源和开 关电源。
电源管理的实现
为了延长电源使用寿命和确保时钟的准确性,需要设计合理的电源管理策略。这 可能包括电源开关控制、电压调节等。
03
单片机电子时钟硬件设计
单片机主控芯片的选择与连接
单片机主控芯片
时钟信号的产生
单片机内部通常有一个振荡器,用于 产生原始时钟信号。常用的振荡器类 型包括晶体振荡器和RC振荡器。
时钟信号的控制
为了确保时钟信号的稳定性和准确性 ,单片机内部通常包含一个时钟管理 器,用于对原始时钟信号进行分频、 倍频或校准。
显示模块的设计与实现
显示模块的选择
常用的显示模块包括LED数码管、 LCD液晶显示屏等。选择哪种显示模 块取决于设计需求和预算。
201 4
05
单片机电子时钟测试与验证
测试环境与测试工具的准备
测试环境
为确保单片机电子时钟的稳定运行,需搭建一个适宜的测试环境,包括电源、单片机开 发板、显示屏等必要设备。
测试工具
选用适当的测试工具,如万用表、示波器、逻辑分析仪等,用于检测和调试单片机电子 时钟的各项功能。
测试方案的设计与实施
选择一款适合的微控制器,如STM32F103C8T6,具有足够 的IO口和定时器资源,能够满足电子时钟的控制需求。
连接方式
将单片机主控芯片的电源、地线、复位电路等基本配置与电 源模块连接,同时将IO口与显示模块、数据存储模块等外围 设备连接。
时钟芯片的选择与连接
时钟芯片
选择一款高精度的实时时钟芯片,如DS1302,能够提供稳定的计时基准。
04
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微机原理与接口技术课程设计题目时钟设计学院信息科学与工程学院专业班级自动化0804学号0909081523姓名詹强指导教师陈学,徐德刚目录内容提要 (3)关键词 (3)引言 (3)一、设计要求 (3)二、数字时钟的基本原理 (4)三、硬件电路设计 (4)四、数字电路软件设计 (5)五、软件调试 (6)六、结语 (6)七、程序附录 (9)单片机电子时钟设计【内容摘要】单片机技术是一门应用性很强的专业课,其理论与实践技能是从事机电类专业技术工作的人员所不可少的。
本次程设计是选择AT89C52为核心控制元件,设计了一个日常生活中用到的电子时钟系统。
当功能按键S1按下,时钟运行或停止。
当功能按键S2按下,时钟显示转换时,分,秒。
经过实践证明,本系统运行稳定,具有一定的实用价值。
【关键词】AT89C52 定时器1 定时器0 按键SW1、SW2引言单片机,亦称单片微电脑或单片微型计算机。
它是把中央处理器(CPU)、随机存取存储器(RAM)、只读存储器(ROM)、输入/输出端口(I/0)等主要计算机功能部件都集成在一块集成电路芯片上的微型计算机。
单片机是把主要计算机功能部件都集成在一块芯片上的微型计算机。
它是一种集计数和多中接口于一体的微控制器,被广泛应用在智能产品和工业自动化上,而52单片机是个单片机中最为典型和最有代表性的一种。
现在高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟、石英钟、石英表都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调试,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时、分、秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。
一、设计要求在实验板上用动态扫描显示00—591、6MHZ晶振2、L9,L10显示00—59十进制数并循环,相隔1S3、L9显示内寄存内部RAM30H,L10显示内寄存内部RAM31H4、定时器1产生2。
5MS中断,动态扫描显示L9,L10显示数5、定时器0产生50MS中断,计数20次产生1S时钟7、要求显示,时、分、秒二、数字时钟的基本原理数字时钟是用数字集成电路组成,用数码管显示的一种现代化计数器。
数字时钟实际上是一个对标准频率(1Hz)进行计数的计数电路。
振荡器产生的时钟信号经过分频器形成秒脉冲信号,秒脉冲信号输入计数器进行计数,并把累计结果“时”、“分”、“秒”的数字显示出来。
秒计数器电路计满60后触发分计数器电路,分计数器电路计满60后触发时计数器电路,当计满24小时后又开始下一轮的循环计数。
由于计数的起始时间不可能与标准时间(如北京时间)一致,故需在电路上加一个校时电路可以对分和时进行校时。
三、硬件电路设计(一)、电路板原理89C52的P0、P2口用作键盘/显示接口。
用程序扫描的方法进行键盘输入和显示输出。
P0口作为字段口,P2作为显示器的置位口以及键盘的输出口。
P2.0,P2.1接2个数码管,P2.2,P2.3接2个按钮。
(二)、电路元器件AT89C52芯片三极管按键发光二极管共阴级七段数码管电阻(三)、MAX7219MAX7219/MAX7221是一种集成化的串行输入/输出共阴极显示驱动器,它连接微处理器与8位数字的7段数字LED显示,也可以连接条线图显示器或者64个独立的LED。
其上包括一个片上的B型BCD编码器、多路扫描回路,段字驱动器,而且还有一个8*8的静态RAM 用来存储每一个数据。
只有一个外部寄存器用来设置各个LED的段电流。
MAX7221与SPI™、QSPI™以及MICROWIRE™相兼容,同时它有限制回转电流的段驱动来减少EMI (电磁干扰)。
一个方便的四线串行接口可以联接所有通用的微处理器。
每个数据可以寻址在更新时不需要改写所有的显示。
MAX7219/MAX7221同样允许用户对每一个数据选择编码或者不编码。
整个设备包含一个150μA的低功耗关闭模式,模拟和数字亮度控制,一个扫描限制寄存器允许用户显示1-8位数据,还有一个让所有LED发光的检测模式。
在应用时要求3V的操作电压或segment blinking,可以查阅MAX6951数据资料。
四、数字时钟的软件设计1、程序流程图五、软件调试通过WAVE6000编写程序用TOP8052烧写AT89C52芯片中,在上电的情况下,两个LED数码管显示的数值是00,当按键S1有按下的时候,启动时钟,当再次检测到按键S1按下时,就暂停时钟,S1起到一个启动\暂停的功能;可以通过按键S2的切换查看时、分、秒的数值。
首次按下S2,就会切换到显示分的数值,第二次按下S2,就会切换到显示时钟的数值,第三次按下S2,就跳回显示秒的数值。
六、结语本次课程设计的总结与体会微机原理与接口技术是一门很有趣的课程,任何一个计算机系统都是一个复杂的整体,学习计算机原理是要涉及到整体的每一部分。
讨论某一部分原理时又要涉及到其它部分的工作原理。
这样一来,不仅不能在短时间内较深入理解计算机的工作原理,而且也很难孤立地理解某一部分的工作原理。
所以,在循序渐进的课堂教学过程中,我总是处于“学会了一些新知识,弄清了一些原来保留的问题,又出现了一些新问题”的循环中,直到课程结束时,才把保留的问题基本搞清楚。
学习该门课程知识时,其思维方法也和其它课程不同,该课程偏重于工程思维,具体地说,在了解了微处理器各种芯片的功能和外部特性以后,剩下额是如何将它们用于实际系统中,其创造性劳动在于如何用计算机的有关技术和厂家提供的各种芯片,设计实用的电路和系统,再配上相应的应用程序,完成各种实际应用项目。
这次实验并不是很难,主要的困难来自对程序的理解。
功夫不负有心人,经过四个人的合作和努力,我们最后对实验的原理有了清晰的认识。
虽然实验台上的很多模块单元没有用到,但是就系统功能来说,我觉得我们做的还是不错的。
这次课设却让我们对实验台有了足够的了解,让我们知道了实验台上各个模块的用法;而且它还让我们对自己动手写程序来控制实验台的运作有了一定的基础。
虽然实验台只是一个小型的模拟平台,但是通过对它的学习和操作,我们对有关接口的知识将会有一个更广泛的认识,而且它对我们以后的学习也会有帮助的。
实验中个人的力量是不及群体的力量的,我们四个人分工合作,做事的效率高了很多。
虽然有时候会为了一些细节争论不休,但最后得出的总是最好的结论。
而且实验也教会我们在团队中要善于与人相处,与人共事,不要一个人解决所有问题。
总之,这次课程设计对于我们有很大的帮助,通过课程设计,我更加深入地理解了,微机原理课程上讲到的各种芯片的功能,以及引脚的作用,同时加深了对于主要芯片的应用的认识,同时在试验室的环境里熟悉了汇编程序的编写过程和运行过程,最后还提高了自己的动手能力。
感谢老师的悉心指导。
,七、程序附录#include "reg52.h"#define uchar unsigned char#define DECODE_MODE 0x09#define INTENSITY 0x0A#define SCAN_LIMIT 0x0B#define SHUT_DOWN 0x0C#define DISPLAY_TEST 0x0Fvoid Init_Max7219(void);void write_7219(uchar add, uchar dat);void send_byte(uchar i);void short_delay(void);void delay(int time);void init_timer();void display();sbit CLK = P0^0;sbit DIN = P0^1;sbit LOAD = P0^2;sbit D0=P1^0;sbit D7=P1^7;int second,minute,clock,t_sec,t_min;unsigned chardd[10]={0x7e,0x30,0x6d,0x79,0x33,0x5b,0x5f ,0x70,0x7f,0x7b};void main(){char k=0,i=1;Init_Max7219();for(i=0;i<9;i++){write_7219(i,0X00);}init_timer();second=54,minute=59,clock=23;while(1){if(t_sec==20) //到了1秒{D7=!D7;t_sec=0;second++;if(second==60) //到了1分{second=0;minute++;if(minute==60){minute=0;clock++;if(clock==24)clock=0;}}}display();}}void timer0() interrupt 1{TH0=(65535-46080)/256;TL0=(65535-46080)%256; //定时1msD0=!D0;t_sec++;}void display(){int ten1,num1,ten2,num2,ten3,num3;ten1=second/10; num1=second%10;ten2=minute/10; num2=minute%10;ten3=clock/10; num3=clock%10;write_7219(1,dd[num1]);write_7219(2,dd[ten1]);write_7219(3,dd[num2]);write_7219(4,dd[ten2]);write_7219(5,dd[num3]);write_7219(6,dd[ten3]);}void init_timer(){second=0; minute=0; t_sec=0; t_min=0;TMOD=0x01; //设置定时器0的工作方式为1TH0=(65535-46080)/256;TL0=(65535-46080)%256; //定时50ms EA=1; //开总中断ET0=1; //开定时器0中断TR0=1; //启动定时器0}void write_7219(uchar add, uchar dat) {LOAD=1;send_byte(add);send_byte(dat);LOAD=0;short_delay();LOAD=1;CLK=0;short_delay();CLK=1;}void send_byte(uchar i ) {char k;for(k=0;k<8;k++){if(0x80&i){DIN =1;}else{DIN=0;}CLK = 0;short_delay();CLK = 1;short_delay();i*=2;}}void Init_Max7219(void){write_7219(SHUT_DOWN, 0xff); //Normal Operation XXXXXXX1 Shutdown Mode XXXXXXXX0write_7219(DISPLAY_TEST, 0x00); //Normal Operation XXXXXXX0 Display Test Mode XXXXXXXX1write_7219(DECODE_MODE, 0x00); //Decode Mode Select D7~D0 1 B decode 0 No decodewrite_7219(SCAN_LIMIT, 0x07); //SCAN LIMIT 0~7 0xX0~0xX7write_7219(INTENSITY, 0x05); //Set Intensity 0xX0~0xXf}void short_delay(void){char j;for(j=0;j<50;j++);}void delay(int time)int i,j;for (i=3;i<time;i++) for (j=0;j<100;j++); }。