单片机课程设计键盘输入在LED数码管上的显示.docx
- 文档编号:9484176
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:14
- 大小:106.59KB
单片机课程设计键盘输入在LED数码管上的显示.docx
《单片机课程设计键盘输入在LED数码管上的显示.docx》由会员分享,可在线阅读,更多相关《单片机课程设计键盘输入在LED数码管上的显示.docx(14页珍藏版)》请在冰豆网上搜索。
单片机课程设计键盘输入在LED数码管上的显示
东北石油大学
课程设计
课程单片机的控制系统课程设计
题目键盘输入在LED数码管上的显示
院系电气信息工程学院
专业班级
学生姓名
学生学号
指导教师
年月日
东北石油大学课程设计任务书
课程单片机的控制系统课程设计
题目键盘输入在LED数码管上的显示
专业姓名学号
主要内容、基本要求、主要参考资料等
主要内容:
完成键盘输入在LED数码管上的显示。
基本要求:
1.了解4×4键盘的工作原理。
2.熟悉SPCE061A单片机控制数码管显示的方法。
3.掌握4×4键盘的使用方法。
4.掌握4×4键盘控制数码管显示的方法。
参考资料:
[1]肖洪兵.跟我学用单片机[J].北京:
北京航空航天大学出版社,2002.8
[2]何立民.单片机高级教程第1版[M].北京:
北京航空航天大学出版社,2001.6
[3]赵晓安.MCS-51单片机原理及应用[M].天津:
天津大学出版社,2001.3
[4]李广第.单片机基础第1版[M].北京:
北京航空航天大学出版社,1999.5
[5]徐惠民.单片微型计算机原理与应用[M].北京:
北京邮电大学出版社,1996.2
[6]袁勤勇.嵌入式系统构件[M].北京:
北京机械工业出版社,2002.
完成期限
指导教师
专业负责人
年月日
2.2SPCE061A获取4×4键盘键值原理2
2.3硬件连接3
3.2设计程序6
第4章调试结果与分析7
4.1调试结果7
4.2结果分析7
结论与体会8
参考文献9
附录10
第1章设计的研究背景及目的要求
1.1研究背景
用单片机驱动LED数码管有很多方法,按显示方式可分静态显示和动态(扫描)显示;按译码方式可分硬件译码和软件译码。
静态显示数据稳定,占用很少的CPU时间。
动态显示需要CPU时刻对显示器件进行数据刷新,显示数据有闪烁感,占用的CPU时间多。
LED数码管的外围电路一般需要一个限流电阻和加大驱动电流的晶体管。
LED数码管是由发光二级管显示字段组成的显示器,有“8”字段和“米”字段之分,这种显示器有共阳极和共阴极两种。
实际上不用驱动电路即可达到正常亮度,为了可靠性设计可采用晶体管构成驱动电路。
1.2设计目的
在单片机的产品设计中,人机界面是非常重要的部分,而且随着系统的日益复杂,以及人们对产品的人机交互能力的要求不断提升,常握单片机系统中的人机界面基础设计能力成为了学习单片机的基础课程,而4X4键盘的操作和LED数码管的动态显示是人机界面设计的基础内容,掌握这些基础设计能力,加深对人机界面的认识,同时提高人机界面系统设计能力。
1.3硬件选择
装有Windows系统和μ’nSP™IDE仿真环境的PC机一台,μ’nSP™十六位单片机实验箱一个。
本设计用到的实验箱硬件模块为:
SPCE061A核心及周边电路模块(包含32个I/O口)。
半导体数码管,4×4键盘。
做此实验用51板也可以,因为51板也提供了相应的LED模组,因为实验室里面给我们提供了61板,所以我决定选用SPCE061A单片机实验箱。
1.4设计内容
给4×4键盘的每个键定义一个功能,其中把定义为0~9的键盘称为数字键,把定义成DEL的键称为删除键,把定义成ENT的键成为确认键,其他键称为保留键。
如果是数字键按下,把代表数字显示在数码管上:
按键按下时,6位数码管靠右边显示该键的代表数字;继续按键时,已经显示在数码管上的数字左移一位,按键代表的数字显示在最右边的数码管上。
第2章设计的基本原理及硬件连接方案
2.14X4键盘扫描原理图
键盘按其接线方法有:
直接式键盘、行列式键盘(又称矩阵键盘)、串转并键盘等;在本设计中,采用4X4的行列式键盘,即键盘排列为4行、4列,共16个按键。
4×4键盘的电路图如图1-3所示,分别定义这16个按键盘为KEY1~16。
图2-14×4键盘电路图
图中C1~C4为4×4键盘的列扫描线,L1~L4为4×4键盘的行扫描线。
先使行扫描线输出高电平,然后读取列扫描线的状态,得到与按键横向位置对应的4位列码;如果是有键被按下时,则对应的列扫描线必然会被读回高电平,如果是无键盘按下时,则读取的列码必定全是0(低电平)。
这也就可以判断有无按键的按下了。
2.2SPCE061A获取4×4键盘键值原理
单片机与该电路连接时,使用4个端口作为输出口,接4条行扫描线;使用4个端口作为输入口,接4条列扫描线。
使用SPCE061A的IOA8~15八个端口作4×4键盘的扫描,IOA0~3接行扫描线,IOA4~7接列扫描线。
图2-2SPCE061A和4×4键盘电路连接图
如上图中,IOA12~IOA15设置为输出口,接行扫描线;IOA8~IOA11设置为带下拉电阻的输入口,接列扫描线。
按照4×4键盘的工作原理,先只把IOA12输出高电平,其他都输出低电平,扫描IOA8到IOA11四个输入口的值,如果每个输入口的值还是0;再把IOA13输出高电平,其他都输出低电平,扫描IOA8到IOA11四个输入口的值,如果每个输入口还没有检测到高电平;从IOA14输出高电平扫描,从IOA15输出高电平扫描,直到检测到高电平,保存扫描行值和列码。
2.3硬件连接
硬件连接图如图2-3,IOA0~IOA7连接和6位数码管的a~g、dp,IOA口的高八位IOA15~IOA8连接4×4键盘的L1~L4、C1~C4,IOB15~IOB12连接数码管的位信号1~4,IOB2~IOB1连接数码管的位信号5~6,IOB0连接数码管的分隔符信号DD。
即把JP4、JP5的引脚全部用跳线短接起来,用一根排线连接J28和JP7,注意J27和JP7的连接顺序(连接顺序为:
J27的第0号引脚连接JP7的C4引脚,J27的第7号引脚连接JP7的L1引脚)。
图2-3硬件连接图
第3章软件设计方案
3.1设计步骤
1.建立一个新工程cyd,在工程里新建C语言文件main.c。
2.拷贝并添加头文件SPCE061A.c和SPCE061A.inc到新建工程cyd。
3.按照程序流程图编写程序,如图3-1所示。
图3-1主程序流程图
4.RebuildAll。
5.根据硬件连接图连接实验箱电路。
6.下载程序到实验箱,运行。
7.观察实验箱LED数码管的状态,分析是否和设计要求相符。
3.2设计程序
由于程序过多,如附录所示。
第4章调试结果与分析
4.1调试结果
给4×4键盘的每个键定义一个功能,其中把定义为0~9的键盘称为数字键,把定义成DEL的键称为删除键,把定义成ENT的键成为确认键,其他键称为保留键。
如果是数字键按下,把代表数字显示在数码管上:
按键按下时,6位数码管靠右边显示该键的代表数字;继续按键时,已经显示在数码管上的数字左移一位,按键代表的数字显示在最右边的数码管上。
如果是删除键按下时,每按一次删除键显示在最右边数字被删除,其他数字右移一位,最右边一位显示0,比如在第5个数码管上显示“8”,在第6个数码管上显示“9”,当按一次删除键时,在第6个数码管上显示“8”,第5个数码管显示按键前第四个数码管显示的内容(或者说删除了9)。
4.2结果分析
此设计验证了键盘输入在LED数码管上的显示的功能。
可能会出现的问题就是在按键时候需要注意,当保留键按下时,不做任何操作。
当按确认键时,按任何键将不起作用。
结论与体会
设计结论:
1.设计中我遇到了按键分辨的问题。
2.我采用的解决方法是自己在纸上记下自己定义的功能。
3.此次设计的优点是程序简单,不过缺点是操作繁琐。
很难理清按键顺序。
4.我建议能够简化操作步骤,使电路图连接更清晰。
操作起来能够得心应手。
心得体会:
单片机是一门非常重视实践的技术,不能总是看书,但要学习它首先应看书,对单片机引脚、内部结构、寄存器和原理有一定地了解和感官认识,它的是怎样工作的,能干些什么?
刚开始时,也许你看不明白,但这并不要紧,因为你还缺乏实践经验。
现在单片机应用广泛,因此各个厂家分别推出了自己的单片机,按内部结构体系派系分:
51系列、PIC系列、AVR系列、摩托罗拉等等……!
因为他们的编程方法和调试过程以及内部指令结构有一定的相似,只要学精通一款就OK了!
尤其是用C语言编程,就几乎不用分什么派系,但是我们要选择一款有代表性的知识范围广,并且入门容易,书籍多。
一般来说,MCS-51系列单片机已经得到广泛的普及和应用,市场上它的资料也比较多,用的人也很多。
参考文献
[1]肖洪兵.跟我学用单片机[J].北京:
北京航空航天大学出版社,2002.8
[2]何立民.单片机高级教程第1版[M].北京:
北京航空航天大学出版社,2001.6
[3]赵晓安.MCS-51单片机原理及应用[M].天津:
天津大学出版社,2001.3
[4]李广第.单片机基础第1版[M].北京:
北京航空航天大学出版社,1999.5
[5]徐惠民.单片微型计算机原理与应用[M].北京:
北京邮电大学出版社,1996.2[6]袁勤勇.嵌入式系统构件[M].北京:
北京机械工业出版社,2002.
附录
#include"SPCE061A.h"
#include"Dig.h"#include"Key.h"
intmain(void)intEnt_Flag=0;
unsignedintuiKey;
unsignedintuiData[6]={1,0,0,0,0,1};
uiData[0]=0;uiData[5]=0;
Key_Init();DIG_Init();
while
(1)uiKey=Key_Get();
switch(uiKey)CaseKEY_0:
if(Ent_Flag==0){
uiData[0]=uiData[1];
uiData[1]=uiData[2];
uiData[2]=uiData[3];
uiData[3]=uiData[4];
uiData[4]=uiData[5];
uiData[5]=7;}break;caseKEY_1:
if(Ent_Flag==0){
uiData[0]=uiData[1];
uiData[1]=uiData[2];
uiData[2]=uiData[3];
uiData[3]=uiData[4];
uiData[4]=uiData[5];
uiData[5]=8;}break;caseKEY_2:
if(Ent_Flag==0){
uiData[0]=uiData[1];
uiData[1]=uiData[2];
uiData[2]=uiData[3];
uiData[3]=uiData[4];
uiData[4]=uiData[5];
uiData[5]=9;}break;caseKEY_3:
break;caseKEY_4:
if(Ent_Flag==0)
uiData[0]=uiData[1];
uiData[1]=uiData[2];
uiData[2]=uiData[3];
uiData[3]=uiData[4];
uiData[4]=uiData[5];
uiData[5]=4;}
break;caseKEY_5:
if(Ent_Flag==0){
uiData[0]=uiData[1];
uiData[1]=uiData[2];
uiData[2]=uiData[3];
uiData[3]=uiData[4];
uiData[4]=uiData[5];
uiData[5]=5;
break;caseKEY_6:
if(Ent_Flag==0)
uiData[0]=uiData[1];
uiData[1]=uiData[2];
uiData[2]=uiData[3];
uiData[3]=uiData[4];
uiData[4]=uiData[5];
uiData[5]=6;
break;caseKEY_7:
break;caseKEY_8:
if(Ent_Flag==0){
uiData[0]=uiData[1];
uiData[1]=uiData[2];
uiData[2]=uiData[3];
uiData[3]=uiData[4];
uiData[4]=uiData[5];
uiData[5]=1;
break;caseKEY_9:
if(Ent_Flag==0){
uiData[0]=uiData[1];
uiData[1]=uiData[2];
uiData[2]=uiData[3];
uiData[3]=uiData[4];
uiData[4]=uiData[5];
uiData[5]=2;}
break;caseKEY_A:
if(Ent_Flag==0){
uiData[0]=uiData[1];
uiData[1]=uiData[2];
uiData[2]=uiData[3];
uiData[3]=uiData[4];
uiData[4]=uiData[5];
uiData[5]=3;}
break;caseKEY_B:
break;caseKEY_C:
if(Ent_Flag==0)
uiData[5]=uiData[4];
uiData[4]=uiData[3];
uiData[3]=uiData[2];
uiData[2]=uiData[1];
uiData[1]=uiData[0];
uiData[0]=0;
break;caseKEY_D:
if(Ent_Flag==0)
uiData[0]=uiData[1];
uiData[1]=uiData[2];
uiData[2]=uiData[3];
uiData[3]=uiData[4];
uiData[4]=uiData[5];
uiData[5]=0;
break;caseKEY_E:
break;caseKEY_F:
Ent_Flag=1;break;
default:
break;
DIG_Set(1,g_Data[uiData[0]]);
DIG_Set(2,g_Data[uiData[1]]);
DIG_Set(3,g_Data[uiData[2]]);
DIG_Set(4,g_Data[uiData[3]]);
DIG_Set(5,g_Data[uiData[4]]);
DIG_Set(6,g_Data[uiData[5]]);
*P_Watchdog_Clear=0x0001;
}
}
东北石油大学课程设计成绩评价表
课程名称
单片机的控制系统课程设计
题目名称
键盘输入在LED数码管上的显示
学生姓名
学号
指导教师姓名
职称
序号
评价项目
指标
满分
评分
1
工作量、工作态度和出勤率
按期圆满的完成了规定的任务,难易程度和工作量符合教学要求,工作努力,遵守纪律,出勤率高,工作作风严谨,善于与他人合作。
20
2
课程设计质量
课程设计选题合理,计算过程简练准确,分析问题思路清晰,结构严谨,文理通顺,撰写规范,图表完备正确。
45
3
创新
工作中有创新意识,对前人工作有一些改进或有一定应用价值。
5
4
答辩
能正确回答指导教师所提出的问题。
30
总分
评语:
指导教师:
年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 键盘输入 LED 数码管 显示