单片机课程设计键盘输入在LED数码管上的显示.doc

上传人:仙人指路1688 文档编号:2883183 上传时间:2023-03-01 格式:DOC 页数:15 大小:255KB
返回 下载 相关 举报
单片机课程设计键盘输入在LED数码管上的显示.doc_第1页
第1页 / 共15页
单片机课程设计键盘输入在LED数码管上的显示.doc_第2页
第2页 / 共15页
单片机课程设计键盘输入在LED数码管上的显示.doc_第3页
第3页 / 共15页
单片机课程设计键盘输入在LED数码管上的显示.doc_第4页
第4页 / 共15页
单片机课程设计键盘输入在LED数码管上的显示.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《单片机课程设计键盘输入在LED数码管上的显示.doc》由会员分享,可在线阅读,更多相关《单片机课程设计键盘输入在LED数码管上的显示.doc(15页珍藏版)》请在三一办公上搜索。

1、 课 程 设 计课 程 单片机的控制系统课程设计 题 目 键盘输入在LED数码管上的显示 院 系 电气信息工程学院 专业班级 学生姓名 学生学号 指导教师 年 月 日 课程设计任务书课程 单片机的控制系统课程设计题目 键盘输入在LED数码管上的显示专业 姓名 学号 主要内容、基本要求、主要参考资料等主要内容:完成键盘输入在LED数码管上的显示。基本要求: 1了解 44 键盘的工作原理。2熟悉 SPCE061A 单片机控制数码管显示的方法。3掌握 44 键盘的使用方法。4掌握 44 键盘控制数码管显示的方法。参考资料:1肖洪兵.跟我学用单片机J.北京:北京航空航天大学出版社,2002.8 2何立

2、民.单片机高级教程第1版M.北京:北京航空航天大学出版社,2001.63赵晓安.MCS-51单片机原理及应用M.天津:天津大学出版社,2001.3 4李广第.单片机基础第1版M.北京:北京航空航天大学出版社,1999.55徐惠民.单片微型计算机原理与应用M.北京:北京邮电大学出版社,1996.26 袁勤勇.嵌入式系统构件M.北京:北京机械工业出版社,2002.完成期限 指导教师 专业负责人 年 月 日目 录第1章 设计的研究背景及目的要求11.1 研究背景11.2 设计目的11.3 硬件选择11.4 设计内容1第2章 设计的基本原理及硬件连接方案22.1 4X4键盘扫描原理图22.2 SPCE

3、061A获取44键盘键值原理22.3 硬件连接3第3章 软件设计方案53.1 设计步骤53.2 设计程序6第4章 调试结果与分析74.1 调试结果74.2 结果分析7结论与体会8参考文献9附录10第1章 设计的研究背景及目的要求1.1 研究背景用单片机驱动LED数码管有很多方法,按显示方式可分静态显示和动态(扫描)显示;按译码方式可分硬件译码和软件译码。静态显示数据稳定,占用很少的CPU时间。动态显示需要CPU时刻对显示器件进行数据刷新,显示数据有闪烁感,占用的CPU时间多。LED数码管的外围电路一般需要一个限流电阻和加大驱动电流的晶体管。LED数码管是由发光二级管显示字段组成的显示器,有“8

4、”字段和“米”字段之分,这种显示器有共阳极和共阴极两种。实际上不用驱动电路即可达到正常亮度,为了可靠性设计可采用晶体管构成驱动电路。1.2 设计目的在单片机的产品设计中,人机界面是非常重要的部分,而且随着系统的日益复杂,以及人们对产品的人机交互能力的要求不断提升,常握单片机系统中的人机界面基础设计能力成为了学习单片机的基础课程,而4X4键盘的操作和LED数码管的动态显示是人机界面设计的基础内容,掌握这些基础设计能力,加深对人机界面的认识,同时提高人机界面系统设计能力。1.3 硬件选择装有Windows系统和nSP IDE仿真环境的PC机一台,nSP 十六位单片机实验箱一个。本设计用到的实验箱硬

5、件模块为:SPCE061A核心及周边电路模块(包含32个I/O口)。半导体数码管,44键盘。做此实验用51板也可以,因为51板也提供了相应的LED模组,因为实验室里面给我们提供了61板,所以我决定选用SPCE061A单片机实验箱。1.4 设计内容给 44 键盘的每个键定义一个功能,其中把定义为 09 的键盘称为数字键,把定义成 DEL 的键称为删除键,把定义成 ENT 的键成为确认键,其他键称为保留键。如果是数字键按下,把代表数字显示在数码管上:按键按下时,6 位数码管靠右边显示该键的代表数字;继续按键时,已经显示在数码管上的数字左移一位,按键代表的数字显示在最右边的数码管上。第2章 设计的基

6、本原理及硬件连接方案2.1 4X4键盘扫描原理图键盘按其接线方法有:直接式键盘、行列式键盘(又称矩阵键盘)、串转并键盘等;在本设计中,采用4X4的行列式键盘,即键盘排列为4行、4列,共16个按键。44键盘的电路图如图 1-3所示,分别定义这16个按键盘为KEY116。图 2-1 44键盘电路图图中C1C4为44键盘的列扫描线,L1L4为44键盘的行扫描线。先使行扫描线输出高电平,然后读取列扫描线的状态,得到与按键横向位置对应的4位列码;如果是有键被按下时,则对应的列扫描线必然会被读回高电平,如果是无键盘按下时,则读取的列码必定全是0(低电平)。这也就可以判断有无按键的按下了。2.2 SPCE0

7、61A获取44键盘键值原理单片机与该电路连接时,使用4个端口作为输出口,接4条行扫描线;使用4个端口作为输入口,接4条列扫描线。使用SPCE061A的IOA815八个端口作44键盘的扫描,IOA03接行扫描线,IOA47接列扫描线。IOA15IOA14IOA13IOA12SPCE061A IOA 11 IOA10 IOA9 IOA8L1L2L3L44X4键盘C1C2C3C4图 2-2 SPCE061A和44键盘电路连接图如上图中,IOA12IOA15设置为输出口,接行扫描线;IOA8IOA11设置为带下拉电阻的输入口,接列扫描线。按照44键盘的工作原理,先只把IOA12输出高电平,其他都输出低

8、电平,扫描IOA8到IOA11四个输入口的值,如果每个输入口的值还是0;再把IOA13输出高电平,其他都输出低电平,扫描IOA8到IOA11四个输入口的值,如果每个输入口还没有检测到高电平;从IOA14输出高电平扫描,从IOA15输出高电平扫描,直到检测到高电平,保存扫描行值和列码。2.3 硬件连接硬件连接图如图 2-3,IOA0IOA7连接和6位数码管的ag、dp,IOA口的高八位IOA15IOA8连接44键盘的L1L4、C1C4,IOB15IOB12连接数码管的位信号14,IOB2IOB1连接数码管的位信号56,IOB0连接数码管的分隔符信号DD。即把JP4、JP5的引脚全部用跳线短接起来

9、,用一根排线连接J28和JP7,注意J27和JP7的连接顺序(连接顺序为:J27的第0号引脚连接JP7的C4引脚,J27的第7号引脚连接JP7的L1引脚)。abcdefgDP6位数码管123456DDIOA0IOA1IOA2IOA3IOA4 IOA15IOA5 IOA14IOA6 IOA13IOA7 IOA12SPCE061AIOB15 IOA11IOB14 IOA10IOB13 IOA9IOB12 IOA8IOB2IOB1IOB0L1L2L3L44X4键盘C1C2C3C4图 2-3 硬件连接图第3章 软件设计方案3.1 设计步骤1.建立一个新工程cyd,在工程里新建C语言文件main.c。2

10、.拷贝并添加头文件SPCE061A.c和SPCE061A.inc到新建工程cyd。3.按照程序流程图编写程序,如图3-1所示。开始HI初始化系统取键值 确认键按下确认键按下标志1数字键按下且确认键没有按下当前显示的数字左移一位按键代表的数字显示在最右边的数码管上删除键按下且确认键没有按下当前显示的数字右移一位最左边的数码管显示0其他清看门狗图 3-1 主程序流程图4. Rebuild All。5.根据硬件连接图连接实验箱电路。6.下载程序到实验箱,运行。7.观察实验箱LED数码管的状态,分析是否和设计要求相符。3.2 设计程序由于程序过多,如附录所示。第4章 调试结果与分析4.1 调试结果给

11、44 键盘的每个键定义一个功能,其中把定义为 09 的键盘称为数字键,把定义成DEL的键称为删除键,把定义成ENT的键成为确认键,其他键称为保留键。如果是数字键按下,把代表数字显示在数码管上:按键按下时,6位数码管靠右边显示该键的代表数字;继续按键时,已经显示在数码管上的数字左移一位,按键代表的数字显示在最右边的数码管上。如果是删除键按下时,每按一次删除键显示在最右边数字被删除,其他数字右移一位,最右边一位显示 0,比如在第 5 个数码管上显示“8”,在第 6 个数码管上显示“9”,当按一次删除键时,在第 6 个数码管上显示“8”,第 5 个数码管显示按键前第四个数码管显示的内容(或者说删除了

12、9)。4.2 结果分析此设计验证了键盘输入在LED数码管上的显示的功能。可能会出现的问题就是在按键时候需要注意,当保留键按下时,不做任何操作。当按确认键时,按任何键将不起作用。结论与体会设计结论:1. 设计中我遇到了按键分辨的问题。2. 我采用的解决方法是自己在纸上记下自己定义的功能。3. 此次设计的优点是程序简单,不过缺点是操作繁琐。很难理清按键顺序。4. 我建议能够简化操作步骤,使电路图连接更清晰。操作起来能够得心应手。心得体会:单片机是一门非常重视实践的技术,不能总是看书,但要学习它首先应看书,对单片机引脚、内部结构、寄存器和原理有一定地了解和感官认识,它的是怎样工作的,能干些什么?刚开

13、始时,也许你看不明白,但这并不要紧,因为你还缺乏实践经验。现在单片机应用广泛,因此各个厂家分别推出了自己的单片机,按内部结构体系派系分:51系列、PIC系列、AVR系列、摩托罗拉等等!因为他们的编程方法和调试过程以及内部指令结构有一定的相似,只要学精通一款就OK了!尤其是用C语言编程,就几乎不用分什么派系,但是我们要选择一款有代表性的知识范围广,并且入门容易,书籍多。一般来说,MCS-51系列单片机已经得到广泛的普及和应用,市场上它的资料也比较多,用的人也很多。参考文献1肖洪兵.跟我学用单片机J.北京:北京航空航天大学出版社,2002.8 2何立民.单片机高级教程第1版M.北京:北京航空航天大

14、学出版社,2001.63赵晓安.MCS-51单片机原理及应用M.天津:天津大学出版社,2001.3 4李广第.单片机基础第1版M.北京:北京航空航天大学出版社,1999.55徐惠民.单片微型计算机原理与应用M.北京:北京邮电大学出版社,1996.2 6 袁勤勇.嵌入式系统构件M.北京:北京机械工业出版社,2002.附录#include SPCE061A.h#include Dig.h#include Key.hint main(void)int Ent_Flag = 0;unsigned int uiKey;unsigned int uiData6 = 1,0,0,0,0,1;uiData0

15、= 0;uiData5 = 0;Key_Init();DIG_Init();while(1)uiKey = Key_Get();switch(uiKey)Case KEY_0:if(Ent_Flag = 0)uiData0 = uiData1; uiData1 = uiData2;uiData2 = uiData3;uiData3 = uiData4;uiData4 = uiData5;uiData5 = 7; break;case KEY_1:if(Ent_Flag = 0) uiData0 = uiData1;uiData1 = uiData2;uiData2 = uiData3;uiDa

16、ta3 = uiData4;uiData4 = uiData5;uiData5 = 8; break; case KEY_2: if(Ent_Flag = 0) uiData0 = uiData1;uiData1 = uiData2;uiData2 = uiData3;uiData3 = uiData4;uiData4 = uiData5;uiData5 = 9; break;case KEY_3: break;case KEY_4:if(Ent_Flag = 0)uiData0 = uiData1; uiData1 = uiData2;uiData2 = uiData3;uiData3 =

17、uiData4;uiData4 = uiData5;uiData5 = 4; break;case KEY_5: if(Ent_Flag = 0) uiData0 = uiData1;uiData1 = uiData2;uiData2 = uiData3;uiData3 = uiData4;uiData4 = uiData5;uiData5 = 5; break;case KEY_6: if(Ent_Flag = 0) uiData0 = uiData1; uiData1 = uiData2;uiData2 = uiData3;uiData3 = uiData4;uiData4 = uiDat

18、a5;uiData5 = 6;break;case KEY_7: break;case KEY_8: if(Ent_Flag = 0) uiData0 = uiData1;uiData1 = uiData2;uiData2 = uiData3;uiData3 = uiData4;uiData4 = uiData5;uiData5 = 1;break;case KEY_9: if(Ent_Flag = 0) uiData0 = uiData1; uiData1 = uiData2;uiData2 = uiData3;uiData3 = uiData4;uiData4 = uiData5;uiDa

19、ta5 = 2;break;case KEY_A: if(Ent_Flag = 0) uiData0 = uiData1;uiData1 = uiData2;uiData2 = uiData3;uiData3 = uiData4;uiData4 = uiData5;uiData5 = 3;break;case KEY_B:break;case KEY_C: if(Ent_Flag = 0) uiData5 = uiData4; uiData4 = uiData3;uiData3 = uiData2;uiData2 = uiData1;uiData1 = uiData0;uiData0 = 0;

20、 break;case KEY_D: if(Ent_Flag = 0) uiData0 = uiData1; uiData1 = uiData2;uiData2 = uiData3;uiData3 = uiData4;uiData4 = uiData5;uiData5 = 0; break;case KEY_E: break;case KEY_F: Ent_Flag = 1;break;default:break;DIG_Set(1,g_DatauiData0); DIG_Set(2,g_DatauiData1); DIG_Set(3,g_DatauiData2); DIG_Set(4,g_D

21、atauiData3); DIG_Set(5,g_DatauiData4); DIG_Set(6,g_DatauiData5); *P_Watchdog_Clear = 0x0001; 课程设计成绩评价表课程名称单片机的控制系统课程设计题目名称键盘输入在LED数码管上的显示学生姓名学号指导教师姓名职称序号评价项目指 标满分评分1工作量、工作态度和出勤率按期圆满的完成了规定的任务,难易程度和工作量符合教学要求,工作努力,遵守纪律,出勤率高,工作作风严谨,善于与他人合作。202课程设计质量课程设计选题合理,计算过程简练准确,分析问题思路清晰,结构严谨,文理通顺,撰写规范,图表完备正确。453创新工作中有创新意识,对前人工作有一些改进或有一定应用价值。54答辩能正确回答指导教师所提出的问题。30总分评语:指导教师: 年 月 日

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号