AT89C51单片机设计的音乐倒数计数器

合集下载

单片机课程设计 音乐倒数计数器

单片机课程设计  音乐倒数计数器

任务书⏹设计任务:利用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 单片机基础知识单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。

基于AT89C51单片机的计数器设计

基于AT89C51单片机的计数器设计

基于AT89C51单片机的计数器设计
计数器是一种常见的电子设备,用于实现对输入信号的计数。

基于AT89C51单片机的计数器设计,可以实现对输入信号的计数,并且可以将计数结果显示出来。

我们需要准备以下器件和材料:
1. AT89C51单片机:这是一款8位微控制器,具有丰富的输入输出功能。

2. 数码管:用于显示计数结果。

3. 按钮开关:用于输入计数信号。

接下来,我们可以按照以下步骤进行计数器的设计。

1. 连接电路:将数码管和按钮开关分别与AT89C51单片机的IO口相连。

数码管的引脚与单片机的IO口相连,按钮开关一个端接地,另一个端接单片机的IO口。

2. 编写程序:使用汇编语言或C语言编写单片机的程序。

可以使用单片机的计时器中断来实现计数功能。

在程序中,首先需要初始化单片机,并将IO口设置为输入或输出。

3. 实现计数功能:在程序中,通过判断按钮开关的状态,来决定是否对计数器进行加一或减一操作。

当按钮开关按下时,将计数器加一或减一,并将计数结果显示在数码管上。

4. 程序调试:将程序下载到单片机上,并连接电源。

通过按下按钮开关,观察数码管上计数结果的变化,可以判断程序的正确性。

如果发现计数结果不正确,可以通过调试程序来解决问题。

5. 优化设计:根据实际需求,可以对计数器的功能进行优化。

可以增加清零按钮,用于将计数器清零;可以增加计数范围限制,当计数器达到上限或下限时,禁止继续计数。

毕业设计(论文)-基于at89c51单片机的倒计时系统设计[管理资料]

毕业设计(论文)-基于at89c51单片机的倒计时系统设计[管理资料]

HUBEI UNIVERSITY OF EDUCATION 高等教育自学考试毕业设计(论文)题目基于单片机倒计时系统专业班级电子信息工程0703班学号姓名指导教师姓名、职称所属助学单位湖北第二师范学院2011年 02月 28日毕业论文开题报告书基于单片机倒计时系统摘要摘要:来随着计算机在社会领域的渗透,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。

在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。

模拟多通道压力系统是利用压力传感器采集当前压力并放映在显示器上,它可以分析压力过量程,并发出报警。

并采用电子秤原理可根据输入单价准确的计算出物体的金额。

本篇论文讨论了简单的倒计时器的设计与制作,对于倒计时器中的LED数码显示器来说,我为了简化线路、降低成本,采用以软件为主的接口方法,即不使用专门的硬件译码器,而采用软件程序进行译码。

关键词:单片机;AT89C51;LED数码管显示器;keil C;晶体振荡器目录绪论 (9)1 课题背景 (10) (10)国内外研究现状 (10)课题研究方法 (11)2 硬件设计 (12)单片机简介 (12)单片机技术的发展 (12)单片机系统的应用 (13).2 单片机AT89C51 (14)AT89C51 的基本结构和引脚功能 (14)机器周期和指令周期 (17)LCD简介 (18)LCD显示器的基本结构和特点 (18)本章小结 (19)3 软件设计 (20)中断机制 (20)硬件中断和软件中断 (20)定时器/计时器 (21)定时器/计时器的结构 (21)定时器/计数器的计数信号 (21)程序结构类型 (22) (22) (25) (26) (26)4 软件设计 (28) (28) (28)C软件 (28) (29)、软、硬联接 (31) (31)结束语 (32)总结 (33)致谢 (34)参考文献 (35)附录 (36)附录A (36)附录B (37)绪论随着人们生活水平的不断提高。

基于AT89C51的音乐倒数计数器

基于AT89C51的音乐倒数计数器

题目:音乐倒数计数器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键---设置完成。

2. 工作原理音乐倒数计数器所倒数的时间由数字显示,控制器使用单片机AT89S52。

本设计基于单片机技术原理,以单片机芯片AT89S52作为核心控制器,通过硬件电路的制作以及软件程序的编制,设计制作出一个计数器,包括以下功能:输出时间,按下键就开始计时,并将时间显示在LCD1602显示器上。

当倒计数为0时,蜂鸣器就发出音乐声响等等。

该计数器系统主要由计数器模块、LCD显示器模块、蜂鸣器模块、键盘模块、复位模块等部分组成。

3. 硬件设计电路原理图下图所示.3.1 AT89C52单片机A T89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用A TMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,A T89C52单片机在电子行业中有着广泛的应用。

基于AT89C51单片机的计数器设计

基于AT89C51单片机的计数器设计

基于AT89C51单片机的计数器设计AT89C51单片机是一种常用的8位单片机,具有计数器功能。

本文将介绍基于AT89C51单片机的计数器设计。

计数器是一种常用的电子设备,用于统计某个事件发生的次数。

在数字电子技术中,计数器可以通过使用触发器和逻辑门来实现。

在AT89C51单片机中,可以通过编程控制来实现计数器功能。

我们需要通过编程配置AT89C51单片机的IO口,使其能够作为计数器的输入和输出端口。

我们可以使用P1口作为计数器的输入端口,通过外部信号来触发计数器的计数动作。

我们可以使用P2口作为计数器的输出端口,将计数结果显示出来。

接下来,我们需要编写程序来实现计数器的功能。

程序的基本思路是通过中断来实现计数器的自动计数。

当接收到外部信号时,中断服务程序会自动执行,对计数器的计数值进行更新,并将结果输出到P2口。

我们可以通过按键来控制计数器的启动和暂停。

具体编程步骤如下:1. 配置P1口和P2口为输入和输出模式,分别作为计数器的输入和输出端口。

2. 初始化计数器的计数值为0。

3. 配置中断,并编写中断服务程序。

中断服务程序在接收到外部信号时,会自动执行,对计数器的计数值进行更新,并将结果输出到P2口。

4. 编写按键处理程序。

按键处理程序会检测按键的状态,如果按下则启动计数器,再次按下则暂停计数器。

5. 主程序中,循环检测按键状态,并根据按键状态调用相应的处理程序。

通过以上步骤,我们可以实现基于AT89C51单片机的计数器设计。

这个设计可以广泛应用于各种计数需求的场合,如物料计数、人员计数等。

基于AT89C51单片机的计数器设计具有成本低、可靠性高等优点,适合在工业控制和自动化领域进行应用。

基于AT89C51单片机的计数器设计是一项有趣且实用的工程,通过合理的硬件配置和编程设计,可以实现各种计数需求的应用。

基于AT89C51单片机的计数器设计

基于AT89C51单片机的计数器设计

基于AT89C51单片机的计数器设计AT89C51是一种8位单片机,它具有中央处理器、存储器和输入/输出功能,适用于各种应用。

在本设计中,我们将基于AT89C51单片机来设计一个计数器。

我们需要连接AT89C51单片机和外部硬件电路。

计数器通常需要一个外部计时源来提供脉冲输入,并且需要一个数码管显示结果。

我们需要连接一个计时源(例如晶体振荡器)到单片机的外部时钟引脚,并连接一个共阳数码管到单片机的输出引脚。

我们还需要连接一些按钮到单片机的输入引脚,用于开始、暂停和复位计数器。

接下来,我们需要编写单片机的程序代码。

程序代码将实现计数器的功能,包括计数、显示和控制操作。

我们需要定义一些变量来记录计数器的状态。

我们可以定义一个变量来存储当前计数的值,一个变量来存储计数是否正在进行中的标志,以及一个变量来存储计数方向(递增或递减)的标志。

然后,我们可以在主程序循环中开始实现计数器的功能。

主程序循环可以使用一个无限循环来保持计数器一直运行,并且可以通过检测按钮的状态来控制计数器的操作。

如果开始按钮按下,则设置计数进行中的标志,并且根据计数方向的标志进行递增或递减操作。

如果暂停按钮按下,则清除计数进行中的标志,停止计数操作。

如果复位按钮按下,则将计数器的值重置为初始值,并且清除计数进行中的标志。

在每次计数操作后,我们需要将计数器的值显示在数码管上。

可以使用数码管的显示函数来将计数器的值转换为对应的数字,并将其输出到数码管的引脚上,从而实现数字的显示。

为了保证计数器的精确性,我们需要添加一些延时函数来控制计数的速度。

可以使用单片机的定时/计数器功能来实现延时功能。

定时/计数器可以设置为特定的计时频率,并且可以通过定时器中断来控制延时的时间。

基于AT89C51单片机的计数器设计需要连接外部硬件电路,并编写相应的程序代码来实现计数、显示和控制操作。

通过合理的硬件连接和程序设计,可以实现一个功能完善的计数器。

基于单片机音乐倒数计数器设计

基于单片机音乐倒数计数器设计

随着人们生活水平的不断提高,单片机 控制 无疑 是人们追 求 的 目标之一 ,要为现代人工作、科研、生活、提供更好 的更 方 便的设施就 需要 从单片机技术入手 ,一切 向着数 字化控制 , 智 能化控 制方 向发展 。本 设计基 于 A T 8 9 S 5 1 单 片机设 计 了音 乐倒数 计数器 ,通过按键控制 ,实现时间倒计数。在规定的时 间里, 当倒计 数为 0 时, 则发 出一段音乐声响 , 通知倒计数终止 。 该 系统 具 有 走 时 准 确 ,显 示 直 观 , 低 功 耗 等 特 点 。 1系统设计方案 音 乐倒数计数器所倒数 的时间 由数字显示,控制器使用单 片机 A T 8 9 C 5 1 。本 设计基 于单 片机技 术原理 , 以单 片机芯 片 A T 8 9 C 5 1 作为核 心控制器 ,通过硬件 电路的制作 以及 软件 程序 的编制,设计制作 出一个计数器 ,包 括 以下功 能 :输 出时 间, 按 下键就 开始计 时,并将时 间显示在 L C D1 6 0 2 显 示 器 上 。 当 倒计数 为 0 时,蜂 鸣器就 发出音乐声响等等 。该计数器系 统主 要 由计 数器模块、L C D显示器模块 、蜂鸣器模 块、键盘模块 、 复位 模 块 等 部 分 组 成 。 2 系统硬件 电路设计 音 乐倒数 计数器 系统主要 由计数 器模块 、L C D 显示器模 块 、蜂 鸣器模块 、键盘模块 、复位模块等部分组成 。本设计采 用5 1 系列 单片机 A T 8 9 S 5 1 单 片机, 当系 统启动 时,单片机 首 先 对 内部资源和 L C D进行初始 化,随后从 时钟 芯片读取 时间 并将其 信号传 输给 L C D显示 ,并对键 盘 电路进 行循环 扫描 , 通 过键 盘 电路 完 成 系 统 时 间 、计 数 时 间 的设 置 。下 面 分 别 介 绍 各 个 模 块 的功 能实 现 。 2 . 1 A T 8 9 c 5 1 单 片 机 A T 8 9 C 5 1 是带 4 K 字 节 闪烁 可 编 程 可 擦 除 只 读 存 储 器 的 低 电压,高性能 C MOS 8 位微处 理器 ,俗 称单片机 。单 片机 的可 擦 除只读存储器 可 以反复擦 除 1 0 0 次。该器件采用 A T ME L高 密度非易失存储器制造技术制造 ,与工业标准 的 MC S . 5 1 指令 集和输 出管脚 相兼容 。由于将 多功能 8 位C P U和 闪烁存储 器 组合在 单个 芯片 中, A T ME L的 A T 8 9 C 5 1 是一种 高效微控制器 , A T 8 9 C 5 1 单片机 为很 多嵌入式控制系统提供 了一种灵活性高且 价廉的方案 。 2 . 2 显 示 电路 显示 电路 有单 片机 和一个 L C D1 6 0 2 液 晶显 示器组成 ,P 0 为输入 口,P 2 为片选 口。1 6 0 2 液晶也 叫 1 6 0 2 字符型 液晶 ,它 是一种专 门用 来显示字母 、数字 、符号等 的点阵型液 晶模块 。 它 由若 干 个 5 ×7 或者5 ×1 1 等 点 阵 字 符 位 组 成 ,每 个 点 阵 字 符 位都可以显示一个字符 ,每位之 间有一个点距 的间隔 ,每行之 间也有间隔,起 到了字符 间距和行 间距 的作用 。

基于AT89C51单片机的计数器设计

基于AT89C51单片机的计数器设计

基于AT89C51单片机的计数器设计一、引言计数器是数字电路中常见的一种组合逻辑电路,用于对输入脉冲信号进行计数和累加操作,常用于计数、测频、分频等场合。

AT89C51单片机是一种常用的8位微控制器,具有丰富的外设和功能,能够灵活应用于各种数字电路设计中。

本文将基于AT89C51单片机,设计一个简单的计数器,并介绍其原理和实现方法。

二、设计原理AT89C51单片机具有丰富的外设资源,包括多种定时器、计数器和串行通信接口等,适合用于计数器设计。

在本设计中,我们将使用AT89C51的定时器/计数器功能,通过编程控制实现一个简单的计数器。

具体设计原理如下:1. 硬件设计:基于AT89C51单片机的计数器由单片机、数码管、脉冲输入端和其他外围电路组成。

其中脉冲输入端接收外部脉冲信号作为计数输入,数码管用于显示计数结果。

2. 软件设计:利用AT89C51的定时器/计数器功能,编程设计实现计数器的逻辑功能。

通过中断控制和计数器清零等操作,实现对脉冲输入信号的计数和累加,并将结果通过数码管显示出来。

三、设计实现1. 硬件连接:首先进行硬件连接,将AT89C51单片机与数码管、外部脉冲信号输入端等进行连接。

通常可以通过引脚连接或者扩展模块等方式进行连接。

2. 软件编程:接下来进行软件编程,通过C语言或汇编语言等进行编程设计。

其中需要实现对定时器/计数器的初始化、中断服务函数的编写、脉冲输入的捕获和计数功能的实现等操作。

3. 调试验证:编程完成后,进行调试验证,对设计的计数器进行功能测试和性能评估。

通过输入不同的脉冲信号进行测试,验证计数器的计数和显示功能是否正常。

四、设计优化在设计过程中,可以对基于AT89C51单片机的计数器进行优化,以提高其性能和稳定性。

具体优化方法如下:1. 硬件优化:在硬件设计中,可以采用更稳定和精密的外部时钟源、优化数码管驱动电路、加入防抖电路等,以提高计数器的稳定性和抗干扰能力。

2. 程序优化:在软件编程中,可以优化计数算法和显示方式,减少计数误差和提高显示效果。

单片机课程设计--音乐倒数计数器

单片机课程设计--音乐倒数计数器

任务书⏹设计任务:利用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 单片机基础知识单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。

基于AT89C51单片机的计数器设计

基于AT89C51单片机的计数器设计

基于AT89C51单片机的计数器设计一、引言AT89C51是一款功能强大的8位单片机,具有丰富的外设和广泛的应用领域。

计数器是单片机应用中常见的功能模块,可以用于测量时间、统计事件次数等。

本文将介绍基于AT89C51单片机的计数器设计,通过软件和硬件相结合的方式,实现一个简单的计数器功能。

二、AT89C51单片机概述AT89C51是Atmel公司生产的一款典型的8位单片机,具有4KB的内部Flash存储器、128字节的RAM、32个I/O引脚以及定时器、串口等丰富的外设。

它采用的是CISC架构,指令集丰富,易于学习和应用。

AT89C51单片机广泛应用于各种嵌入式系统中,包括工业控制、仪器仪表、家电等领域。

三、计数器设计思路在AT89C51单片机中,可以利用其内部的定时器和外部的计数输入引脚,来实现一个简单的计数器功能。

通过配置定时器和外部中断,可以实现对外部信号的计数。

四、软件设计1. 定时器配置我们需要配置定时器作为计数器的计时基准。

AT89C51单片机具有两个定时器,分别为定时器0和定时器1。

在本设计中,我们选择使用定时器0作为计数器的计时基准。

定时器0是一个16位的定时器,可以通过预置初值和计数溢出中断来实现定时功能。

2. 外部中断配置我们需要配置外部中断来实现对外部信号的计数。

AT89C51单片机具有两个外部中断引脚,分别为INT0和INT1。

在本设计中,我们选择使用INT0引脚来接收外部信号,并实现计数功能。

通过配置外部中断0,当外部引脚的信号发生边沿变化时,可以触发外部中断,从而实现对外部信号的计数。

3. 主程序设计在主程序中,我们需要编写相应的中断服务程序来处理定时器0的溢出中断和外部中断0的触发。

在定时器0的溢出中断服务程序中,可以进行计数器的计数逻辑,而在外部中断0的触发中断服务程序中,可以实现计数器的清零和其他操作。

五、硬件设计1. 外部信号输入我们需要设计一个外部信号的输入电路,用于接收外部信号并输入到AT89C51单片机的INT0引脚。

基于AT89C51单片机的计数器设计

基于AT89C51单片机的计数器设计

基于AT89C51单片机的计数器设计一、引言计数器是数字电路中常用的一种电子仪器,用于计算和记录某一事件的频率、周期和脉冲等。

在数字系统中,计数器可以用来实现频率测量、计时器、分频器和脉冲发生器等功能。

本文将基于AT89C51单片机设计一款简单的计数器,用于演示单片机的基本应用和原理。

二、AT89C51单片机简介AT89C51是由Atmel公司生产的一款8位单片机,采用CMOS工艺制造,具有4KB Flash 存储器、128B RAM和32个I/O端口。

其主要特点包括:8位CPU,时钟经过12个时钟脉冲产生1个机器周期,最大工作频率为24MHz,具有2个16位定时/计数器。

三、设计方案基于AT89C51单片机的计数器设计,我们选用其中的一个16位定时/计数器,并通过编程实现计数功能。

设计方案如下:1.使用定时/计数器模块,设置计数器的初始值为0;2.定时/计数器开始计数,每经过一个时钟周期,计数值加1;3.设计好显示模块,将计数器的值通过数码管或LCD显示出来。

四、硬件设计1.单片机选用AT89C51;2.外部晶振选用11.0592MHz,供单片机工作使用;3.数码管模块,用于显示计数器的值;4.按键模块,用于控制计数器的启停及清零操作。

1.初始化程序,设置好定时/计数器和I/O口的工作状态;2.编写中断服务程序,用于定时/计数器溢出时的处理;3.编写计数器启动、停止及清零的控制程序;4.编写主循环程序,实现计数器的实时显示。

六、程序框图七、程序设计八、实验结果经过硬件和软件的设计与开发,成功实现了基于AT89C51单片机的计数器。

在实验中,通过外部晶振驱动单片机,定时/计数器得到了准确的计数值,并通过数码管显示模块实时显示出来。

按键模块可以实现计数器的启停及清零操作。

实验结果符合设计要求,可以满足基本的计数功能。

九、总结本文基于AT89C51单片机设计了一款简单的计数器,通过硬件和软件的设计和开发,实现了对定时/计数器的使用及控制。

微机原理及应用课程设计基于单片机设计的音乐倒数计数器

微机原理及应用课程设计基于单片机设计的音乐倒数计数器

PCB图,仿真语言程序原理图等全套设计,联系153893706课程设计说明书课程名称: 微机原理及应用课程设计课程代码:题目:基于单片机设计的音乐倒数计数器年级/专业/班: 2009级车辆工程汽电四班学生姓名:学号:开始时间:2012 年07 月02 日完成时间:2012 年07 月06 日课程设计成绩:学习态度及平时成绩(30)技术水平与实际能力(20)创新(5)说明书(计算书、图纸、分析报告)撰写质量(45)总分(100)指导教师签名:年月日目录摘要 (2)1 项目概述和要求 (3)1.1单片机基础知识 (3)1.2 单片机的发展趋势 (4)1.3设计概述和设计要求 (5)2 系统设计 (6)2.1 框图设计 (6)2.2系统硬件电路设计 (7)2.2.1 AT89C51介绍 (7)2.2.2 1602LCD 介绍 (7)2.2.3 键盘介绍 (9)2.2.4 蜂鸣器介绍 (10)3、系统软件设计 (11)3.1 proteus软件环境介绍 (11)3.2 Protel软件环境介绍 (12)3.3流程图 (13)3.4蜂鸣器发声电路原理 (17)4 PROTEUS仿真结果 (19)4.1 电路原理图及仿真 (19)4.2 倒计时设置仿真如下图4-2(a)所示 (21)4.3 蜂鸣器的仿真如下图4-3所示 (22)5 总结 (23)致谢 (24)参考文献 (24)附表(本设计所有程序) (25)摘要单片机技术是一门不可或缺的技术,对我们将来的工作以及生活和学习都有很密切的联系。

近年来,随着电子技术和微机计算机的迅速发展,单片机的档次不断提高,其应用领域也在不断的扩大,已在工业控制、尖端科学、智能仪器仪表、日用家电、汽车电子系统、办公自动化设备、个人信息终端及通信产品中得到了广泛的应用,成为现代电子系统中最重要的智能化的核心部件。

单片机由CPU、一定容量的RAM和ROM构成,定时、计数和多种接口于一体的微控制器。

C51音乐倒数计数器

C51音乐倒数计数器

C51音乐倒数计数器题目要求:利用AT89C51单片机结合字符型LCD显示器设计一个简易的倒数计数器,可用来煮方便面、煮开水或小睡片刻等。

做一小段时间倒计数,当倒计数为0时,则发出一段音乐声响,通知倒计数终了,该做应当做的事。

定时闹钟的基本功能如下。

字符型LCD(16 ´ 2)显示器。

显示格式为“TIME 分分:秒秒”。

用4个按键操作来设置当前想要倒计数的时间。

一旦按下键则开始倒计数,当计数为0时,发出一阵音乐声。

程序执行后工作指示灯LED闪动,表示程序开始执行,按下操作键K1~K4动作如下。

K1—可调整倒计数的时间1~60分钟。

K2—设置倒计数的时间为5分钟,显示“0500”。

K3—设置倒计数的时间为10分钟,显示“1000”。

K4—设置倒计数的时间为20分钟,显示“2000”。

复位后LCD的画面应能显示倒计时的分钟和秒数,此时按K1键运行截图程序代码:#include<reg51.h>#define uchar unsigned char#define uint unsigned int#define busy 0x80sbit k1=P1^0;sbit k2=P1^1;sbit k3=P1^2;sbit k4=P1^3;sbit k5=P1^4;sbit RS=P2^5;sbit RW=P2^6;sbit E=P2^7;sbit led=P2^0;sbit sound=P3^7;uchar code tableee[]=" 20:00 20:00";uchar code tablee[]=" 10:00 10:00";uchar code table[]=" 05:00 05:00";uchar code table1[]={'0','1','2','3','4','5','6','7','8','9'};uchar code table3[]="14 dao ji shi";uchar code table2[]="888888888888";uchar code table5[]=" 05:00";uchar code table4[]=" TIME OUT! ";uchar d,e,num,t,shishi,shige,fenshi,fenge,miaoshi,miaoge,b,b1,a,aa;uint counter=0;uchar code array[]= {0x18, 0x30, 0x1C, 0x10, 0x20, 0x40, 0x1C, 0x10,0x18, 0x10, 0x20, 0x10, 0x1C, 0x10, 0x18, 0x40,0x1C, 0x20, 0x20, 0x20, 0x1C, 0x20, 0x18, 0x20,0x20, 0x80, 0xFF, 0x20, 0x30, 0x1C, 0x10, 0x18,0x20, 0x15, 0x20, 0x1C, 0x20, 0x20, 0x20, 0x26,0x40, 0x20, 0x20, 0x2B, 0x20, 0x26, 0x20, 0x20,0x20, 0x30, 0x80, 0xFF, 0x20, 0x20, 0x1C, 0x10,0x18, 0x10, 0x20, 0x20, 0x26, 0x20, 0x2B, 0x20,0x30, 0x20, 0x2B, 0x40, 0x20, 0x20, 0x1C, 0x10,0x18, 0x10, 0x20, 0x20, 0x26, 0x20, 0x2B, 0x20,0x30, 0x20, 0x2B, 0x40, 0x20, 0x30, 0x1C, 0x10,0x18, 0x20, 0x15, 0x20, 0x1C, 0x20, 0x20, 0x20,0x26, 0x40, 0x20, 0x20, 0x2B, 0x20, 0x26, 0x20,0x20, 0x20, 0x30, 0x80, 0x20, 0x30, 0x1C, 0x10,0x20, 0x10, 0x1C, 0x10, 0x20, 0x20, 0x26, 0x20,0x2B, 0x20, 0x30, 0x20, 0x2B, 0x40, 0x20, 0x15,0x1F, 0x05, 0x20, 0x10, 0x1C, 0x10, 0x20, 0x20,0x26, 0x20, 0x2B, 0x20, 0x30, 0x20, 0x2B, 0x40,0x20, 0x30, 0x1C, 0x10, 0x18, 0x20, 0x15, 0x20,0x1C, 0x20, 0x20, 0x20, 0x26, 0x40, 0x20, 0x20,0x2B, 0x20, 0x26, 0x20, 0x20, 0x20, 0x30, 0x30,0x20, 0x30, 0x1C, 0x10, 0x18, 0x40, 0x1C, 0x20,0x20, 0x20, 0x26, 0x40, 0x13, 0x60, 0x18, 0x20,0x15, 0x40, 0x13, 0x40, 0x18, 0x80, 0x00};char shi,fen,miao;void LCD_init();bit lcd_busy();void write_1602cmd(uchar cmd); //写命令void write_1602Data(uchar Data); //写数据void sound_delay(uchar n);void playmusic();void delay(uchar z);void init(){t=0,led=1;TMOD=0X11; //设置定时器0,置定时器1在工作方式1 TH0=0xff;TL0=0xff;TH1=(65536-50000)/256; //给定时器1装初值TL1=(65536-50000)%256;EA=1; //开启总中断ET0=1; // 开启外部中断0中断ET1=1;// 开启定时器1中断TR0=0;TR1=0;LCD_init();write_1602cmd(0x80);for(num=0;num<14;num++){write_1602Data(table3[num]);delay(5);}write_1602cmd(0x80+0x40);for(num=0;num<12;num++){write_1602Data(table2[num]);delay(5);}}void key_check(){if(k2==0) //5min{delay(10);if(k2==0){for(num=0;num<12;num++){write_1602Data(table[num]);delay(5);}TR1=1;fen=5;miao=0;}}if(k3==0) //10min{delay(10);if(k3==0){write_1602cmd(0x80+0x40);for(num=0;num<12;num++){write_1602Data(tablee[num]);delay(5);}TR1=1;fen=10;miao=0;}}if(k4==0) //20min{delay(10);if(k4==0){write_1602cmd(0x80+0x40);for(num=0;num<12;num++){write_1602Data(tableee[num]);delay(5);}TR1=1;fen=20;miao=0;}}if(k1==0){delay(10);if(k1==0){for(num=0;num<12;num++){write_1602Data(table5[num]);delay(5);}fen = 5;while(k4 != 0){if(k2==0){delay(10);if(k2==0){fen++;fenge=fen%10;fenshi=fen/10;write_1602cmd(0x80+0x40+2);write_1602Data(table1[fenge]);write_1602cmd(0x80+0x40+1);write_1602Data(table1[fenshi]);write_1602cmd(0x0f); //打开光标闪烁while(k2==0);}}if(k3==0){delay(10);if(k3==0){fen--;fenge=fen%10;fenshi=fen/10;write_1602cmd(0x80+0x40+2);write_1602Data(table1[fenge]);write_1602cmd(0x80+0x40+1);write_1602Data(table1[fenshi]);write_1602cmd(0x0f); //打开光标闪烁while(k3==0);}}}TR1=1;write_1602cmd(0x0c); //关闭光标闪烁}}}void main(){a=0,aa=0,d=0;e=0;init();delay(100);while(1){if(TR1 == 0) key_check();while(TR0==1&&TR1==0){playmusic();}}}void time1() interrupt 3 //定时器1中断{TH1=(65536-50000)/256;TL1=(65536-50000)%256;a++;aa++;if(a==20) //定时达到1s{a=0;if(fen==0 && miao==0) //到达了指定时间{TR1=0;TR0=1;led=0;write_1602cmd(0x80+0x40);for(num=0;num<15;num++){write_1602Data(table4[num]);delay(5);goto end; //直接跳出定时器中断}if(miao==0){miao = 59;fen--;fenge=fen%10;fenshi=fen/10;write_1602cmd(0x80+0x40+8);write_1602Data(table1[fenge]);write_1602cmd(0x80+0x40+7);write_1602Data(table1[fenshi]);}miaoge = miao%10;miaoshi = miao/10;write_1602cmd(0x80+0x40+11);write_1602Data(table1[miaoge]);write_1602cmd(0x80+0x40+10);write_1602Data(table1[miaoshi]);miao--;}if(aa==10) //开启流水灯,让它随时间的流动{aa=0;led=~led;write_1602cmd(0x80+0x40+9);if(led ==1){write_1602Data(':');}else{write_1602Data(' ');}}end: //结束了直接跳到这里来;}//********************************************* void delay(uchar z){uchar x,y;for(x=z;x>0;x--)for(y=200;y>0;y--);}bit lcd_busy() //测试LCD忙碌状态{bit result;E= 0;RS= 0; //指令RW= 1; //读出E= 1;delay(4);//高电平读出1usresult = (bit)(P0 & busy);E= 0;return result;}void write_1602cmd(uchar cmd) //写命令{while(lcd_busy());RS=0;delay(5);RW=0;delay(5);E=0;delay(5);P0=cmd;E=1;delay(10);E=0;}void write_1602Data(uchar Data) //写数据{while(lcd_busy());RS=1;delay(5);RW=0;delay(5);E=0;P0=Data;delay(5);E=1;delay(10);E=0;}//lcd初始化void LCD_init(){write_1602cmd(0x01); //清屏delay(5);write_1602cmd(0x38); //功能设定delay(5);write_1602cmd(0x0c); //光标不闪烁delay(5);write_1602cmd(0x06); //lcd模式设定,delay(5);}void sound_delay(uchar n){uchar i;while(n--){for(i=0;i<2;i++);}}void time0() interrupt 1 //定时器0中断{counter=counter+1;//节拍次数计数TH0=0xd8; //定义单位节拍的延时大小TL0=0xef;}void playmusic(){uint i;uchar sound_signal;//定义音符大小uchar sound_pace;while(1){i=0;while(array[i]!=0x00){ //如果是休止符,延时100ms,并终止本次循环,进入下一个循环if(array[i]==0xff){TR0=0;i++;delay(100);continue;} //从表中取得音符?sound_signal=array[i];i=i+1; //从表中取得节拍大小sound_pace=array[i];TR0=1; //当节拍数未达到时候,继续循环,产生该音调的声音while(counter!=sound_pace){sound=~sound;sound_delay(sound_signal);}i++;counter=0;//节拍计数器置0,进入下一个?}delay(10); //歌曲演唱完毕后,延时一段时间}}Proteus 仿真图:。

基于AT89C51带有LCD显示的音乐倒数计数器课程设计

基于AT89C51带有LCD显示的音乐倒数计数器课程设计

摘要单片机技术是一门不可或缺的技术,对我们将来的工作以及生活和学习都有很密切的联系。

近年来,随着电子技术和微机计算机的迅速发展,单片机的档次不断提高,其应用领域也在不断的扩大,已在工业控制、尖端科学、智能仪器仪表、日用家电、汽车电子系统、办公自动化设备、个人信息终端及通信产品中得到了广泛的应用,成为现代电子系统中最重要的智能化的核心部件。

单片机由CPU、一定容量的RAM和ROM构成,定时、计数和多种接口于一体的微控制器。

它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。

而51系列单片机是各单片机中最为典型和最有代表性的一种。

这次课程设计通过对它的学习、应用,从而达到学习、设计、开发软、硬的能力。

本设计利用AT89C51单片机结合字符型LCD显示器设计一个简易的倒数计数器。

用4个按键操作来设置当前想要倒计数的时间。

做一小段时间倒计数,当倒计数为0时,则发出一段音乐声响,通知倒计数终了,该做应当做的事。

应用Proteus的ISIS软件和Keil uVision3来实现该计数器的设计与仿真。

该方法仿真效果真实、准确,节省了硬件资源。

该多功能计数器可以应用于一般的生活和工作中,也可以通过改装,提高性能,增加新功能,从而给人们的生活和工作带来更多的方便。

关键词: AT89C51,计数器,键盘控制,LCD显示,Proteus,Keil目录1 项目概述和要求 (1)1.1 项目概述 (1)1.2 项目要求 (1)2 系统设计 (3)2.1 框图设计 (3)2.2 元件清单 (3)3软件设计 (7)3.1 程序流程图 (7)3.1.1 主程序流程图 (7)3.1.2 蜂鸣器发声程序流程图 (8)3.2 蜂鸣器发声电路原理 (8)3.3 蜂鸣器发声程序的关键代码 (9)4 PROTEUS仿真结果 (10)4.1 总体电路仿真结果 (10)4.2 蜂鸣器发声电路仿真结果 (10)5 总结 (12)参考文献 (13)1 项目概述和要求本项目的任务是利用AT89C51单片机结合字符型LCD显示器设计一个简易的倒数计数器。

音乐倒数计数器

音乐倒数计数器

音乐倒数计数器学院:计算机与控制工程学院专业班级:自动化 082学号: __________________学生姓名:引言随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它给人带来的方便也是不可置否的,人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从单片机技术入手,一切向着数字化控制,智能化控制方向发展。

本设计利用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分钟。

●按K2键---减少倒计数的时间1分钟。

●按K4键---设置完成。

1.2 设计方案音乐倒数计数器所倒数的时间由数字显示,控制器使用单片机AT89C51。

本设计基于单片机技术原理,以单片机芯片AT89C51作为核心控制器,通过硬件电路的制作以及软件程序的编制,设计制作出一个计数器,包括以下功能:输出时间,按下键就开始计时,并将时间显示在LCD1602显示器上。

基于AT89C51单片机的LED数字倒计时器设计

基于AT89C51单片机的LED数字倒计时器设计

课题:基于AT89C51单片机的LED数字倒计时器设计专业:电工程及其自动化班级:2013 级4班学号:姓名:设计日期:2015年6月6日——2015年6月19日成绩:AT89C51单片机LED数字倒计时器设计报告一、设计目的作用1、掌握51单片机最小系统的设计;2、掌握按键电路设计、LED数码管的使用;3、掌握C51的编程方式。

4、培养我们的团结合作能力。

5、锻炼我们的动手实践能力。

二、设计要求基于AT89C51单片机的LED数字倒计时器主要具有如下功能,具体要求如下:(1)LED数码管显示倒计时时间。

(2)倒计时过程中能设置多个闹钟,当倒计时值倒计到设定值时会发出2s的报警声音。

(K1设置小时,K2设置分钟,K3设置秒钟,K4完成退出)(3)通过按键可以对倒计时设定处置。

倒计时初值范围在24:00:00~00:00:60之间,用户可根据需要对其进行设置,设置成功后复位初始值为成功设定值。

三、设计的具体实现1、设计原理(1)LED数字倒计时器主要由AT89C51单片机、晶振电路、复位电路、按键电路、数码管电路、蜂鸣电路组成(如图1.1)。

图1.1 LED数字倒计时器系统设计框图(2)手绘草图2、系统设计(1)晶振电路的分析a.晶振电路原理:晶振是通过电激励来产生固定频率的机械振动,而振动又会产生电流反馈给电路,电路接到反馈后进行信号放大,再次用放大的电信号来激励晶振机械振动,晶振再将振动产生的电流反馈给电路,如此这般。

当电路中的激励电信号和晶振的标称频率相同时,电路就能输出信号强大,频率稳定的正弦波。

整形电路再将正弦波变成方波送到数字电路中供其使用。

b.晶振电路的特点:晶振是石英振荡器的简称,英文名为Crystal,晶振分为有源晶振和无源晶振两种,其作用是在电路产生震荡电流,发出时钟信号。

它是时钟电路中最重要的部件,它的作用是向IC等部件提供基准频率,它就像个标尺,工作频率不稳定会造成相关设备工作频率不稳定,自然容易出现问题。

AT89C51音乐倒数计数器

AT89C51音乐倒数计数器
●与MCS-51 兼容
●4K字节可编程闪烁存储器
●寿命:1000写/擦循环
●数据保留时间:10年
●全静态工作:0Hz-24Hz
●三级程序存储器锁定
●128*8位内部RAM
●32可编程I/O线
●两个16位定时器/计数器
●5个中断源
●可编程串行通道
●低功耗的闲置和掉电模式
●片内振荡器和时钟电路
2.2显示电路——LCD数码管
#define uint unsigned int
#define uchar unsigned char
uint t,flag,flag0,flag1,flag2,flag3,flag4,flag5,minute,second=60;
uchar num,j,i,k=0;
uchar code table[]="TIME 00:00";
图4-1 主程序流程图
图4-3 按键流程图
5 系统的仿真与调试
5.1 硬件调试
硬件调试分为静态调试和动态调试,对于硬件调试而言,只要认真焊接,硬件一般不会出现什么问题的。
静态调试一般采用的工具是万用表,它是在用户系统未工作时的一种硬件检测。
动态调试是在用户系统工作的情况下发现和排查错误的一种硬件检测。调试步骤是:首先把电路分为若干模块,调试过程中与该模块无关的元件可以不加考虑,这样可把故障限定在一定的范围内;故障清除后,把各个模块合在一起进行联调,即可完成整个硬件调试工作。
5 系统的仿真与调试:
5.1 硬件调试---------------------10
5.2 软件调试---------------------11
5.3 软硬件调试-------------------13
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

塔里木大学《单片机原理与外围电路》课程论文基于单片机设计的音乐倒数计数器姓名:古再丽努尔·阿卜来提学号: **********班级:通信工程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)系统整体电路.............................................................................................错误!未定义书签。

全部程序清单. (8)- III -1绪论1.1课题背景及研究意义近年来单片机发展十分迅速,单片机的应用已经渗透到电力、冶金、化工、建材、机械、食品、石油等各个行业[1]。

本设计使用单片机作为核心进行控制。

单片机具有集成度高,通用性好,功能强,特别是体积小,重量轻,耗能低,可靠性高,抗干扰能力强和使用方便等独特优点,在数字、智能化方面有广泛的用途[2]。

1.2国内外现状单片机是指一个集成在一块芯片上的完整计算机系统。

同时集成诸如通讯接口、定时器,实时时钟等外围设备。

而现在最强大的单片机系统甚至可以将声音、图像、网络、复杂的输入输出系统集成在一块芯片上[3] [4]。

单片机也被称为微控制器(Microcontroller),是因为它最早被用在工业控制领域。

最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。

INTEL的Z80是最早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的发展便分道扬镳。

1.3课题的设计目的利用STC89C52单片机结合字符型LCD显示器设计一个简易的倒数计数器。

做一小段时间倒计数,当倒计数为0时,则发出一段音乐声响,通知倒计数终了,该做应当做的事。

1.4课题的主要工作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键---设置完成。

2系统概述2.1方案论证方案一:采用花样显示,花样显示是指LCD显示某一屏字符时,采取从左到右或者是从右到左的整屏移动的显示方式。

在这种显示方式下,给人的感觉就是程序是在执行的,同时如果控制好了移动一屏的时间间隔的话,在整体视觉上可以达到很好的效果。

方案二:采用静态显示,静态显示是指LCD显示某一屏字符时,时钟保持当前字符的显示,不使用移屏显示。

便于控制,同时能够满足正常的显示效果。

由于在显示中存在播放时间的动态变化,这样的话,即使是不产生整屏移动,也能给人动态感,也易于控制。

基于以上各种特点,我选择了方案二2.2系统设计原理本课程设计是利用AT89C51单片机结合字符型LCD显示器设计一个简易的倒数计数器,可用来煮方便面、煮开水或小睡片刻等。

作品先接受用户输入的倒数计数时间,然后由用户启动作品工作(可用一个闪烁的LED灯指示),当倒计数为0时,则发出一段音乐声响,通知倒计数终了,该做应当做的事。

定时闹钟的基本功能如下:1、字符型LCD(16 2)显示器。

2、显示格式为“TIME 分分:秒秒”。

3、用5个按键操作来设置当前想要倒计数的时间。

4、一旦按下键则开始倒计数,当计数为0时,发出一阵音乐声5、程序执行后工作指示灯LCD闪动,表示程序开始执行,按下操作键K1~K4动作如下:K1---可调整倒计数的时间1~60分钟。

K2---设置倒计数的时间为5分钟,显示“0500”。

K3---设置倒计数的时间为10分钟,显示“1000”。

K4---设置倒计数的时间为20分钟,显示“2000”。

6、复位后LCD的画面应能显示倒计时的分钟和秒数,此时按K1键,则在LCD 上显示出设置画面。

此时,若:按K2键---增加倒计数的时间1分钟。

按K3键---减少倒计数的时间1分钟。

按K4键---设置完成。

3系统硬件设计3.1 主控电路设计AT89C51为ATMEL 所生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flsah存储器。

在本系统中,AT89C51单片机内部的功能单元已经能够满足系统设计需要,不需要系统扩展。

主要特性:与MCS-51 兼容、4K字节可编程闪烁存储器、寿命:1000写/擦循环、数据保留时间:10年、全静态工作:0Hz-24MHz 、三级程序存储器锁定、128×8位内部RAM 、32可编程I/O线、两个16位定时器/计数器、5个中断源、5可编程串行通道、低功耗的闲置和掉电模式、片内振荡器和时钟电路。

3.2 LCD液晶显示器接口电路设计LCD1602显示方式的方案比较。

方案一:采用花样显示,花样显示是指LCD显示某一屏字符时,采取从左到右或者是从右到左的整屏移动的显示方式。

在这种显示方式下,给人的感觉就是程序是在执行的,同时如果控制好了移动一屏的时间间隔的话,在整体视觉上可以达到很好的效果。

方案二:采用静态显示,静态显示是指LCD显示某一屏字符时,时钟保持当前字符的显示,不使用移屏显示。

便于控制,同时能够满足正常的显示效果。

由于在显示中存在播放时间的动态变化,这样的话,即使是不产生整屏移动,也能给人动态感,也易于控制。

基于以上各种特点,我选择了方案二。

图2-5 按键控制模块图4系统软件设计4.1主程序设计主程序开始初始化,然后扫描键盘、复位电路和计数器。

当键盘按键有按下时,调整计数器值,LCD 显示新值。

当复位键有按下时,计数器复位为开机画面,当计数6器值倒计为0时,蜂鸣器发出声音,计数器停止倒计,程序结束。

主程序流程图、lcd 显示流程图和按键流程图分别如下图3-1、图3-2和图3-3所示。

图3-3 按键流程图7图4-1 主程序流程图源代码全部程序清单#include <reg51.h>#include <intrins.h>sbit rs= P2^4;sbit rw = P2^5;sbit ep = P2^6;sbit k1=P1^4;sbit k2=P1^5;sbit k3=P1^6;sbit k4=P1^7;sbit k5=P1^3;sbit speaker=P3^0;unsigned char code dis1[] = {"605 "};8unsigned char code dis2[] = {"TIME 00:00"};unsigned char code dis3[] = {"0123456789"};unsigned int num=0;unsigned int miaogw=0;unsigned int miaosw=0;unsigned int fengw=0;unsigned int fensw=0;unsigned char flag=1;unsigned char timer0h,timer0l,time;//世上只有妈妈好数据表code unsigned char sszymmh[]={ 6,2,3, 5,2,1, 3,2,2, 5,2,2, 1,3,2, 6,2,1, 5,2,1,6,2,4, 3,2,2, 5,2,1, 6,2,1, 5,2,2, 3,2,2, 1,2,1,6,1,1, 5,2,1, 3,2,1, 2,2,4, 2,2,3, 3,2,1, 5,2,2,5,2,1, 6,2,1, 3,2,2, 2,2,2, 1,2,4, 5,2,3, 3,2,1,2,2,1, 1,2,1, 6,1,1, 1,2,1, 5,1,6, 0,0,0};// 音阶频率表高八位code unsigned char FREQH[]={0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8,0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC,//1,2,3,4,5,6,7,8,i0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,} ;// 音阶频率表低八位code unsigned char FREQL[]={0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6,0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F,//1,2,3,4,5,6,7,8,i0xEE,0x44, 0x6B,0xB4,0xF4,0x2D,0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16,};void delayyy(unsigned char t){unsigned char t1;unsigned long t2;for(t1=0;t1<t;t1++){for(t2=0;t2<8000;t2++){9;}}TR0=0;}void t0int() interrupt 1{TR0=0;speaker=!speaker;TH0=timer0h;TL0=timer0l;TR0=1;}void song(){TH0=timer0h;TL0=timer0l;TR0=1;delayyy(time);}void delay(unsigned char ms){unsigned char i;while(ms--){for(i = 0; i< 250; i++){_nop_();_nop_();_nop_();_nop_();}}}bit lcd_bz(){bit result;rs = 0;rw = 1;ep = 1;_nop_();_nop_();_nop_();10_nop_();result = (bit)(P0 & 0x80);ep = 0;return result;}void lcd_wcmd(unsigned char cmd){while(lcd_bz());//判断LCD是否忙碌rs = 0;rw = 0;ep = 0;_nop_();_nop_();P0 = cmd;_nop_();_nop_();ep = 1;_nop_();_nop_();ep = 0;}void lcd_pos(unsigned char pos){lcd_wcmd(pos | 0x80);}void lcd_wdat(unsigned char dat){while(lcd_bz());//判断LCD是否忙碌rs = 1;rw = 0;ep = 0;P0 = dat;_nop_();_nop_();ep = 1;_nop_();_nop_();ep = 0;}void lcd_wshuzi(void){lcd_pos(0x47);lcd_wdat(dis3[fensw]);11lcd_pos(0x48);lcd_wdat(dis3[fengw]);lcd_pos(0x4A);lcd_wdat(dis3[miaosw]);lcd_pos(0x4B);lcd_wdat(dis3[miaogw]);}void lcd_init() //LCD初始化{lcd_wcmd(0x38);delay(1);lcd_wcmd(0x0c);delay(1);lcd_wcmd(0x06);delay(1);lcd_wcmd(0x01);delay(1);}void keyscan(void){while(flag){if(k1==0){delay(10);if(k1==0){fensw++;while(!k1);if(fensw==10)fensw=0;}}if(k2==0){delay(10);if(k2==0){fengw++;while(!k2);if(fengw==10)fengw=0;}12}if(k3==0){delay(10);if(k3==0){miaosw++;while(!k3);if(miaosw==10)miaosw=0;}}if(k4==0){delay(10);if(k4==0){miaogw++;while(!k4);if(miaogw==10)miaogw=0;}}if(k5==0)flag=0;lcd_wshuzi();}}void delay1s(void){unsigned char h,i,j,k;for(h=5;h>0;h--)for(i=4;i>0;i--)for(j=116;j>0;j--)for(k=214;k>0;k--);}void main(void){unsigned char j; unsigned char k,i;speaker=0;lcd_init();// 初始化LCDdelay(10);lcd_pos(0x02);//设置显示位置j = 0;13while(dis1[j] != '\0'){lcd_wdat(dis1[j]);//显示字符j++;}while(1){lcd_pos(0x42);// 设置显示位置i = 0;while(dis2[i] != '\0'){lcd_wdat(dis2[i]);// 显示字符i++; }keyscan();num=fensw*600+fengw*60+miaosw*10+miaogw; while(num){num--;fensw=num/60/10;fengw=num/60%10;miaosw=num%60/10;miaogw=num%60%10;delay1s();lcd_wshuzi();}TMOD=1; //置CT0定时工作方式1EA=1;ET0=1;//IE=0x82 //CPU开中断,CT0开中断while(1){i=0;while(i<100){ //音乐数组长度,唱完从头再来k=sszymmh[i]+7*sszymmh[i+1]-1;timer0h=FREQH[k];timer0l=FREQL[k];time=sszymmh[i+2];i=i+3;song();}}14}}整体电路4.2硬件调试硬件调试分为静态调试和动态调试,对于硬件调试而言,只要认真焊接,硬件一般不会出现什么问题的。

相关文档
最新文档