单片机课设.docx

上传人:b****2 文档编号:548801 上传时间:2023-04-29 格式:DOCX 页数:15 大小:126.59KB
下载 相关 举报
单片机课设.docx_第1页
第1页 / 共15页
单片机课设.docx_第2页
第2页 / 共15页
单片机课设.docx_第3页
第3页 / 共15页
单片机课设.docx_第4页
第4页 / 共15页
单片机课设.docx_第5页
第5页 / 共15页
单片机课设.docx_第6页
第6页 / 共15页
单片机课设.docx_第7页
第7页 / 共15页
单片机课设.docx_第8页
第8页 / 共15页
单片机课设.docx_第9页
第9页 / 共15页
单片机课设.docx_第10页
第10页 / 共15页
单片机课设.docx_第11页
第11页 / 共15页
单片机课设.docx_第12页
第12页 / 共15页
单片机课设.docx_第13页
第13页 / 共15页
单片机课设.docx_第14页
第14页 / 共15页
单片机课设.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

单片机课设.docx

《单片机课设.docx》由会员分享,可在线阅读,更多相关《单片机课设.docx(15页珍藏版)》请在冰点文库上搜索。

单片机课设.docx

单片机课设

1.设计分析

本次课程设计题目是《简易键盘与显示功能设计》,设计要求:

用并行口设计一键盘显示电路,按键为数字0-9和字母A-F,要求当某个按键按下时,能显示出该按键的值。

其中数码管显示部分,本设计将采用七段式共阴极数码管,利用单片机的P3口使用静态显示方式。

键盘输入显示数字部分,扩展为4

4的矩阵式键盘,共16个按键,对应从数字0到9和英文字母A—F共16个符号。

使用AT89C51的P1口。

完成电路设计后,还需要编写C语言程序,通过Keil软件编译并生成HEX文件,然后通过Proteus仿真软件读入AT89C51仿真芯片中,最后运行仿真。

2.数码管显示与键盘设计

2.1数码管的连接及显示原理

本设计采用七段式共阴极数码管来完成此项功能。

七段式数码管LED是由7个条形发光二极管和一个小圆点发光二极管组成,通过控制各个二极管的明灭组成所需要的字符。

数码管一共8个接口,分别对应7个条形二极管和一个小圆点发光二极管,联系到单片机及控制程序中,对应一个8位十六进制数,通过该十六进制数的输入,得到相应的所需字符。

数码管如图2.1所示:

图2.1七段式数码管

七段式数码管根据内部发光二极管的接线形式,可分为共阳极和共阴极两种类型。

其中,COM为公共端。

共阳极接法是低电平亮,高电平灭;共阴极接法是高电平亮,低电平灭。

内部结构如图2.2所示。

本设计将采用共阴极接法。

图2.2(左)共阴极和(右)共阳极

2.2数码管的显示方式

数码管的现实方式有静态和动态显示方式两种。

静态显示方式:

把多个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>0;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&0xf0;//再与

if(temp!

=0xf0)//还是不等于0xf0,说明确实有键按下

{temp=P1;//再向temp读入P1口状态

switch(temp)

{case0xee:

key=7;break;

case0xde:

key=8;break;

case0xbe:

key=9;break;

case0x7e:

key=10;break;

}

while(temp!

=0xf0)//等待按键释放

{temp=P1;

temp=temp&0xf0;}

display(key);

}

}

P1=0xfd;//P1.1=0,扫描列

temp=P1;

temp=temp&0xf0;

if(temp!

=0xf0)

{delay(10);

temp=P1;

temp=temp&0xf0;

if(temp!

=0xf0)

{temp=P1;

switch(temp)

{case0xed:

key=4;break;

case0xdd:

key=5;break;

case0xbd:

key=6;break;

case0x7d:

key=11;break;}

while(temp!

=0xf0)

{temp=P1;

temp=temp&0xf0;}

display(key);

}

}

P1=0xfb;//P1.2=0,扫描列

temp=P1;

temp=temp&0xf0;

if(temp!

=0xf0)

{delay(10);

temp=P1;

temp=temp&0xf0;

if(temp!

=0xf0)

{temp=P1;

switch(temp)

{case0xeb:

key=1;break;

case0xdb:

key=2;break;

case0xbb:

key=3;break;

case0x7b:

key=12;break;}

while(temp!

=0xf0)

{temp=P1;

temp=temp&0xf0;}

display(key);

}

}

P1=0xf7;//P3.0=0,扫描列

temp=P1;

temp=temp&0xf0;

if(temp!

=0xf0)

{delay(10);

temp=P1;

temp=temp&0xf0;

if(temp!

=0xf0)

{temp=P1;

switch(temp)

{case0xe7:

key=15;break;

case0xd7:

key=0;break;

case0xb7:

key=14;break;

case0x77:

key=13;break;}

while(temp!

=0xf0)

{temp=P1;

temp=temp&0xf0;}

display(key);

}

}

}

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.

 

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

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2