单片机课设Word文档下载推荐.docx
《单片机课设Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《单片机课设Word文档下载推荐.docx(15页珍藏版)》请在冰点文库上搜索。
数码管的现实方式有静态和动态显示方式两种。
静态显示方式:
把多个LED显示器的每一段与一个独立的并行口相连接,而公共端则根据具体情况连接到“VCC”或“GND”,这种连接方式的每一个显示器都要占用一个单独的具有锁存功能的I/O口,单片机只需把要显示的字形代码输入进接口电路即可。
因此,使用这种方式对I/O的需求较大,电路也较为复杂,但是具有编程简单,显示稳定,单片机效率较高的优点。
动态显示方式:
其接口电路是把所有显示器的笔划段同名端连接在一起,而每一个显示器的公共端COM与各自独立的I/O口连接。
当单片机输送字形码时,所有显示器接受到相同字型码,但具体哪一个显示器亮,则取决于COM端,而这一端由I/O口控制。
所谓动态扫描即分时方法,一位一位的控制各个显示器的COM端,是每个显示器每隔一段时间亮一次,点亮时间即为短暂(约1毫秒),由于视觉暂留和二极管的余辉效应,给人的印象即是一组稳定的数据显示。
本设计将采用静态显示方式。
2.3键盘设计
键盘输入显示数字部分,扩展为4
4的矩阵式键盘,共16个按键,对应从数字0、1、2、3、4、5、6、7、8、9和英文字母A、b、C、d、E、F共16个符号。
使用到AT89C51的P1口。
键盘设计如图2.3所示:
图2.3键盘输入电路及对应输出字符
具体按键的对应输出字符及延时将在后面的程序编写中实现。
3.系统总电路设计及分析
本设计在Proteus软件中完成,系统总电路图如图3.1所示:
图3.1系统总电路图
如图3.1所示,P1.0—P1.7口用来接矩阵键盘;
P2口没有使用,全部置空;
P3口用来连接七段式数码管;
而P0口,因为内部没有上拉电阻,故利用排阻RP1来作上拉电阻,如图3.2所示:
图3.2排阻RP1
该C51单片机的XTAL1和XTAL2用来接内部晶振电路,如图3.3所示:
图3.3晶振电路
复位电路及单片机
端口的使用,
低电平时,将锁定RESET,保持高电平时,可访问内部存储器,如图3.4所示:
图3.4复位电路及
4.C语言程序设计
4.1程序流程图
该程序功能是扫描键盘是否有按键按下并做相应显示。
流程图如图4.1所示:
图4.1程序流程图
4.2程序分析
程序根据P1口读入的状态,判断是否输出字符,输出具体哪个字符。
由于七段式数码管形状类似于数字“8”,故在输出英文字母时,为了显示方便,分别显示为大小写不一的“A”、“b”、“C”、“d”、“E”、“F”。
因为采用共阴极数码管,所以列出所要显示的16个数字、字母对应的十六进制数据代码:
0——0x3f;
1——0x06;
2——0x5b;
3——0x4f;
4——0x66;
5——0x6d;
6——0x7d;
7——0x07;
8——0x7f;
9——0x6f;
A——0x77;
b——0x7c;
C——0x39;
d——0x5e;
E——0x79;
F——0x71;
因为要扫描P1口的高4位,即判断矩阵键盘的列,固有:
选取P1.0口的代码为:
P1=0xfe;
选取P1.1口的代码为:
P1=0xfd;
选取P1.2口的代码为:
P1=0xfb;
选取P1.3口的代码为:
P1=0xf7;
为了消除键抖动可能带来的影响,还应设计延时程序来去抖动。
为了提高程序的效率和可读性,将延时程序、显示程序和键盘扫描程序设计为子函数。
并利用while循环,不断检测按键是否被按下。
4.3C语言程序及注释
#include"
reg51.h"
//51单片机头文件
#defineucharunsignedchar
#defineuintunsignedint
ucharcodetable[]={//共阴极数码管0至9,A至F
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
voiddelay(uintxms)//延时函数
{uinti,j;
for(i=xms;
i>
0;
i--)
for(j=100;
j>
j--);
}
voiddisplay(ucharnum)//显示函数
{P3=table[num];
}
voidkeyscan()//键盘扫描函数
{uchartemp,key;
P1=0xfe;
//P1.0=0,扫描列
temp=P1;
//读P1口状态给temp
temp=temp&
0xf0;
//与
if(temp!
=0xf0)//不等于0xf0向下执行
{delay(10);
//延时去抖动
temp=P1;
//重读P1口状态给temp
temp=temp&
//再与
if(temp!
=0xf0)//还是不等于0xf0,说明确实有键按下
{temp=P1;
//再向temp读入P1口状态
switch(temp)
{case0xee:
key=7;
break;
case0xde:
key=8;
case0xbe:
key=9;
case0x7e:
key=10;
}
while(temp!
=0xf0)//等待按键释放
{temp=P1;
temp=temp&
display(key);
P1=0xfd;
//P1.1=0,扫描列
=0xf0)
{case0xed:
key=4;
case0xdd:
key=5;
case0xbd:
key=6;
case0x7d:
key=11;
P1=0xfb;
//P1.2=0,扫描列
{case0xeb:
key=1;
case0xdb:
key=2;
case0xbb:
key=3;
case0x7b:
key=12;
P1=0xf7;
//P3.0=0,扫描列
{case0xe7:
key=15;
case0xd7:
key=0;
case0xb7:
key=14;
case0x77:
key=13;
}
voidmain()
{P3=0;
P3=0xc0;
//初始状态设定为“-”符号
while
(1)
{keyscan();
5.电路及程序仿真
5.1编译C语言程序
为了使AT89C51单片机顺利运行,需要将C语言程序编译为HEX文件,本设计将使用Keil软件进行编译。
打开Keil软件,选择Project,新建工程jp.Uv2,则ProjectWorkspace显示如图5.1所示:
图5.1新建工程
新建文件file,输入C语言代码保存,然后再SourceGroup1上单击右键,添加保存的C语言文件。
如图5.2所示:
图5.2添加C语言代码
单击Optionsfortarget按钮,选择Output选项,在其中勾选上CreateHEXFile,单击确定。
如图5.3所示:
图5.3勾选CreateHEXFile
最后选择菜单栏中的Project选项,点击Buildtarget,即可在工程目录下生成相应的HEX文件。
5.2电路仿真
打开Proteus软件,导入所设计的电路图,然后双击图中的AT89C51单片机,在ProgramFile中选中已经编译好的HEX文件,单击确定。
如图5.4所示:
图5.4导入HEX文件
此时点击软件左下角的运行按钮,整个系统就开始正常工作了。
初始状态为显示“-”符号,如图5.5所示:
图5.5初始未按任何键时
仿真结果:
点击各键开关时,数码管均能正确显示相应的字符,如图5.6所示,显示矩阵为:
A987
b654
C321
dE0F
图5.6仿真结果
6.心得体会
本次课程设计是单片机原理与应用,利用51单片机设计并实现仿真键盘显示电路。
因为是单片机原理与应用的课程设计,必须对C51单片机这一部分非常熟悉。
所以在动手之前,不得不把课本上这一部分再读一遍。
在复习理论知识的过程中,发现自己平时上课时没有高效率的学习,对单片机接口和一些端口功能非常陌生。
于是只好从网上找到的C51系列单片机内容开始看,经过一遍遍反复阅读,终于对键盘设计有了一定的理解。
搜索资料、阅读课本的过程很繁琐,尤其是没有进展的时候,非常焦急。
在慢慢学习的过程中,关于单片机各个接口也有了越来越详细的了解。
特别是端口实现数码管明灭的设置。
当编写C语言程序的时候,因为实验课用的编辑软件比较不容易编辑,而且版本过旧,遇到了很多的困难,后来查询到了比较流行而且实用的软件Keil。
在遇到程序代码方面的困难的时候,一边请教同学,一边不断地找相似的程序配合理解阅读。
在这段学习和写报告的时间里,反复经历了着急,欣喜,烦躁,轻松,紧张等等等等一系列的精神状态,于是在最终完成这个课程设计的时候,心里充满了成就感。
同时也更加了解了自己,了解自己在遇到一个接一个难题时的心态和应对方式,这样了解自己,才能有针对性的克服弱点进而提高能力。
做课程设计也是一个快乐的过程,自己找教程学习,并和大家一起探讨,相互学习,共同进步,同学们紧密的在一块合作,这是一个完成任务的过程,更是一个合作攻坚,磨砺身心的过程,参与其中的人都受益匪浅。
参考文献
[1]李群芳.单片机微型计算机与接口技术,电子工业出版社,2007.
[2]戴佳.51单片机应用系统开发典型事例,中国电力出版社,2005.
[3]赵建领.51单片机开发与应用技术详解,艺术图书出版社,2008.
[4]靳硅.基于51系列单片机的LED显示屏开发技术,电子工业出版社,2003.
[5]刘维.精通汇编程序设计,北京航空航天大学出版社,2005.
[6]姚燕南.微型计算机原理与接口技术,高等教育出版社,2004.
[7]唐继弦.51单片机工程应用事例,机械工业出版社,2003.
[8]张义和.例说51单片机,人民邮电出版社,2008.