项目8 单片机应用系统设计(课件)-《单片机技术与应用》同步教学(电子工业版)

2024-07-11
| 67页
| 40人阅读
| 1人下载
普通

内容正文:

项目8 单片机应用系统设计 任务8-1 可中断控制彩灯控制器 1.任务分析 可中断控制彩灯控制器是由8盏LED指示灯组成,主要功能如下:通电时,第1盏灯先亮,然后熄灭,之后第2盏灯亮,再灭,按此方式直到第8盏灯,如此循环进行,实现8路彩灯的流水闪烁。当发生中断时,系统将终止当前的闪烁方式转到中断闪烁方式中,中断闪烁完成后再继续执行原来的闪烁程序。这里采用两个外部中断,外部中断0的闪烁方式为:八只彩灯先亮后灭,循环三次;外部中断1的闪烁方式为:首先低四位彩灯亮高四位彩灯灭,之后高四位彩灯亮低四位彩灯灭,如此循环三次。 2.电路设计 2.电路设计 #include<reg51.h> unsigned char aa; void main() //主函数 { unsigned char i,w; EA=1; //打开中断总允许位 EX0=1; //打开外部中断0允许位 IT0=1; //设置外部中断为边沿(下降沿)触发方式 EX1=1; // 打开外部中断1允许位 IT1=1; TMOD=0x01; //设置T0为工作方式1 while(1) { w=0x01; //显示码初值为01H for(i=0;i<8;i++) { P1=~w; //w取反后送P1口,点亮相应LED灯 w<<=1; //点亮灯的位置移动 delay_t(2);//调用延时函数delay_t(),实际参数为2,延时1秒 } } } 3.软件程序设计 3.软件程序设计 //函数名:delay0_5s void delay0_5s() { unsigned char i; for(i=0;i<0x0a;i++) //设置10次循环次数 { TH0=0x3c; //设置定时器初值 TL0=0xb0; TR0=1; //启动T0 while(!TF0); //查询计数是否溢出,即定时50ms时间到,TF0=0 TF0=0; //50ms定时时间到,将定时器溢出标志位TF0清零 } } //函数名:delay_t void delay_t(unsigned char t) { unsigned char i; for(i=0;i<t;i++)delay0_5s(); } 3.软件程序设计 //函数名:int_0 void int_0() interrupt 0 //外部中断0的中断号为0 { for(aa=0;aa<3;aa++) { P1=0x00; //熄灭八个信号灯 delay0_5s(); //调用0.5秒延时函数 P1=0xff; //点亮八个信号灯 delay0_5s(); //调用0.5秒延时函数 } } //函数名:int_1 void int_1() interrupt 2 //外部中断1的中断号为2 { for(aa=0;aa<3;aa++) { P1=0xf0; delay0_5s(); P1=0x0f; delay0_5s(); } } 相关知识 8.1 单片机控制产品开发流程 1.系统开发的基本要求 1)要有较高的可靠性 2)要便于操作和维修 3) 要有较高的性能价格比 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 单片机控制产品开发流程 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 8.2 焊接技术 1.选用焊剂 2.元件引脚的清洁 3.使用电烙铁 4.焊接元件 施焊准备 加热焊接 送入焊料 冷却焊点 清洗焊面 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 8.3 各种元器件的焊接方法 1.电阻器焊接 将电阻器准确装入规定位置。要求标记向上,字向一致。装完同一种规格后再装另一种规格,尽量使电阻器的高低一致。焊完后将露在印制电路板表面多余引脚剪去。 2.电容器焊接 将电容器装入规定位置,并注意有极性电容器其“+”与“-”极不能接错,电容器上的标记方向要易看可见。先装玻璃釉电容器、有机介质电容器、瓷介电容器,最后装电解电容器。 3.二极管的焊接 二极管焊接要注意以下几点:第一,注意阳极阴极的极性,不能装错;第二,型号标记要易看可见;第三,焊接立式二极管时,对最短引线焊接时间不能超过2s。 4.三极管焊接 注意e、b、c三引线位置插接正确;焊接时间尽可能短,焊接时用镊子夹住引线脚,以利散热。焊接大功率三极管时,若需加装散热片,应将接触面平整、打磨光滑后再紧固,若要求加垫绝缘薄膜时,切勿忘记加薄膜。管脚与电路板上需连接时,要用塑料导线。 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 8.3 各种元器件的焊接方法 5.集成电路焊接 首先检查型号、引脚位置是否符合要求。焊接时先焊边沿的二只引脚,以使其定位,然后再从左到右自上而下逐个焊接。对于电容器、二极管、三极管露在印制电路板面上多余引脚均需剪去。 6.焊接顺序 元器件装焊顺序依次为:电阻器、电容器、二极管、三极管、集成电路、大功率管,其它元器件为先小后大。 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 任务8-2 点阵LED显示仪 1.任务分析 该任务利用4个8×8点阵设计一个16×16的点阵,并通过编写程序在上面循环显示汉字“长春职业技术学院”。 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 2.电路设计 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 2.电路设计 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 3.软件程序设计 #include <reg51.h> char code table[]={ 0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00, 0xFF,0xFF,0xA0,0x40,0xA0,0x21,0x90,0x12, 0x90,0x04,0x88,0x08,0x84,0x10,0x82,0x30, 0x80,0x60,0x80,0x20,0x80,0x00,0x00,0x00,/*"长"*/ void delay(int c) { int i,j; for(i=0;i<c;i++) for(j=0;j<10;j++); } void main() { unsigned char i,j; //i:每个字的显示循环;j每个字的显示码除以2 unsigned int b=0; /*显示偏移控制*/ unsigned char a; //控制移动间隔时间 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 3.软件程序设计 while(1) { j=0; if(a>1) //移动间隔时间;取值0—255 {a=0; b+=2; if(b>=500) //显示到最后一个字,回头显示,判断值=字数*32 { b=0; } } P3=1; for(i=0;i<16;i++) { P1=i; P0=table[j+b]; P2=table[j+b+1]; delay(10); P0=0x00; P2=0x00; j+=2; } Delay(300); } a++; } } 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 相关知识 8.4 译码器74HC154 1.引脚说明 74HC154芯片共24个引脚, 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 2.74HC154真值表 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 任务8-3 简易秒表 1.任务分析 用单片机实现两位数简易秒表控制,计时范围为0~59s,并将计时时间在两位数码管上显示出来,并利用3个独立按键实现秒表的启动、停止和复位功能。 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 2.电路设计 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 3.软件程序设计 #include <reg51.h> unsigned char msec,sec; //定义msec为50ms计数变量,sec为秒变量 void delay(unsigned char i); //延时函数 void T0_INT(void) interrupt 1 //定时器0中断类型号为1 { TH0=0x3c; //50ms定时初值 TL0=0xb0; msec++; //中断次数增1 if(msec==20) //中断次数到20次吗? { msec=0; //中断次数到20次,1秒计时到,50ms计数单元清零 sec++; //秒单元加1 if(sec==60) //到60秒吗? 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 3.软件程序设计 { sec=0; //到60秒,秒单元清零 } } } void main() //主函数 { unsigned char led[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //定义数字0~9字型显示码 unsigned char temp; TMOD=0x01; //定时器0工作方式1 TH0=0x3c; //50ms定时初值 TL0=0xb0; EA=1; //开总中断 ET0=1; //开定时器0中断 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 3.软件程序设计 { sec=0; //到60秒,秒单元清零 } } } void main() //主函数 { unsigned char led[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //定义数字0~9字型显示码 unsigned char temp; TMOD=0x01; //定时器0工作方式1 TH0=0x3c; //50ms定时初值 TL0=0xb0; EA=1; //开总中断 ET0=1; //开定时器0中断 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 3.软件程序设计 ET1=1; P3=0xff; //P3口做输入 while(1) { P2=0x01; //选中P2.0控制的数码管 P1=led[sec%10]; //显示秒个位 delay(10); P2=0x02; //选中P2.1控制的数码管 P1=led[sec/10]; //显示秒十位 delay(10); temp=~P3; //读入P3口引脚状态并取反 temp=temp&0x2c; //屏蔽掉无关位,保留三位按键状态00x0xx00 if(temp==0x04) //按下停止键 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 3.软件程序设计 TR0=0; //停止计数 if(temp==0x08) //按下启动键 TR0=1; //启动计数 if(temp==0x20) //按下复位键 { TR0=0;sec=0;msec=0; } } } void delay(unsigned char i) //延时函数,无符号字符型变量i为形式参数 { unsigned char j,k; //定义无符号字符型变量j和k for(k=0;k<i;k++) //双重for循环语句实现软件延时 for(j=0;j<255;j++); } 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 相关知识 8.5 秒的产生 这里是利用80C51内部定时器中断来确定1秒的时间,之后对1秒进行计数,得到总的时间。 1.计数器初值及时间计算 TC=M-C 式中,M为计数器模值,该值和计数器工作方式有关。在方式0时M为213 ;在方式1时M的值为216;在方式2和3时M为28。即初值=模值-计数值。计数过程所用时间用如下公式计算: T=C*t=(M-TC)*t 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 2.秒的产生方法 我们采用在主程序中设定一个初值为20的软件计数器,使定时器T0定时50毫秒.这样每当T0到50毫秒时CPU就响应它的溢出中断请求,进入他的中断服务子程序。在中断服务子程序中,CPU先使软件计数器减1,然后判断它是否为零。为零表示1秒已到可以返回到输出时间显示程序。定时器需定时50毫秒,故T0工作于方式1。 初值TC=M-T/t =216-50 ms/1us=15536=3CB0H 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 任务8-4温度检测仪设计与制作 1.方案一任务分析 采用单片机制作一个温度检测仪,采用数字式温度传感器DS18B20实时检测室内温度,并把检测的温度转化为单片机能够识别的信号,并通过数码管显示电路将测得的温度用4位共阳极数码管进行实时显示。 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 2.方案一电路设计 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 2.方案一电路设计 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 3.方案一软件程序设计 该程序中主要包含两个函数,一个函数是温度的读取与处理函数,另一个函数是温度显示函数。温度的读取与处理函数中,如果使用一个传感器,并且只需要进行温度转换并读出温度值,可以按以下流程进行: (1)复位 (2)跳过ROM命令(0xCC) (3)温度转换命令(0x44) (4)复位 (5)跳过ROM命令(0xCC) (6)读RAM命令(0xBE) (7)读取两个字节数据 (8)将读到的温度编码转换成温度值 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 #include<reg51.h> //预处理命令,定义51单片机各寄存器的存储器映射 #define uchar unsigned char #define unit unsigned int sbit DQ=P3^4; //定义DS18B20总线IO sbit wx1=P2^0; //定义4位共阳极数码管选择端口 sbit wx2=P2^1; sbit wx3=P2^2; sbit wx4=P2^3; unit temp,temp1,temp2,xs; uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80, 0x90,0x88,0x83,0xc6};//共阳极数码管0-9字型码 void delay1(unsigned int m)//延时函数 { unit i,j; for(i=m;i>0;i--) for(j=110;j>0;j--); } 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 void delay(unit m)//延时函数 { while(m--); } void Init_DS18B20()//DS18B20复位函数 { uchar x=1;//存在标志置1 while(x) { while(x) { DQ=1;//一线制总线置高,准备写过程 delay(8); DQ=0; //一线制总线置低,满足复位延长时间条件 delay(80); DQ=1; //一线制总线置高,满足复位延长时间条件 delay(4); x=DQ;//检测存在标志 } 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 delay(45);//延时约500μs,x消失,此时DQ已经被上拉电阻置高 x=~DQ;//x=0,退出循环 } DQ=1;//完成复位过程 } uchar ReadOneChar()//读取一个字节 { uchar i=0; uchar dat=0; for(i=8;i>0;i--)//循环一个字节位数 { DQ=0;//置低,给出读过程条件 dat>>=1;//暂存变量右移一位 DQ=1;//置高,准备读取数据位 if(DQ) dat|=0x80;//读取数据并存入暂存变量 delay(4); } return(dat); } 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 void WriteOneChar(unsigned char dat)//写一个字节 { unsigned char i=0; for(i=8;i>0;i--)//循环一个字节位数 {DQ=0; //置低,给出写过程条件 DQ=dat&0x01;//移出低位并延时 delay(5); DQ=1; dat>>=1; } } void ReadTemperature()//从DS18B20读出温度及处理函数 { unsigned char a=0; unsigned b=0; 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 unsigned t=0; Init_DS18B20();//总线复位 WriteOneChar(0xCC);//发送Skip ROM命令 WriteOneChar(0x44); //发送温度转换命令 delay(5); Init_DS18B20(); WriteOneChar(0xCC); WriteOneChar(0xBE);// 发送读温度命令 delay(5); a=ReadOneChar();//温度低8位 b=ReadOneChar();//温度高8位 temp2=a&0x0f;//小数部分补码 temp=((b*256+a)>>4);//整数部分 xs=temp2*0.0625;//小数部分 } 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 void wenduxianshi()//温度显示 { wx1=0; P0=table[temp/10];//十位数送显示 delay1(5); wx1=1;//选择第一个数码管显示十位 wx2=0; P0=table[temp%10]+0x80;//个位数及小数点送显示 delay1(5); wx2=1; wx3=0; P0=table[xs%10];//第一位小数送显示 delay1(5); wx3=1; wx4=0; P0=table[12];//第二位小数送显示 delay1(5); wx4=1; } void main() { while(1) { ReadTemperature(); wenduxianshi(); } } 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 任务8-4温度检测仪设计与制作 1.方案二任务分析 利用单片机制作一个温度检测报警装置,采用数字式温度传感器DS18B20实时检测室内温度,并把检测的温度转化为单片机能够识别的信号,并通过LCD液晶显示电路将测得的温度进行实时显示,设置报警温度的上限值为60度,下限值为10度,超过限定值时能够用声光两种方式报警。 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 2.方案二电路设计 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 2.方案二电路设计 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 3.方案二软件程序设计 #include<reg51.h> #define uchar unsigned char #define uint unsigned int uchar i; sbit lcdrs=P3^0;//RS控制位 sbit lcdrw=P3^1; //RW控制位 sbit lcden=P3^2; //E控制位 sbit d1=P1^0; //温度大于60°报警 sbit d2=P1^1; //温度小于10°报警 sbit d3=P1^3;//声音报警 sbit DQ=P3^7; //定义ds18B20总线IO uchar code t0[]="the temperature";//第一行显示字符 uchar code t1[]=" is C";//第二行显示字符 uchar code wendu[]="0123456789"; //利用一个温度表解决温度显示的乱码 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 void delay(uint z)//延时函数 { uint x,y; for(x=100;x>1;x--) for(y=z;y>1;y--); } void write_com(uchar com) //液晶显示模块写指令函数 { lcdrs=0; P2=com; delay(5); lcden=1; delay(5); lcden=0; } 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 void write_date(uchar date) //液晶显示模块写数据函数 { lcdrs=1; P2=date; delay(5); lcden=1; delay(5); lcden=0; } void init_lcd()//液晶显示模块初始化函数 { lcden=0; lcdrw=0; write_com(0x38); //功能设定 write_com(0x01); //清屏 write_com(0x0c); //显示开关设定 write_com(0x06); //输入模式设定 write_com(0x80); //数据RAM地址设定 for(i=0;i<16;i++)//显示第一行字符 { write_date(t0[i]); delay(0); } write_com(0x80+0x40); for(i=0;i<16;i++)//显示第二行字符 { write_date(t1[i]); delay(0); } } 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 //温度采集模块 void tmpDelay(int num)//延时函数 { while(num--); } void Init_DS18B20()//初始化ds18b20 { unsigned char x=0; DQ=1; //DQ复位 tmpDelay(8); //稍作延时 DQ=0; //单片机将DQ拉低 tmpDelay(80); //精确延时,大于480us DQ=1; //拉高总线 tmpDelay(14); x=DQ; //稍作延时后,如果x=0,则初始化成功,x=1,则初始化失败 tmpDelay(20); } 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 unsigned int Readtemp()//温度读取及转换 { unsigned char a=0; unsigned char b=0; unsigned int t=0; float tt=0; Init_DS18B20(); WriteOneChar(0XCC);//跳过读序列号的操作 WriteOneChar(0X44);//启动温度转换 Init_DS18B20(); WriteOneChar(0XCC);//跳过读序列号的操作 WriteOneChar(0XBE);//读取温度寄存器 a=ReadOneChar();//连续两个字节数据,读低8位 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 b=ReadOneChar();//读高8位 t=b; t<<=8; t=t|a;//两个字节合成一个整型变量 tt=t*0.0625;//转换成实际温度值 t=tt*10+0.5; return(t); } } 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 b=ReadOneChar();//读高8位 t=b; t<<=8; t=t|a;//两个字节合成一个整型变量 tt=t*0.0625;//转换成实际温度值 t=tt*10+0.5; return(t); } } 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 void main() { init_lcd(); while(1) { display(); delay(10); } } } 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 相关知识 8.6 温度传感器DS18B20的认识及使用 1.温度传感器DS18B20的介绍 DS18B20是美国DALLAS半导体器件公司在其前代产品DS18B20的基础上推出的单线数字化智能集成温度传感器,主要的优点是: 1)数字信号输出 4)负压特性。 3)便于扩展 2)精度高、传输方便 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 2.温度传感器DSl8B20的引脚分配和内部功能 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 2.温度传感器DSl8B20的引脚分配和内部功能 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 3.温度传感器DSl8B20内部存储器分配 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 4.温度传感器DSl8B20的寄生电源和硬件接法 向DSl8B20供电的另外一种方法是通过使用连接到VCC引脚的外部电源。这种方法的优点是,在I/O线上不要求附加强的上拉电源,总线上DSl8B20便可以在温度变换期间保持自身供电,这就保证了在变换时间内其他数据能够在单线总线上正常传送。 此外,在单线总线上可以放置任何数目的DSl8B20,而且如果它们都使用外部电源,那么通过发出跳过Skip ROM命令和接着发出变换Convert T命令可以同时完成温度变换。此时要注意,只要外部电源处于工作状态,GND引脚不可悬空。 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 5.温度传感器DSl8B20的程序编制方法 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 8.7 1602字符型液晶显示器认识及使用 1. 1602字符型液晶显示器引脚及功能介绍 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 2. 1602字符型液晶显示器基本指令及操作时序 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 2. 1602字符型液晶显示器基本指令及操作时序 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 3.1602字符型液晶显示器的显存及字库 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 任务8-5 直流电机控制器的设计与制作 1. 任务分析 直流电机控制器任务要求:用AT89C51单片机作为控制器,设计三个按键控制直流电机转动,FuncKey控制电机转动方向,IncKey为直流电机加速键,DecKey为直流电机减速键,用外部中断0检测是否有键按下。加速和减速通过定时器调节驱动电机的PWM波的占空比来实现,占空比十级可调,从0到100%。用1602LCD显示出工作状态:第一行显示直流电机转向,顺时针转动时显示“MotoStatus:CWD",逆时针转动时显示“MotoStatus:CCWD”;第二行显示PWM波占空比“H/L:x%”。 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 2.方案二电路设计 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 2.方案二电路设计 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 3.方案二软件程序设计 //初始化1602LCD函数 void StatusLCD(void) //1602LCD显示状态函数 { if(!MotoStatus) { //顺时针时显示CWD FirstLine[11]=’ ’; FirstLine[12]=’C’; FirstLine [13]=’W’; FirstLine[14]=’D’; } else //逆时针时显示CCWD { FirstLine[-1 1]一’C’; FirstLine E1 2]一’C’; FirstLine[-1 3-]一’W’; 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 FirstLinel-14-]一’D’; if(NumChange<100) SecondLine[4]=’ ’; //占空比小于100%时,不显示百位 else //取占空比百位并转换成ASCII码 SecondLine[4]=NumChange/100+0x30; if(NumChange<10) SecondLine[5]=’’ ; //占空比小于10%时,不显示十位 else //取占空比十位并转换成ASCII码 SecondLine[5]=NumChange%100/10+0x30; //取占空比个位并转换成ASCII码 SecondLine[6]=NumChange%10+0x30; } 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 void main() { uchar y; InitLcd(); //初始化1602LCD InitInt0T0(); //初始化外部中断INT0和定时器T0 HPulseNum=NumChange; while(1) { StatusLCD();//根据当前工作状态改变1602LCD显示状态 WriteLcd(0x80,0); for(y=0;y<15;y++) //循环送入 WriteLcd(FirstLine[y],1);//向1602LCD送第一行显示内容数组 WriteLcd(0xc0,0); for(y=0;y<8;y++) //循环送入 writeLcd(SecondLine[y],1); //向1602LCD送第二行显示内容数组 } } 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 相关知识 8.8 电机的PWM驱动 1.脉冲宽度调制 脉冲宽度调制(PWM,Pulse Width Modulation),简称脉宽调制。它是按一定规律改变脉冲序列的脉冲宽度,以调节输出量和波形的一种调制方式。在控制系统中最常用的是矩形波PWM信号,在控制时需要调节PWM波的占空比。占空比是正脉冲的持续时间与脉冲总周期的比值。控制电机的转速时,占空比越大,速度越快。如果占空比达到100%,速度达到最快。 当用单片机I/O口输出PWM波信号时,可采用如下两种方法。 1)软件延时法 2) 定时器定时法 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 2.H桥直流电机驱动电路 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 $$

资源预览图

项目8  单片机应用系统设计(课件)-《单片机技术与应用》同步教学(电子工业版)
1
项目8  单片机应用系统设计(课件)-《单片机技术与应用》同步教学(电子工业版)
2
项目8  单片机应用系统设计(课件)-《单片机技术与应用》同步教学(电子工业版)
3
项目8  单片机应用系统设计(课件)-《单片机技术与应用》同步教学(电子工业版)
4
项目8  单片机应用系统设计(课件)-《单片机技术与应用》同步教学(电子工业版)
5
项目8  单片机应用系统设计(课件)-《单片机技术与应用》同步教学(电子工业版)
6
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。