单片机课程设计4X4矩阵键盘显示.doc_第1页
单片机课程设计4X4矩阵键盘显示.doc_第2页
单片机课程设计4X4矩阵键盘显示.doc_第3页
单片机课程设计4X4矩阵键盘显示.doc_第4页
单片机课程设计4X4矩阵键盘显示.doc_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机原理及应用课程设计说明书题目液晶显示4*4矩阵键盘按键号程序设计系(部)电子与通信工程系专业(班级)电气1班姓名 学号 指导教师 起止日期2014.5.192014.5.30单片机技术及应用课程设计任务书课题名称液晶显示4*4矩阵键盘按键号程序设计设计内容及要求(1)课题内容:设计一个基于单片机的液晶显示4*4矩阵键盘按键号程序功能要求:用AT89S52 单片机并行口P1 接4*4 矩阵键盘,以P1.0、P1.3 作输入线;以P1.4、P1.7 作输出线,按下任意键,都会在在LCD12864 的第一行上显示每个按键的0F 序号,同时12864 的第二行显示本行姓名、班级,第三行显示本人学号。 (2)要求: 完成该系统的硬件和软件的设计,在proteus软件上仿真通过,提交一份课程设计说明书。计工作量1、汇编或C51语言程序设计;2、程序调试,在Proteus上进行仿真;3、提交一份完整的课程设计说明书,包括封面,中文摘要,目录,正文(正文主要包括:设计原理、程序设计、程序分析、仿真分析、调试过程,调试结果等部分),参考文献、设计总结等。进度安排起止日期(或时间量)设计内容(或预期目标)备注第一天课题介绍,答疑,收集材料,C51介绍第二天设计方案论证,练习编写C51程序第三天第六天程序设计第六天第八天 程序调试、仿真第九天第十天系统测试并编写设计说明书教研室意见年 月 日系(部)主管领导意见年 月 日 目录前 言5一、课程设计目的6二、设计内容及原理62.1 单片机控制系统原理62.2阵键盘识别显示系统概述62.3键盘电路72.4 12864显示器82.5整体电路图92.6仿真结果9三、实验心得与体会10四、实验程序10参考文献18前 言单片机,全称单片微型计算机(英语:Single-Chip Microcomputer),又称微控制器(Microcontroller),是把中央处理器、存储器、定时/计数器(Timer/Counter)、各种输入输出接口等都集成在一块集成电路芯片上的微型计算机。与应用在个人电脑中的通用型微处理器相比,它更强调自供应(不用外接硬件)和节约成本。它的最大优点是体积小,可放在仪表内部,但存储量小,输入输出接口简单,功能较低。由于其发展非常迅速,旧的单片机的定义已不能满足,所以在很多应用场合被称为范围更广的微控制器;从上世纪80年代,由当时的4位、8位单片机,发展到现在的32位300M的高速单片机。现代人类生活中所用的几乎每件有电子器件的产品中都会集成有单片机。手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电子产品中都含有单片机。 汽车上一般配备40多片单片机,复杂的工业控制系统上甚至可能有数百片单片机在同时工作!单片机的数量不仅远超过PC机和其他计算机的总和,甚至比人类的数量还要多。液晶显示器(英语:Liquid Crystal Display,缩写:LCD)为平面薄型的显示设备。它的主要原理是以电流刺激液晶分子产生点、线、面配合背部灯管构成画面。由一定数量的彩色或黑白像素组成,放置于光源或者反射面前方。液晶显示器功耗低,因此倍受工程师青睐,适用于使用电池的电子设备。英国科学家在上世纪制造了第一块液晶显示器即LCD。而第一台可操作的LCD基于动态散射模式(Dynamic Scattering Mode,DSM),是RCA公司乔治海尔曼带领的小组开发的。LED点阵屏通过LED(发光二极管)组成,以灯珠亮灭来显示文字、图片、动画、视频等,是各部分组件都模块化的显示器件,通常由显示模块、控制系统及电源系统组成。LED点阵显示屏制作简单,安装方便,被广泛应用于各种公共场合,如汽车报站器、广告屏以及公告牌等。矩阵键盘是单片机外部设备中所使用的排布类似于矩阵的键盘组.。在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式,如图1所示。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。一、课程设计目的设计一个基于单片机的4*4矩阵键盘设计,用AT89S52单片机并行口P1接4*4矩阵键盘,以P1.0、P1.3作为输入线,以P1.4、P1.7作为输出线,在LCD12864上的第一行显示每个按键的0F序号,同时12864的第二行显示本人姓名、班级,第三行显示本人学号。主要内容如下:1.矩阵式键盘的特点,进行键盘控制系统的整体研究与设计;2.ED实时显示按键信息;3.软件编程的方法实现按键信息的提取和显示。二、设计内容及原理2.1 单片机控制系统原理 2.2阵键盘识别显示系统概述矩阵式键盘模式以N个端口连接控制N*N个按键,实时在LED数码管上显示按键信息。显示按键信息,既降低了成本,又提高了精确度,省下了很多的I/O端口为他用,相反,独立式按键虽编程简单,但占用I/O口资源较多,不适合在按键较多的场合应用。并且在实际应用中经常要用到输入数字、字母、符号等操作功能,如电子密码锁、电话机键盘、计算器按键等,至少都需要12到16个按键,在这种情况下如果用独立式按键的话,显然太浪费I/O端口资源,为了解决这一问题,我们使用矩阵式键盘。矩阵式键盘简介:矩阵式键盘又称行列键盘,它是用N条I/O线作为行线,N条I/O线作为列线组成的键盘。在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为N*N个。这种行列式键盘结构能有效地提高单片机系统中I/O口的利用率。最常见的键盘布局如图1-1所示。一般由16个按键组成,在单片机中正好可以用一个P口实现16个按键功能,这也是在单片机系统中最常用的形式,本设计就采用这个键盘模式。图1 键盘布局2.3键盘电路 AT89C51单片机的并行口P1接44矩阵键盘,以P1.0P1.3作输入线,以P1.4P1.7作输出线;P1口输出按键信息,在数码管上显示每个按键的“0F”序号。实际电路图连接如图2所示。图2 矩阵式键盘电路2.4 12864显示器12864点阵液晶显示模块(LCM)就是由128*64个液晶显示点组成的一个128列*64行的阵列。每个显示点对应一位二进制数,1表示亮,0表示灭。存储这些点阵信息的RAM称为显示数据存储器。要显示某个图形或汉字就是将相应的点阵信息写入到相应的存储单元中。图形或汉字的点阵信息由自己设计,问题的关键就是显示点在液晶屏上的位置(行和列)与其在存储器中的地址之间的关系。由于多数液晶显示模块的驱动电路是由一片行驱动器和两片列驱动器构成,所以12864液晶屏实际上是由左右两块独立的64*64液晶屏拼接而成,每半屏有一个512*8 bits显示数据RAM。左右半屏驱动电路及存储器分别由片选信号CS1和CS2选择。显示点在64*64液晶屏上的位置由行号(line,063)与列号(column,063)确定。512*8 bits RAM中某个存储单元的地址由页地址(Xpage,07)和列地址(Yaddress,063)确定。每个存储单元存储8个液晶点的显示信息。为了使液晶点位置信息与存储地址的对应关系更直观关,将64*64液晶屏从上至下8等分为8个显示块,每块包括8行*64列个点阵。每列中的8行点阵信息构成一个8bits二进制数,存储在一个存储单元中。(注意:二进制的高低有效位顺序与行号对应关系因不同商家而不同)存放一个显示块的RAM区称为存储页。即64*64液晶屏的点阵信息存储在8个存储页中,每页64个字节,每个字节存储一列(8行)点阵信息。因此存储单元地址包括页地址(Xpage,07)和列地址(Yaddress,063)。例如点亮128*64的屏中(20,30)位置上的液晶点,因列地址30小于64,该点在左半屏第29列,所以CS1有效;行地址20除以8取整得2,取余得4,该点在RAM中页地址为2,在字节中的序号为4;所以将二进制数据00010000(也可能是00001000,高低顺序取决于制造商)写入Xpage=2,Yaddress=29的存储单元中即点亮(20,30)上的液晶点。2.5整体电路图 图3 液晶显示4*4矩阵键盘按键号整体电路2.6仿真结果 以下是通过preteus仿真后得到的部分结果截图 图4 仿真结果图 三、实验心得与体会 通过为期两周的单片机课程设计,不仅加深了对单片机理论知识的理解,而且锻炼了我们的动手能力以及创新精神,让我意思到理论和实践结合的重要性。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。而且要对自己有耐心和信心,这样就可以从中找到问题,并且解决问题。把理论知识和实际设计的结合锻炼了我的综合运用所学专业知识的能力,而且通过对整体的掌控,对局部的取舍,以及对细节的斟酌处理,都使得我的能力得到了锻炼,实战经验得到丰富。这次课程设计让我学到许多课堂学不到的东西,独立思考解决问题的能力,出现差错时及时应变的能力,而且通过和同学的交流和合作,增强了团队精神,给了大家一起学习,一起享受学习的机会,让大家都受益匪浅,为以后不管遇到什么问题都能很好的处理打下了良好的基础。本次设计也运用到了proteus以及KEIL软件,通过实际的操作和不断地学习,加深了对这两个软件的了解,也学到了许多更加复杂的操作和用法,虽然全英文的界面对我这样英语不太好的人来说是挺麻烦的,但是只要肯努力,终究还是能够学好的。这次设计过程中。遇到了许多困难,也很感谢老师和同学的悉心帮助,使得我能顺利完成这次课程设计。 四、实验程序#include#includesbit E=P30;sbit RW=P31;sbit DI=P32;sbit CS2=P33;sbit CS1=P34;#define uchar unsigned charunsigned char cons,cont;uchar code l=0x00,0x10,0x10,0x10,0x10,0x10,0xFF,0x10,0x10,0xF0,0x10,0x11,0x16,0xD0,0x10,0x10,0x00,0x80,0x40,0x20,0x18,0x06,0x41,0x20,0x10,0x3F,0x44,0x42,0x41,0x40,0x40,0x78,c=0x00,0x24,0x24,0xA4,0xFE,0x23,0x22,0x00,0x3E,0x22,0x22,0x22,0x22,0x22,0x3E,0x00,0x00,0x08,0x06,0x01,0xFF,0x01,0x06,0x40,0x49,0x49,0x49,0x7F,0x49,0x49,0x49,0x41,dian=0x00,0x00,0xF8,0x88,0x88,0x88,0x88,0xFF,0x88,0x88,0x88,0x88,0xF8,0x00,0x00,0x00,0x00,0x00,0x1F,0x08,0x08,0x08,0x08,0x7F,0x88,0x88,0x88,0x88,0x9F,0x80,0xF0,0x00,qi=0x20,0x10,0x4C,0x47,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0xD4,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x30,0x40,0xF0,0x00,ban=0x84,0x84,0xFC,0x84,0x84,0x00,0xF8,0x00,0xFF,0x00,0x84,0x84,0xFC,0x84,0x84,0x00,0x10,0x30,0x1F,0x08,0x88,0x42,0x21,0x18,0x07,0x00,0x20,0x20,0x3F,0x20,0x20,0x00;uchar code shuzi1632=0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*0,0*/ 0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*1,1*/ 0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*2,2*/ 0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*3,3*/ 0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*4,4*/ 0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*5,5*/ 0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*6,6*/ 0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*7,7*/ 0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*8,8*/ 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*9,9*/ 0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x19,0x24,0x22,0x22,0x22,0x3F,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*a,0*/0x08,0xF8,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x11,0x20,0x20,0x11,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*b,1*/0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x11,0x20,0x20,0x20,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*c,2*/0x00,0x00,0x00,0x80,0x80,0x88,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x11,0x20,0x20,0x10,0x3F,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*d,3*/0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x22,0x22,0x22,0x22,0x13,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*e,4*/0x00,0x80,0x80,0xF0,0x88,0x88,0x88,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00;/*f,5*/unsigned char i;delay()unsigned char i;for(i=0;i20;i+);void keycan(void)for(i=0;i4;i+)switch(i)case 0:P2=0x7f;delay();switch(P2|0xf0)case 0xfe:cont=0;break;case 0xfd:cont=1;break;case 0xfb:cont=2;break;case 0xf7:cont=3;break;default:break; case 1:P2=0xbf;delay();switch(P2|0xf0)case 0xfe:cont=4;break;case 0xfd:cont=5;break;case 0xfb:cont=6;break;case 0xf7:cont=7;break;default:break; case 2: P2=0xdf;delay();switch(P2|0xf0)case 0xfe:cont=8;break;case 0xfd:cont=9;break;case 0xfb:cont=10;break;case 0xf7:cont=11;break;default:break; case 3:P2=0xef;delay();switch(P2|0xf0)case 0xfe:cont=12;break;case 0xfd:cont=13;break;case 0xfb:cont=14;break;case 0xf7:cont=15;break;default:break; default:break;void readbusy(void) /*判断最高位是否为1,为0才读写数据*/P0=0x00;cons=P0;DI=0;RW=1;E=1; while(cons&0x80);E=0; void Select(uchar i)switch(i) case 0:CS1=0;CS2=0;break; case 1:CS1=0;CS2=1;break; case 2:CS1=1;CS2=0;break; default:break; void xieminling(uchar value) readbusy();/*每次读写都要忙判断 */DI=0;RW=0; P0=value; E=1;_nop_();_nop_();E=0; void Setonoff(uchar onoff)onoff=0x3e|onoff;xieminling(onoff); void xieshuju(uchar dat) readbusy();DI=1;RW=0; P0=dat;E=1; _nop_();_nop_();E=0; void Setpage(uchar page)/*设置页*/ page=0x

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论