版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单片机的控制系统课程设计东 北 石 油 大 学课 程 设 计课 程 单片机控制系统课程设计 题 目 4×4键盘在LCD显示屏上的应用 院 系 电气信息工程学院 专业班级 自动化 学生姓名 学生学号 指导教师 刘远红 姜寅令 2012年 6月29日 16东北石油学院课程设计任务书课程 单片机控制系统课程设计题目 4×4 键盘在LCD显示屏上的应用专业 自动化 姓名 学号 一主要内容:键盘控制LCD显示屏显示不同内容。每个数字键均有对应图片显示;当按下数字键时,数字键对应的图片在LCD显示屏上显示。二基本要求: 1.进一步掌握 SPCE061A控制LCD显示屏显示的方法。2.熟
2、悉 4×4 键盘的使用方法。 三参考资料:1、 周润景Proteus入门实用教程.机械工业出版社,20112、 王达峰.基于C51的汉字/数字混合液晶显示及更新J,2002.123、 李宏.液晶显示器件应用技术M.北京机械工业出版社,20044、 张毅刚.MCS-51单片机应用设计M.哈尔滨工业大学出版社,20005、 林雪明.点阵式液晶显示系统图文界面的设计J,2000.126、 参考网址完成期限 指导教师 刘远红 姜寅令 专业负责人 2012年6月24日目 录第1章 研究背景及要求11.1 研究的目的和意义11.2 单片机发展现状11.3 本课题研究的主要内容1第2章 4
3、5;4 键盘LCD显示的基本原理及方案32.1 4×4 键盘的工作原理32.2 软件设计42.3 基本方案6第三章 程序设计73.1主程序流程图732程序代码8第四章 调试结果及分析9第五章 结论与体会10参考文献11附录12第1章 研究背景及要求1.1 研究的目的和意义在单片机的产品设计中,人机界面是非常重要的部分,而且随着系统的日益复杂,以及人们对产品的人机交互能力的要求不断提升,常握单片机系统中的人机界面基础设计能力成为了学习单片机的基础课程,而4X4键盘的操作和LCD显示屏的动态显示是人机界面设计的基础内容,掌握这些基础设计能力,加深对人机界面的认识,同时提高人机界面系统设计
4、能力。本次设计要求键盘控制LCD显示屏显示不同内容。每个数字键均有对应图片显示;当按下数字键时,数字键对应的图片在LCD显示屏上显示。进一步掌握MCS-51单片机控制LCD显示屏显示的方法。 熟悉 4×4 键盘的使用方法。1.2 单片机发展现状在HMOS技术大发展的背景下,Intel公司在MCS-48系列的基础上MCS-51 系列单片机,于1980年推出了8位MCS-51系列单片机。它与以前的机型相比,功能增强了许多,就其指令和运行速度而言,超过了INTEL8085的CPU和Z80的CPU,成为工业控制系统中较为理想的机种。较早的MCS-51典型时钟为12MHz,而目前与MCS-51
5、单片机兼容的一些单片机的时钟频率达到40MHz甚至更高,现在已有400MHz的单片机问世。1.3 本课题研究的主要内容液晶显示模块具有显示数字、字母、汉字和图形符号的能力,它是由点阵字符液晶显示器件和专用的行、列驱动器、控制器及必要的连接件,结构件装配而成。这种点阵字符模块本身具有字符发生器,显示容量大,功能丰富。功耗小,另外由于自带扫描驱动,内部另有显示数据寄存器及控制和状态寄存器,使得与单片机的接口比较方便,因此图形显示模块在一些低功耗(特别是电池供电的场合)和人机界面友好的智能设备中应用广泛。本次设计的液晶显示界面是用于类似手机的界面,通过进行这次课程应用设计,了解当今先进科技液晶显示的
6、基本原理和实现方法以及所用的液晶显示模块的原理、组成、设计方法等内容。本次设计主要实现的任务是在液晶屏上显示各种字符、数字、汉字、图形,以及通过采样模块采集电压数据,并实现将采样到的电压变化的动态曲线显示在液晶屏上等。硬件部分主要包括液晶模块、键盘、单片机、采集模块、串口通信。第2章 4×4 键盘LCD显示的基本原理及方案2.1 4×4 键盘的工作原理在一般应用中,键盘按其接线方法有:直接式键盘、行列式键盘(又称矩阵键盘)、串转并键盘等;在实验箱中,采用4×4的行列式键盘,即键盘排列为4行、4列,共16个按键。 4×4 键盘的电路图如图 2-1 所示,分
7、别定义这 16 个按键盘为 KEY116。图 2-1 4×4 键盘电路图图中 C1C4 为 4×4 键盘的列扫描线,L1L4 为 4×4 键盘的行扫描线。 行列式键盘的操作一般完成两个任务,一是检测是否有键被按下,二是识别被按下的键是哪一个。一般会采用行列扫描法,可以同时完成上述两项任务。基本的扫描原理是: 先使行扫描线输出高电平,然后读取列扫描线的状态,得到与按键横向位置对应的4位列码;如果是有键被按下时,则对应的列扫描线必然会被读回高电平,如果是无键盘按下时,则读取的列码必定全是0。这也就可以判断有无按键的按下了。 一旦检测到有键按下时,还需要有一个延时的消除
8、抖动的操作,以消除按键时带有的抖动信号;一般延时在15ms左右即可。延时后,如还能检测到有按键按下,则可确定当前是有键按下,可进入获取键值的操作。 获取键值时,采用行列依次扫描的方法。首先使第一行扫描线输出高电平,其它的行扫描线输出低电平,然后读取列扫描线的状态,得到列码;如果本行无键按下,则得到的列码为全0,并扫描下一行;如本行有键按下,则会读取到对应的列码值,并退出扫描,进行键值计算。当第一行扫描没有检测到按键时,则扫描下一行,即使第二行扫描线输出高电平,其它行扫描线输出低电平,其它与前面所述类似。 在行列扫描时,可以用一个变量记录下当前扫描的行号,在计算键值时可以利用此行号以及列码得知是
9、哪一行、哪一列上的按键按下了。如:当 S5 按下时,应该检测出第二行扫描时读到有效的列码 0001(C4C1)。2.2 软件设计 1.显示初始化在显示之前,应先调用该模块,实现对屏幕的初始化,并设置文本和图形缓冲区的起始地址。其流程图如图2-1:关显示选择图形/文本工作方式开显示设置文本区首地址和宽度设置图形区首地址和宽度结束图2-1流程图2.汉字的显示液晶屏幕横向为240点,分成30个字节,纵向为128行。对16×16点阵的汉字,需占用32个字节,每行可显示15个汉字,共8行。3.键盘的控制键操作流程如图2-2所示,由于程序中会有数码管显示程序,所以本实验在中断中扫描键盘。 即键盘
10、程序包括两个部分:中断扫描程序和获取键值程序。在以前1×8键盘的键盘程序里讲过,键盘程序里要有消抖操作,为了消除抖动,首先做如下定义:1.按键时间小于30ms(ScanCnt<4),认为没有键按下;2.按键时间大于30ms小于05s(4<ScanCnt<64)且键已释放,认为有键按下;3. 按键时间大于30ms 小于0.5s(4< ScanCnt<64)但键仍未释放,认为没有键按下;按键时间大于0.5s(64<ScanCnt),认为有键按下,并清除当前所计时间(ScanCnt=0),重新开始计时。这样如果按键时间超过 1s 将会认为同一个键事件多次
11、触发。比如定义一个“+”键,如果一直按下不释放,那么每隔0.5s 就会响应一次加动作。键盘扫描采用128Hz时基中断,每1/128ms扫描一次键盘。先判断是否有键按下,如果没有键按下,则认为是键抬起状态,把键抬起标志置 1 后返回;如果有键按下,按行扫描,先扫描第一行,如果键码为0;再扫描第二行,如果键码为0,再扫描第三行,依次扫描到第四行,如果键码为0,则认为是键抬起状态,置贱抬起标志;如果键码不为0,比较键码和上次扫描到的键码是否相同,如果不同,保存新的键值,扫描计数器置 1;如果相同,扫描计数器加一,返回。上面介绍的是键扫描程序和取键值程序流程,去扫描计算器值;根据前面的定义,如果按键小
12、于30ms,即判断扫描计算值是否小于4,如果小于4,键值为0;如果大于4,根据前面的定义,判断按键时间是否大于0.5s,即判断扫描计算器值是否大于64,如果小于64,判断键是否抬起,没有抬起,则键值为0;抬起时保存键值,把计数器全部清零;返回键值。图2-2 设计原理图4.菜单的选择菜单的选择主要是通过键盘控制光标来进行选择5.数据的采集键盘/液晶显示器与单片机的接口电路设计。人机对话功能,在绝大多数的单片机应用系统中是必不可少的,它起着沟通操作者与系统之间的联系的重要作用。包括人对应用系统的状态干预与数据输入以及应用系统向人报告运行状态与运行结果。而人机对话功能模块的最基本组成就是键盘、显示器
13、两部分。因此,设计一种将键盘、显示两部分融为一体的相对独立的人机对话功能模块很有必要。对它的设计,在一定程度上影响着系统的智能化程度和操作的直观性。本次设计采用了4×4键盘,与单片机的P0口相连,利用键盘实现对液晶屏幕显示的控制。这16个键分别实现的功能表示为:0-9十个数字键、返回、确认、向上、向下、左移、右移等键盘主要功能有:1、通过方向键(向上/向下)来控制光标进行菜单选择2、在本次设计中,方向键(左移/右移)实现的功能为调节采集速度3、1-8这八个数据键用来确定显示八路采集波形曲线中的一路4、返回、确定键就是实现返回与确定功能2.3 基本方案本次设计用到的硬件有:装有Wind
14、ows系统和装有Proteus仿真环境的PC机一台,十六位单片机实验箱一个。本设计用到的实验箱硬件模块为:SPCE061A核心及周边电路模块,LCD1602模块,4×4键盘。硬件电路图如下图:图2-4 4*4键盘LCD1602显示硬件电路图第三章 程序设计3.1主程序流程图主程序流程图如图3-1,初始化LCD,调用键盘程序取键值,根据键值进入相应的程序:如果按下的是数字键并且之前确认键没有按下进入显示BMP 位图循环:点亮整个屏幕,延时;设置为取反并覆盖的图形显示方式,即 LCD501_SetPaintMode的参数 ModeCode 为4;显示 BMP位图,BMP位图显示在(50,
15、15)的坐标位置,延时。循环里加延时同样是为了看清实验现象。如果按下的是保留键或者没有按键按下,直接返回取键值;如果是确认键按下,确认键按下标志置 1,之后按任何键都不起作用。YESNO开始系统初始化是否有键按下清按键标识键值处理点亮整个屏幕设置为取反并覆盖的图形显示方式显示图片延时请看门狗图3-1主程序流程图数据采集流程图如图3-2所示:数据处理数据存储开始读取坐标启动采集模块开始采集数据缓冲输出显示采集结束 图3-2数据采集32程序代码程序代码见附录第四章 调试结果及分析按照以下步骤进行调试运行:1.新键工程 ex2_Led_Show_Key,在工程里 C 语言文件 main.c,新键文件
16、 key.asm 或者 key.c。 2.拷贝头文件SPCE061A.h、MCS-51.inc 到 ex2_Led_Show_Key工程文件夹。 3.添加头文件SPCE061A.h、MCS-51.inc 到 ex2_Led_Show_Key工程。 4.根据程序流程图编写程序。 5.Rebuild All。 6.按照硬件连接图连接硬件,注意 J27和 JP7 连接时排线的顺序,J27 的0 号引脚和 JP7 的 C4连接,不要接反。 7.下载程序到实验箱,调试运行。通过按照设计的电路图连接电路,装载、编译并运行程序,可以实现通过键盘按键对LCD1602显示器进行操作,经过对程序的调试和修改,每当
17、按下一个数字键时,数字键对应的图片在LCD显示屏上显示。第五章 结论与体会在这次课程设计中,我选的题目是“4×4键盘在LCD显示屏上的应用”。 在这个设计过程中,我通过对4×4键盘工作原理和Proteus工具的深入学习,以及对程序的反复修改和调试才使设计结果能够符合题意,成功完成了此次设计要求。当硬件连接正确,程序调试无错误时,每按下一个键就会在LCD显示屏上显示出相应的不同的图片。课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空
18、前活跃的领域, 在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。回顾起此次单片机课程设计,我仍感慨颇多,的确,从选题到定稿,从理论到实践,在接近一个星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。通过这次的课程设计作品的制作让我对单片机的理论有了更加深入的了解,同
19、时在具体的制作过程中我们发现现在书本上的知识与实际的应用存在着不小的差距,书本上的知识很多都是理想化后的结论,忽略了很多实际的因素,或者涉及的不全面,可在实际的应用时这些是不能被忽略的,我们不得不考虑这方的问题,这让我们无法根据书上的理论就轻易得到预想中的结果,有时结果甚至很差别很大。通过这次实践使我更深刻的体会到了理论联系实际的重要性,我们在今后的学习工作中会更加的注重实际,避免称为只会纸上谈兵的赵括。参考文献1周润景.Proteus入门实用教程.机械工业出版社,20112王达峰.基于C51的汉字/数字混合液晶显示及更新J,2002.123李宏.液晶显示器件应用技术M. 北京:机械工业出版社
20、,20044张毅刚.MCS-51单片机应用设计M.哈尔滨工业大学出版社,20025林雪明.点阵式液晶显示系统图文界面的设计J,2000.126参考网址附录程序代码:#include "SPCE061A.h"#include "Dig.h"#include "Key.h"#include "SPLC501User.h"/包含SPLC501液晶模组驱动程序的用户接口API函数声明的头文件#include "sunplus.h" /包含凌阳标识字模数据的头文件#define P_Watchdog_Cl
21、ear(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(0xFF); /初始化LCD端口以及LCD初始化所需要的设置,在SPLC501User.c中定义while(1)uiKey = Key_Get();switch(uiKey)case KEY_0: /数字“7”键按下
22、if(Ent_Flag = 0) /判断“ENT”键是否按下,即确认键是否按下? LCD501_ClrScreen(1); /整屏填充,即全部点亮 for(j=0;j<=3;j+) /延时 保持当前显示 for(i=0;i<0x2fff;i+) *P_Watchdog_Clear = 0x0001; /清看门狗 LCD501_SetPaintMode(PAINT_RECO);/设置图片与背景的叠加模式为:取反覆盖 LCD501_Bitmap(50,15,(unsigned int *)encoding_07);/显示图片 for(j=0;j<=7;j+) /延时 保持当前显示
23、 for(i=0;i<0x2fff;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;i<0x2fff;i+) *P_Watchdog_Clear = 0x0001; /清看门狗 LCD501_SetPaintMode(PAINT_RECO);/设置图片与背景的叠加模式为:取反覆盖
24、LCD501_Bitmap(50,15,(unsigned int *)encoding_08);/显示图片for(j=0;j<=7;j+) /延时 保持当前显示 for(i=0;i<0x2fff;i+) *P_Watchdog_Clear = 0x0001; /清看门狗 break; case KEY_2: /数字“9”键按下if(Ent_Flag = 0) /判断“ENT”键是否按下,即确认键是否按下?LCD501_ClrScreen(1);/整屏填充,即全部点亮 for(j=0;j<=3;j+) /延时 保持当前显示 for(i=0;i<0x2fff;i+) *P
25、_Watchdog_Clear = 0x0001; /清看门狗 LCD501_SetPaintMode(PAINT_RECO); /设置图片与背景的叠加模式为:取反覆盖 LCD501_Bitmap(50,15,(unsigned int *)encoding_09);/显示图片for(j=0;j<=7;j+) /延时 保持当前显示 for(i=0;i<0x2fff;i+) *P_Watchdog_Clear = 0x0001; /清看门狗 break;case KEY_3: /保留“F1”键break;case KEY_4: /数字“4”键按下if(Ent_Flag = 0) /判
26、断“ENT”键是否按下,即确认键是否按下?LCD501_ClrScreen(1);/整屏填充,即全部点亮 for(j=0;j<=3;j+) /延时 保持当前显示 for(i=0;i<0x2fff;i+) *P_Watchdog_Clear = 0x0001; /清看门狗 LCD501_SetPaintMode(PAINT_RECO);/设置图片与背景的叠加模式为:取反覆盖 LCD501_Bitmap(50,15,(unsigned int *)encoding_04);/显示图片for(j=0;j<=7;j+) /延时 保持当前显示 for(i=0;i<0x2fff;i
27、+) *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;i<0x2fff;i+) *P_Watchdog_Clear = 0x0001; /清看门狗 LCD501_SetPaintMode(PAINT_RECO);/设置图片与背景的叠加模式为:取反覆盖 LCD501_Bitmap(50,15,(un
28、signed int *)encoding_05); /显示图片for(j=0;j<=7;j+) /延时 保持当前显示 for(i=0;i<0x2fff;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;i<0x2fff;i+) *P_Watchdog_Clear = 0x00
29、01; /清看门狗 LCD501_SetPaintMode(PAINT_RECO);/设置图片与背景的叠加模式为:取反覆盖 LCD501_Bitmap(50,15,(unsigned int *)encoding_06); /显示图片for(j=0;j<=7;j+) /延时 保持当前显示 for(i=0;i<0x2fff;i+) *P_Watchdog_Clear = 0x0001; /清看门狗 break;case KEY_7: /保留“F2”键按下break;case KEY_8: /数字“1”键按下if(Ent_Flag = 0) /判断“ENT”键是否按下,即确认键是否按下
30、? LCD501_ClrScreen(1); /整屏填充,即全部点亮 for(j=0;j<=3;j+) /延时 保持当前显示 for(i=0;i<0x2fff;i+) *P_Watchdog_Clear = 0x0001; /清看门狗 LCD501_SetPaintMode(PAINT_RECO);/设置图片与背景的叠加模式为:取反覆盖 LCD501_Bitmap(50,15,(unsigned int *)encoding_01);/显示图片for(j=0;j<=7;j+) /延时 保持当前显示 for(i=0;i<0x2fff;i+) *P_Watchdog_Cle
31、ar = 0x0001; /清看门狗 break;case KEY_9: /数字“2”键按下if(Ent_Flag = 0) /判断“ENT”键是否按下,即确认键是否按下?LCD501_ClrScreen(1);/整屏填充,即全部点亮 for(j=0;j<=3;j+) /延时 保持当前显示 for(i=0;i<0x2fff;i+) *P_Watchdog_Clear = 0x0001; /清看门狗 LCD501_SetPaintMode(PAINT_RECO);/设置图片与背景的叠加模式为:取反覆盖 LCD501_Bitmap(50,15,(unsigned int *)encod
32、ing_02);/显示图片for(j=0;j<=7;j+) /延时 保持当前显示 for(i=0;i<0x2fff;i+) *P_Watchdog_Clear = 0x0001; /清看门狗 break;case KEY_A: /数字“3”键按下if(Ent_Flag = 0) /判断“ENT”键是否按下,即确认键是否按下? LCD501_ClrScreen(1);/整屏填充,即全部点亮 for(j=0;j<=3;j+) /延时 保持当前显示 for(i=0;i<0x2fff;i+) *P_Watchdog_Clear = 0x0001; /清看门狗 LCD501_Se
33、tPaintMode(PAINT_RECO);/设置图片与背景的叠加模式为:取反覆盖 LCD501_Bitmap(50,15,(unsigned int *)encoding_03); /显示图片for(j=0;j<=7;j+) /延时 保持当前显示 for(i=0;i<0x2fff;i+) *P_Watchdog_Clear = 0x0001; /清看门狗 break;case KEY_B: /保留“F3”键按下 break;case KEY_C: /功能“DEL”键按下if(Ent_Flag = 0) /判断“ENT”键是否按下,即确认键是否按下? LCD501_ClrScreen(1)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中考物理复习主题单元11第28课时焦耳定律课件
- 冀少版八年级生物上册第五单元第一节细菌课件
- 冀少版八年级生物上册第三单元第二节光合作用的原料课件
- 初三化学第一轮复习教学教案
- 《马诗》教学设计
- 住宅小区监理廉洁自律协议
- 五年级语文下册第二单元教学设计教案
- 木材加工厂工人工作证使用办法
- 船舶制造乳胶漆粉刷施工合同
- 碳基金碳资产管理办法
- 2022-2023学年北京市朝阳外国语学校七年级(上)期中数学试卷【含解析】
- 研究生考试考研思想政治理论(101)2025年自测试题及解答
- 煤矿应急叫应、回应、响应机制
- JGJ107-2016钢筋机械连接技术规程
- 四平事业单位笔试真题及答案2024
- 2024广西专业技术人员继续教育公需科目参考答案(100分)
- 一年级数学上册苏教版《连加、连减》教学设计
- 北师大版数学二年级上册小学数学口算、简算、计算、应用题及能力提升训练检测题(含答案)
- 2023年全国中学生英语能力竞赛初三年级组试题及答案
- 打赌协议书格式范文
- 化工产品销售管理制度
评论
0/150
提交评论