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

合集下载

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

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

基于AT89C51单片机的计数器设计一、引言在现代社会中,计数器是一种非常常见的电子设备,它可以对某一事件或物体进行计数,并对计数结果进行显示、记录或控制。

计数器广泛应用于工业控制、电子设备、仪器仪表等领域。

本文将基于AT89C51单片机设计一款简单的计数器,并通过实验来验证其功能。

二、AT89C51单片机简介AT89C51是一款由意法半导体公司(STMicroelectronics)生产的一款高性能、低功耗的单片机芯片。

它具有8位的CPU、4KB的Flash存储器、128B的RAM,以及32个通用I/O 端口。

AT89C51单片机集成了多种功能模块,包括定时器、串行通信接口、中断控制器等,适合于需要较高性能的嵌入式系统。

三、计数器设计1. 硬件设计在本设计中,我们将使用AT89C51单片机作为核心控制器,外接数码管进行计数结果的显示。

我们还将使用按键进行计数器的操作,包括计数、清零等功能。

硬件电路设计如下:- AT89C51单片机- 7段数码管(共阳极)- 74595移位寄存器- 按键- 电阻、电容等元件2. 软件设计在软件设计中,我们将使用C语言编程,并调用单片机的相关接口函数来实现计数器的功能。

主要包括以下几个方面的功能:- 初始化:对单片机的相关GPIO口进行初始化,包括数码管、按键等。

- 计数:通过按下计数按钮触发计数功能,将计数结果存储在单片机内部的变量中。

- 显示:将计数结果显示在数码管上,通过74595移位寄存器进行驱动。

- 清零:通过按下清零按钮触发清零功能,将计数结果清零。

四、实验验证为了验证上述设计的正确性,我们将进行一个实验。

我们将使用AT89C51单片机、数码管、按键等元件进行搭建,然后编写软件程序进行测试。

1. 硬件搭建我们需要按照硬件设计的原理图进行搭建。

将AT89C51单片机、数码管、按键等元件按照原理图连接好,并进行电源连接。

2. 软件编程接下来,我们需要编写C语言程序,将程序下载到单片机中。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

基于AT89C51单片机的计数器设计单片机(Microcontroller)是一种集成了微处理器、存储器和各种输入输出功能的芯片,广泛应用于嵌入式系统中。

AT89C51单片机是英特尔公司生产的一款典型的8位微控制器,其具有强大的功能和灵活的设计特性,被广泛应用于工业控制、汽车电子、消费类电子产品等领域。

在众多应用中,计数器是一种常见的电子器件,被广泛应用于各种领域,比如工业控制、实验测量、智能家居等。

基于AT89C51单片机的计数器设计,可以实现对信号的计数和显示,具有较高的稳定性和可靠性。

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

首先介绍AT89C51单片机的基本特性和引脚布局,然后讨论计数器的原理和设计思路,最后给出具体的设计方案和实现步骤。

一、AT89C51单片机的基本特性和引脚布局AT89C51是一款高性能、低功耗的8位CMOS微控制器,其主要特性包括:1. 内置4KB闪存程序存储器,用于存储用户程序;2. 128字节RAM,用于存储临时数据和寄存器;3. 32个通用I/O引脚,用于连接外部器件和传感器;4. 完整的串行通信接口(UART),用于与外部设备进行通信;5. 定时器/计数器和PWM输出,用于实现各种定时和计数功能;6. 多种工作模式选择,包括被动低功耗模式和中断工作模式。

AT89C51单片机的引脚布局如下图所示:(图片)P0、P1、P2和P3是AT89C51单片机的四个通用I/O端口,分别具有8个引脚,用于连接外部设备和传感器。

X1和X2是晶体振荡器的输入和输出端,用于提供时钟信号。

RESET 是复位端,用于复位单片机。

EA和PSEN是扩展ROM控制端和程序存储器的读取端,用于外接ROM和实现程序存储。

ALE/PROG是地址锁存器的输入,用于地址总线的多路选择。

RXD 和TXD是串行通信接口的接收和发送端口,用于与外部设备进行通信。

二、计数器的原理和设计思路计数器是一种常用的数字电路,用于对输入信号进行计数和显示。

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

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

89C51的定时器、计数器解析

89C51的定时器、计数器解析
24
(2)计算T1初值
设T1的初值为X: 则 (28-X)×2×10-6=5×10-4
X=28-250=6=06H
(3)程序设计
ORG 0000H
RESET: LJMP MAIN ;复位入口转主程序
ORG 000BH
LJMP IT0P ;转T0中断服务程序
ORG 001BH
LJMP IT1P
;转T1中断服务程序
SETB F0
;建立T0产生中断的标志
RETI
IT1P: CPL P1.0
;T1中断服务,P1.0位取反
RETI
END
26
4、工作方式 3
两个独立的计数器
TL0使用T0的资源 (TR0、TF0、INT0、 GATE、G/T)
TH0被固定为1个独 立的8位定时器(无 外部计数功能),并 注:当T1用作串行口的波特率发生器时,T0才工作在方式3。 使用T1的资源(TR1、 TF1)
7
三、定时计数器的控制寄存器
1、工作方式寄存器TMOD
控制T1
控制T0
D7 D6 D5 D4 D3 D2 D1 D0
字节
TMOD GATE1 C/ T1 M1 M0 GATE0 C/T0 M1 M0 地址
89H
00:方式0
门控位 定时/计数选择
方式选择 0:定时器 1:计数器
01:方式1 10:方式2 11:方式3
✓采用可编程芯片定时:这种定时方法是通过对系统时钟脉冲的计数来 实现的。计数值通过程序设定,改变计数值,也就改变了定时时间,使 用起来既灵活有方便。
结论:MCS-51单片机把定时电路集成在芯片中,称之为定时器/计数 器。
8051型单片机有两个定时/计数器,分别称为定时器/计数器0和定 时器/计数器1。

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

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

随着人们生活水平的不断提高,单片机 控制 无疑 是人们追 求 的 目标之一 ,要为现代人工作、科研、生活、提供更好 的更 方 便的设施就 需要 从单片机技术入手 ,一切 向着数 字化控制 , 智 能化控 制方 向发展 。本 设计基 于 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 等 点 阵 字 符 位 组 成 ,每 个 点 阵 字 符 位都可以显示一个字符 ,每位之 间有一个点距 的间隔 ,每行之 间也有间隔,起 到了字符 间距和行 间距 的作用 。
  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硬件调试硬件调试分为静态调试和动态调试,对于硬件调试而言,只要认真焊接,硬件一般不会出现什么问题的。

相关文档
最新文档