华中科技大学C51单片机应用与C语言程序设计课件-总纲

上传人:我*** 文档编号:136979935 上传时间:2020-07-04 格式:PPT 页数:54 大小:2.29MB
返回 下载 相关 举报
华中科技大学C51单片机应用与C语言程序设计课件-总纲_第1页
第1页 / 共54页
华中科技大学C51单片机应用与C语言程序设计课件-总纲_第2页
第2页 / 共54页
华中科技大学C51单片机应用与C语言程序设计课件-总纲_第3页
第3页 / 共54页
华中科技大学C51单片机应用与C语言程序设计课件-总纲_第4页
第4页 / 共54页
华中科技大学C51单片机应用与C语言程序设计课件-总纲_第5页
第5页 / 共54页
点击查看更多>>
资源描述

《华中科技大学C51单片机应用与C语言程序设计课件-总纲》由会员分享,可在线阅读,更多相关《华中科技大学C51单片机应用与C语言程序设计课件-总纲(54页珍藏版)》请在金锄头文库上搜索。

1、DEPUSH,中级机器人制作与编程,第一讲C51单片机与应用,串行接口;ISP接口;电源接口;三位开关;绿色LED电源指示灯;AT89S52单片机;“Reset”按钮;面包板;专用电机控制接口插座,KeiluVision2IDE开发环境,生成可执行文件,2.SLISP将可执行文件下载到单片机,3.串口调试终端显示单片机与PC机交互信息,实验过程,第一步:建立项目(KeiluVision2IDE)1.新建工程2.芯片选型3.添加源程序(新建、保存、添加)4.生成执行文件,第二步:将执行文件输入单片机(SLISP)1.参数选择2.选择执行文件3.下载,第三步:查看单片机输出信息(串口调试终端)1.

2、串口选择2.打开串口,DEPUSH,中级机器人制作与编程,通讯测试:第一个程序,DEPUSH,中级机器人制作与编程,通信参数设置及器件选择,DEPUSH,中级机器人制作与编程,程序分析,“/”表示注释,后面内容将被编辑器忽视,输入/输出(I/O)接口是单片机和外部设备之间信息交换和控制的桥梁。它主要有以下几个作用:,(1)实现和不同外部设备的速度匹配不同的外设工作速度差别很大,而且一般来讲外设的响应速度远远小于CPU的运算速度。所以接口电路就必须适应CPU和外设的速度上的这个矛盾。,(2)改变数据传送的方式I/O数据有并行和串行两种方式。,(3)按照需要为CPU提供更多资源,如RAM和ROM,

3、(4)改变信号的性质和电平CPU和外设之间的信号有几类:数据型(程序代码和计算结果等)、状态型(反映外设的工作状态,如启动、忙、空闲等)和控制型(控制外设的工作状态,如外设的开和关、电机的转动和停止、速度的控制等)。,1接口的作用,第二讲输出接口与机器人伺服电机控制,51系列单片机有4个8位的并行I/O口:P0、P1、P2和P3。既可作为普通的I/O口、也可用作特殊功能。,AT89S52引脚I/O定义图,2AT89S52引脚,DEPUSH,中级机器人制作与编程,使用P1端口的第一脚(P1_0)来控制发光二极管(LED)闪烁。,while(1)P1_0=1;/P1_0输出高电平delay_nms

4、(500);/延时500msP1_0=0;/P1_0输出低电平delay_nms(500);/延时500ms,while循环函数,delay_nms延时函数,单灯闪烁:,DEPUSH,中级机器人制作与编程,时序图反应的是高、低电压信号与时间的关系图,时序图简介,DEPUSH,中级机器人制作与编程,伺服电机控制语句,零点标定信号时序图,while(1)P1_0=1;/P1_0输出高电平delay_nus(1500);/延时1.5msP1_0=0;/P1_0输出低电平delay_nus(20000);/延时20ms,delay_nus(1500);,延时时间(m),DEPUSH,中级机器人制作与编

5、程,伺服电机安装,伺服电机与教学底板的连线原理图(左)和实际接线示意图(右),DEPUSH,中级机器人制作与编程,伺服电机测试,1.3ms的控制脉冲序列使电机顺时针全速旋转,1.7ms的连续脉冲序列使电机逆时针全速旋转,while(1)P1_0=1;delay_nus(1300);P1_0=0;delay_nus(20000);,while(1)P1_0=1;delay_nus(1700);P1_0=0;delay_nus(20000);,DEPUSH,中级机器人制作与编程,伺服电机旋转时间控制,for循环for(表达式1;表达式2;表达式3)语句,按如下方式理解,for(循环变量赋初值;循环

6、条件;循环变量增值)语句,for(Counter=1;Counter=100;i+)P1_1=1;delay_nus(1700);P1_1=0;delay_nms(20);,DEPUSH,中级机器人制作与编程,用PC机控制机器人的运动,scanf(格式控制,地址表列);,printf(ProgramRunning!n);printf(Pleaseinputpulsenumber:n);scanf(%d,DEPUSH,中级机器人制作与编程,基本巡航动作,机器人及其前进方向的定义,向前巡航,for循环的参数控制了发送给电机的脉冲数量。由于每个脉冲的时间是相同的,因而for循环的参数也控制了伺服电机

7、运行的时间。,for(counter=0;counter130;counter+)/运行3秒P1_1=1;delay_nus(1700);P1_1=0;/左轮逆时针P1_0=1;delay_nus(1300);P1_0=0;/右轮顺时针delay_nms(20);,第三讲机器人巡航控制,DEPUSH,中级机器人制作与编程,其它巡航动作,将delay_nus函数的参数n以不同的值组合就可以使机器人以其它的方式运行,向后行走,P1_1=1;delay_nus(1300);P1_1=0;/左轮顺时针P1_0=1;delay_nus(1700);P1_0=0;/右轮逆时针delay_nms(20);,

8、原地左转,P1_1=1;delay_nus(1300);P1_1=0;/左轮顺时针P1_0=1;delay_nus(1300);P1_0=0;/右轮顺时针delay_nms(20);,原地右转,P1_1=1;delay_nus(1700);P1_1=0;/左轮逆时针P1_0=1;delay_nus(1700);P1_0=0;/右轮逆时针delay_nms(20);,DEPUSH,中级机器人制作与编程,其它巡航动作以某一轮子为支点旋转,从前面向左旋转,P1_1=1;delay_nus(1500);P1_1=0;/左轮静止P1_0=1;delay_nus(1300);P1_0=0;/右轮顺时针de

9、lay_nms(20);,从前面向右旋转,P1_1=1;delay_nus(1700);P1_1=0;/左轮逆时针P1_0=1;delay_nus(1500);P1_0=0;/右轮静止delay_nms(20);,从后面向左旋转,P1_1=1;delay_nus(1500);P1_1=0;/左轮静止P1_0=1;delay_nus(1700);P1_0=0;/右轮逆时针delay_nms(20);,从后面向右旋转,P1_1=1;delay_nus(1300);P1_1=0;/左轮顺时针P1_0=1;delay_nus(1500);P1_0=0;/右轮静止delay_nms(20);,DEPUS

10、H,中级机器人制作与编程,匀变速运动:防止机器人加速过快,for(pulseCount=10;pulseCount=200;pulseCount=pulseCount+1)P1_1=1;delay_nus(1500+pulseCount);P1_1=0;P1_0=1;delay_nus(1500-pulseCount);P1_0=0;delay_nms(20);,定义运动子函数:Forward()、Left_Turn()、Right_Turn()、Backward(),voidForward(void)inti;for(i=1;i=65;i+)P1_1=1;delay_nus(1700);P1

11、_1=0;P1_0=1;delay_nus(1300);P1_0=0;delay_nms(20);,DEPUSH,中级机器人制作与编程,建立复杂运动函数,如果要让机器人执行一个更长,更复杂的动作,前面讲到的方法将会很麻烦。用字符数组存储运动动作用switch语句解释这些动作,charNavigation10=F,L,F,F,R,B,L,B,B,Q;,while(Navigationaddress!=Q)switch(Navigationaddress)caseF:Forward();break;caseL:Left_Turn();break;caseR:Right_Turn();break;c

12、aseB:Backward();break;address+;,switch(表达式)case常量表达式1:语句1;break;case常量表达式2:语句2;break;case常量表达式n:语句n;break;default:语句n+1;break;,switch分支语句一般形式:,DEPUSH,中级机器人制作与编程,第四讲输入接口与机器人触觉导航,通过前面两章的学习,你已经掌握如何用单片机的端口来控制机器人的各种运动。当时,连接机器人伺服电机的端口是作为输出使用。从本章开始,单片机端口将作为输入使用。,触觉导航,触须(胡须)硬件,安装好胡须的机器人,DEPUSH,中级机器人制作与编程,第四

13、讲输入接口与机器人触觉导航,测试胡须,胡须电路图,intP1_4state(void)/获取P1_4的状态return(P1,C语言的一种运算符?,表达式1?表达式2:表达式3,单片机AT89S52的四个端口P0、P1、P2和P3是可以按位来操作,从低到高依次为第0口、第1口第7口,书写分别为PX.0、PX.1、PX.7(X取0到3)。P1counter38;counter+)P1_3=1;delay_nus(13);P1_3=0;delay_nus(13);irDetectLeft=P1_5state();,第五讲机器人红外线导航,测试IR发射和探测器对,让每个IRLED探测器组工作的关键是

14、发送1毫秒频率38.5kHz的红外信号,然后立刻将IR探测器的输出存储到一个变量中。,周期T=26us,频率f=1/T=38.5kHz持续时间t=38T=1ms,变量irDetectLeft存储探测器状态,DEPUSH,中级机器人制作与编程,第五讲机器人红外线导航,函数延时的不精确性,函数调用所需时间是微秒级,与工作要求同级,故延时不精确。,空函数_nop_(void),当微控制器在12MHz晶振下工作时,单片机AT89S52一个时钟周期为:T=(1/12)*10-6S微控制器操作是用机器周期来计算的,一个机器周期为十二个时钟周期:t=12*T=1*10-6s=1us所以空函数_nop_()能

15、产生1us的延时。,教学板的晶振选用11.0592MHz,它能产生延时时间是1.08us,比1us有稍许误差,DEPUSH,中级机器人制作与编程,第五讲机器人红外线导航,探测和避开障碍物,用#define语句来简化程序,如:#defineLeftIRP1_2/左边红外接收连接到P1_2#defineLeftLaunchP1_3/左边红外发射连接到P1_3在以后的程序中,可以用LeftIR代替P1_2,发射并检测信号,IRLaunch(R);irDetectRight=RightIR;/右边接收IRLaunch(L);irDetectLeft=LeftIR;/左边接收,红外线导航,与胡须类似,i

16、f(irDetectLeft=0),DEPUSH,中级机器人制作与编程,第五讲机器人红外线导航,高性能的IR导航,发送脉冲给电机之前检查障碍物,可以大大改善机器人的行走性能。程序可以使用传感器输入为每个瞬间的导航选择最好的机动动作。这样,机器人永远不会走过头,它会找到绕开障碍物的完美路线,成功的走过更加复杂的路线。,如果前方有障碍物,机器人会使用脉冲命令避开,然后探测,如果物体还在,再使用另一个脉冲来避开它。机器人能持续使用电机驱动脉冲和探测,直到它绕开障碍物,然后它会继续发向前行走的脉冲。,if(irDetectLeft=0),使用整型变量pulseLeft和pulseRight来设置发送的脉冲持续时间,一用IRLED/探测电路检测距离,用红外传感器探测道路,探测灵敏度与频率关系图,第六讲机器人距离探测,二定时/计数器,以前所用延时方法:1.for()函数2._nop_()函数更精确延时:定时/计数器,AT89S52的定时/计数器可以分为定时器模式和计数器模式。这两种模式没有本质上的

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号