4乘4矩阵键盘输入数码管显示四位数要点Word文件下载.docx
《4乘4矩阵键盘输入数码管显示四位数要点Word文件下载.docx》由会员分享,可在线阅读,更多相关《4乘4矩阵键盘输入数码管显示四位数要点Word文件下载.docx(20页珍藏版)》请在冰豆网上搜索。
3.童诗白、华成英.模拟电子技术基础.[M]北京:
4..付家才.电子实验与实践.[M]北京:
高等教育出版社,2004年
5.沙占友、李学芝著.中外数字万用表电路原理与维修技术.[M]北京:
人民邮电出版社,1993年
六、按照要求撰写课程设计报告
成绩评定表
评语、建议或需要说明的问题:
指导教师签字:
日期:
成绩
一、概述
本次毕设的题目是:
三相步进电机控制电路的设计。
本次毕设使用80C51单片机作为主控芯片,利用ULN2003A集成电路作为三相步进电机的驱动电路,采用单极性驱动方式,使三相步进电机能在
(1)三相单三拍,
(2)三相双三拍,(3)三相六拍三种工作方式下正常工作;
能实现的功能有:
启动/停止控制、方向控制;
速度控制;
用LED数码管显示工作方式。
键盘输入工作频率。
本次课程设计采用80C51单片机作为主控芯片,程序采用C语言来编写,驱动电路采用ULN2003A集成电路,显示采用7SEG-MPX4-CC,即四位共阴数码管,P0接段码,并用8只1K欧左右电阻上拉。
P2的4位IO口接位选码。
正转,数码管显示1。
反转,数码管显示2.不转,数码管显示0.采用Proteus软件进行仿真。
在KeiluVsuon3编程环境下编程和编译生成HEX文件,导入到80C51单片机,实现对各个模块的控制,实现我们所需要的功能。
本次课程是对毕业设计的基础设计,即实现4x4键盘输入,数码管显示输入数字的设计。
二、方案论证
1步进电机驱动方案选择
方案1:
使用功率三极管等电子器件搭建成功率驱动电路来驱动电机的运行。
这种方案的驱动电路的优点是使用电子器件联接,电路比较简单,但容易受干扰,信号不够稳定,缺点是器件较大而不便电路的集成,使用时很不方便,联接时容易出错误。
方案2:
使用专门的电机驱动芯片ULN2003A来驱动电机运行。
驱动芯片的优点是便于电路的集成,且驱动电路简单,驱动信号很稳定,不易受外界环境的干扰,因而设计的三相步进电机控制系统性能更好。
通过对两种方案的比较,我选择方案2使用ULN2003A电机驱动芯片来作为驱动。
2数码管显示方案选择
把所需要显示的数据通过专用的七段显示译码器(例如7448)的转换输出给LED显示屏。
优点是输出比较简单,可以简化程序,但增加了芯片的费用,电路也比较复杂。
通过程序把所要的数据转化为七段显示的数据,直接通过单片机接口来显示,其优点是简化了电路,但增加了软件编写的负担。
通过对两种方案进行比较,我选择通过软件编写来输出显示信号,即单片机直接和显示器相连。
3控制状态的读取
方案1:
把按键接到单片机的中断口,若有按键按下,单片机接收到中断信号,再通过软件编写的中断程序来执行中断,优点是接线简单,简化了电路,但软件编写较为复杂,不易掌握。
方案2:
不使用中断,直接把开关分别接在单片机的接口上,通过查询端口信号来动作。
通过对方案的比较,我选择通过中断来读取端口信号。
三、控制系统的工作原理
1三相步进电机控制工作原理
(1)步进电机的工作原理
图1步进电机三相接线图
如图1所示,U1、V1、W1接电源,分别有三个开关控制,U2、V2、W2分别接地。
如果给处于错齿状态的相通电,则转子在电磁力的作用下,将向磁导率最大(即最小磁阻位置)位置转动,即向趋于对齿的状态转动。
(2)步进电机的工作方式
三相步进电机可以在三相单拍,三相双拍和三相六拍三种工作过方式下工作。
在三相单三拍工作方式运行时,通电顺序为:
A-B-C-A;
三相双三拍工作方式运行时,通电顺序为:
AB-BC-CA-AB;
三相六拍工作方式运行时,通电顺序为:
A-AB-B-BC-C-CA-A,因此要输出相应的控制字进行控制。
(3)步进电机的转向控制
如果给定工作方式正序换相通电,步进电机正转。
若步进电机的励磁方式为三相六拍,即A-AB-B-BC-C-CA。
如果按反序通电换相,即则电机就反转。
其他方式情况类似。
(4)步进电机的启停控制
步进电机由于其电气特性,运转时会有步进感,即振动感。
为了使电机转动平滑,减小振动,可在步进电机控
制脉冲的上升沿和下降沿采用细分的梯形波,可以减小步进电机的步进角,提高电机运行的平稳性。
在步进电机停转时,为了防止因惯性而使电机轴产生顺滑,则需采用合适的锁定波形,产生锁定磁力矩,锁定步进电机的转轴,使步进电机的转轴不能自由转动。
(5)步进电机的速度控制
脉冲的频率越高,电动机运转的速度越快,否则,速度就越慢。
因而通过延时程序控制输出脉冲的频率,就可以实现对步进电机速度的控制。
2控制系统的设计思路
此次我所设计的是一个三相步进电机控制系统,主要由单片机80C51,3相步进电机,7段数码管,及一些其他相关元件设计而成。
可以通过开关来控制系统的启/停工作,当系统运转时,用开关来控制方向,并使相应的指示灯亮起,同样由开关来选择工作模式。
运转时,用7段数码管来显示工作状态。
最后根据思路所设计出来的硬件图设计相适应的软件。
3控制系统的整体框图
图2为系统总体设计整体框图,单片机80C51,ULN2003A驱动芯片,三相步进电机,7段LED数码管等一些电路模块组成。
图2系统的整体框图
4控制系统的硬件设计
设计一个单片机三相步进电机控制系统要求系统具有如下功能:
(1)用4x4键盘输入步进电机的工作频率及工作状态,如单三拍、双三拍、三相六拍。
(2)正转时数码管显示1,反转时数码管显示2,不转时数码管显示0;
(3)用数码管显示工作状态。
四、电路设计
1.单片机最小系统
单片机最小系统由晶振、瓷片电容、电解电容、电阻、开关及电源组成。
单片机最小系统复位电路的极性电容的大小直接影响单片机的复位时间,一般采用10~30uF,51单片机最小系统容值越大需要的复位时间越短;
单片机最小系统晶振可以采用6MHz或者11.0592MHz,在正常工作的情况下可以采用更高频率的晶振;
51单片机最小系统晶振的振荡频率直接影响单片机的处理速度,频率越大处理速度越快,单片机最小系统起振电容一般采用15~33pF,并且电容离晶振越近越好,晶振离单片机越近越好。
图3单片机最小系统
2.4x4矩阵键盘电路
首先,对P1赋值使P1=0x11,然后令第一行即P17等于零,如果第一行有按键按下,则P0至P3的值会发生变化:
如果第一个按键按下,则P10等于0;
如果第二个按键按下,则P11等于0;
如果第三个按键按下,则P12等于0;
如果第四个按键按下,则P13等于0。
按此规律,直至四行扫描完毕。
图4矩阵键盘
3.数码管显示电路
四位7段数码管,位选端接P2口,段选端通过排阻连接到接P0口,扫描函数扫描,使数码管不断显示输入数据。
图5数码管显示电路
五、软件设计
1主程序流程图
主函数进行键盘扫描,将按键值给显示函数,显示函数对按键值进行处理。
图6主函数流程图
2显示函数流程图
图7显示模块的程序框图
六、性能的测试
1、输入、显示一位数字
图8显示一位数字
2、输入、显示两位数字
图9显示两位数字
3、输入、显示三位数字
图10显示三位数字
4、输入、显示四位数字
图11显示四位数字
七、结论
键盘输入0到9的任意数字,数码管显示;
再次输入任意数字,前一位数字向前移位,作为十位数字,后输入数字,作为个位数字;
按此规律,可以输入任意一位、两位、三位或四位数字。
八、性价比
本设计用简单的常用的器件以及易编写的软件程序实现了要求功能。
51单片机价格便宜甚至实验室即可提供;
共阴数码管相较液晶显示,不尽价格便宜,而且简单、易实现,4x4键盘既是简单的按键开关;
电容、电阻等价格几乎不计,所有这些器件实验室都能提供,成本只有几十元。
性价比偏高。
九、课设体会
经过一个月的努力和付出,完成了本次课程设计,通过本次课程设计提高了我的设计方案和分析问题的能力,加深了对理论知识的理解,做到了理论知识与实践的联系。
学会了Proteus这个仿真软件的运用,积累进行课程设计的经验。
其次,通过本次课程设计,大大提高了自己的动手能力和设计能力,加深对Proteus软件功能的理解,学会用这个软件设计三相步进电机控制系统,将理论知识与实践相联系,为以后在学习和工作的发展打下一个良好的基础。
然后,通过该课程设计,初步理解了利用计算机控制技术进行三相步进电机控制系统的设计。
最后,我明白:
知识不是孤立的,相互之间有联系的,我们要学会理解知识点以及学科之间的融合渗透。
本次课程设计涉及到了计算机技术,自动控制技术,微机技术,数字电子技术等众多知识,因而我们需要把把各个学科之间的知识融合起来,形成一个整体。
认识到Proteus这个软件的强大功能,为以后的学习和工作打下基础。
我相信未来是属于我们的,随着科学技术的发展,控制技术的应用将将越来越广泛,发挥越来越重要的作用。
参考文献
[1]阎石主编.数字电子技术.[M]北京:
[2]陈振官等编著.新颖高效声光报警器.[M]北京:
国防工业出版社,2005年
[3]王东峰等主编.单片机C语言应用100例.[M]北京:
电子工业出版社,2009年
[4]胡耀辉等主编.单片机系统开发实例经典.[M]北京:
冶金工业出版社,2006年
[5]李鸿主编.单片机原理及应用.[M]湖南:
湖南大学出版社,2005年
[6]谭浩强主编.C语言程序设计.[M]北京:
清华大学出版社,2005年
附录I总电路图
图12总电路图
附录II元器件清单
序号
编号
名称
型号
数量
1
U1
单片机
AT89C51
2
C1
电容
瓷片电容
3
C2
电容
4
C3
电解电容
5
K
开关
按键开关
17
6
U2A
四输入与门
74LS21
7
RP2
排阻
Respack-8
8
P
数码管
7SEG
9
VCC
电源
5V直流源
10
GROUND
地
接地
11
附录Ⅲ源程序
#include<
reg51.h>
#defineuintunsignedint
#defineucharunsignedchar
sbitP17=P1^7;
sbitP16=P1^6;
sbitP15=P1^5;
sbitP14=P1^4;
uintcount=0,num=0,k;
uchartable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
//*****************延时子程序***************************
voiddelay(uinti)
{
uintj;
for(;
i>
0;
i--)
for(j=0;
j<
125;
j++);
}
//**************矩阵键盘扫描子程序***********************
uintkeyscan()
uchartemp,keynum;
P1=0xff;
P17=0;
//**************扫描第一行**********************
temp=P1;
temp&
=0x0f;
if(temp!
=0x0f)
{
delay(10);
switch(temp)
{
case0x0e:
keynum=0;
break;
case0x0d:
keynum=1;
case0x0b:
keynum=2;
case0x07:
keynum=3;
}
while(temp!
temp=P1;
}
P16=0;
//**************扫描第二行**********************
temp&
keynum=4;
keynum=5;
keynum=6;
keynum=7;
P15=0;
//**************扫描第三行**********************
keynum=8;
keynum=9;
keynum=10;
keynum=11;
P14=0;
//**************扫描第四行**********************
keynum=12;
keynum=13;
keynum=14;
keynum=15;
returnkeynum;
//********************显示子程序*************************
voidDisplay(uintnum)
uintge,shi,bai,qian;
qian=num/1000;
P0=table[qian];
P2=0xfe;
P2=0xff;
bai=num%1000/100;
P0=table[bai];
P2=0xfd;
shi=num%100/10;
P0=table[shi];
P2=0xfb;
ge=num%10;
P0=table[ge];
P2=0xf7;
voidInit(void)
EA=1;
//**************开总中断
EX1=1;
//*************开外部中断0
IT1=0;
//*************设置为电平触发方式
//*********************主程序***************************
voidmain(void)
{
uinti,count1;
Init();
while
(1)
{
count=keyscan();
//调用扫键子程序
Display(num);
//*********************END******************************
//*********************中断子程序************************
voidInit1()interrupt2
num=num*10+count;
if(num>
9999)
num=num%10;
}//**********