目 录
1. 概述 .................................................................................................. - 3 - 2. 89C51单片机简介 .......................................................................... - 3 - 3. FPGA简介 ...................................................................................... - 3 - 4. 矩阵键盘控制系统 ......................................................................... - 3 - 4.1. FPGA设计框图 ..................................................................... - 3 - 4.2. 单片机硬件实现 .................................................................... - 4 - 4.3. 键盘控制系统子模块 ............................................................ - 4 - 4.3.1 矩阵键盘原理 ................................................................. - 4 - 4.3.2 时钟分频模块 ................................................................. - 5 - 4.3.3 键盘扫描模块 ................................................................. - 6 - 4.3.4 译码转换及三态门输出模块 ......................................... - 6 - 4.3.5 单片机及液晶显示模块部分 ......................................... - 7 - 5. 仿真及结果分析 ............................................................................. - 9 - 5.1 分频模块时序仿真 ................................................................ - 9 - 5.2 键盘扫描模块 ........................................................................ - 9 - 5.3 译码输出模块 ........................................................................ - 9 - 5.4 单片机与液晶显示器模块 .................................................. - 10 - 6. 参考文献........................................................................................ - 11 - 致 谢 .................................................................................................... - 12 - 附 录 .................................................................................................... - 13 -
《智能仪器设计》大作业——基于单片机和FPGA的矩阵键盘控制系统设计
1. 概述
随着可编程逻辑器件及EDA技术的发展,在系统设计中经常会用到FPGA来扩展单片机的相关资源。单片机具有性价比高、功能灵活、易于人机对话、强大的数据处理能力等特点;而FPGA则具有高速、高可靠性以及开发便捷、规范等特点,因此两类器件相结合的电路结构应在许多高性能仪器仪表和电子产品中将被广泛应用。根据两者的特点,设计一种基于89C51单片机与FPGA的总线接口逻辑电路,实现对机械式键盘按键的检测和译码输出。
本系统主要分为四大部分:89C51芯片、FPGA模块、矩阵键盘和液晶显示器。其中FPGA模块主要实现与矩阵键盘接口并发信号对其扫描并得到信号等复杂的逻辑功能,89C51芯片实现将FPGA芯片传来的信号并将其对其信号识别然后将其传给显示器,驱动液晶显示器显示。
2. 89C51单片机简介
89C51是Intel公司生产的一种单片机,在一小块芯片上集成了一个微型计算机的各个组成部分。每一个单片机包括:一个8位的微型处理器CPU;一个256K的片内数据存储器RAM;片内程序存储器ROM;四个8位并行的I/O接口P0-P3,每个接口既可以输入,也可以输出;两个定时器/记数器;五个中断源的中断控制系统;一个全双工UART的串行I/O口;片内振荡器和时钟产生电路,但石英晶体和微调电容需要外接。最高允许振荡频率是12MHZ。以上各个部分通过内部总线相连接。
中央处理器CPU是单片微型计算机的指挥、执行中心,由它读人用户程序,并逐条执行指令。有的指令涉及到各个寄存器之间的关系;有的指令涉及到单片机核心电路内部各功能部件之间的关系;有的则与外部器件如外部程序存储器发生联系。
89C5l单片机的一个执行周期由6个状态(s1—s6)组成,每个状态又持续2个振荡周期,分为P1和P2两个节拍。这样,一个机器周期由12个振荡周期组成。若采用12MHz的晶体振荡器,则每个机器周期为1us,每个状态周期为1/6us;在一数情况下,算术和逻辑操作发生在N期间,而内部寄存器到寄存器的传输发生在P2期间。
89C5l单片机的40个引脚中有2个专用于主电源引脚,2个外接晶振的引脚,4个控制或与其它电源复用的引脚,以及32条输入输出I/O引脚。由于单片机功能多,引脚数少,因而许多引脚具有第2功能;单片机对外呈3总线形式,由P2、P0口组成16位地址总线;由P0口分时复用作为数据总线。
- 1-
《智能仪器设计》大作业——基于单片机和FPGA的矩阵键盘控制系统设计
3. FPGA简介
FPGA(Field Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个新概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。
FPGA的基本特点主要有:
1)采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片;
2)FPGA可做其它全定制或半定制ASIC电路的中试样片; 3)FPGA内部有丰富的触发器和I/O引脚;
4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一;
5) FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。 FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。 加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。
- 2 -
《智能仪器设计》大作业——基于单片机和FPGA的矩阵键盘控制系统设计
4. 矩阵键盘控制系统
4.1. FPGA设计框图
FPGA电路的设计,包括对时钟进行分频,对键盘进行连续扫描,再进一步通过译码等操作,确定按键的位置,译码输出。并进一步将译码得到的8位二进制数经过一个三态门,通过中断信号和RD信号的控制,实现单片机和FPGA的8位数据信号的互连。FPGA总体设计框图如图4-1所示。
图4-1 FPGA总体设计框图
- 3 -
《智能仪器设计》大作业——基于单片机和FPGA的矩阵键盘控制系统设计
4.2. 单片机硬件实现
89C5l单片机接收从FPGA模块传送过来的信号,并对信号进行识别,然后驱动液晶显示器显示信号所代表的按键。单片机硬件接线图如图4-2所示。
图4-2 单片机硬件接线图
4.3. 键盘控制系统子模块
4.3.1 矩阵键盘原理
矩阵键盘又叫行列式键盘。用带IO口的线组成行列结构,按键设置在行列的交点上。例如用3×3的行列式结构可以构成9个键的键盘。这样,当按键数量平方增长时,I/O口只是线性增长,这样就可以节省I/O口。
按键设置在行列线交叉点,行列线分别连接到按键开关的两端。列线通过上拉电阻接3.3V电压,即列线的输出被默认设置为高电平状态,对应的二进制代码即为1。判断键盘中有无按键按下式通过行线送入扫描信号然后从列线读取状态得到的。其方法是依次给行线送低电平,检查列线的输入。如果列线全是高电平,则代表低电平信号所在的行中无按键按下;如果列线有输入为低电平,则代表低电平信号所在的行和出现低电平的列的交点处有按键按下。矩阵键盘的原理图如图4-3所示。
- 4 -