基于AT89S52单片机的44矩阵键盘设计毕业论文.doc

上传人:h**** 文档编号:130925 上传时间:2018-07-09 格式:DOC 页数:75 大小:637KB
下载 相关 举报
基于AT89S52单片机的44矩阵键盘设计毕业论文.doc_第1页
第1页 / 共75页
基于AT89S52单片机的44矩阵键盘设计毕业论文.doc_第2页
第2页 / 共75页
基于AT89S52单片机的44矩阵键盘设计毕业论文.doc_第3页
第3页 / 共75页
基于AT89S52单片机的44矩阵键盘设计毕业论文.doc_第4页
第4页 / 共75页
基于AT89S52单片机的44矩阵键盘设计毕业论文.doc_第5页
第5页 / 共75页
点击查看更多>>
资源描述

1、 单片机系统开发与应用工程实习 报告 选题名称 : 基于 AT89S52单片机的 4*4矩阵键盘设计 系(院) : 专 业 : 计算机科学与技术(嵌入式方向) 班 级 : 姓 名 : 学 号 : 指导教师 : 学年学期 : 2009 2010 学年 第 2 学 期 2010 年 5 月 30 日 摘要: 嵌入式系统已经在现代生活中伴演着越来越重要的角色, 单片机就是一个最典型的嵌入式系统 ,单片机的应用也越来越广泛。 目前单片机功能正日渐完善 :单片机集成越来越多资源,内部存储资源日益丰富,用户不需要扩充资源就可以完成项目开发,不仅是开发简单,产品小巧美观,同时抗干扰能力加强 ,系统也更加稳定

2、,使得它更加适合工业控制领域,具有更加广阔的市场前景;提供在线编程能力,加速了产品的开发进程,为企业产品上市赢得宝贵时间。此外单片机具有性能高、速度 快、体积小、价格低、稳定可靠、应用广泛、通用性强等突出优点。单片机的设计目标主要是增强“控制”能力,满足实时控制 (就是快速反应 ) 的需要。因此,掌握单片机的基础和实际应用来说意义重大。 键盘作为一种最为普通的输入工具在单片机项目应用上显得尤为重要。 关键词 : 键盘 ; 单片机 ; 数码管 ; 扫描 目录 1 设计目的 . 1 2 设计原理 . 1 2.1 设计电路图 . 1 2.2 程序流程图 . 1 2.3 硬件说明 . 2 3 程序设计

3、 . 6 3.1 按键过程分析 . 6 3.2 源程序( C 语言) . 7 4 程序调试 .12 5 仿真测试 .12 6 实物实现 .13 总 结 .14 参考文献 .15 单片机系统开发与应用工程实习 计报告 1 1 设计目的 在数码管上显示每个按键的 0 F.对应按键的序号如图 1-1,要实现按哪个键就在数码管上显示哪个数字或字母。 图 1-1 键盘正面图 2 设计原理 2.1 设计电路图 图 2-1 电路原理图 如图 2-1 所示, 把系统中单片机的 p3.0-p3.7 端口连接到 4*4 行列式键盘端口上;具体为: P3.0-p3.3 接行线, p3.4-p3.7 接列线;把系统中

4、单片机的 p0.0/AD0-p0.6/AD6端口连接到共阳数码管的 a-g 端口,并一一对映。 p0.0/AD 对应 a,依次对应。 整个电路由复位电路,晶振电路,主控制块,键盘扫描模块, LED 显示模块,电源电路组成。 2.2 程序流程图 单片机系统开发与应用工程实习 计报告 2 图 2-2 程序流程图 如图 2-2 所示,每个按键都有他的行值和列值,行值和列值的组合就是识别这个按键的编码。 矩阵的行线和列线通过两个并行接口和单片机通信。每个案件的状态同样需要变成数字量 0 和 1,开关的一端(列线)通过电阻接 +5V,而接地时通过程序输出数字 0 实现的。键盘处理程序的任务是:确定有无键

5、按下,判断哪一个键按下,键的功能是什么;还要消除按键在闭合或断开时的抖动。在两个并行口中,一个输出扫描码,使按键逐行动态接地;另一个并行口输入按键状态,由行扫描值和回馈信号共同行成键编码而识别按键,通过软件查表,查出该键的功能。 2.3 硬件说明 图 2-3 共阳数码管 共阳数码管就是把每个 LED 灯的阳极接在共同接点 com,而每个 LED 灯的阴极分别为 a,b,c,d,e,f,g,dp;通过控制 LED 灯的亮灭来显示数字。 数码管跟据接收到的字形码显示数字。 单片机系统开发与应用工程实习 计报告 3 图 2-4 74ls245 芯片 74LS245 是我们常用的芯片,用 来驱动 le

6、d 或者其他的设备,它是 8 路同相三态双向总线收发器,可双向传输数据。 74LS245 还具有双向三态功能,既可以输出,也可以输入数据。当 8051 单片机的 P0 口总线负载达到或超过 P0 最大负载能力时,必须接入74LS245 等总线驱动器。 图 2-5 AT89S52 单片机实物图 At89s52 是一种低功耗、高性能 CMOS8 位微控制器,具有 8K 在系统可编程 Flash 存储器。使用 Atmel 公司高密度非 易失性存储器技术制造,与工业 80C51 产品指令和引脚完 全兼容。片上 Flash 允许程序存储器 在系统可编程,亦适于 常规编程器。在单芯片上,拥有灵巧的 8 位

7、 CPU 和在系统 可编程 Flash,使得 AT89S52 为众多嵌入式控制应用系统提 供高灵活、超有效的解决方案。 AT89S52 具有以下标准功能: 8k字节 Flash, 256 字节 RAM, 32 位 I/O 口线,看门狗定时器, 2 个数据指针,三个 16 位 定时器 /计数器,一个 6 向量 2 级中断结构,全双工串行口, 片内晶振及时钟电路。另外, AT89S52 可降至 0Hz 静态逻 辑操作,支持 2 种软件可选择节电模式。空闲模式下, CPU 停止工作,允许 RAM、 定时器 /计数器、串口、中断继续工 作。掉电保护方式下, RAM 内容被保存,振荡器被冻结, 单片机一

8、切工作停止,直到下一个中断或硬件复位为止。 8 位微控制器 8K 字节在系统可编程 Flash AT89S52 单片机系统开发与应用工程实习 计报告 4 图 2-6AT89S52 单片机引脚图 P0 口: P0 口是一个 8 位漏极开路的双向 I/O 口。作为输出口,每位能驱动 8 个 TTL 逻 辑电平。对 P0 端口写 “1” 时,引脚用作高阻抗输入。 当访问外部程序和数据存储器时, P0 口也被作为低 8 位地址 /数据复用。在这种模式下, P0 具有内部上拉电阻。 在 flash 编程时, P0 口也用来接收指令字节;在程序校验时,输出指令字节。程序校验 时,需要外部上拉电阻。 P1

9、口: P1 口是一个具有内部上拉电阻的 8 位双向 I/O 口, p1 输出缓冲器能驱动 4 个 TTL 逻辑电平。对 P1 端口写 “1” 时,内部上拉电阻把端口拉高,此时可以作为输入 口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流( IIL)。 此外, P1.0 和 P1.2 分别作定时器 /计数器 2 的外部计数输入( P1.0/T2)和时器 /计数器 2 的触发输入( P1.1/T2EX),具体如下表所示。 在 flash 编程和校验时, P1 口接收低 8 位地址字节。 引脚号第二功能 P1.0 T2(定时器 /计数器 T2 的外部计数输入),时钟输出 P1.

10、1 T2EX(定时器 /计数器 T2 的捕捉 /重载触发信号和方向控制) P1.5 MOSI(在系统编程用) P1.6 MISO(在系统编程用) 单片机系统开发与应用工程实习 计报告 5 P1.7 SCK(在系统编程用) P2 口: P2 口是一个具有内部上拉电阻的 8 位双向 I/O 口, P2 输出缓冲器能驱动 4 个 TTL 逻辑电平。对 P2 端口写 “1” 时,内部上拉电阻把端口拉高,此时可以作为输入 口使用。作为输入使用时,被外部拉低的引脚由于内 部电阻的原因,将输出电流( IIL)。 在访问外部程序存储器或用 16位地址读取外部数据存储器(例如执行 MOVX DPTR) 时, P

11、2 口送出高八位地址。在这种应用中, P2 口使用很强的内部上拉发送 1。在使用 8 位地址(如 MOVX RI)访问外部数据存储器时, P2 口输出 P2 锁存器的内容。 在 flash 编程和校验时, P2 口也接收高 8 位地址字节和一些控制信号。 P3 口: P3 口是一个具有内部上拉电阻的 8 位双向 I/O 口, p3 输出缓冲器能驱动 4 个 TTL 逻辑电平。对 P3 端口写 “1” 时,内部上拉电阻把端口拉高,此时可以作为输入 口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流( IIL)。 P3 口亦作为 AT89S52 特殊功能(第二功能)使用,如下表

12、所示。 在 flash 编程和校验时, P3 口也接收一些控制信号。 端口引脚 第二功能 P3.0 RXD(串行输入口 ) P3.1 TXD(串行输出口 ) P3.2 INTO(外中断 0) P3.3 INT1(外中断 1) P3.4 TO(定时 /计数器 0) P3.5 T1(定时 /计数器 1) P3.6 WR(外部数据存储器写选通 ) P3.7 RD(外部数据存储器读选通 ) 此外, P3 口还接收一些用于 FLASH 闪存编程和程序校验的控制信号。 RST 复位输入。当振荡器工作时, RST 引脚出现两个机器周期以上高电平将是单片机系统开发与应用工程实习 计报告 6 单片机复位。 AL

13、E/PROG 当访问外部程序存储器或数据存储器时, ALE(地址锁存允许)输出脉冲用于锁存地址的低 8 位字节。一般情况下, ALE 仍以时钟振荡频率的 1/6 输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注 意的是:每当访问外部数据存储器时将跳过一个 ALE 脉冲。 对 FLASH 存储器编程期间,该引脚还用于输入编程脉冲( PROG)。 如有必要,可通过对特殊功能寄存器( SFR)区中的 8EH 单元的 D0 位置位,可禁止 ALE 操作。该位置位后,只有一条 MOVX 和 MOVC 指令才能将 ALE 激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置 ALE 禁

14、止位无效。 PSEN 程序储存允许( PSEN)输出是外部程序存储器的读选通信号,当 AT89C52由外部程序存储器取指令(或数据)时,每个机器周期两次 PSEN 有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次 PSEN 信号。 EA/VPP 外部访问允许,欲使 CPU仅访问外部程序存储器(地址为 0000H-FFFFH),EA 端必须保持低电平(接地)。需注意的是:如果加密位 LB1 被编程,复位时内部会锁存 EA 端状态。 如 EA 端为高电平(接 Vcc 端), CPU 则执行内部程序存储器的指令。 FLASH 存储器编程时,该引脚加上 +12V 的编程允许电源 Vpp

15、,当然这必须是该器件是使用 12V 编程电压 Vpp。 3 程序设计 3.1 按键过程分析 行信号 ( KEY)接到高电平,当没有键按时,行线与列线( KEYSCAN)是断开的,且行线都是高电平( 1111),行信号作为 FPGA 的输入端、列信号作为 FPGA 的输出端。可以设置列线初始状态为低电平( 0000)。信号为从上到下的顺序 当有键按下时,假如是 K1 按下,行信号与列信号接通,这时相应的行线( KEY0)变为低电平( 01111),可以肯定第一行( K1, 5, 9, 13)有键按下。 运用扫描的原理: 1、因为只知道第一行有键按下,不知道是那个,可以设置列信号为 0111,这时

16、行信号变为( 1111)(注:假设时钟周期很短, 手还没松开,即键还在按下的状态) 2、设置列信号为 1011,行信号也变成( 1111) 单片机系统开发与应用工程实习 计报告 7 3、设置列信号为 1101,行信号也变成( 1111) 4、设置列信号为 1110,行信号也变成( 0111),这时就可以肯定是第一个键按下。 3.2 源程序( C 语言) #include unsigned char code table=0xC0,0xF9,0xA4,0xB0, 0x99,0x92,0x82,0xF8, 0x80,0x90,0x88,0x83, 0xC6,0xA1,0x86,0x8E; unsi

17、gned char temp; unsigned char key; unsigned char i,j; void main(void) while(1) P3=0xff; /给 P3 口置 1 P3_4=0; /给 P3.4 这条线送入 0 temp=P3; temp=temp /屏蔽低四位 if (temp!=0x0f) /看是否有按键按下 for(i=50;i0;i-) for(j=200;j0;j-); /延时,消除抖动 temp=P3; temp=temp if (temp!=0x0f) /再次判断按键是否按下 temp=P3; temp=temp switch(temp) /判断与 P3.4 相连的哪个键按下了

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文资料库 > 毕业论文

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。