单片机原理及应用第2版张兰红第11章单片机应用系统的开发与设计优质PPT.pptx
《单片机原理及应用第2版张兰红第11章单片机应用系统的开发与设计优质PPT.pptx》由会员分享,可在线阅读,更多相关《单片机原理及应用第2版张兰红第11章单片机应用系统的开发与设计优质PPT.pptx(32页珍藏版)》请在冰点文库上搜索。
对于数据存储器的容量要求,各个系统之间差别比较大。
若要求的容量不大可以选用多功能的RAM、IO扩展芯片,如8155等。
若要求较大容量的RAM,原则上应选用容量较大的芯片,以减少RAM芯片数量而简化硬件线路。
11.1.2硬件设计,输入输出接口设计:
在选择IO接口电路时应从体积、价格、功能、负载等几个方面来考虑。
标准的可编程接口电路8255A、8155接口简单、使用方便、功能强、对总线负载小、因而应用很广泛。
但对于有些要求口线很少的应用系统,则可采用TTL电路,这样可提高口线的利用率,且驱动能力较大。
对于AD、DA电路芯片的选择原则应根据系统对它的速度、精度和价格的要求而确定。
除此之外还应考虑和系统中的传感器、放大器相匹配问题。
32,5,3地址译码电路的设计:
80C5l系统有充足的存储器空间,包括64KB程序存储器和64KB数据存储器,在应用系统中一般不需要这么大的容量。
为了简化硬件线路,同时还要使所用到的存储器空间地址连续,通常采用译码法和线选法相结合的办法进行设计。
4总线驱动器的设计:
80C51系列单片机扩展功能比较强,但扩展总线负载能力有限。
若所扩展的电路负载超过总线负载能力时,系统便不能可靠地工作。
此情况下必须在总线上加驱动器。
总线驱动器不仅能提高位口总线的驱动能力,而且可提高系统抗干扰性。
常用的总线驱动器为单向8路三态缓冲器74LS244、双向8路三态缓冲器74LS245等。
5其它外围电路的设计:
单片机主要用于实时控制,应用系统具有一般计算机控制系统的典型特征,系统硬件设计包括与测量、控制有关的外围电路。
例如键盘、显示器、打印机、开关量输入输出设备、模拟量数字量的转换设备、采样、放大等外围电路。
32,6,6可靠性设计:
单片机应用系统的可靠性是一项最重要最基本的技术指标,这是硬件设计时必须考虑的一个指标。
可靠性是指在规定的条件下,规定的时间内完成规定功能的能力。
规定的条件包括环境条件(如温度、湿度、振动等)、供电条件等;
规定的时间一般指平均无故障时间、连续正常运转时间等;
规定的功能随单片机的应用系统不同而不同。
单片机应用系统在实际工作中,可能会受到各种外部和内部的干扰,使系统工作产生错误或故障,为了减少这种错误和故障,就要采取各种提高可靠性的措施。
常用的措施有:
(1)提高元器件的可靠性:
在系统硬件设计和加工时应注意选用质量好的电子元器件、接插件,要进行严格的测试、筛选和老化,同时设计的技术参数应留有余量。
(2)提高印刷电路板和组装的质量,设计电路板时布线及接地方法要符合要求。
(3)对供电电源采取抗干扰措施。
例如用带屏蔽层的电源变压器、加电源低通滤波器、电源变压器的容量应留有余地等措施。
(4)输入输出通道抗干扰措施:
可采用光电隔离电路、双绞线等提高抗干扰能力。
32,7,11.1.3软件设计,1系统定义系统定义是指在软件设计前,首先要进一步明确软件所要完成的任务,然后结合硬件结构,确定软件承担的任务细节。
软件定义内容有:
(1)定义各输入输出接口的功能、信号的类别、电平范围、与系统接口方式、占用端口地址、读取的输入方式等。
(2)定义并分配存储器空间,如系统主程序、功能子程序块的划分、常数表格、入口地址表等。
(3)若有断电保护措施,应定义数据暂存区标志单元等。
(4)面板开关、按键等控制输入量的定义、系统运行过程的显示、运算结果的显示、正常运行和出错显示的定义。
32,8,2软件结构设计对于简单的单片机应用系统,可采用顺序结构设计方法,其系统软件由主程序和若干个中断服务程序构成,明确主程序和中断服务程序完成的操作,指定各中断的优先级。
对于复杂的实时控制系统,可采用实时多任务操作系统,此操作系统应具备任务调度、实时控制、实时时钟、输入输出和中断控制、系统调用、多个任务并行运行等功能,以提高系统的实时性和并行性。
在程序设计方法上,模块程序设计是单片机应用中最常用的程序设计方法。
这种模块化程序便于设计和调试、容易完成并可供多个程序共享,但各模块之间的连接有一定的难度。
根据需要也可采用自上而下的程序设计方法,此方法是先从主程序开始设计,然后再编制各从属的程序和子程序。
这种方法比较符合人们的日常思维。
缺点是上一级的程序错误会对整个程序产生影响。
软件结构设计和程序设计方法确定后,根据系统功能定义,可先画出程序粗框图,再对粗框图进行扩充和具体化,即对存储器、寄存器、标志位等工作单元作具体的分配和说明,再绘制出详细的程序流程图。
程序流程图设计出以后,便可着手编写程序,再经仿真调试,正常运行后,固化到EPROM中去,便完成了整个应用系统的设计。
32,9,11.2LED点阵显示屏设计,11.2.1项目任务,使用80C51单片机与两片88点阵显示器,设计一个点阵显示屏,能显示汉字及简单的图形。
项目要求:
(1)显示稳定无闪烁。
(2)程序设计中,要使文字或图形运动。
11.2.2项目分析,LED点阵显示器有多种品种可供选择,以显示的颜色可分为单色、双色、三色等;
以发光亮度可分为普通亮度、高亮度、超高亮度等。
一块LED点阵块的LED数量可有44(即4列4行)、57、58、88等规格;
点阵中单个LED的直径常用的有1.9mm、3mm、3.7mm、4.8mm、5mm、7.62mm、10mm、20mm等。
32,10,(a)外观(b)排列示意图图11-188LED点阵外观及排列示意图,图11-2LED点阵内部接线与引脚编号,18:
32,11,11.2.3项目硬件设计,1.电路设计,图11-3点阵显示屏电路图,18:
32,12,2.74HC595介绍,74HC595是8位串行输入/输出或者并行移位寄存器,具有高阻关断状态。
包括一个8位移位寄存器、一个8位D型锁存器和三态并行输出。
移位寄存器接收串行数据并提供串行输出,也提供并行数据输出和8位锁存器。
移位寄存器和锁存器都有独立的时钟输入,同时还具有异步复位的功能。
引脚如下:
图11-474HC595的引脚,74HC164和74HC595功能相仿,都是8位串行输入、并行输出的移位寄存器。
74HC164的驱动电流(25mA)比74HC595(35mA)的要小,14脚封装,体积也小一些。
74HC595的主要优点是具有数据存储寄存器,在移位的过程中,输出端的数据可以保持不变。
这在串行速度慢的场合很有用处,数码管没有闪烁感。
与74HC164只有数据清零端相比,74HC595尚有输出的使能/禁止控制端,可使输出为高阻态。
32,13,11.2.4项目程序设计,通过单片机的串口向74HC595发送数据到2片88点阵显示屏,滚动显示,显示的内容包括一个“”图形和“天天向上”四个汉字,通过按键控制,显示可以向左方向移动,也可以向右方向移动。
32,14,#include#include#include#defineucharunsignedchar#defineuintunsignedintsbitRCK_Pin=P32;
/74HC595输出锁存器控制sbitk1=P11;
sbitk2=P13;
ucharflag=1;
ucharcodeDSY_CONTENT_8x8_0=/向左移动的图形点阵0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF7,0xE3,0x81,0x00,0xC3,0xC3,0xC3,0xC3,0xC3,0xC3,0xC3,0xE7,0xE7,0xFF,0xEE,0xAD,0xAB,0x87,0xA3,0xAD,0xEE,0xFF,/*天*/0xEE,0xAD,0xAB,0x87,0xA3,0xAD,0xEE,0xFF,/*天*/0xFF,0xC0,0xB7,0xD3,0xD3,0xDF,0xC0,0xFF,/*向*/0xFF,0xFD,0xFD,0x81,0xED,0xED,0xFD,0xFF,/*上*/0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,;
32,15,ucharcodeDSY_CONTENT_8x8_1=/向右移动的图形点阵0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF7,0xE3,0x81,0x00,0xC3,0xC3,0xC3,0xC3,0xC3,0xC3,0xC3,0xE7,0xE7,0xFF,0xEE,0xAD,0xAB,0x87,0xA3,0xAD,0xEE,0xFF,/*天*/0xEE,0xAD,0xAB,0x87,0xA3,0xAD,0xEE,0xFF,/*天*/0xFF,0xC0,0xDF,0xD3,0xD3,0xB7,0xC0,0xFF,/*向*/0xFF,0xFD,0xED,0xED,0x81,0xFD,0xFD,0xFF,/*上*/0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,;
ucharScan_BIT=0x01,Scan_BIT1=0x80;
ucharOffset,Data_Index=0,Offset1,Data_Index1=0;
voidDelay(uintt)/延时程序uchari;
while(t-)for(i=0;
i120;
i+);
32,16,/*T0定时器中断控制点阵显示*/voidT0_Led_Display_Control()interrupt1TH0=(65536-1000)/256;
/重新装入定时时间常数TL0=(65536-1000)%256;
if(flag=0)/左移Scan_BIT1=0x80;
Data_Index1=0;
Scan_BIT=_cror_(Scan_BIT,1);
/先通过串口发送列选通码putchar(Scan_BIT);
while(TI=0);
putchar(DSY_CONTENT_8x8_0Offset+Data_Index+8);
/发送两字节的点阵编码while(TI=0);
putchar(DSY_CONTENT_8x8_0Offset+Data_Index);
Data_Index=(Data_Index+1)%8;
RCK_Pin=1;
/上升沿将数据送到输出锁存器RCK_Pin=0;
/锁存显示数据,18:
32,17,if(flag=1)/右移Scan_BIT=0x01;
Data_Index=0;
Scan_BIT1=_crol_(Scan_BIT1,1);
putchar(Scan_BIT1);
putchar(DSY_CONTENT_8x8_1Offset1+Data_Index1);
putchar(DSY_CONTENT_8x8_1Offset1+Data_Index1+8);
Data_Index1=(Data_Index1+1)%8;
RCK_Pin=0;
32,18,/*主程序*/voidmain()uchari;
TMOD=0x01;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
IE=0x82;
TCON=0x00;
TI=1;
while
(1)for(i=0;
i64;
i+)if(k1=0)flag=1;
/k1开关合上,图形向右边移动if(k2=0)flag=0;
/k2开关合上,图形向左边移动Offset=i;
Offset1=i;
TR0=1;
Delay(50);
TR0=0;
32,19,11.2.5仿真与实验结果,图11-5点阵显示屏仿真电路,18:
32,20,11.2.5仿真与实验结果,图11-6点阵显示屏仿真电路,18:
32,21,18:
32,22,(a)仿真结果(b)实验结果图11-8显示“向上”的仿真与实验结果,18:
32,23,11.4步进电机控制系统设计,步进电机是工业过程中一种能够快速启动、反转和制动的执行元件,其功能是将电脉冲转换为相应的角位移或直线位移。
作为一种数字伺服执行元件,它具有结构简单、运行可靠、控制方便、控制性能好等优点,广泛应用在数控机床、机器人、自动化仪表等领域。
11.4.1项目任务,使用80C51单片机对四相步进电机进行控制,使其能够顺时针或逆时针旋转。
(1)电机运行平稳,正反转控制自如。
(2)根据要求改变运行圈数和运行速度。
32,24,11.4.2项目分析,步进电机驱动原理如下:
单片机发出脉冲信号,控制步进电机定子的各相绕组以适当的时序通、断电,使其作步进式旋转。
四相步进电机各相绕组的通电顺序可以单4拍(ABCD)、双4拍(ABBCCDDA)和单双八拍(AABBBCCCDDDA)的方式进行。
按上述顺序切换,步进电机转子按顺时针方向旋转。
若通电顺序相反,则电机转子按逆时针方向旋转。
11.4.3项目硬件设计,1.电路设计步进电机控制系统电路原理图如图11-17所示。
图中除单片机、晶振电路、复位电路外,还包括步进电机驱动电路,另外使用了3个按键K1K3与三个发光二极管D1D3,用来控制与指示电机的正转、反转与停止,还使用了四个发光二极管D4D7,作为步进电机转动步数的指示。
图11-17步进电机控制系统电路原理图,18:
32,25,2.步进电机驱动电路,普通电动玩具内的小电机只需1.5V的电池就能驱动,而单片机的数字信号即使有5V的电位差也不能驱动小电机,原因是单片机I/O口输出的电流太小,不足以使电机动作,因此单片机I/O口必须接驱动电路才能驱动步进电机。
一般步进电机的驱动电路如图11-18所示。
在实际应用中驱动路数一般有多路,用图11-18所示的分立电路体积大,很多场合用现成的集成电路作为多路驱动电路。
(a)内部结构(b)等效电路图11-19ULN2003的内部结构,图11-18一般的步进电机驱动电路,常用的小型步进电机集成驱动电路为ULN2003。
ULN2003是高压大电流达林顿晶体管阵列产品,具有电流增益高、工作电压高、温度范围宽、带负载能力强等特点,可用于采用单片机控制的各类小型电机的驱动。
ULN2003内部结构及等效电路如图11-19所示。
管脚17作为输入,1610作为输出,8脚接地,9脚接+5V电源,如果1脚接高电平1,则16脚输出低电平0。
ULN2003的驱动电流可达500mA。
图11-17中用P1.0P1.3作为步进电机驱动信号输出口,输出信号经ULN2003达林顿管进行电流放大后,驱动步进电机运行。
32,26,P3.0P3.2作为按键K1K3的输入接口,K1K3分别是正转、反转和停止按键。
P0.0P0.2接了三个LED发光二极管D1D3,用来指示当前步进电机的正转、反转和停止运行状况。
3.按键与指示电路,18:
32,27,11.4.4项目程序设计,18:
32,28,#include#defineuintunsignedint#defineucharunsignedcharucharcodeFFW=0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09/步进电机正转八拍A-AB-B-BC-C-CD-D-DA;
ucharcodeREV=0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01/步进电机反转八拍AD-D-DC-C-CB-B-BA-A;
sbitK1=P30;
/正转按键sbitK2=P31;
/反转按键sbitK3=P32;
/停止按键voidDelayMS(uintms)/延时程序uchari;
while(ms-)for(i=0;
选择让4相步进电机工作于单双8拍方式,按下正转键实现正转三圈,按下反转键实现反转三圈,按下停止键,立即停止。
设步进电机的步进角为每拍9o,程序设计如下:
32,29,voidSETP_MOTOR_FFW(ucharn)/步进电机正转uchari,j;
for(i=0;
i5*n;
i+)/步进电机的步距角为每拍9o,八拍为72o,转一圈需要5个八拍for(j=0;
j8;
j+)if(K3=0)break;
/按下停止按键则跳出循环P1=FFWj;
DelayMS(25);
voidSETP_MOTOR_REV(ucharn)/步进电机反转uchari,j;
./按下停止按键,则跳出循环P1=REVj;
32,30,voidmain()ucharN=3;
while
(1)if(K1=0)/当按键K1按下时,步进电机开始正转三圈P0=0xfe;
SETP_MOTOR_FFW(N);
if(K3=0)break;
elseif(K2=0)/当按键K2按下时,步进电机开始反转三圈P0=0xfd;
SETP_MOTOR_REV(N);
/当按键K3按下时,步进电机停转elseP0=0xfb;
/待机状态时,停止指示灯亮P1=0x03;
/P1.0和P1.1口处于高电平,18:
32,31,11.4.5仿真与实验结果,图11-20步进电机控制系统Proteus仿真电路,18:
32,32,图11-21步进电机控制系统实物,