ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:27.55KB ,
资源ID:9364592      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9364592.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机课程设计哈工大测速小车结题报告资料.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机课程设计哈工大测速小车结题报告资料.docx

1、单片机课程设计哈工大测速小车结题报告资料Harbin I nstituteof Techndogy课程设计说明书(论文)设计题目:测速小车院系:电气学院测控系班级:100102 班设计者:学号:扌旨导教师: 设计时间:2013.9.11 2013.9.13哈尔滨工业大学课程设计考核表总成绩: 指导教师签字:题目学生姓名:班级: 学号:实验部分考核考核内容分值得分基本设计任务的完成情况40附加设计任务的完成情况10对教师提问的回答情况10总结报告评分评分内容分值得分内容完整、字数达标20层次清晰、重点突出、分析透彻10书写规范、文字流畅5有独特见解、有一定的创新5结题报告一.课题完成情况1.总体

2、完成情况说明在为期两周的课程设计过程中,我们完成了测速小车的设计与调试,最终完成了基本 任务要求。在第一周里,我们选定了测速小车的课题,并完成了开题报告,在这一阶段内,我们 熟悉并了解了宝贝车机器人的控制原理,单片机主控模块的接线方式,数字编码器的工 作原理和硬件连接电路。我们还编制了让小车前进,加速,减速,左右转弯的子程序。 在写代码过程中,熟悉了相关软件的使用方法。在第二周里,我们查阅了资料,详细了 解并掌握了 1602液晶显示模块的工作及控制原理,并编制了四位初始化子函数和显示初 始化子函数。在验证显示环节的过程中,还用 protues进行了仿真。接下来,我们完成了计数器,定时器的设置,

3、并且对测得的脉冲数进行转换,使其变成速度,并显示在1602 上。最后我们设置了小车的运动轨迹,使其可以测量不同的速度,并完成了结题报告。总的来说,我们完成了测量速度的完整显示,开题报告和结题报告的书写。2.程序设计/* 延时 */void delay_ nus(un sig ned int i);void delay_1ms(void);void delay_ nms(un sig ned int n);二问题及解决办法1.在完成液晶屏初始化后,仿真也可以显示字符,但将程序烧入单片机后不能正常显示。 原因:仿真是选择的是1602液晶显示模块的八位显示模式,而实际的液晶屏硬件连接为 四位模式。之

4、后,我们重新编制了相应的四位初始化程序,实现了显示功能。2.根据指导书上硬件图连接后,发现无法显示速度。原因:硬件连接图上P1.1和P1.0只是一种示例,并不是实际对应的 P1.1和P1,0 口。实 际编码器的脉冲输入口应为P3.4和P3.5,这两个外部计数的输入端口。改变接线后可以 正常显示。3.当全速前进时,左右两轮显示速度不一致。原因:左右两轮控制脉冲的接入时间不一致,并且传感器在检测过程中可能存在干扰。这是系统误差,无法消除。4.对于float型的变量,1602无法正常显示。解决办法:使用一个库函数sprintf将float转换成字符串型数据并进行显示。 三心得体会课程设计是将课本知识

5、运用到实践中的很好机会, 在课题的研究过程中,我们遇到问题又会重新回到课本,对基础知识进一步理解和掌握,同时又把知识和实际问题结合起 来,对知识的理解上升了一个层次。并且智能车的设计,更能激发我们学习的兴趣,每 个人都有一颗年轻的心,在设计过程中,我们不仅掌握了知识,并且也找到了很多乐趣。 并且我们小组内两人分工合作,促进我们养成团队协作精神。当然设计和调试过程并不是一帆风顺, 我们遇到一个有一个或大或小的问题, 我们通过讨论,请教老师,参考实例,查阅资料也解决了这些问题。任何探索都不会是一马平 川,我们肯定会遭遇坎坷,而通过课程设计也培养了我们发现问题,解决问题的习惯。 在做工程时遇到问题如

6、何处理,我有了一次切身的体验。在工作时,不管大事还是小事, 尤其是一些不起眼的细节,更要保持一丝不苟的作风。另外,在这两周的单片机课设中,我要十分感谢胡老师的辛苦指导,胡老师从小车原 理的介绍到程序的调试,都给予了非常大的帮助。也正是因为胡老师的辛勤监督,才使 得我们按要求、认真的完成了两周的课设,顺利完成了测速小车的设计。虽然课设就要 结束了,但胡老师教导的严谨的工作作风,“规格严格,功夫到家”的校训,将永远影响着我以后的学习、研究、工作,让我在做每一件事情时,都认真严格的要求自己,追求 卓越。四参考文献1胡瑞强,李成伟,周庆东等单片机原理及应用课程设计指导书 哈尔滨:测控实验中心2张毅刚,

7、彭喜元等 单片机原理及应用 北京:高等教育出版社3张毅刚 基于Proteus的单片机课程的基础实验与课程设计 北京;人民邮电出版社4彭伟 单片机C语言程序设计实训100例 北京:电子工业出版社5苏小红,陈慧鹏等 C语言大学实用教程 北京:电子工业出版社6李东,黄庆成等 计算机组成技术教程 北京:电子工业出版社附录源程序代码*/测速小车程序设计 1001102班/1100100420 王斌峰*#in clude #i nclude #in clude #in clude #in clude vintrin s.h#defi ne uchar un sig ned char / 宏定 义左右电机引

8、脚定义/1602控制端定义全局变量左右轮速度/全局变量 转化后速度 显示数组/全局变量中断次数计数变量#defi ne uint un sig ned int sbit right=P1A0;sbit left=P1A1;sbit rw=P2A1; sbit rs=P2A2;sbit en=卩2人0; float RightSpeed,LeftSpeed;uchar str_temp10;uchar time=0;/* 子函数声明 */void init_devices(void); /初始化函数void t0_i nit(void);void t1_i nit(void);void t2_i

9、 nit(void);void LCMn it(void);void ini t_4bit(void);/* 小车运动 子函数申明 */void Forward(void);void Left_90(void);void Right_90(void);void Right_180(void);/测速子函数/速度数据类型转换函数 /问候语显示子函数/字符显示子函数/显示位置设置子函数/速度转换子函数/* 功能实现子函数申明 */void Measure_Speed(void);void Data_C onversion( float speed);void display(uchar x,uch

10、ar y,uchar *s);void Display_List_Char(uchar x,uchar y,uchar *s);void Set_xy_LCM(uchar x,uchar y);void Data_C onversion( float speed);/* 1602 数据指令写入函数 */void Write_Data_LCM(uchar dat);void Write_Comma nd_LCM(uchar com);/* 延时 */void delay_ nus(un sig ned int i);void delay_1ms(void);void delay_ nms(un

11、sig ned int n);/* 定时器2定时中断子程序 */ void Timer2(void) in terrupt 5中断标志清零TF2=0;time+;if(time=20)time=0;TR0=TR1=0;TR2=ET2=0;Measure_Speed();中断20次,计时一秒中断指针清零计时结束测速,转换,并显示Data_C onversion (RightSpeed);Display_List_Char(0,0,Right:);Display_List_Char(0,6,str_temp);Display_List_Char(0,10,cm/s);Data_C onversio

12、n (LeftSpeed);Display_List_Char(1,0,Left:);Display_List_Char(1,6,str_temp);Display_List_Char(1,10,cm/s);TH0=TL0=0;TH1=TL1=0;TR2=ET2=TR0=TR1=1;/* 主函数 */void mai n(void)/计数器清零/计数器清零/计数开始,开定时器并允许中断ini t_devices(); delay_ nus(800);Write_Comma nd_LCM(OxOc);Write_Comma nd_LCM(OxO1); display(0,0,Hi,wellcom

13、e to); display(1,0,wbf&zdx Group); delay_ nm s(300);Write_Comma nd_LCM(0x01); RightSpeed=O;LeftSpeed=O;EA=1;TR2=ET2=TR0=TR1=1; while(1)器件初始化/关显示/清屏显示问候语清屏/速度初始置零开总中断/定时,计数开始小车运动控制Forward。;Left_90();Forward();Left_90();Right_180();Forward();/* 子函数 */t0_i ni t();t1n it();t2n it();LCMn it(); void t0_i

14、nit(void)TMOD = 0x05;ET0=1;TH0=TL0=0;void t1_i nit(void)TMOD |= 0x50;ET1=1;TH1=TL1=0;T0初始化方式一计数/设置计数起点T1初始化方式一计数/设置计数起点void t2_i nit(void)T2初始化RCAP2H=19456/256; /定时一秒,设置计数起点RCAP2L=19456%256;void LCMnit(void) /LCM 初始化rw=0;en=0;ini t_4bit();Write_Command_LCM(0x28); /8 位数据 + 双行显示 +5*10 点阵delay_ nu s(10

15、00);Write_Comma nd_LCM(0x06); /光标增量方式+不移位delay_ nu s(1000);void ini t_4bit(void)un sig ned char rd_four;rd_four = 0x28;rw=0;rs=0;P0 = rd_four;delay_ nu s(1000);en=1;delay_ nu s(2000);en=0;/* 1602 数据指令写入函数 */LCM写命令子函数void Write_Comma nd_LCM (un sig ned char com) un sig ned char com_H=0,com_L=0;rw=0;r

16、s=0;com_H=co m&0 xf0;com_L=(com4)&0xf0;P0 = com_H; delay_ nus(1000); en=1;delay_ nus(2000); en=0;P0 = com_L; delay_ nus(1000); en=1;delay_ nus(2000); en=0;void Write_Data_LCM(unsigned char dat) LCM 写数据子函数un sig ned char dat_H=O,dat_L=O;rw=0;rs=1;dat_H=dat&0 xfO;dat_L=(dat4)&0 xf0;P0 = dat_H;delay_ n

17、u s(1000);en=1;delay_ nu s(2000);en=0;P0 = dat_L;delay_ nu s(1000);en=1;delay_ nu s(2000);en=0;void Set_xy_LCM(unsigned char x,unsigned char y) /光标位置设置if(x=0)Write_Command_LCM(0x80+y); /设置起始地址 为0x0y,即确定显示位elseWrite_Command_LCM(0xc0+y); /设置起始地址 为0x0y,即确定显示位void Measure_Speed(void) 测速子程序un sig ned cha

18、r Num_T0,Num_T1;Num_T0=TH0*256+TL0;Num_T 仁TH1*256+TL1;RightSpeed=2.54*Num_T0/2;LeftSpeed=2.54*Num_T1/2;/*-液晶模块指定位置 显示子程序 */void Display_List_Char(uchar x,uchar y,uchar *s) uchar len gth,j;uchar LCM_Data;len gth=strle n( s);Set_xy_LCM(x,y);if(le ngth=6)for(j=0;jle ngth;j+)LCM_Data=*s;Write_Data_LCM(L

19、CM_Data); s+;elsefor(j=0;j4;j+)LCM_Data=*s;Write_Data_LCM(LCM_Data); s+; void display(uchar x,uchar y,uchar *s)uchar j,le ngth;len gth=strle n( s);Set_xy_LCM(x,y);for (j=0;jle ngth;j+)Write_Data_LCM(*s);s+;void Data_Conversion(float speed) 数据转换,将 float 转换为 uchar 形式spri ntf(str_temp,%f,speed);/* 小车运动

20、子函数 */void Forward(void) 小车前进子函数uchar j;for(j=0;j30;j+)right=1;delay_ nus(1300);right=O;delay_ nu s(20000);left=1;delay_ nu s(1700);left=0;delay_ nu s(20000);void Left_90(void) /左转 90 度uint k;for(k=0;k20;k+)right=1;delay_ nu s(1300);right=0;delay_ nu s(20000);left=1;delay_ nu s(1300);left=0;delay_ n

21、u s(20000);void Right_90(void) /右转 90 度uint k;for(k=0;k20;k+)right=1;delay_ nu s(1700);right=0;delay_ nu s(20000);left=1;delay_ nu s(1700);left=0; delay_ nu s(20000);void Right_180(void) 右转180度uint k;for(k=0;k40;k+)right=1; delay_ nu s(1700);right=O;delay_ nu s(20000);left=1;delay_ nu s(1700);left=0; delay_ nu s(20000);/* 延时 */void delay_nus(unsigned int i) Nus 延时i=i/10;while(-i);void delay_1ms(void) /1ms 延 时函数un sig ned int i;for(i =0;i 1140;i+);void delay_nms(unsigned int n) Nms 延 时函数un sig ned int i=0;for(i =0;i n ;i+)delay_1ms();

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1