1、点阵键盘在LCD显示屏上的应用东 北 石 油 大 学课 程 设 计课 程 单片机控制系统课程设计 题 目 44键盘在LCD显示屏上的应用 院 系 电气信息工程学院 专业班级 自动化08-03 学生姓名 文晶 学生学号 080601140304 指导教师 王婷婷 李艳辉 2011年 7月8日 东北石油学院课程设计任务书课程 单片机控制系统课程设计题目 44 键盘在LCD显示屏上的应用专业 自动化 姓名 文晶 学号 080601140304一主要内容:键盘控制LCD显示屏显示不同内容。每个数字键均有对应图片显示;当按下数字键时,数字键对应的图片在LCD显示屏上显示。二基本要求: 1.进一步掌握 S
2、PCE061A控制LCD显示屏显示的方法。2.熟悉 44 键盘的使用方法。 三参考资料:1.罗亚非.凌阳16位单片机M.应用基础北京航空航天大学出版社,2005.2.李坚.初学凌阳单片机M.高等教育出版社,2005.3.凌阳科技.凌阳16位单片机开发实例M. 北京:航空航天大学出版社,2006.4.侯媛彬.凌阳单片机原理及其毕业设计精选M.科学出版社,2006.5.卢胜利.基于凌阳SPCE061A设计实验平台的专业综合设计教程机M.械工业出版社,2007.6.参考网站:.完成期限 2011.7.42011.7.8 指导教师 专业负责人 2011年7 月1日第1章 概述1.1 44 键盘LCD显
3、示的研究背景本题目用的是凌阳科技公司设计了u8217XnSP十六位单片机实验箱,应用SPCE061A单机。本次设计主要应用AT89C51单片机为核心控制元件,与键盘、LCD等模块组成核心主控制模块,通过软硬件设计,通过程序对键盘进行行列扫描的方式驱动LCD1602进行显示。发挥51单片机C语言的优势,对键盘、LCD1602模块进行编程。设计一个简易的44键盘LCD显示器。1.2凌阳单片机简介凌阳的16位单片机的CPU内核采用凌阳最新推出的Microcontroller and Signal Processor 16位微机处理器芯片,以下简nSP。围绕nSP所形成的16位unSP 系列单片机,以
4、下简称nSP家族。采用的是模块式集成结构,它以nSP内核为中心集成不同规模的ROM PAM和功能丰富的各种外设部件。nSP内核是一个通用的和结构。除此之外的其它功能模块均为可选结构。以及这种结构可大可小可有可无,借助这种通用结构附加可选结构的积木式的构成,便可成为各种系列的派生产品,以适合不同场合,这样做无疑会使每种派生产品具有更强的功能和更低的成本。nSP家族有有以下特点:体积小 ,集成度高,可靠性好易于扩展。nSP家族把各功能把各功能部件模块化地集成在一个芯片里。内部采用总线结构,因为减少了各功能部件之间的连接,提高了其可靠性和抗干扰能力,另外,模块化的结构易于系列的扩展,以适应不同用户的
5、需求。具有较强的中断处理能力。nSP家族的中断系统支持10个中断向量及10余个中断源,适合实时应用领域。高性能价格比:nSP家族片内带有高寻址能力的ROM,静态RAM和多功能的I/O口,另外nSP的指令系统提供出具有较高运算速度的16位,16位的乘法运算指令和内积运算指令,为其应用添加了DSP功能,使得nSP家族运用在复杂的数字信号处理方面既很便利又比专用的DSP芯片廉价。SPCE061A的开发是通过在线调试器PROBE实现的。它既是一个编程器(即程序烧写器),又是一个实时在线调试器。用它可以替代在单片机应用项目的开发过程中常用的软件工具硬件在线实时仿真器和程序烧写器。它利用了SPCE061A
6、片内置的在线仿真电路ICE(In-CircuitEmulator)接口和凌阳公司的在线串行编程技术。PROBE工作于凌阳IDE集成开发环境软件包下,其5芯的仿真头直接连接到目标电路板上SPCE061A相应管脚,直接在目标电路板上的CPU-SPCE061A调试、运行用户编制的程序。PROBE的另一头是标准25针打印机接口,直接连接到计算机打印口与上位机通讯,在计算机IDE集成开发环境软件包下,完成在线调试功能。1.3 44 键盘LCD显示的设计目的和要求在单片机的产品设计中,人机界面是非常重要的部分,而且随着系统的日益复杂,以及人们对产品的人机交互能力的要求不断提升,常握单片机系统中的人机界面基
7、础设计能力成为了学习单片机的基础课程,而4X4键盘的操作和LCD显示屏的动态显示是人机界面设计的基础内容,掌握这些基础设计能力,加深对人机界面的认识,同时提高人机界面系统设计能力。本次设计要求键盘控制LCD显示屏显示不同内容。每个数字键均有对应图片显示;当按下数字键时,数字键对应的图片在LCD显示屏上显示。进一步掌握 SPCE061A控制LCD显示屏显示的方法。 熟悉 44 键盘的使用方法。第2章 44 键盘LCD显示的基本原理及方案2.1 44 键盘的工作原理在一般应用中,键盘按其接线方法有:直接式键盘、行列式键盘(又称矩阵键盘)、串转并键盘等;在实验箱中,采用44的行列式键盘,即键盘排列为
8、4行、4列,共16个按键。 44 键盘的电路图如图 2-1 所示,分别定义这 16 个按键盘为 KEY116。图 2-1 44 键盘电路图图中 C1C4 为 44 键盘的列扫描线,L1L4 为 44 键盘的行扫描线。 行列式键盘的操作一般完成两个任务,一是检测是否有键被按下,二是识别被按下的键是哪一个。一般会采用行列扫描法,可以同时完成上述两项任务。基本的扫描原理是: 先使行扫描线输出高电平,然后读取列扫描线的状态,得到与按键横向位置对应的4位列码;如果是有键被按下时,则对应的列扫描线必然会被读回高电平,如果是无键盘按下时,则读取的列码必定全是0。这也就可以判断有无按键的按下了。 一旦检测到有
9、键按下时,还需要有一个延时的消除抖动的操作,以消除按键时带有的抖动信号;一般延时在15ms左右即可。延时后,如还能检测到有按键按下,则可确定当前是有键按下,可进入获取键值的操作。 获取键值时,采用行列依次扫描的方法。首先使第一行扫描线输出高电平,其它的行扫描线输出低电平,然后读取列扫描线的状态,得到列码;如果本行无键按下,则得到的列码为全0,并扫描下一行;如本行有键按下,则会读取到对应的列码值,并退出扫描,进行键值计算。当第一行扫描没有检测到按键时,则扫描下一行,即使第二行扫描线输出高电平,其它行扫描线输出低电平,其它与前面所述类似。 在行列扫描时,可以用一个变量记录下当前扫描的行号,在计算键
10、值时可以利用此行号以及列码得知是哪一行、哪一列上的按键按下了。如:当 S5 按下时,应该检测出第二行扫描时读到有效的列码 0001(C4C1)。2.2 SPCE061A获取 44 键盘键值原理 单片机与该电路连接时,使用4个端口作为输出口,接4条行扫描线。使用SPCE061A的IOA815八个端口作44键盘的扫描, IOA03接行扫描线, IOA47接列扫描线。IOA12IOA15设置为输出口, 接行扫描线; IOA8IOA11设置为带下拉电阻的输入口,接列扫描线。 按照44键盘的工作原理,先只把IOA12输出高电平,其他都输出低电平,扫描IOA8到IOA11四个输入口的值,如果每个输入口的值
11、还是0;再把IOA13输出高电平,其他都输出低电平,扫描IOA8到IOA11四个输入口的值,如果每个输入口还没有检测到高电平;从IOA14输出高电平扫描,从IOA15输出高电平扫描,直到检测到高电平,保存扫描行值和列码。如果一直没有检测到高电平,则没有键按下。 比如当S5按下时,分别从IOA12、IOA13或者IOA15输出高电平,其他输出低电平时,检测到从IOA8到IOA11四个输入口的值都为0,但是当从IOA14输出高电平,其他都输出低电平时,检测到从IOA8到IOA11四个输入口的值为1000(IOA11IOA8)。把扫描到高电平时的行值保存在寄存器里,即把IOA12IOA15输出值01
12、00(IOA15IOA12)保存起来,这时候IOA口的键码为01001000B,根据扫描到IOA口的键码自己定义一种算法,计算想要得到的键值。2.3图片显示的原理1.DM Tool 字模提取工具 利用 DM Tool 字模提取工具提取 BMP位图字模的步骤如下: 第一步,导入图片:打开 DM Tool工具,新建一个 DM Tool 的工程,在“Picture”的下拉菜单点击“Import Pictures”。点击 “Import Pictures” 后出现下图的对话框, 在IDE的安装路径SPCE061Aexample model_Exa ex3_LCD501_Graphic pictures
13、unplus找到我们要提取的图片 sp1。注意:利用“Import Pictures”菜单导入图象的选项只能导入 BMP格式的位图;DM Tool 工具可以最终生成字模数据的尺寸为 240240 点,所以用户在导图象时要注意图象的尺寸;但由于SPLC501 液晶显示器的屏幕大小为 12864 点,则在 SPLC501 液晶显示模块上显示的图片尺寸就不能超过 12864 点,如超过则无法显示。用户可以利用图像处理的软件对原始图像进行修改后再导入DM Tool 中,提取合适的图像字模数据。选择 sp1,点击“打开”。按照图中选择“source image”和“Invariable” ,点击“OK”
14、就导入图片了。如图 2-1,导入的图片就出现在 Regionbar转换列表和操作区中。 图2-1 图片出现在 Regionbar转换列表和操作区中第二步,提取字模并保存:点击 图标,打开图 2-2 的对话框。图2-2 Edit and Export Cchar File界面点击 图标, “Select”选择“Down to Up,Left to Right” ,点击“char.c file:右边的浏览图标,打开图 2-3的对话框。 图2-3 选择保存路径这里选择保存到“我的文档”文件夹中,选择保存的文件名为 sunplus,点击保存,回到“Export Cchar File”窗口,点击“OK”
15、 。这时字模数据的生成操作已完成,生成了 sunplus.c和 sunplus.h两个字模数据文件。导出文件后,用户可以关闭字模数据生成窗口,返回到 DM Tool 软件的主窗口,以便进行其它的操作,DM Tool 的使用方法可以参考 DM Tool 的用户手册。 和导出的汉字字模数据相同,BMP位图字模数据也以数组的形式保存,可以直接包含到工程中进行引用。图形及动画的显示一般是整屏操作的,字模的选取可以先用windows下的画笔工具。新建一幅12864像素的图片,编完图片后,保存为黑白图象。然后在字模软件中打开,提取出字模来。每幅图片占用1288个字节的空间,根据图片数据存储的特点,提取的邻
16、近字模数据相同。若是图片比较多或者进行动画显示,最好进行压缩保存,节省控制器宝贵的资源,读取时编写控制器软件解压缩。2.4基本方案本次设计用到的硬件有:装有Windows系统和nSP IDE仿真环境的PC机一台,nSP 十六位单片机实验箱一个。本设计用到的实验箱硬件模块为:SPCE061A核心及周边电路模块,LCD1602模块,44键盘。硬件电路图如下图:图2-4 4*4键盘LCD1602显示硬件电路图第3章 程序设计3.1主程序流程图主程序流程图如图3-1,初始化LCD,调用键盘程序取键值,根据键值进入相应的程序:如果按下的是数字键并且之前确认键没有按下进入显示BMP 位图循环:点亮整个屏幕
17、,延时;设置为取反并覆盖的图形显示方式,即 LCD501_SetPaintMode的参数 ModeCode 为4;显示 BMP位图,BMP位图显示在(50,15)的坐标位置,延时。循环里加延时同样是为了看清实验现象。如果按下的是保留键或者没有按键按下,直接返回取键值;如果是确认键按下,确认键按下标志置 1,之后按任何键都不起作用。 图3-1 主要程序流程图3.2程序代码程序代码见附录3.3调试及结果分析本次设计用到的硬件有:装有Windows系统和nSP IDE仿真环境的PC机一台,nSP 十六位单片机实验箱一个。本设计用到的实验箱硬件模块为:SPCE061A核心及周边电路模块(包含32个I/
18、O口),LCD1602模块,44键盘。按照以下步骤进行调试运行:1.新键工程 ex2_Led_Show_Key,在工程里 C 语言文件 main.c,新键文件 key.asm 或者 key.c。 2.拷贝头文件 SPCE061A.h、SPCE061A.inc 到 ex2_Led_Show_Key工程文件夹。 3.添加头文件 SPCE061A.h、SPCE061A.inc 到 ex2_Led_Show_Key工程。 4.根据程序流程图编写程序。 5.Rebuild All。 6.按照硬件连接图连接硬件,注意 J27和 JP7 连接时排线的顺序,J27 的0 号引脚和 JP7 的 C4连接,不要接
19、反。 7.下载程序到实验箱,调试运行。通过按照设计的电路图连接电路,装载、编译并运行程序,可以实现通过键盘按键对LCD1602显示器进行操作,经过对程序的调试和修改,每当按下一个数字键时,数字键对应的图片在LCD显示屏上显示。 第4章 结论与体会本学期我们学习了单片机原理与应用这本书。在这次课程设计中,我选的题目是“44键盘在LCD显示屏上的应用”。 在这个设计过程中,我通过对44键盘工作原理和DM Tool 字模提取工具的深入学习,以及对程序的反复修改和调试才使设计结果能够符合题意,成功完成了此次设计要求。当硬件连接正确,程序调试无错误时,每按下一个键就会在LCD显示屏上显示出相应的不同的图
20、片。课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域, 在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。回顾起此次单片机课程设计,我仍感慨颇多,的确,从选题到定稿,从理论到实践,在接近一个星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远
21、远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。通过这次的课程设计作品的制作让我对单片机的理论有了更加深入的了解,同时在具体的制作过程中我们发现现在书本上的知识与实际的应用存在着不小的差距,书本上的知识很多都是理想化后的结论,忽略了很多实际的因素,或者涉及的不全面,可在实际的应用时这些是不能被忽略的,我们不得不考虑这方的问题,这让我们无法根据书上的理论就轻易得到预想中的结果,有时结果甚至很差别很大。通过这次实践使我更深刻的体会到了理论联系实际的重要性,我们在今后的学习工作中会更加的注重实际,避免称为只会纸上谈兵的
22、赵括。参考文献1罗亚非.凌阳16位单片机应用基础M.北京:航空航天大学出版社,2005.2李坚.初学凌阳单片机M.北京:高等教育出版社,2005.3凌阳科技.凌阳16位单片机开发实例M. 北京:航空航天大学出版社,2006.4侯媛彬.凌阳单片机原理及其毕业设计精选M.北京:科学出版社,2006.5卢胜利.基于凌阳SPCE061A设计实验平台的专业综合设计教程机M.北京:械工业出版社,2007.6李广第.单片机基础第1版M.北京:北京航空航天大学出版社,1999.附录程序代码:#include SPCE061A.h#include Dig.h#include Key.h#include SPLC
23、501User.h /包含SPLC501液晶模组驱动程序的用户接口API函数声明的头文件#include sunplus.h /包含凌阳标识字模数据的头文件#define P_Watchdog_Clear (volatile unsigned int *)0x7012int main(void) int Ent_Flag = 0; unsigned int uiKey; unsigned int uiData6 = 1,0,0,0,0,1; uiData0 = 0; uiData5 = 0; Key_Init(); DIG_Init();int i,j; /用于延时LCD501_Init(0x
24、FF); /初始化LCD端口以及LCD初始化所需要的设置,在SPLC501User.c中定义 while(1) uiKey = Key_Get(); switch(uiKey) case KEY_0: /数字“7”键按下 if(Ent_Flag = 0) /判断“ENT”键是否按下,即确认键是否按下? LCD501_ClrScreen(1); /整屏填充,即全部点亮 for(j=0;j=3;j+) /延时 保持当前显示 for(i=0;i0x2fff;i+) *P_Watchdog_Clear = 0x0001; /清看门狗 LCD501_SetPaintMode(PAINT_RECO); /
25、设置图片与背景的叠加模式为:取反覆盖 LCD501_Bitmap(50,15,(unsigned int *)encoding_07);/显示图片 for(j=0;j=7;j+) /延时 保持当前显示 for(i=0;i0x2fff;i+) *P_Watchdog_Clear = 0x0001; /清看门狗 break; case KEY_1: /数字“8”键按下 if(Ent_Flag = 0) /判断“ENT”键是否按下,即确认键是否按下? LCD501_ClrScreen(1); /整屏填充,即全部点亮 for(j=0;j=3;j+) /延时 保持当前显示 for(i=0;i0x2fff
26、;i+) *P_Watchdog_Clear = 0x0001; /清看门狗 LCD501_SetPaintMode(PAINT_RECO); /设置图片与背景的叠加模式为:取反覆盖 LCD501_Bitmap(50,15,(unsigned int *)encoding_08);/显示图片 for(j=0;j=7;j+) /延时 保持当前显示 for(i=0;i0x2fff;i+) *P_Watchdog_Clear = 0x0001; /清看门狗 break; case KEY_2: /数字“9”键按下 if(Ent_Flag = 0) /判断“ENT”键是否按下,即确认键是否按下? LC
27、D501_ClrScreen(1); /整屏填充,即全部点亮 for(j=0;j=3;j+) /延时 保持当前显示 for(i=0;i0x2fff;i+) *P_Watchdog_Clear = 0x0001; /清看门狗 LCD501_SetPaintMode(PAINT_RECO); /设置图片与背景的叠加模式为:取反覆盖 LCD501_Bitmap(50,15,(unsigned int *)encoding_09); /显示图片 for(j=0;j=7;j+) /延时 保持当前显示 for(i=0;i0x2fff;i+) *P_Watchdog_Clear = 0x0001; /清看门
28、狗 break; case KEY_3: /保留“F1”键 break; case KEY_4: /数字“4”键按下 if(Ent_Flag = 0) /判断“ENT”键是否按下,即确认键是否按下? LCD501_ClrScreen(1); /整屏填充,即全部点亮 for(j=0;j=3;j+) /延时 保持当前显示 for(i=0;i0x2fff;i+) *P_Watchdog_Clear = 0x0001; /清看门狗 LCD501_SetPaintMode(PAINT_RECO); /设置图片与背景的叠加模式为:取反覆盖 LCD501_Bitmap(50,15,(unsigned int
29、 *)encoding_04); /显示图片 for(j=0;j=7;j+) /延时 保持当前显示 for(i=0;i0x2fff;i+) *P_Watchdog_Clear = 0x0001; /清看门狗 break; case KEY_5: /数字“5”键按下 if(Ent_Flag = 0) /判断“ENT”键是否按下,即确认键是否按下? LCD501_ClrScreen(1); /整屏填充,即全部点亮 for(j=0;j=3;j+) /延时 保持当前显示 for(i=0;i0x2fff;i+) *P_Watchdog_Clear = 0x0001; /清看门狗 LCD501_SetPa
30、intMode(PAINT_RECO); /设置图片与背景的叠加模式为:取反覆盖 LCD501_Bitmap(50,15,(unsigned int *)encoding_05); /显示图片 for(j=0;j=7;j+) /延时 保持当前显示 for(i=0;i0x2fff;i+) *P_Watchdog_Clear = 0x0001; /清看门狗 break; case KEY_6: /数字“6”键按下 if(Ent_Flag = 0) /判断“ENT”键是否按下,即确认键是否按下? LCD501_ClrScreen(1); /整屏填充,即全部点亮 for(j=0;j=3;j+) /延时 保持当前显示 for(i=0;i0x2fff;i
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1