为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

基于单片机的简易小直流电机的测速系统 课程设计

2019-09-04 14页 doc 34KB 9阅读

用户头像

is_337177

暂无简介

举报
基于单片机的简易小直流电机的测速系统 课程设计信息与电气工程学院 课程设计说明书 (2012 /2013学年第 二 学期) 课程名称 :      单片机应用        题    目 :    简易小直流电机测速  专业班级 :    自动化10-02        学生姓名 :      XX            学    号:       XX        指导教师 :    XX等          设计周数 :      2周              设计成绩 :                        2013年 6 月 26 ...
基于单片机的简易小直流电机的测速系统   课程设计
信息与电气工程学院 课程设计#说明# (2012 /2013学年第 二 学期) 课程名称 :      单片机应用        题    目 :    简易小直流电机测速  专业班级 :    自动化10-02        学生姓名 :      XX            学    号:       XX        指导教师 :    XX等          设计周数 :      2周              设计成绩 :                        2013年 6 月 26 日 一、单片机课程设计目的 1.设计并制作出一个以单片机为核心的简易小直流电机测速系统。 2.通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。 3.通过学生实际操作焊接电路板,提高学生的动手能力。 4.通过完成一个包括电路设计和程序开发的完整过程,使学生了解开发一单片机应用系统的                      全过程,为今后从事相应的工作打下基础。 2、课程设计正文 2.1设计内容和要求 2.1.1查阅资料,了解单片机的中断系统,键盘扫描,数码管动态扫描显示,定时器计数器的应用。 2.1.2了解步进电机的工作原理 2.1.3通过显示电路显示电机速度 2.1.4按钮可控制是否显示速度 2.2硬件设计方案 实现原理:本次设计用到单片机的定时器,计数器,数码管动态扫描,键盘扫描,中断服务。单片机上电,初始化完成后,先让定时器T0产生一秒的定时。计数器T1开始计数,计数脉冲由电机本身提供。一秒定时到后,保存电机转速,当按键按下时,让数码管动态扫描显示电机转速。 所需器件:单片机最小系统、直流电机一个、四个共阳极数码管、三极管PNP三个、 电阻330共8个、1k四个 2.2.1按键控制,一号键按下,在数码管上显示电机转速。 2.2.2由电机本身输入脉冲信号,每转输出334个脉冲 2.2.3单片机最小系统,包括复位电路和时钟电路。 2.3软件设计方案 包括以下几个模块 2.3.1头文件,主程序,数码管显示,延时程序,定时器中断模块,按键扫描,计数器计数 2.3.2编程思路: 用定时器T0产生产生一秒定时: 每100毫秒产生一次中断。 系统时钟为6兆,编写定时器T0产生1s定时。 机器周期等于12个震荡周期。6兆机器周期为2us 方式1最长定时2^16*2us=131ms 选方式1每隔100ms中断一次,中断十次,TMOD=0x01, 65536-X)*2us=0.1 x=15536 TH0=15536/256; TL0=15536%256; 2.3.3 直流电机输出脉冲计数器T1计数 T1工作在计数器模式方式一TMOD=0X50 初值为0,TL0=0,TH0=0 2.3.4 使用kill编程如下: #include #include #include #define uchar unsigned char #define uint unsigned int void delayms(unsigned char ms); char aa,bb,cc,dd; uchar num;/*定时次数每次100ms*/ sbit P30=P3^0;//按键1 sbit P31=P3^1;//按键2 sbit gw=P2^0; sbit sw=P2^1; sbit bw=P2^2; sbit qw=P2^3; /*******************控制位定义*************/ uchar smg[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,}; //,1,2,3,4....的段码 uint x;//数码管显示的值 uint y; display(); uint read(); key();//按键扫描 /****************主函数********************/ void main() { gw=0; sw=0; bw=0; qw=0;//数码管初始化 P1=0xc0; P2=0x00; num=0;  //  选方式1每隔100ms中断一次,中断十次,TMOD=0x51 TMOD=0x51;/*定时器T0工作于方式1,计数器T1工作于方式1*/ TH0=15536/256;/*定时器T0初值*/    /**/ TL0=15536%256; TH1=0;/*计数器T0初值*/ TH0=0; EA=1    ;/*开总中断*/ ET0=1; TR0=1;    /*启动T0*/ ET1=1; TR1=1;/*启动T1*/ while(1);  //无限循环,    等待中断 } /*{ display();//数码管显示 //key(); } } /***********数码管显示**************/ display() { while(1) { aa=x/1000;    //求速度千位 ,送到千位缓冲区保存 P1=smg[aa]; gw=0; delayms(1); gw=1; bb=(x/100)%10;    //求速度百位 ,送到百位缓冲区保存 P1=smg[bb]; sw=0; delayms(1); sw=1; cc=(x/10)%10;    //求速度十位 ,送到十位缓冲区保存 P1=smg[cc]; bw=0; delayms(1); bw=1; dd=x%10;    //求速度个位 ,送到个位缓冲区保存 P1=smg[dd]; qw=0; delayms(1);  qw=1; } if(P31==0) { delayms(1); while(!P31)    x=0;} } /*********延时函数**********/ void delayms(uint t) {uint i,j; for(i=0;i总结
两周的单片机课程设计终于顺利完成了,其中包含着快乐,也有辛酸。我们的设计题目是“简易直流电机测速”,大家都觉得这个题目是比较简单的。其实不然,做了之后,发现设计电路虽然简单,但我们认为它真正困难的地方是程序设计,不过在我们同心努力下最终完成了。 我们刚选该题目时,真的是一头雾水,硬件电路不知如何下手,更何谈解决程序那块,因为我们所学的都是单片机方面的理论知识,应用到实践中去还比较少。不过,我们三人也没偷下懒,迅速分工去查阅和收集资料。我们去了图书馆借一些参考书,上网找一些相关资料,并且请教指导老师。不断地跟苗老师交流,苗老师很耐心的给我改程序。通过不断努力,终于把proteus仿真做好了,并开始分一个人去焊接硬件电路,剩下的去整理和修改程序。    通过一番整理和修改后,在电脑上进行仿真,仿真成功后准备焊接电路板。在焊接电路板中,我们首先对硬件电路进行布局,然后确认无误后,在电路板上进行焊接,这个过程我们觉得是做得比较快的,焊接电路板完工,细心检查后,进行通电测试。结果数码管没有显示,通过检查,终于能显示正确数值。当时我们的心情都是无比兴奋和快乐的,因为我们两周的辛苦没有白费。    在完成单片机课程设计后,我们发现我们还有许多不足,所学到的知识还远远不够,以至于还有一些功能不能被动完成。但通过学习这一次实践,增强了我们的动手能力,提高和巩固了单片机方面的知识,特别是软件方面。从中增强了我们的团队合作精神,并让我们认识到把理论应用到实践中去是多么重要。 参考文献: [1] 张毅刚.单片机原理及应用[M].北京:高等教育出版社,2003/12/1. [2]  赵珂 .电子技术实践3[M].高等教育出版社 [3]  闫石.数字电路技术基础 附录:proteus仿真图 课程设计 评 语   课程设计 成 绩   指导教师 (签字) 年 月 日         注:此表必须在同一页面,不能随意更改表格的大小!
/
本文档为【基于单片机的简易小直流电机的测速系统 课程设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索