做出一个音乐倒数计数器
AT89C51单片机设计的音乐倒数计数器解析

塔里木大学《单片机原理与外围电路》课程论文基于单片机设计的音乐倒数计数器姓名:古再丽努尔·阿卜来提学号: **********班级:通信工程16-1摘要:单片机技术是一门不可或缺的技术,对我们将来的工作以及生活和学习都有很密切的联系。
近年来,随着电子技术和微机计算机的迅速发展,单片机的档次不断提高,其应用领域也在不断的扩大,已在工业控制、尖端科学、智能仪器仪表、日用家电、汽车电子系统、办公自动化设备、个人信息终端及通信产品中得到了广泛的应用,成为现代电子系统中最重要的智能化的核心部件。
单片机由CPU、一定容量的RAM和ROM构成,定时、计数和多种接口于一体的微控制器。
它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。
而51系列单片机是各单片机中最为典型和最有代表性的一种。
这次课程设计通过对它的学习、应用,从而达到学习、设计、开发软、硬的能力。
本设计利用AT89C51单片机结合字符型LCD显示器设计一个简易的倒数计数器。
用4个按键操作来设置当前想要倒计数的时间。
做一小段时间倒计数,当倒计数为0时,则发出一段音乐声响,通知倒计数终了,该做应当做的事。
应用Proteus的ISIS软件和Keil uVision3来实现该计数器的设计与仿真。
该方法仿真效果真实、准确,节省了硬件资源。
该多功能计数器可以应用于一般的生活和工作中,也可以通过改装,提高性能,增加新功能,从而给人们的生活和工作带来更多的方便。
关键词:AT89C51,计数器,键盘控制,LCD显示,protues,Keil 。
目录1绪论 (4)1.1课题背景及研究意义 (4)1.2国内外现状 (4)1.3课题的设计目的 (4)1.4课题的主要工作 (4)2系统概述 (5)2.1方案论证 (5)2.2系统设计原理 (5)3系统硬件设计 (5)3.1主控电路设计 (5)3.2LCD液晶显示器接口电路设计 (6)4系统软件设计 (6)4.1主程序设计 (6)4.2硬件调试 (8)4.3仿真结果 (16)结论 (16)参考文献 (17)系统整体电路.............................................................................................错误!未定义书签。
手工计数器的制作方法

手工计数器的制作方法一、确定计数器的位数和每个位数的显示方式在制作手工计数器之前,首先需要确定计数器的位数和每个位数的显示方式。
常见的计数器位数有二进制、十进制和十六进制等。
而显示方式则可以选择七段显示、点显示、数字显示等多种方式。
根据实际需求,可以选择适当的位数和显示方式。
二、选择合适的材料,切割成计数器的形状和大小接下来,需要选择合适的材料,如木材、塑料等,根据设计好的形状和大小进行切割。
确保材料的质量和精度,以满足后续加工的需求。
三、在计数器上刻上数字或符号,表示计数的数值使用刻刀、钻头或其他合适的工具,在计数器上刻上数字或符号,表示计数的数值。
这一步需要细心操作,确保刻画的数字或符号清晰可见。
四、添加旋转机制,使计数器能够逐位旋转为了使计数器能够逐位旋转,需要添加旋转机制。
可以使用轴、轮子等装置,并根据需要添加位置传感器,以确保计数器的准确性。
五、安装LED灯或其他显示设备,用于显示计数器的数值为计数器添加LED灯或其他显示设备,用于显示计数器的数值。
可以添加多个LED灯,以获得更佳的显示效果。
六、连接电源,为计数器提供动力为计数器提供动力,可以连接外部电源或使用电池组作为电源。
根据所选的电源类型,合理安排电源连接方式。
七、编写控制程序,实现计数器的计数功能最后,需要编写控制程序,实现计数器的计数功能。
根据所选的编程语言和开发环境,编写相应的控制程序。
通过程序控制LED灯的亮灭和旋转机制的转动,实现计数器的正确计数。
八、对计数器进行测试和调试,确保其能够正确计数完成上述步骤后,需要对计数器进行测试和调试,确保其能够正确计数。
可以反复测试并调整各个参数,以达到最佳效果。
同时,还可以根据实际需求进行优化和改进,使计数器更加实用和美观。
摘要及翻译

摘要随着科学技术的发展,单片机技术在产品的人机交互设计中扮演着越来越重要的角色。
本文对基于单片机的ZH-502时间同步系统显示模块进行了研究。
ZH-502是武汉中原华电公司自主研发的时间同步系统,主要应用于电力系统。
本文采用MSP430单片机作为核心器件,设计完成ZH-502时间同步系统的显示显示模块。
首先查阅了大量资料,深入了解和掌握了MSP430单片机的内部结构和应用方法。
结合常见电路的用法,给出了整个显示模块的设计思路和整体框图;接着重点学习了LM6060CBY液晶模块、EPC-755A编码器和X5043看门狗定时器的原理和控制方法,设计完成了整个电路的原理图和PCB。
硬件电路完成之后,使用C语言作为软件语言来控制整个显示块。
本文还介绍了基于MSP430的C语言开发环境,自主完成了程序代码部分,并编译、下载,整个系统的预设功能:显示功能菜单;实时显示由卫星发送的时间;通过按键在菜单中改变时间同步系统输出的波特率,均已调试成功。
关键词: MSP430 LM6060CBY液晶 EPC-755A编码器 C语言AbstractWith the development of science and technology, single-chip technology in the products of human-computer interaction design play an increasingly important role. In this paper, based on single-chip ZH-502 display module time synchronization system is studied. ZH-502 Wuhan, Central China Huadian Corporation is the independent research and development of time synchronization system, mainly used in power systems.In this paper, single-chip microcomputer as the core of MSP430 devices, the design of the completion of ZH-502 time synchronization system display module. First of all, a great deal of information available, in-depth understanding and knowledge of the MSP430 MCU and application of the internal structure. Combination of common usage of the circuit, given the entire display module and the overall design of the diagram; LM6060CBY then focussed on the study of the LCD module, EPC-755A and X5043 encoder watchdog timer control theory and design to complete the entire circuit schematic and the PCB. Hardware circuit is complete, use the C language as a language to control the software shows the whole block.This article also describes the MSP430-based C language development environment, self-completed part of program code and compile, download, the entire system default function: display menu; real-time display of time by satellite; through the button in the menu to change the time synchronous system output of the baud rate, have been successful debugging.Key words: MSP430 LM6060CBY LCD EPC-755A encoder C language单片机即单片微型计算机(Single-Chip Microcomputer ),是集CPU ,RAM ,ROM ,定时,计数和多种接口于一体的微控制器。
单片机课程设计 音乐倒数计数器

任务书⏹设计任务:利用STC89C52单片机结合字符型LCD显示器设计一个简易的倒数计数器。
做一小段时间倒计数,当倒计数为0时,则发出一段音乐声响,通知倒计数终了,该做应当做的事。
⏹设计要求:1.字符型LCD(16×2)显示器,显示格式为“TIME 分分:秒秒”。
2.用4个按键操作来设置当前想要倒计数的时间。
3.一旦按下键则开始倒计数,当计数为0时,发出一阵音乐声。
4.程序执行后工作指示灯LCD闪动,表示程序开始执行,按下操作键K1~K4动作如下:●K1---可调整倒计数的时间1~60分钟。
●K2---设置倒计数的时间为5分钟,显示“0500”。
●K2---设置倒计数的时间为10分钟,显示“1000”。
●K2---设置倒计数的时间为20分钟,显示“2000”。
5.复位后LCD的画面应能显示倒计时的分钟和秒数,此时按K1键,则在LCD上显示出设置画面。
此时,若:⏹按K2键---增加倒计数的时间1分钟。
⏹按K2键---减少倒计数的时间1分钟。
⏹按K4键---设置完成。
目录任务书 (I)1 绪论 (2)1.1 单片机基础知识 (2)1.2 单片机的发展趋势 (2)1.3 项目设计任务与要求 (3)2 系统设计 (4)2.1 框图设计 (4)2.2部分硬件方案论述 (5)2.3电路原理图 (5)2.4元件清单 (6)2.4.1STC89C52芯片 (6)2.4.2字符型LCD1602 ......................... 错误!未定义书签。
2.4.3按键控制模块 (8)2.4.4其它元件 (10)3软件设计 (11)3.1 程序流程图 (11)4 系统的仿真与调试 (12)4.1 硬件调试 (12)4.2 软件调试 (12)4.3 软硬件调试 (12)5总结 (13)参考文献 (14)附录程序 (25)1 绪论1.1 单片机基础知识单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。
毕业设计25倒计时器

毕业设计25倒计时器倒计时器是一个常见的时间管理工具,它可以帮助人们在限定的时间内有效地完成任务。
在毕业设计中设计一个倒计时器是一个有趣和实用的项目。
本文将介绍一个毕业设计的案例:设计一个倒计时器,用于倒计时到毕业的日子。
设计目标:1.实现一个简单易用的倒计时器,可以根据用户输入的日期和时间开始倒计时。
2.提供倒计时的天、小时、分钟和秒的显示,以及剩余总时间的显示。
3.提供设置倒计时完成后的提醒功能,可以通过声音或震动提醒用户。
设计思路:1.用户界面设计:-添加一个日期和时间输入框,用于用户输入倒计时的目标日期和时间。
-添加一个开始按钮,用户点击后开始倒计时。
-添加一个倒计时显示区域,用于显示倒计时的天、小时、分钟和秒。
-添加一个总时间显示区域,用于显示剩余的总时间。
2.倒计时逻辑设计:-获取用户输入的日期和时间。
-计算当前时间和目标时间之间的时间差。
-将时间差分解为天、小时、分钟和秒,并在对应的显示区域显示。
-每间隔一秒更新一次倒计时显示。
-当时间差为零时,倒计时停止。
3.提醒功能设计:-添加一个设置提醒的选项框。
-当倒计时结束时,根据用户设置的提醒选项进行相应的提醒:声音或震动。
代码实现:可以使用编程语言如Python、JavaScript或C++来实现这个倒计时器。
以下是一个使用Python的简单示例:```pythonfrom playsound import playsounddef countdown(target_date):while True:print("Countdown finished!")# play sound or vibrate according to user's settingplaysound("sound.mp3")break# display countdownminutes, seconds = divmod(rem, 60)year = int(input("Enter year: "))month = int(input("Enter month: "))day = int(input("Enter day: "))hour = int(input("Enter hour: "))minute = int(input("Enter minute: "))# start countdowncountdown(target_date)```总结:设计一个倒计时器需要考虑用户界面设计、倒计时逻辑设计和提醒功能设计。
Premiere Pro的倒计时特效制作技巧

Premiere Pro的倒计时特效制作技巧在视频制作和编辑中,倒计时特效是一种很常见且引人注目的效果。
Adobe Premiere Pro是一款功能强大的视频编辑软件,可以帮助我们轻松地制作出精美的倒计时特效。
本文将为大家介绍一些Premiere Pro中实现倒计时特效的技巧和方法。
首先,在Premiere Pro的工作区选择一个合适的项目,并将需要加入倒计时特效的视频素材导入软件中。
在项目面板中,右键单击并选择“新序列”,创建一个新的序列。
确保序列设置与导入的视频素材一致。
接下来,找到程序监视器并点击“添加到程序监视器”按钮,在页面上显示“导航面板”。
这将为我们提供更多的编辑选项和控制。
现在,在程序监视器中,选择一个合适的位置来放置倒计时特效。
点击“图像”选项,在下拉菜单中选择“添加倒计时”。
默认情况下,Premiere Pro提供了几种不同的倒计时样式。
你可以根据自己的需要选择一个合适的样式,并在程序监视器中进行编辑和调整。
要编辑倒计时特效,可以点击“基本效果控制”面板中的各种选项,如颜色、字体、大小、位置等,来修改特效的外观和特性。
你还可以通过修改“持续时间”选项来调整倒计时的时长。
除了基本的编辑和调整,Premiere Pro还为我们提供了其他一些高级的倒计时特效制作工具。
例如,你可以通过添加文字效果、遮罩、图像处理等来进一步改进和定制特效。
要添加文字特效,首先选择“文本工具”,然后用鼠标在程序监视器中拖动并绘制一个文本框。
在文本框中输入你想要显示的文本,并调整字体、大小、颜色等属性。
为了使用遮罩效果,你可以在“效果控制”面板中找到“遮罩”效果,并将其应用到倒计时特效上。
然后在“图像遮罩”选项中调整遮罩的形状和位置,以达到你想要的效果。
此外,Premiere Pro还提供了一些图像处理工具,如色彩校正、特殊效果等。
你可以使用这些工具为倒计时特效添加更多的鲜明和独特的外观。
完成倒计时特效的编辑和调整后,点击“播放”按钮预览效果。
音乐倒数计数器ds

黄河科技学院课程设计报告书题目: 音乐倒数计数器课程:单片机课程设计专业:数控技术班级:学号:学生:指导教师:何春霞2013年01 月 6 日摘要本设计是基于AT89C52单片机的音乐倒数计数器,根据单片机技术原理,通过硬件电路设计与软件设计,制作出的音乐倒数计数器能稳定运行,并能正常播放音乐。
该设计硬件部分主要包括按键电路、复位电路、LCD显示电路以及蜂鸣器组成,其中K1键作为第二功能键加入外部中断0,用以切换时间选择模式。
计数值为零时,通过定时器T1调节音频,是蜂鸣器发出不同的音调。
本设计利用Keil uVision4作为编程软件进行源程序设计及调试,同时使用PROTEUS7.7进行硬件电路的搭建仿真。
关键字:单片机音乐计数器proteus 蜂鸣器目录1 任务提出与方案论证 (7)1.1 采用555定时器 (7)1.2 采用单片机控制............. . (7)2 总体设计 (8)2.1 系统硬件设计 (8)2.2 系统软件设计 (8)3 详细设计及仿真 (9)3.1硬件电路详细设计 (9)3.2软件详细设计 (12)3.3 系统仿真 (14)4 总结 (16)参考文献 (17)附录 (18)1 任务提出与方案论证21世纪电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,而作为创新的倒数计数器更是在普通家庭中广泛应用。
1.1采用555定时器555定时器是一种模拟和数字功能相结合的中规模集成器件。
555定时器的功能主要由两个电压比较器决定。
两个电压比较器的输出电压控制RS触发器和放电管的状态。
在电源与地之间加上电压,当5脚悬空时,则电压比较器A1的反相输入端的电压为2VCC/3,A2的同相输入端的电压为VCC/3.若触发输入端TR的电压小于VCC/3,则比较器A2的输出为1,可使RS触发器置1,使输出端OUT=1.如果阈值输入端TH的电压大于2VCC/3,同时TR端的电压大于VCC/3,则A1的输出为1,A2的输出为0,可将RS触发器置0,使输出为0电平。
单片机原理及应用课程设计题目

一、设计选题(三人一组,每组从以下题目中任选一题,一个题目最多只能由二组选):1、智能电子钟(LCD显示)的设计设计要求:制作一个LCD显示的智能电子钟:(1) 计时:秒、分、时、日、月、年、星期。
(2) 闰年自动判别。
(3) 时间、年、月、日、星期交替显示。
(5) 自定任意时刻自动开/关屏。
(6) 计时精度:误差≤1秒/月(具有微调设置)。
2、电子时钟(LCD显示)的设计设计要求在LCD显示器上显示当前的时间:使用字符型LCD显示器显示当前时间。
显示格式为“时时:分分:秒秒”。
用4个功能键操作来设置当前时间。
功能键K1~K4功能如下。
●K1—进入设置现在的时间。
●K2—设置小时。
●K3—设置分钟。
●K4—确认完成设置。
作品用一个LED指示灯工作状态,闪动表示作品正在工作,LCD显示“00:00:00”,然后开始计时。
3、秒表的设计设计要求设计一个2位的LED数码显示的“秒表”:显示时间为00—99秒,每秒自动加1,另设计一个“开始”键和一个“复位”键。
4、定时闹钟的设计设计要求使用字符型LCD显示器设计一个简易的定时闹钟,若LCD选择有背光显示的模块,在夜晚或黑暗的场合中也可使用。
定时闹钟的基本功能如下:显示格式为“时时:分分”。
由LED闪动来做秒计数表示。
一旦时间到则发出声响,同时继电器启动,可以扩充控制家电开启和关闭。
作品工作后指示灯LED闪动,表示作品开始工作,LCD显示“00:00”,按下操作键K1~K4动作如下:(1) K1—设置现在的时间。
(2) K2—显示闹钟设置的时间。
(3) K3—设置闹铃的时间。
(4) K4—闹铃ON/OFF的状态设置,设置为ON时连续三次发出“哗”的一声,设置为OFF发出“哗”的一声。
设置当前时间或闹铃时间如下。
(1) K1—时调整。
(2) K2—分调整。
(3) K3—设置完成。
(4) K4—闹铃时间到时,发出一阵声响,按下本键可以停止声响。
本项目的难点在于4个按键每个都具有两个功能,以最终实现菜单化的输入功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计音乐倒数计数器引言随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它给人带来的方便也是不可置否的,人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从单片机技术入手,一切向着数字化控制,智能化控制方向发展。
本设计利用AT89C51单片机结合字符型LCD显示器设计一个简易的倒数计数器,可用来煮方便面、煮开水或小睡片刻等。
做一小段时间倒计数,当倒计数为0时,则发出一段音乐声响,通知倒计数终了,该做应当做的事。
1 项目概述和要求1.1 设计要求利用数字AT89C51单片机实现倒数计数器的功能,设定时间后在LED数码管上显示相应的时间。
其功能和性能指标如下:⑴字符型LCD(16×2)显示器,显示格式为“TIME 分分:秒秒”。
⑵用4个按键操作来设置当前想要倒计数的时间。
⑶一旦按下键则开始倒计数,当计数为0时,发出一阵音乐声。
⑷程序执行后工作指示灯LCD闪动,表示程序开始执行,按下操作键K1~K4动作如下:● K1---可调整倒计数的时间1~60分钟。
● K2---设置倒计数的时间为5分钟,显示“0500”。
● K3---设置倒计数的时间为10分钟,显示“1000”。
● K4--设置倒计数的时间为20分钟,显示“2000”⑸复位后LCD的画面应能显示倒计时的分钟和秒数,此时按K1键,则在LCD上显示出设置画面。
此时,若:●按K2键---增加倒计数的时间1分钟。
●按K3键---减少倒计数的时间1分钟。
●按K4键---设置完成。
1.2 设计方案音乐倒数计数器所倒数的时间由数字显示,控制器使用单片机AT89C51。
本设计基于单片机技术原理,以单片机芯片AT89C51作为核心控制器,通过硬件电路的制作以及软件程序的编制,设计制作出一个计数器,包括以下功能:输出时间,按下键就开始计时,并将时间显示在LCD1602显示器上。
当倒计数为0时,蜂鸣器就发出音乐声响等等。
该计数器系统主要由计数器模块、LCD显示器模块、蜂鸣器模块、键盘模块、复位模块等部分组成。
总体设计方框图如图1-1所示。
图1-1 总体设计方框图2 系统硬件电路设计2.1主控制器——AT89S51单片机AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除100次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU 和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
●与MCS-51 兼容● 4K字节可编程闪烁存储器●寿命:1000写/擦循环●数据保留时间:10年●全静态工作:0Hz-24Hz●三级程序存储器锁定● 128*8位内部RAM● 32可编程I/O线●两个16位定时器/计数器● 5个中断源●可编程串行通道●低功耗的闲置和掉电模式●片内振荡器和时钟电路2.2显示电路——LCD数码管采用静态显示,静态显示是指LCD显示某一屏字符时,时钟保持当前字符的显示,不使用移屏显示。
便于控制,同时能够满足正常的显示效果。
由于在显示中存在播放时间的动态变化,这样的话,即使是不产生整屏移动,也能给人动态感,也易于控制。
3 系统设计3.1电路原理图电路原理图如图3-1所示。
图3-1 电路原理图3.2元件清单3.2.1 AT89C51芯片AT89C51芯片图如下图3-2所示。
图3-2 AT89C51芯片①简介:AT89C51是一种带4K字节闪存可编程可擦除只读存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除1000次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
②主要特性:与MCS-51 兼容;4K字节可编程闪烁存储器;寿命:1000写/擦循环;数据保留时间:10年;全静态工作:0Hz-24MHz;三级程序存储器锁定;128×8位内部RAM;32可编程I/O 线;两个16位定时器/计数器;5个中断源;可编程串行通道;低功耗的闲置和掉电模式;片内振荡器和时钟电路。
3.2.2 字符型LCD1602字符型LCD1602如下图3-3所示。
图3-3字符型LCD16021602字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线。
VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样,各引脚符号及其功能表如下表3-1所示。
引脚符号功能说明1 VSS 一般接地2 VDD 接电源(+5V)3 V0 液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比表3-1 LCD各引脚及其功能表3.2.3 按键控制模块按键用于控制数码显示、LCD显示、扬声器等模块的工作。
通过扫描按键是否按下,来设定各模块的工作情况,使各模块可以在按键的控制下,有序地进行工作。
设计中使用单个按键实现单个功能,属于较为简单的控制方式。
在多功能系统设计的试验中我们使用五个按键分别与单片机的p1.0、p1.1、p1.2、p1.3、p1.4相连。
通过按下相应的按键来处理相应的程序。
如下图3-4所示。
图3-4 按键控制模块图3.2.4 其它元件其它元件图如下图3-5所示。
图3-5 其它元件图4 系统软件程序设计4.1 程序流程图主程序开始初始化,然后扫描键盘、复位电路和计数器。
当键盘按键有按下时,调整计数器值,LCD显示新值。
当复位键有按下时,计数器复位为初值,重新倒计数。
当计数器值倒计为0时,蜂鸣器发出声音,计数器停止倒计,程序结束。
主程序流程图、LCD显示流程图和按键流程图分别如下图4-1、图4-2和图4-3所示。
图4-1 主程序流程图图4-3 按键流程图5 系统的仿真与调试5.1 硬件调试硬件调试分为静态调试和动态调试,对于硬件调试而言,只要认真焊接,硬件一般不会出现什么问题的。
静态调试一般采用的工具是万用表,它是在用户系统未工作时的一种硬件检测。
动态调试是在用户系统工作的情况下发现和排查错误的一种硬件检测。
调试步骤是:首先把电路分为若干模块,调试过程中与该模块无关的元件可以不加考虑,这样可把故障限定在一定的范围内;故障清除后,把各个模块合在一起进行联调,即可完成整个硬件调试工作。
5.2 软件调试软件调试是通过对程序的汇编、连接、执行来发现程序中存在的语法错误与逻辑错误并加以排除纠正的过程。
5.3 软硬件调试软硬件联调是指把调试无误的软件程序烧制进单片机芯片内部,通上电源后,检查硬件工作是否有预期的效果,如果没有则需要检测软件是否在实现功能上有欠缺。
若有错误,通过改写软件来调试,直至达到预期效果,则设计圆满成功。
本课程设计调试结果如下图5-1所示。
图5-1课程设计调试结果5总结经过这次的的课程设计,简单带有LCD显示的音乐倒数计数器基本完成,系统基本功能基本实现,测试运行也基本正常。
该系统基本上完成了日期的显示与计数的功能。
当然这个系统还存在许多有待完善的地方:▲功能相对较少,有待于添加,比方说时钟与闹钟功能;▲界面设计得不够精致完美;这次课程设计的时间虽然不算很长,但使我对很多东西有了更深刻的认识。
总结如下:●查阅资料和阅读相关文献的重要性。
●向同学请教的重要性,团结协作的重要性。
●勤动手的重要性,自己动手,丰衣足食!在一次次调试代码的过程中,我才明白“代码不是写出来的,是调出来的”的道理。
●对待任何事情都要有耐心和恒心,遇到问题要冷静地思考,积极找出症结所在,逐个解决。
通过本次课程设计,我更深刻的认识到了教学实践在大学课程中的重要性,同时也发觉到了自己在学习方面存在的许多不足之处,在以后的学习中我会努力改进这些不足,不断提高自己的动手实践能力。
附件源程序#include<reg52.h>#include<intrins.h>#define time 100#define uint unsigned int#define uchar unsigned charuint t,flag,flag0,flag1,flag2,flag3,flag4,flag5,minute,second=60; uchar num,j,i,k=0;uchar code table[]="TIME 00:00";uint code table1[]={64580,64684,64777,64820,64898,64968,65030};sbit key1=P1^0;sbit key2=P1^1;sbit key3=P1^2;sbit key4=P1^3;sbit key5=P1^4;sbit P1_5=P1^5;sbit RS=P2^0;sbit RW=P2^1;sbit E=P2^2;sbit led_red=P2^3;void write_time(uint addr,uint date);/////////延时函数///////void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}///////延时1S////////////void delay1(void){uchar a,b,c;for(c=13;c>0;c--)for(b=247;b>0;b--)for(a=142;a>0;a--);_nop_;}////////1602写命令函数//////void write_com(uchar com){RS=0;P3=com;delay(5);E=1;delay(10);E=0;}//////1602写数据函数//////void write_date(uchar date){RS=1;P3=date;delay(5);E=1;delay(10);E=0;}//////按键1处理函数///////void KEY1(){while(flag1){if(key2==0){delay(time);if(key2==0){if(minute<=60)minute=minute+1;write_time(7,minute);}}if(key3==0){delay(time);if(key3==0){if(minute>0)minute=minute-1;write_time(7,minute);}}if(key4==0||key5==0){delay(150);if(key4==0||key5==0){flag1=0;flag =1;TR0=1;}}}}//////按键2处理函数////// void KEY2(){minute=5;write_time(7,minute);while(flag2){if(key5==0){delay(time);if(key5==0){flag2=0;flag =1;TR0=1;}}}}//////按键3处理函数////// void KEY3(){minute=10;write_time(7,minute);while(flag3){if(key5==0){delay(time);if(key5==0){flag3=0;flag =1;TR0=1;}}}}//////按键4处理函数//////void KEY4(){minute=20;write_time(7,minute);while(flag4){if(key5==0){delay(150);if(key5==0){flag4=0;flag =1;TR0=1;}}}}void write_time(uint addr,uint date) {uint ge,shi;ge=date%10;shi=date/10;write_com(0x80+addr);write_date(0x30+shi);write_date(0x30+ge);if(addr==7&&date==0)j=1;if(j==1&&addr==10&&date==0){flag0=1;TR0=0;TR1=1;flag5=1;}}//////初始化函数//////void init(){P1=0xff;RW=0;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x80);TMOD=0x11;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TH1=0xfc;TL1=0x44;ET1=1;ET0=1;// TR1=1;// TR0=1;EA=1;flag0=1;for(num=0;num<12;num++){write_date(table[num]);delay(20);}}void start(){if(key1==0){delay(time);if(key1==0){flag0=0;flag1=1;KEY1();}}if(key2==0){delay(time);if(key2==0){flag0=0;flag2=1;KEY2();}}if(key3==0){delay(time);if(key3==0){flag0=0;flag3=1;KEY3();}}if(key4==0){delay(150);if(key4==0){flag0=0;flag4=1;KEY4();}}}void write_time0(){minute=minute-1;write_time(7,minute);write_time(10,59);flag=0;}void counter(){if(t==20){led_red=led_red^1;if(flag==1)write_time0();t=0;second=second-1;write_time(10,second);if(k==1&&second==59){if(minute>0)minute=minute-1;write_time(7,minute);}if(second==0){k=1;second=60;}}}int main(){init();while(1){while(flag0)start();counter();while(flag5){delay1();i++;if(i>7)i=0;}}return 0;}void inter0() interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;t++;}void initer1() interrupt 3{TH1=table1[i]/256;TL1=table1[i]%256;P1_5=~P1_5;if(key5==0){delay(100);if(key5==0){TR1=0;flag5=0;k=0;j=0;}}}。