1、基于单片机的模拟手机键盘信息工程学院课程设计报告书题目 : 基于单片机的模拟手机键盘专 业: 电子信息科学与技术班 级: _学 号:学生姓名: _指导教师:2013 年10 月18日1信息工程学院课程设计任务书学 号 学生姓名 专业(班级) 电子信息设计题目 基于单片机的模拟手机键盘单片机晶振频率: 12MHz;电源电压: +5v设计技术参数编程控制单片机端口实现按键输出 09 十个数字并在液晶上显示出来。设计要求两天工作量注:可填写课程设计报告的字数要求或要完成的图纸数量。工作计划1 康华光,陈大钦 . 电子技术基础模拟部分(第五版) M. 北京:高等教育出版社, 2005参考 2 郭天祥
2、.51 单片机 C 语言教程 M. 北京:电子工业出版, 2012资料指导教师签字 教研室主任签字2信息工程学院课程设计成绩评定表学生姓名: 学号: 专业(班级): 电子信息课程设计题目: 基于单片机的模拟手机键盘指导教师评语:成绩:指导教师:年 月 日3摘 要本文是做基于 89C52 单片机的手机键盘的设计;利用 P0 端 3*4 的键值来模拟手机键盘中的数字,将采用编程的方法来实现使用 12 个键来做到 0 到 9 的数字输出和退位清零,并在液晶屏上显示。 手机作为现代移动通信的载体, 其技术也得到了很大的发展, 手机的键盘布局已经成了各大厂商门竞争的主要方面, 本次设计提高了我们对单片机
3、的操作能力, 让我们更加认识到单片机的广阔前景,对于我们更加深入学习和了解单片机提供了极大的帮助。关键词:矩阵键盘, LCD液晶屏, 89C52 单片机。4目录1任务提出与方案论证 .- 2 -1.1方案一 .- 2 -1.2方案二 .- 2 -1.3方案对比与选择 .- 2 -2.系统硬件电路的设计 .- 4 -2.1微处理器的选择 .- 4 -2.2单片机的基本机构 .- 4 -2.3键盘接口电路 .- 5 -2.4消除抖动 .- 6 -3详细设计 .- 7 -3.1程序流程设计 .- 7 -3.2硬件电路设计 .- 8 -4总结.- 9 -参考文献 .-10-附录 .-11- 1 -1
4、任务提出与方案论证1.1 方案一采用 8255 芯片,通过 PA,PB 口输出; PC 的高四位输出,低四位输入;定时器测量两次按键的间隔, 进行手机键盘的模拟; 此种方法思路简单, 能够实现 0 到 9 的数值在数码管上的显示。方框图如图 1.1。主控模块8255 芯片 单片机(AT89C52)键盘扫描Lcd 液晶显示图 1.1 方案一方框图1.2 方案二采用易购的 AT89C52 系列。该方法采用静态显示法来控制 LED 的数值显示, P0 口接锁存器防止总线间的冲突, P0 口输出段码数据, P1.0 口到 P1.8 口接 9 个按键,用于 1 到 26 的数值设置;在硬件电路不变的情况
5、下,通过改变信号来实现数码管的显示。方框图如图 1.2 所示。键盘扫描数据锁存器 LCD 显示AT89C52P0 端口列驱动图 1.2 方案二方框图1.3 方案对比与选择由于方案 2 需要数据锁存器等硬件, 且接口较复杂, 又考虑到数码管显示只- 2 -有 6 位,而且系统没有其他复杂的处理任务; 所以在综合比较之下, 方案 1 显的更加简单明了, 可行性更高; 我们一致决定采用方案 1 来实现 a 到 z 对应的 1 到26 的数值显示。- 3 -2. 系统硬件电路的设计2.1 微处理器的选择1)控制中心使用 MCS-51 来实现2)驱动用 8255 芯片来实现3)显示用 6 个三级数码显示
6、管来实现4)使用 +5V 电源2.2 单片机的基本机构1)MCS-51 单片机内部结构MCS-51 单片机内部包含中央处理器 ( CPU)、程序存储器 (ROM) 、数据存储器 (RAM) 、定时 / 计数器、并行 I/O 接口、串行 I/O 接口和中断系统等几大单元。其内部结构图如图 2.1 所示。振荡器 8051 4KB 掩膜 特殊功能寄存器 定时器 T0 T1ROM SDR 128KBCPU并行 I/O 接口 串行接口 中断系统P0 P1 P2 P3 TXD RXD INT0 INT1图 2.1 单片机 8051 内部结构图单片机的结构有两种类型, 一种是程序存储器和数据存储器分开的形式
7、, 即哈佛 (Harvard)结构,另一种是采用通用计算机广泛使用的程序存储器与数据存储器合二为一的结构,即普林斯顿 (Princeton)结构。 INTEL 的 MCS-51 系列单片机采用的是哈佛结构的形式,而后续产品 16 位的 MCS-96 系列单片机则采用普林斯顿结构。- 4 -1) 中央处理器中央处理器 (CPU)是整个单片机的核心部件,是 8 位数据宽度的处理器,能处理 8 位二进制数据或代码, CPU 负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。2)数据存储器8051 内部有 128 个 8 位用户数据存储单元和 128 个专用寄存器单元,它们
8、是统一编址的, 专用寄存器只能用于存放控制指令数据, 用户只能访问, 而不能用于存放用户数据, 所以,用户能使用的 RAM 只有 128 个,可存放读写的数据,运算的中间结果或用户定义的字型表。3)程序存储器8051 共有 4KB 8 位掩膜 ROM ,用于存放用户程序,原始数据或表格。4)定时 /计数器单片机 8051 内有两个 16 位的可编程定时 /计数器,以实现定时或计数产生中断用于控制程序转向。5)并行输入输出 (I/O) 口单片机 8051 共有 4 组 8 位 I/O 口(P0、 P1、 P2 或 P3),用于对外部数据的传输。6)全双工串行口单片机 8051 内置一个全双工串行
9、通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。7)中断系统单片机 8051 具备较完善的中断功能,有两个外中断、两个定时 /计数器中断和一个串行中断,可满足不同的控制要求,并具有 2 级的优先级别选择。8)时钟电路单片机 8051 内置最高频率达 12MHz 的时钟电路,用于产生整个单片机运行的脉冲时序,但单片机 8051 需外置振荡电容。2.3 键盘接口电路图 2.2 为键盘接口电路的原理图,图中矩阵式键盘和 8255 的 PA 口相连,- 5 -AT89C52 的 PB 和 8255 的 D0 口相连, AT89C52 不断的扫描键盘,看
10、是否有键按下,如有,则根据相应程序对按键作出相应的反应。图 2.2 矩阵式键盘接口图2.4 消除抖动使用键盘时, 由于键的闭合和断开, 此过程中会产生一个抖动期。 抖动时间的长短与开关机械特性有关, 一般为 1020ms。为了保证 CPU 对键的闭合的正确判定,必须去除抖动, 在键的稳定闭合和断开期间读取键的状态。 去除抖动可以采用硬件和软件两种方法。 硬件方法就是在案件输入通道添加去抖动电路, 从根本上避免电压抖动的产生。软件方法则采用延迟 1020ms 的时间,待电压稳定后,在进行状态输入。 由于软件延时方法经济实惠且技术上完全可行, 所以此设计采用软件方法去抖。- 6 -3 详细设计3.
11、1 程序流程设计利用 KEIL 软件编程,使用单片机 P0 口接上拉电阻驱动液晶屏,使用 P3 口连接矩阵键盘扫描按键, 在程序开始运行之后, 首先是对数据进行初始化之后判断按键值,通过键值判断该键值是否设置了相应数值, 有则转入相应的的程序输出数值,若没有则返回继续判断。开始液晶初始化N是否有键按下Y松手检测松手输出数据返回继续扫描图 3.1 主程序流程图- 7 -3.2 硬件电路设计硬件电路使用 PROTEUS软件连线,主要使用 AT89C52单片机芯片和 LM016L液晶芯片 ,LI利用 P0 口驱动液晶,用 P3 口连接矩阵键盘。图 3.2 硬件连接图- 8 -4 总结本系统分硬件与软
12、件两部分, 硬件以单片机 STC89C52 为核心,以 3*4 矩阵键盘为输入端, 并结合 LCD 液晶显示模块模拟手机显示屏, 构成整个硬件系统。软件部分是整个控制器的重要组成部分,设计的好坏关系到系统性能的稳定程度。在控制器的软件中,采用 C 语言设计程序,程序可读性强。 回顾起此次单片机课程设计,我仍感慨颇多,在这两个个星期的日子里, 可以说得是苦多于甜,但是可以学到很多很多的的东西, 我最大的收获就是自己的动手能力和独立解决问题的能力得到了很大的提高, 也充分体会到了自己设计东西的乐趣、 学会查阅资料和别人的东西融会变通的重要性, 也明白了很多知识光靠趴在书本上学是学不到其中的精髓的,
13、必须亲自去试着实践,遇到困难,永远不要沮丧气馁。两周的设计完满结束了,经过自己的努力和同学的帮忙终于有了成果,特别离不开指导老师的悉心教导, 方师的精心指导和解说使我受益匪浅, 相信他的工作作风和知识筑成都是我们学习榜样, 给我很大的启迪。 感谢这些老师不畏辛劳,热心精心的指导。在这里向他们说声谢谢,你们辛苦了。在这里,我们真诚地感谢在本次设计中给予我们许多帮助和支持的指导老师和各位同学们, 真心地祝愿你们身体健康,工作顺利。- 9 -参考文献1 康华光,陈大钦 . 电子技术基础模拟部分(第五版)M. 北京:高等教育出版社,20052 郭天祥 .51 单片机 C 语言教程 M. 北京:电子工业
14、出版, 2012-10-附录程序清单:#include#define uchar unsigned char#define uint unsigned intsbit EN=P20;sbit RS=P21;sbit ring=P22;uchar code table=0123456789;uchar code table2=FISH LEONG;uchar temp,num,num2;char x;void delay(uint z)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);void con(uchar con)RS=0;EN=0;P0=con;delay
15、(1);EN=1;delay(1);EN=0;void date(uchar date)RS=1;EN=0;P0=date;delay(1);EN=1;delay(1);EN=0;void init()x=-1;-11-ring=0;con(0x38);con(0x0e);con(0x06);con(0x01);con(0x80);for(num2=0;num210;num2+)date(table2num2);con(0x80+0x40);void RING()ring=1;delay(100);ring=0;void key_scan()P3=0xfe;temp=P3;temp=temp&
16、0xf0;if(temp!=0xf0)delay(5);temp=P3;temp=temp&0xf0;if(temp!=0xf0)x+;RING();switch(temp)case 0xe0:num=1;break;case 0xd0:num=2;break;case 0xb0:num=3;break;date(tablenum);while(temp!=0xf0)temp=P3;-12-temp=temp&0xf0;P3=0xfd;temp=P3;temp=temp&0xf0;if(temp!=0xf0)delay(5);temp=P3;temp=temp&0xf0;if(temp!=0x
17、f0)x+;RING();switch(temp)case 0xe0:num=4;break;case 0xd0:num=5;break;case 0xb0:num=6;break;date(tablenum);while(temp!=0xf0)temp=P3;temp=temp&0xf0;P3=0xfb;temp=P3;temp=temp&0xf0;if(temp!=0xf0)delay(5);temp=P3;temp=temp&0xf0;if(temp!=0xf0)x+;-13-RING();switch(temp)case 0xe0:num=7;break;case 0xd0:num=8
18、;break;case 0xb0:num=9;break;date(tablenum);while(temp!=0xf0)temp=P3;temp=temp&0xf0;P3=0xf7;temp=P3;temp=temp&0xf0;if(temp!=0xf0)delay(5);temp=P3;temp=temp&0xf0;if(temp!=0xf0)RING();switch(temp)case 0xe0:con(0x80+0x40+x);date( );con(0x80+0x40+x);x-;if(x=-2)init();x=-1;break;case 0xd0:num=0;x+;-14-date(tablenum);break;case 0xb0:init();break;while(temp!=0xf0)temp=P3;temp=temp&0xf0;if(x=16)init();void main()init();while(1)key_scan();-15-
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2