单片机论文Word格式.docx
《单片机论文Word格式.docx》由会员分享,可在线阅读,更多相关《单片机论文Word格式.docx(26页珍藏版)》请在冰豆网上搜索。
因为它是基于嵌入式开发的,所以集嵌入式的优点于一身:
高性能、低功耗、可维护性好。
为了节约空间和降低成本,嵌入式处理器内部通常都会集成许多外设,减轻了布线工作量。
视频信号即可由专用的芯片编码,也可由软件完成编码。
嵌入式视频监控系统另一大优势是系统的网络化,系统可以和网络互联,通过网络将打包好的视频数据发送到请求客户端,用户可以在任何一个可以联网的地方查看监控对象的情况。
总的来说,基于嵌入式的视频监控系统展现的优势是无可替代的。
1.3嵌入式系统简介
嵌入式系统没有明确的定义,比较被大多数人认同的定义是:
以应用为中心,以计算机技术为基础,软硬件可裁剪,功能、成本、体积、可靠性、功耗严格要求的专用计算机系统。
虽然我们对这个名词比较陌生,但是我们日常生活中经常与这个“最熟悉的陌生人”打交道。
譬如当我们掏出手机打电话时,使用车载的GPS导航仪导航时,这些都是我们生活中经常嵌入式设备。
嵌入式系统是为了特定应用而产生,有些系统对实时性、安全性等有特殊要求,传统计算机是实现不了的。
嵌入式涵盖了通信、电子、网络、工业等多个领域,可以断言,嵌入式的应用前景一片光明。
嵌入式系统由嵌入式操作系统、嵌入式处理器、嵌入式应用软件和嵌入式外围设备4个构成。
当前嵌入式操作系统种类很多,应用最为广泛且性能优良的主流操作系统有Linux、WinCE、VxWorks这3种,大致介绍如下:
(1)Linux操作系统
Linux是为数不多的一款开源的操作系统。
Linux最早是由芬兰的一名大学生LinusB.Torvalds为尝试在x86架构上提供自由免费的类Unix操作系统而开发的。
因为它的开源性和自由,人们可以根据自己的需求随意修改,Linux背后的开发维护群体是世界上众多顶尖的程序员,Linux系统有着其他操作系统无法比拟的几大优点:
源代码的开源性、良好的可移植性、强大的网络协议支持、广泛的硬件支持。
(2)WinCE操作系统
WinCE是由Microsoft公司推出的一款面向嵌入式的操作系统。
因为体内流淌着微软的“血统”,所以WinCE的界面与传统的windows桌面系统十分类似,有着和Windows系列良好的兼容性,开发人员可以轻易地移植或编写软件到WinCE上。
WinCE之所以市场份额较小,是因为作为嵌入式操作系统有着许多缺陷:
源代码的封闭性,使得开发人员很难实现产品更细致的定制和整体优化;
占用运行内存较多;
在效率、功耗方面的表现并不出色;
版权许可费高。
(3)VxWorks操作系统
VxWorks是由美国WindRiver公司开发的一种嵌入式操作系统,其最突出特性:
裁减性佳、可靠性高、和实时性,加上高性能的内核以及良好的开发环境,如今被广泛应用于军事、航空航天等实时性要求极高的领域。
但是因为它的价格十分昂贵,通常需要花费许多金钱才能建立起开发环境,而且对每个应用一般还要收取版权费。
如果说嵌入式操作系统是嵌入式系统的灵魂,那么嵌入式处理器就是灵魂的载体,嵌入式处理器通常有四类:
(1)嵌入式微处理器(MPU):
是一种超大规模集成电路。
基本结构包含:
运算器、寄存器、数据及地址总线。
它具有体积小、可靠性高的特点,其主要有PowerPC、ARM/StrongARM系列。
(2)嵌入式微控制器(MCU):
是把CPU、存储器、定时器/计数器、I/O、串口等集成到一块硅片上的微型计算机。
这种芯片的性价比是其一大优势,片内因为集成多种外设功能所以外围电路设计起来较为简单,是如今嵌入式系统工业的主流,代表产品有MCS-51系列。
(3)嵌入式片上系统(SOC):
SOC可以简单地看做是单片机的升级版,硬件方面的实现依赖VHDL硬件描述语言,片内集成许多外设的功能,如此就可降低成本,同时使得电路变得简单,缩短研发周期,具有体积小,功耗低等优点。
主要有Samsung的smdk系列。
2单片机控制直流电机
2.1直流电机介绍
电机是使机械能与电能相互转换的机械,直流电机把直流电能变为机械能。
作为机电执行元部件,直流电机内部有一个闭合的主磁路。
主磁通在主磁路中流动,同时与两个电路交联,其中一个电路是用以产生磁通的,称为激磁电路,另外一个是用来传递功率,称为功率回路或者电枢回路。
现行的直流电动机都是旋转电枢式,也就是说激磁绕组及其所包围的铁芯组成的磁极为定子,带换向单元的电枢绕组和电枢铁芯结合构成直流电动机的转子。
直流电机有以下几方面的优点:
(1)调速范围广,且易于平滑调节;
(2)过载、起动、制动转矩大;
(3)易于控制,可靠性高;
(4)调速时的能量损耗较小。
所以,在调速要求高的场所,如轧钢机、轮船推进器、电车、电气铁道牵引、高炉送抖、造纸、纺织、拖动、吊车、挖掘机械、卷扬机拖动等方面,直流电动机均得到广泛的应用。
2.2直流电机的基本工作原理
上图是直流电机工作原理图,当电刷A、B接在电压为U的直流电源上时,若电刷A是正电位,B是负电位,在N极范围内的导体ab中的电流是从a流向b,在S极范围内的导体cd中的电流是从c流向d。
载流导体在磁场中要受到电磁力的作用,因此,ab和cd两导体都要受到电磁力的作用。
根据磁场方向和导体中的电流方向,利用电动机左手定则判断,ab边受力的方向是向左,而cd边则是向右。
由于磁场是均匀的,导体中流过的又是相同的电流,所以,ab边和cd边所受电磁力的大小相等。
这样,线圈上就受到了电磁力的作用而按逆时针方向转动了。
当线圈转到磁极的中性面上时,线圈中的电流等于零,电磁力等于零,但是由于惯性的作用,线圈继续转动。
线圈转过半周之后,虽然ab与cd的位置调换了,ab边转到S极范围内,cd边转到N极范围内,但是,由于换向片和电刷的作用,转到N极下的cd边中电流方向也变了,是从d流向c,在S极下的ab边中的电流则是从b流向a。
因此,电磁力的方向仍然不变,线圈仍然受力按逆时针方向转动。
可见,分别处在N、S极范围内的导体中的电流方向总是不变的,因此,线圈两个边的受力方向也不变,这样,线圈就可以按照受力方向不停的旋转了,通过齿轮或皮带等机构的传动,便可以带动其它工作机械。
从以上的分析可以看到,要使线圈按照一定的方向旋转,关键问题是当导体从一个磁极范围内转到另一个异性磁极范围内时(也就是导体经过中性面后),导体中电流的方向也要同时改变。
换向器和电刷就是完成这个任务的装置。
在直流电动机中,换向器和电刷把输入的直流电变为线圈中的交流电。
可见,换向器和电刷是直流电机中不可缺少的关键性部件。
当然,在实际的直流电动机中,也不只有一个线圈,而是有许多个线圈牢固地嵌在转子铁芯槽中,当导体中通过电流、在磁场中因受力而转动,就带动整个转子旋转。
这就是直流电动机的基本工作原理。
2.3直流电机的驱动
用单片机控制直流电机时,需要加驱动电路,驱动电路要为直流电机提供足够大的驱动电流,使用不同的直流电机,其驱动电流就不同,我们要根据实际需求选择合适的驱动电路,通常有以下几种驱动电路:
三极管电流放大驱动电路、电机专用驱动模块(如L298)、达林顿驱动器等。
2.4单片机控制直流电机硬件图和程序
#include<
reg51.h>
#defineucharunsignedchar
#defineuintunsignedint
/***************************************
端口定义
****************************************/
sbitIN1=P1^0;
//P10与电机驱动IN1相连
sbitIN2=P1^1;
//P11与电机驱动IN2相连
sbitIN3=P1^2;
//P12与电机驱动IN3相连
sbitIN4=P1^3;
//P13与电机驱动IN4相连
sbitK4=P3^2;
sbitK3=P3^3;
sbitK2=P3^4;
sbitK1=P3^5;
charled[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
voidDelay(unsignedinttime)
{
unsignedcharj=250;
for(;
time>
0;
time--)
j>
j--)
;
}
/****************************
各个子函数定义
****************************/
voidTurn_left(void)
{
IN1=0;
IN2=0;
IN3=0;
IN4=1;
voidTurn_right(void)
IN1=1;
IN4=0;
voidGo(void)
IN3=1;
voidBack(void)
IN2=1;
/*********************************************************
主函数
**********************************************************/
main()
chari;
while
(1)
{
while(K2&
&
K3&
K4)
{
if(K1==0)
Go();
for(i=0;
i<
8;
i++)
P0=~led[i];
Delay(20000);
}
i=0;
while(K1&
if(K2==0)
Back();
for(i=7;
i>
=0;
i--)
i=7;
K2&
if(K3==0)
Turn_left();
4;
P0=~led[2*i];
i=0;
}
K3)
if(K4==0)
Turn_right();
P0=~led[2*i+1];
}
}
3单片机控制步进电机
3.1步进电机介绍
步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。
在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。
这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点。
使得在速度、位置等控制领域用步进电机来控制变的非常的简单。
虽然步进电机已被广泛地应用,但步进电机并不能象普通的直流电机,交流电机在常规下使用。
它必须由双环形脉冲信号、功率驱动电路等组成控制系统方可使用。
因此用好步进电机也非易事,它涉及到机械、电机、电子及计算机等许多专业知识。
3.2步进电机工作原理
步进电机是一种将电脉冲转换成相应角位移或线位移的电磁机械装置。
它具有快速启停能力,在电机的负荷不超过它能提供的动态转矩时,可以通过输入脉冲来控制它在一瞬间启动或停止。
步进电机的步距角和转速只和输入的脉冲频率有关,和环境温度、气压、振动无关,也不受电网电压的波动和负载变化的影响。
因此,步进电机多应用在需要精确定位的场合。
步进电机有三线式、五线式和六线式,但其控制方式均相同。
都要以脉冲信号电流来驱动。
假设每旋转一圈需要200个脉冲信号来励磁,可以计算出每个励磁信号能使步进电机前进1.8°
,其旋转角度与脉冲的个数成正比。
步进电动机的正、反转由励磁脉冲产生的顺序来控制。
六线式四相步进电动机是比较常见的,它的控制等效电路如图8所示。
它有4条励磁信号引线A、A、B、B,通过控制这4条引线上励磁脉冲产生的时刻,即可控制步进电机的转动。
每出现一个脉冲信号,步进电机只走一步。
因此,只要依序不断送出脉冲信号,步进电机就能实现连续转动。
3.3步进电机的驱动
步进电机的驱动可以选用专用的电机驱动模块,比如L298、FT5754等,这类驱动模块接口简单,操作方便,它们既可以驱动步进电机,同时也可以驱动直流电机。
除此之外我们还可以用三极管自己搭建驱动电路,不过这样会使电路非常
3.4单片机控制步进电机硬件图和程序
AT89X51.h>
staticunsignedintcount;
//计数
staticintstep_index;
//步进索引数,值为0-7
staticbitturn;
//步进电机转动方向
staticbitstop_flag;
//步进电机停止标志
staticintspeedlevel;
//步进电机转速参数,数值越大速度越慢,最小值为1,速度最快
staticintspcount;
//步进电机转速参数计数
voiddelay(unsignedintendcount);
//延时函数,延时为endcount*0.5毫秒
voidgorun();
//步进电机控制步进函数
voidmain(void)
count=0;
step_index=0;
spcount=0;
stop_flag=0;
P1_0=0;
P1_1=0;
P1_2=0;
P1_3=0;
EA=1;
//允许CPU中断
TMOD=0x11;
//设定时器0和1为16位模式1
ET0=1;
//定时器0中断允许
TH0=0xFE;
TL0=0x0C;
//设定时每隔0.5ms中断一次
TR0=1;
//开始计数
turn=0;
speedlevel=2;
delay(10000);
speedlevel=1;
do{
stop_flag=1;
stop_flag=0;
}while
(1);
//定时器0中断处理
voidtimeint(void)interrupt1
TH0=0xFE;
TL0=0x0C;
count++;
spcount--;
if(spcount<
=0)
spcount=speedlevel;
gorun();
voiddelay(unsignedintendcount)
count=0;
do{}while(count<
endcount);
voidgorun()
{if(stop_flag==1)
return;
switch(step_index)
case0:
//0
P1_0=1;
break;
case1:
//0、1
P1_1=1;
case2:
//1
case3:
//1、2
P1_2=1;
case4:
//2
case5:
//2、3
P1_3=1;
case6:
//3
case7:
//3、0
if(turn==0)
step_index++;
if(step_index>
7)
step_index=0;
else
step_index--;
if(step_index<
0)
step_index=7;
4单片机控制LCD1602显示
4.1Lcd1602介绍
字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块。
一般1602字符型液晶显示器实物如图:
1602字符型液晶显示器实物图
1602LCD的基本参数及引脚功能
1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如下图10-54所示:
图10-541602LCD尺寸图
1602LCD主要技术参数:
显示容量:
16×
2个字符
芯片工作电压:
4.5—5.5V
工作电流:
2.0mA(5.0V)
模块最佳工作电压:
5.0V
字符尺寸:
2.95×
4.35(W×
H)mm
引脚功能说明
1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表10-13所示:
编号
符号
引脚说明
1
VSS
电源地
9
D2
数据
2
VDD
电源正极
10
D3
3
VL
液晶显示偏压
11
D4
4
RS
数据/命令选择
12
D5
5
R/W
读/写选择
13
D6
6
E
使能信号
14
D7
7
D0
15
BLA
背光源正极
8
D1
16
BLK
背光源负极
表:
引脚接口说明表
第1脚:
VSS为地电源。
第2脚:
VDD接5V正电源。
第3脚:
VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。
第4脚:
RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:
R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。
当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。
第6脚:
E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:
D0~D7为8位双向数据线。
第15脚:
背光源正极。
第16脚:
背光源负极。
4.2lcd1602硬件图和程序
#include<
reg52.h>
intrins.h>
#defineucharunsignedchar
#defineuintunsignedint
ucharcount=0;
ucharsecond=0,minute=0,hour=0;
sbitDD=P1^0;
/**********************LCD1602引脚定义****************************/
sbitRS=P2^0;
sbitRW=P2^1;
sbitE=P2^2;
#defineLCDDataP0
/************************************************************************************************************
函数名称:
voidDelay(uintt)
函数功能:
延时函数
参数:
返回值:
**************************************************************************************************************/
voidDelay(uinti)