基于单片机的简易小直流电机的测速系统 课程设计.docx
- 文档编号:24195329
- 上传时间:2023-05-25
- 格式:DOCX
- 页数:11
- 大小:74.63KB
基于单片机的简易小直流电机的测速系统 课程设计.docx
《基于单片机的简易小直流电机的测速系统 课程设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的简易小直流电机的测速系统 课程设计.docx(11页珍藏版)》请在冰豆网上搜索。
基于单片机的简易小直流电机的测速系统课程设计
信息与电气工程学院
课程设计说明书
(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.2.4数码管显示电路,动态扫描,显示电机转速,共阳数码管。
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
#defineucharunsignedchar
#defineuintunsignedint
voiddelayms(unsignedcharms);
charaa,bb,cc,dd;
ucharnum;/*定时次数每次100ms*/
sbitP30=P3^0;//按键1
sbitP31=P3^1;//按键2
sbitgw=P2^0;
sbitsw=P2^1;
sbitbw=P2^2;
sbitqw=P2^3;
/*******************控制位定义*************/
ucharsmg[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,};//,1,2,3,4....的段码
uintx;//数码管显示的值
uinty;
display();
uintread();
key();//按键扫描
/****************主函数********************/
voidmain()
{
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;}
}
/*********延时函数**********/
voiddelayms(uintt)
{uinti,j;
for(i=0;i for(j=0;j<20;j++);} /*******定时器T1中断函数*********/ voidT0_time()interrupt1 {TH0=(15536)/256;//重装T1 TL0=(15536)%256; TH1=0; TL1=0; num++; if(num==10) {num=0; key(); } } /********按键扫描*********/ key() { if(P30==0) {delayms (1); while(! P30)//去抖动 x=984; display(); } /*if(P31==0) {delayms (1); while(! P31)//去抖动 x=984;*/ display();} } 三、课程设计总结 两周的单片机课程设计终于顺利完成了,其中包含着快乐,也有辛酸。 我们的设计题目是“简易直流电机测速”,大家都觉得这个题目是比较简单的。 其实不然,做了之后,发现设计电路虽然简单,但我们认为它真正困难的地方是程序设计,不过在我们同心努力下最终完成了。 我们刚选该题目时,真的是一头雾水,硬件电路不知如何下手,更何谈解决程序那块,因为我们所学的都是单片机方面的理论知识,应用到实践中去还比较少。 不过,我们三人也没偷下懒,迅速分工去查阅和收集资料。 我们去了图书馆借一些参考书,上网找一些相关资料,并且请教指导老师。 不断地跟苗老师交流,苗老师很耐心的给我改程序。 通过不断努力,终于把proteus仿真做好了,并开始分一个人去焊接硬件电路,剩下的去整理和修改程序。 通过一番整理和修改后,在电脑上进行仿真,仿真成功后准备焊接电路板。 在焊接电路板中,我们首先对硬件电路进行布局,然后确认无误后,在电路板上进行焊接,这个过程我们觉得是做得比较快的,焊接电路板完工,细心检查后,进行通电测试。 结果数码管没有显示,通过检查,终于能显示正确数值。 当时我们的心情都是无比兴奋和快乐的,因为我们两周的辛苦没有白费。 在完成单片机课程设计后,我们发现我们还有许多不足,所学到的知识还远远不够,以至于还有一些功能不能被动完成。 但通过学习这一次实践,增强了我们的动手能力,提高和巩固了单片机方面的知识,特别是软件方面。 从中增强了我们的团队合作精神,并让我们认识到把理论应用到实践中去是多么重要。 4、参考文献: [1]张毅刚.单片机原理及应用[M].北京: 高等教育出版社,2003/12/1. [2]赵珂.电子技术实践3[M].高等教育出版社 [3]闫石.数字电路技术基础 附录: proteus仿真图 课程设计 评语 课程设计 成绩 指导教师 (签字) 年月日 注: 此表必须在同一页面,不能随意更改表格的大小!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于单片机的简易小直流电机的测速系统 课程设计 基于 单片机 简易 直流电机 测速 系统