基于51单片机的手机拨号键盘模拟proteus仿真

地址:https://pan.baidu.com/s/1rB8GwWyyNnaIP3Kr4d2obw

提取码:1234

仿真图:

芯片/模块的特点:

AT89C52/AT89C51简介:

AT89C51 是一款常用的 8 位单片机,由 Atmel 公司(现已被 Microchip 收购)生产。它基于标准的 8051 内核,并在此基础上进行了一些增强和改进。以下是 AT89C51 芯片的详细介绍:

  1. 主要特性:

内核: 基于标准的 8051 内核,指令集兼容。

存储器:

程序存储器 (Flash ROM): 4KB 可编程 Flash ROM,用于存储程序代码。 这意味着代码可以被擦除和重新编程,方便开发和调试。

数据存储器 (RAM): 128 字节内部 RAM,用于存储程序运行时的变量和数据。

工作电压: 4.0V - 5.5V。

时钟频率: 0 MHz - 24 MHz。 芯片可以工作在不同的时钟频率下,这影响了指令的执行速度。

I/O 端口: 32 个可编程 I/O 口线,分为 4 个 8 位端口 (P0, P1, P2, P3)。 这些端口可以配置为输入或输出,用于连接外部设备。

定时器/计数器: 两个 16 位定时器/计数器。 用于实现定时和计数功能。

中断: 5 个中断源:2 个外部中断、2 个定时器中断、1 个串口中断。 中断允许单片机响应外部事件,提高系统的实时性。

串行通信: 全双工 UART 串行端口。 用于与其他设备进行串行通信。

功耗模式: 支持空闲模式和掉电模式,以降低功耗。 空闲模式下,CPU 停止工作,但外设继续运行;掉电模式下,所有功能都停止工作,功耗最低。

封装形式: DIP40, PLCC44, TQFP44 等多种封装形式。

  1. 引脚说明 (以 DIP40 为例):

VCC: 电源正极。

GND: 电源地。

P0.0 - P0.7: P0 口,8 位双向 I/O 口。 具有复用功能,可以作为外部存储器的地址/数据总线。

P1.0 - P1.7: P1 口,8 位双向 I/O 口。

P2.0 - P2.7: P2 口,8 位双向 I/O 口。 在访问外部存储器时,提供高 8 位地址。

P3.0 - P3.7: P3 口,8 位双向 I/O 口。 具有第二功能,例如串口通信、外部中断、定时器/计数器输入等。

RST: 复位引脚,高电平有效。

ALE/PROG: 地址锁存允许/编程脉冲。 在访问外部存储器时,用于锁存 P0 口的低 8 位地址。 在编程时,作为编程脉冲输入。

PSEN: 外部程序存储器允许输出。 用于读取外部程序存储器中的指令。

EA/VPP: 外部访问允许/编程电压。 当 EA 为高电平时,单片机首先执行内部程序存储器中的指令;当 EA 为低电平时,单片机只执行外部程序存储器中的指令。 在编程时,用于施加编程电压。

XTAL1, XTAL2: 晶振引脚,用于连接外部晶振,提供时钟信号。

  1. 工作原理:

AT89C51 的工作原理和标准的 8051 单片机类似:

复位: 单片机上电后,首先进行复位操作,使单片机进入初始状态。

取指令: CPU 从程序存储器中读取指令。

译码: CPU 对指令进行译码,确定指令的功能。

执行: CPU 执行指令,例如进行算术运算、逻辑运算、数据传输、控制 I/O 口等。

循环: 重复步骤 2-4,直到程序执行完毕或进入中断服务程序。

  1. 应用领域:

AT89C51 应用非常广泛,包括:

工业控制: 例如电机控制、温度控制、液位控制等。

仪器仪表: 例如数字万用表、示波器、频率计等。

家用电器: 例如洗衣机、空调、电饭煲等。

消费电子: 例如遥控器、玩具、电子钟等。

通信设备: 例如无线模块、传感器网络等。

  1. 编程:

AT89C51 可以使用多种编程语言进行编程,最常用的是 C 语言和汇编语言。

C 语言: C 语言具有结构化、模块化、可移植性强等优点,适合开发复杂的应用程序。常用的 C 语言编译器有 Keil C51 等。

汇编语言: 汇编语言可以直接操作硬件,代码效率高,适合开发对实时性要求高的应用程序。

  1. 优点:

成熟可靠: 8051 内核经过多年的发展和应用,非常成熟可靠。

易于学习: 8051 的指令集简单易懂,学习曲线平缓。

开发工具丰富: 有大量的开发工具和参考资料可供选择。

价格低廉: AT89C51 芯片价格低廉,适合大批量应用。

  1. 缺点:

存储器容量有限: 4KB Flash ROM 和 128 字节 RAM 相对较小,可能不适合复杂的应用程序。

运算速度较慢: 与现代的 32 位单片机相比,运算速度较慢。

外设功能较少: 外设功能相对简单,可能需要使用外部扩展芯片。

在使用AT89C52/AT89C51芯片时,为了确保其稳定运行并延长其使用寿命,需注意以下关键事项:

  1. 电源管理
    电压范围:AT89C52/AT89C51的工作电压范围为4.0V至5.5V,确保电源电压在此范围内,避免过高或过低的电压导致芯片损坏。
    去耦电容:在VCC和GND引脚之间添加0.1μF的去耦电容,以滤除电源噪声,确保电源稳定。
  2. 复位电路
    复位引脚(RST):复位引脚需要在上电时保持高电平(至少2个机器周期)以确保芯片正确复位。可以使用RC电路或专用复位芯片来实现可靠的复位。
    复位时间:确保复位时间足够长(通常为10ms以上),以避免复位不完全。
  3. 时钟设置
    晶振选择:选择符合芯片规格的晶振,典型值为12MHz。确保晶振和负载电容(通常为20pF至30pF)匹配,以保证时钟信号的稳定性。
    时钟引脚:将晶振正确连接到XTAL1和XTAL2引脚,并确保电容接地。
  4. I/O端口配置
    端口模式:在软件中正确配置I/O端口为输入或输出模式,避免端口冲突。
    电流限制:每个I/O引脚的最大输出电流为20mA,整个端口的电流不应超过80mA,以防止芯片过热或损坏。
  5. 编程与擦写
    编程器:使用支持AT89C52/AT89C51的编程器进行代码烧录,确保编程电压和时序正确。
    擦写次数:AT89C52/AT89C51的Flash存储器支持约1000次擦写操作,避免频繁擦写以延长芯片寿命。
  6. 外部存储器接口
    地址和数据线:如果需要扩展外部存储器,确保地址线和数据线连接正确,并添加适当的锁存器(如74HC373)以分离地址和数据。
    控制信号:正确连接ALE、PSEN、EA等控制信号,以确保外部存储器的正常访问。
  7. 热管理
    散热:在高负载或高温环境下,确保芯片有良好的散热条件,必要时可以添加散热片。
    工作温度:芯片的工作温度范围为0°C至70°C(商业级),避免在超出此范围的环境中使用。
  8. 调试与测试
    功能测试:在开发过程中,进行充分的功能测试和压力测试,确保所有模块正常工作。
    调试工具:使用逻辑分析仪、示波器等工具进行调试,观察信号波形,帮助排查问题。
  9. 可靠性与安全性
    防静电:在处理芯片时,佩戴防静电手环或使用防静电工作台,避免静电放电(ESD)损坏芯片。
    电路保护:在电源和I/O端口添加保护电路(如TVS二极管、保险丝等),以提高电路的抗干扰能力和安全性。
  10. 特殊功能寄存器(SFR)
    寄存器配置:在使用定时器、串口、中断等特殊功能时,正确配置相关的特殊功能寄存器(SFR),以确保功能正常运行。
    中断优先级:合理设置中断优先级,避免高优先级中断长时间占用CPU资源,导致低优先级中断无法响应。
  11. 低功耗模式
    空闲模式:在不需要全速运行时,可以进入空闲模式以降低功耗。
    掉电模式:在长时间不使用时,可以进入掉电模式以进一步降低功耗,但需注意在此模式下只有外部中断或硬件复位才能唤醒芯片。

LCD1602液晶屏的特点:

LCD1602液晶屏是一种常见的字符型液晶显示模块,具有以下更详细的特点:

  1. 显示特性:

字符矩阵: 每个字符由 5x8 或 5x10 的点阵组成。 这意味着你可以通过控制这些点来显示不同的字符。

显示容量: 16 字符/行 x 2 行。总共 32 个字符的显示空间。

可视角度: 通常在一定范围内具有良好的可视角度,但视角过大或过小可能会导致对比度下降或显示模糊。

对比度调节: 大多数 LCD1602 模块都带有对比度调节功能,可以通过一个电位器来调节显示的清晰度。

可定制字符 (CGRAM): LCD1602 允许用户自定义少量字符,通常是 8 个。 这允许你显示一些简单的符号或图形,但自定义过程相对复杂。

  1. 接口特性:

并行接口: LCD1602 使用并行接口进行数据传输。 这意味着多个数据位同时传输,通常使用 4 位或 8 位数据线。

4 位模式: 节省 I/O 口线,但数据传输速度较慢。

8 位模式: 数据传输速度较快,但占用更多的 I/O 口线。

控制信号: 主要的控制信号包括:

RS (Register Select): 用于选择是写入指令寄存器还是数据寄存器。

RW (Read/Write): 用于选择是读取 LCD 的数据还是向 LCD 写入数据。

E (Enable): 使能信号,用于启动数据传输。

背光控制: 有些 LCD1602 模块带有背光控制引脚,可以通过控制该引脚来开关背光。

  1. 控制器特性 (HD44780 兼容):

指令集: HD44780 控制器有一套标准的指令集,用于控制 LCD 的各种功能,例如:

清屏: 清除 LCD 上的所有显示内容。

光标控制: 控制光标的移动和显示方式。

显示模式设置: 设置显示模式,例如光标是否闪烁,字符是否移动等。

初始化: 对 LCD 进行初始化,设置显示模式和接口方式。

数据读写: 通过控制 RS 和 RW 信号,可以读取 LCD 的状态和数据,也可以向 LCD 写入指令和数据。

忙标志: HD44780 控制器会设置一个忙标志,用于指示 LCD 是否正在执行操作。 在写入指令或数据之前,需要先读取忙标志,确保 LCD 处于空闲状态。

  1. 电气特性:

工作电压: 通常为 5V,也有 3.3V 的版本。

工作电流: 较低,通常在几毫安到几十毫安之间。

背光电流: 背光电流相对较高,取决于背光的类型和亮度。

  1. 优缺点:

优点:

易于使用:控制方式简单,容易上手。

价格低廉:成本较低,适合各种应用。

功耗低:适合电池供电的应用。

显示清晰:能够清晰地显示字符。

尺寸小巧:便于集成到各种设备中。

缺点:

显示内容有限:只能显示 ASCII 字符,无法显示复杂的图形或汉字。

可视角度有限:视角过大或过小可能会导致显示效果不佳。

响应速度较慢:与 OLED 等显示技术相比,响应速度较慢。

需要外部控制器:需要使用 HD44780 兼容的控制器进行驱动。

矩阵键盘的工作原理:

  1. 硬件连接:

行列线: 矩阵键盘由若干行线 (Row) 和列线 (Column) 组成,按键位于行线和列线的交叉点上。

连接方式: 每个按键的一端连接到一条行线,另一端连接到一条列线。

I/O 口: 行线和列线分别连接到微控制器的 I/O 端口。例如,一个 4x4 的矩阵键盘需要 4 根行线和 4 根列线,总共占用 8 个 I/O 口。

  1. 工作原理 (扫描过程):

矩阵键盘的工作原理基于行列扫描法,通过循环扫描行线和列线来检测按键状态。 通常的扫描过程如下:

步骤 1: 设置行线为输出,列线为输入 (或者反过来)。

步骤 2: 行扫描 (以行线为输出为例)。

方法: 逐行输出低电平,其余行输出高电平。 例如,先设置第一行为低电平,其余行为高电平,然后读取列线的状态。

读取列线: 读取所有列线的电平。

如果某一列为低电平,则说明该列与当前输出低电平的行线相交处的按键被按下。

如果所有列线都为高电平,则说明当前行没有按键被按下。

步骤 3: 重复行扫描。 依次将每一行设置为低电平,并读取列线状态,直到所有行都扫描完毕。

步骤 4: 列扫描 (可选,用于消除抖动和提高可靠性)。

如果行扫描检测到有按键按下,可以进行列扫描来进一步确认。

方法: 类似于行扫描,逐列输出低电平,并读取行线状态。

确认按键: 如果行扫描和列扫描都检测到同一个按键被按下,则可以确认该按键确实被按下了。

  1. 消抖处理:

机械抖动: 机械按键在按下或释放时,会产生短暂的抖动,导致微控制器多次检测到按键信号。

消抖方法:

软件消抖: 在程序中加入延时,等待按键稳定后再读取按键状态。 例如,检测到按键按下后,延时 10-20 毫秒,再次读取按键状态,如果仍然是按下状态,则确认按键被按下。

硬件消抖: 使用 RC 滤波电路来消除抖动。

  1. 举例说明 (4x4 矩阵键盘):

假设有一个 4x4 的矩阵键盘,行线为 Row1-Row4,列线为 Col1-Col4。

行扫描:

Row1 = 0, Row2 = 1, Row3 = 1, Row4 = 1; 读取 Col1-Col4。 如果 Col2 = 0,则说明 Row1 和 Col2 交叉处的按键被按下。

Row1 = 1, Row2 = 0, Row3 = 1, Row4 = 1; 读取 Col1-Col4。

Row1 = 1, Row2 = 1, Row3 = 0, Row4 = 1; 读取 Col1-Col4。

Row1 = 1, Row2 = 1, Row3 = 1, Row4 = 0; 读取 Col1-Col4。

确定按键: 根据行扫描和列扫描的结果,可以确定哪个按键被按下。

  1. 优点:

节省 I/O 口: 与直接连接方式相比,矩阵键盘可以使用更少的 I/O 口控制更多的按键。

成本低: 硬件成本较低,只需要简单的导线和按键。

  1. 缺点:

软件复杂: 需要编写扫描程序来检测按键状态,增加了软件的复杂性。

多键同时按下问题: 如果多个按键同时按下,可能会导致检测错误 (串键)。 一些高级的矩阵键盘设计可以解决这个问题。

相关推荐
gmmi1 小时前
嵌入式学习 51单片机(3)
单片机·学习·51单片机
wanhengidc1 小时前
云手机可以息屏挂手游吗?
运维·网络·安全·游戏·智能手机
dujunqiu3 小时前
S32K328上芯片内部RTC的使用和唤醒配置
mcu·计算机外设
wanhengidc9 小时前
云手机的空间会占用本地内存吗
科技·游戏·智能手机
wanhengidc10 小时前
网页版的云手机都有哪些优势?
运维·网络·安全·游戏·智能手机
未来之窗软件服务11 小时前
自制扫地机器人 (五) Arduino 手机远程启停设计 —— 东方仙盟
智能手机·机器人·扫地机器人·仙盟创梦ide·东方仙盟
WillWolf_Wang12 小时前
Linux 编译 Android 版 QGroundControl 软件并运行到手机上
android·linux·智能手机
Digitally15 小时前
如何将联系人从 iPhone 转移到 Redmi 手机
ios·智能手机·iphone
智者知已应修善业17 小时前
【51单片机8*8点阵显示箭头动画详细注释】2022-12-1
c语言·经验分享·笔记·嵌入式硬件·51单片机