欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 幼儿/小学教育>
  • 中学教育>
  • 高等教育>
  • 研究生考试>
  • 外语学习>
  • 资格/认证考试>
  • 论文>
  • IT计算机>
  • 法律/法学>
  • 建筑/环境>
  • 通信/电子>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    《单片机技术及应用》教案——项目6 综合实训.docx

    • 资源ID:591102       资源大小:111.70KB        全文页数:21页
    • 资源格式: DOCX        下载积分:5
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录 微博登录
    二维码
    微信扫一扫登录
    下载资源需要5
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    《单片机技术及应用》教案——项目6 综合实训.docx

    1、教学实施方案课题名称单片机技术及应用实训部审批任务名称项目6综合实训年月日学时10学时授课时间授课班级授课教师一、教学目标Ca知识目标掌握较复杂的电路设计与C51编程调试自技能目标掌握单片机项目开发的基本流程人情感目标培养团队合作意识二、重点难点i教学重点单片机项目开发案例曾教学难点复杂项目的开发思维三、学习内容一、设计任务导入使用YL-236装置中的相关模块及元件,构建一套虚拟“智能往返小车”系统。二、设计任务分析由项目说明及控制要求可知,本项目主要的功能为:控制、显示、按键、小车运动、报警。首先根据这些功能来选择模块:1)选用主机模块作为系统的控制核心及报警装置;2)选用显示模块完成TG1

    2、2864及“LED0LED5”的显示功能;3)选用指令模块实现系统所需的独立按键功能;4)根据第五单元讲的电气控制系统,选用直流电机模块和继电器模块来模拟实现对小车运动方向的控制;5)最后选用电源模块对系统进行供电。三、任务信息学习(一)硬件电路的设计系统所需模块和I/O口的分配,接下来就开始搭建系统的硬件电路。系统模块接线图如图6-1所示。+5V地,+5V+5V地+,+5Vp24V,24V地,图6-1智能往返小车的模块接线图(二)程序的设计1.各状态描述系统状态:系统有开机状态、设置状态、运行状态,暂停状态,用全局变量function表达,方便各中断服务函数、主函数访问。对应上述状态,fun

    3、ction分别为0、1.2.3。运行模式:往返小车有自动模式与手动模式,用全局位变量MS表达。电机状态:用全局变量mm表达电机3种状态,0暂停、1前进,2一后退。电机方向:用全局变量direction表达电机运动方向,0前进,1后退。电机位置:用全局变量PIaCe表达,其范围为05,分别对应LED(TLED5。3s计时标志及计时变量:当全局位变量JSl置1时,启动3s计时,全局变量ii每IOmS计数;当ii计数到300时,3s计时完成,JSl清零。电机全程计时标志及计时变量:当全局位变量JS2置1时,启动20s计时,全局变量time每IOms计数;当ii计数到2000时,20s计时完成,JS2

    4、清零。2.部分程序流程图整个系统程序由三部分组成:TO中断服务函数、Tl中断服务函数、主函数。各部分主要承担如下功能。TO中断服务函数:主要完成定时扫描键盘、设置状态时按键功能、运行状态时暂停按键与暂停中恢复运行等功能。Tl中断服务函数:3s计时、20s计时。主函数:硬件初始化、定时器初始化、变量初始化;开机界面、设置界面、运行界面的显示;自动模式下电机运行控制、手动模式下按键处理等。对于较复杂系统,一般需要将系统功能进行适当分解,由各函数承担一部分任务。具体做法不一,可以灵活处理,基本原则是:不能让一些函数承担太多任务,否则该函数过分复杂;中断函数不能承担太多任务,执行时间不能太长,否则会影

    5、响主函数运行。如图6-2图6-3所示为3个函数的程序流程图。图6-2TI中断服务函数的程序流程图图63TO中断服务函数的程序流程图3.智能往返小车的程序清单:car.C文件的程序清单includetgl2864.hinclude“geykey.hsbitsbitSbitK1=P6K2=P7FM=P37电机控制/电机控制蜂鸣器sbitLEDO=P20;站台灯LEDO-LED5sbitLEDl=P21;sbitLED2=P22;sbitLED3=P23;sbitLED4=P24;sbitLED5=P25;sbitLED7=P27;电源灯ucharmm;电机运行状态标志WdefineMzKl=O,K

    6、2=l,mm=l电机正转时继电器状态,mm:电机运行状态1:正转defineMfKl=I,K2=0,mm=2电机反转时继电器状态,mm:电机运行状态2:反转definetingK1=K2=1,mm=0电机停转时继电器状态,mm:电机运行状态0:停转uinttime;uintii;externucharkeynum;ucharplace;ucharstop;uchardirection;ucharfunction;电机运行时间总长度20s普通计时/目地点站点系统运行方向(去,回)系统运行状态/0/:系统初始化状态/1/:系统设置状态/2/:系统运行状态/3/:系统暂停状态bitMS;模式标志bi

    7、tBACK;运行返回标志bitJSl,JS2;/JS1:自动时启动和返回时的3秒计时标志/JS2:系统电机整个的运行时间标志/defineDEBUG根据蜂鸣器驱动电平选择亚龙YL-236主机模块中蜂鸣器高电平鸣叫,不定义DEBUGvoiddidi(ucharx)蜂鸣器函数x:鸣叫时间(ttifdefDEBUG/若低电平时,蜂鸣器叫FM=I;先自激蜂鸣器(安全措施,可去掉)nop();FM=O;delayms(100*x);叫的时间FM=I;#else/若高电平时,蜂鸣器叫FM=O;/先自激蜂鸣器(安全措施,可去掉)_nop_();FM=I;delayms(100*x)叫的时间FM=O;Wend

    8、ifvoidmsDisplay(ucharx)模式显示x:在那页显示(If(MS=O)/手动(writeHan(x,84,0,hanzi_ZM15);else/自动(writeHan(x,84,0,hanzi_ZM14);voiddjDisplay()电机状态显示(if(mm=0)/电机停时显示暂停(writeHan(5,84,0,hanzi_ZM21);writeHan(5,100,0,hanzi_ZM22);if(mm=l)电机正转时显示前进(writeHan(5,84,0,hanzi_ZM17);writeHan(5,100,0,hanzi_ZM18);)if(mm=2)/电机反转时显示

    9、后退(writeHan(5,84,0,hanzi_ZM19);writeHan(5,100,0,hanzi_ZM20);voidWeiDisplayO运行中小车位置显示if(mm=l)电机正转(WriteAscii(3,84,O,shuzi_ZMplace);WriteAscii(3,92,O,shuzi_ZM12);WriteAscii(3,1OO,O,shuzi_ZMplace+l);if(mm=2)/电机反转(WriteAscii(3,84,O,shuzi_ZMplace);WriteAscii(3,92,O,shuzi_ZM12);WriteAscii(3,100,O,shuzi_ZM

    10、place-l);voidStartDisplayO到了起始站显示(WriteAscii(3,84,O,shuzi_ZMplace);WriteAscii(3,92,O,shuzi_ZM10);WriteAscii(3,100,O,shuzi_ZM10);voidPauseDisplayO(writeHan(5,84,O,hanzi_ZM21);系统暂停时显示暂停writeHan(5,100,O,hanzi_ZM22);voidLedDisplay(ucharx)LED灯显示函数x:让LED0-LED5中的一个灯亮uchary,i;y=0xfe;/y为LED亮的2进制码for(i=0;ix;i

    11、)y=y=300)(ii=0;/3秒计时到,标志清0JSl=O;if(JS2=l)(if(direction=0)/从起点站开往终点站(if(timeO)time-;时间减少voidmain()(*开机准备工作*/keynum=0xff;键值无效P2=0xff;所有LED熄灭,电机停,可不写单片机复位所有端口为1mm=0;/电机处于停状态LED7=LED0=0;对应的LED亮LED7:电源LED0:在起点站direction=0;系统运行方向function=0;/系统初始化initTG12864();clrscr();TMOD=OxII;T0,Tl工作在模式1,16为定时计数方式TLO=(

    12、uint)(-11059212)%256;/TO定时IOmsTHO=(Uint)(-110592/12)/256;TLl=(uint)(-11059212)%256;/Tl定时IOmsTHl=(Uint)(-110592/12)/256;ETO=TRO=I;打开TOETl=TRl=O;/Tl关闭PTl=I;EA=I;开启中断控制总开关/*初始化阶段*/menul();/初始化界面显示didi(5);蜂鸣器叫0.5sdelayms(922*10);延时IOs/*一等待设置阶段(中断设置参数)一一*/loop:K1=K2=1;/电机停止转动BACK=O;返回标志清0JS1=JS2=O;/设置时不计

    13、时/*/function=l;系统设置状态clrscr();menu2();/设置界面显示while(function=l);/等待运行/function=2;系统运行状态clrscr();menu3();ETl=TRl=I;/Tl计数中断开启/*运行阶段*/while(1)(while(MS=I)if(direction=0)/从起点站开往终点站(for(;place0;place-)开往起始站LedDisplay(place);/LED处理函数回去时延时3sif(place=5)&(time=2000)ting;电机停止转动StartDisplayO;起始站位置显示djDisplay();

    14、显示电机状态暂停JSl=I;ii=0;开启3s计时While(JSl)/等待计时完成if(BACK=1)/运行时按下返回键gotoloop;/loop:到设置状态JS2=1;电机运行计数开启Mf;/电机反转WeiDisplay();/显示当前位置-目的位置djDisplay();显示电机状态后退while(time%400)!=0)等待计时4sIf(BACK=I)运行时按下返回键gotoloop;/loop:到设置状态direction=0;已到切换方向JS2=0;关闭总运行时间计数time=0;启动定时时间清0while(MS=O)(delayms(3);以3ms为周期,判断相关变量if(J

    15、S2=l)在计时开启时,判断时间(if(time%400=0)如果到了4秒钟place=time400;/站点位置变化LedDisplay(place);站点灯亮WeiDisplay();/显示当前位置-目的位置)/mm=0;表示电机停了/mm=l;表示电机在运行,(正转)/mm=2;表示电机在运行,(反转)if(keynum=l)前进键(if(time!=2000)如果不在终点站if(mm=0)如果前一状态为停(可以认为是第一次按下)Mz;电机正转JS2=1;开启计时direction=0;/从起点站开往终点站djDisplay();/显示电机状态前进LedDisplay(place);站点

    16、灯亮if(place=5)StartDiSPlay();如果正在终点站显示elseWeiDisplayO;运行中位置显示/(这样写是不想因为按键连按,造成平凡显示)else如果在终点站if(mn=l)/如果前进键还按着在(已到终点站此时要停下来)ting;电机停JS2=0;/计时停止LedDisplay(place);站点灯亮StartDisplayO;在终点站显示djDisplay();显示电机状态暂停FM=I;蜂鸣器报警提示if(keynum=3)/后退键(if(time!=0)/如果不在起点站if(mm=0)如果前一状态为停(可以认为是第一次按下)Mf;电机反转JS2=1;/开启计时di

    17、rection=l;从终点站开往起点站djDisplay();显示电机状态后退LedDisplay(place);站点灯亮if(place=0)StartDisplayO;/如果正在起点站显示elseWeiDiSPIay();运行中位置显示)/(这样是写不想应为按键连按,造成平凡显示)else如果在起点站if(则=2)如果后退键还按着在(已到终起点站此时要停下来)ting;电机停JS2=0;计时停止LedDisplay(place);站点灯亮StartDisplayO;在终点站显示djDisplay();显示电机状态暂停FM=I;蜂鸣器报警提示if(keynum=0xff)/无键按下(if(t

    18、ime!二0)&(time!=2000)如果不在起点站,不再终点站(运行中)(if(mm!=O)如果前一状态为不为停(可以认为是第一次按下)JS2=0;计时停止FM=O;/蜂鸣器不叫ting;/电机停djDisplay();显示电机状态暂停elseFM=O;/(解出在起点站和终点站的报警)if(BACK=1)/如果返回标志有效gotoloop;/goto到设置界面tgl2864.h文件的程序清单ttinclude#includeWdefineuintunsignedintttincludezimo.hincludedelay.hWdefineout0POWdefinekeyP3sbitLCD-

    19、RST=PO;sbitLCD-CS2=P1;sbitLCD-CS1=P2;sbitLCD-E=P3;sbitLCD-WR=P4;sbitLCD-RS=P5;/包含自编字模数据的相关头文件包含自编延时函数头文件Wdefineucharunsignedchar/TG12864复位端/TG12864右半屏片选/TG12864左半屏片选/TG12864使能端/TG12864读(1)/写(0)信号选择端/TG12864数据(1)/指令(0)选择端voidwrite24x24(ucharx,y,z,ucharcode*p)显示1个24*24点阵汉字uintt=0;uchari,J;for(i=x;ix+3

    20、i+)(for(j=y;jy+24;j+)显示一个字符占24列(lcd_xy(i,j);if(z=0)WriteData(pt+);elseWriteData(pt+);LCD_CS1=LCD_CS2=O;下面为TG12864的其他相关函数,请参考2-4-1delay,h文件的延时函数程序清单请参考任务2-1-2.4-1-1相关部分,这里省略。zimo.h文件的程序清单ucharcodehanzi2472=(/*一文字:欢一*/*宋体18;此字体下对应的点阵为:宽X高=24x24*/0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0xE0,0x70,0x00,

    21、0x00,0x80,0xF8,0x9C,0x80,0x80,0x80,0x80,0x80,0x80,OxCO,0x80,0x00,0x00,0x00,0x01,0x02,0x04,0xC8,0x30,0xEE,0xC3,0x00,0x18,0x04,0x03,0x00,0xE0,0x3E,0x7E,0x80,0x00,0x02,0x01,0x00,0x00,0x00,0x00,0x10,0x08,0x04,0x03,0x00,0x00,0x00,0x43,0x27,0x20,0x10,OxOC,0x06,0x01,0x00,0x00,0x03,OxOE,0x18,0x30,0x20,0x20,

    22、0x00,/“迎、使、用、往、返、小、车”的字模省略;ucharcodeshuzi_ZM16=(/*一文字:0*/*宋体12;此字体下对应的点阵为:宽X高=8x16*/0x00,OxEO,0x10,0x08,0x08,0x10,OxEO,0x00,0x00,OxOF,0x10,0x20,0x20,0x10,OxOF,0xOO,/“1.2.3.4.5.6.7.8.9”的字模省略;ucharcodehanzi_ZM32=/*0文字:预-*/*-宋体12;此字体下对应的点阵为:宽X高=16x16*/0x20,0x22,0x2A,0xF2,0x2A,0x66,0x20,0x02,0xF2,OxlA,0

    23、xD6,0x12,0x12,0xF2,0x02,0x00,0x00,0x20,0x40,0x3F,0x00,0x00,0x40,0x40,0x27,0x18,0x07,0x08,0x10,0x27,0x60,0x00,其他汉字的字模省略;geykey.h文件的程序清单ucharkeynum,keystate;externbitMS;voidscanKey()(ucharkeypress;keynum=0xff;键值、键盘状态机模式标志键盘函数临时键值/键值无效key=Oxff;如果P3除键盘以外无任何设备,就可以对整个P3进行操作key=key0x7f;/但现在P3.7接了一个蜂鸣器,不能对P

    24、3整体操作/key=key0x7f;这样写是不想影响P3.7的输出输入情况,_nop_();keypress=key0x80;/读出临时键值,0x80,是将P3.7置1,(此时P3没有输出)读出的数据不考虑P3.7的情况,无键按下它为Oxff,有键按下和平常的一样if(keypress!=Oxff)switch(keystate)(case0:keystate=l;break;case1:keystate=2;switch(keypress)(caseOxfe:keynum=0;break;/是否有键按下/状态switch/若为空闲状态则状态为一(去抖)/真的有键按下/转入无效状态/译键值/切

    25、换caseOxfd:keynum=l;break;前进caseOxfb:keynum=2;break;/暂停caseOxf7:keynum=3;break;/后退caseOxef:keynum=4;break;/运行caseOxdf:keynum=5;break;/返回default:(若为干扰keynum=Oxff;keystate=O;break;case2:(if(MS=O)(在手动模式下)(if(keypress=Oxfd)/连发键值(前进)keynum=l;if(keypreSS=OXf7)/连发键值(后退)keynum=3;break;elsekeystate=O;若无键按下状态复

    26、位四、任务评价价目评项评价内容评价标准评价方式自我评价组价小评教师评价职业素养安全意识、责任意识A作风严谨、自觉遵章守纪、出色完成工作任务B能够遵守规章制度、较好地完成工作任务C遵守规章制度、没完成工作任务或完成工作任务、但忽视规章制度D不遵守规章制度、没完成工作任务职业素养学习态度主动A积极参与教学活动,全勤B缺勤达本任务总学时的10%C缺勤达本任务总学时的20%D缺勤达本任务总学时的30%团队合作意识A与同学协作融洽、团队合作意识强B与同学能沟通、协同工作能力较强C与同学能沟通、协同工作能力一般D与同学沟通困难、协同工作能力较差业力专能学习活动1工作准备A按时、完整地完成工作页,问题回答正确B按时、完整地完成工作页,问题回答基本正确C未能按时完成工作页,或内容遗漏、错误较多D未完成工作页学习活动2现场施工A学习活动评价成绩为90-100分B学习活动评价成绩为75-89分C学习活动评价成绩为60-74分D学习活动评价成绩为0-59分学习活动3评价与总结A学习活动评价成绩为90-100分B学习活动评价成绩为75-89分C学习活动评价成绩为60-74分D学习活动评价成绩为0-59分创新能力学习过程中提出具有创新性、可行性的建议加分奖励:班级学号姓名综合评价等级指导老师日期五、教学后记


    注意事项

    本文(《单片机技术及应用》教案——项目6 综合实训.docx)为本站会员(极速器)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!




    宁ICP备18001539号-1

    三一文库
    收起
    展开