单片机课程设计报告范文完美版
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机课程设计报告范文完美版
基于单片机的步进电机控制器设计
江南大学
课程名称:设计题目:班级:姓名:指导教师:
物联网工程学院
课程设计报告
单片机原理及应用基于单片机的步进电机控制器设计号:
评分:2022年6月30日
基于单片机的步进电机控制器设计
目录
设计报告要求
1、设计目的
2、设计要求
3、仪器设备
4、硬件线路图及主要芯片说明
5、系统工作原理
6、程序框图
7、程序清单
8、设计体会
9、参考文献
基于单片机的步进电机控制器设计
设计目的
通过具体小型测试系统设计,实践单片机系统设计及调试的全过程,以加深对单片机内部结构、功能和指令系统的理解,并进一步学习单片机开发系统的应用及一些外围芯片的接口和编程方法,初步掌握单片机系统的硬、软件设计技术及调试技巧。
设计要求
1)电机转速可以平稳控制
2)通过键盘和显示器可以设置电机的转速3)显示电机的速度趋势仪器设备
1、STC89C51单片机芯片一片
2、ULN2003驱动芯片一片
3、
MT03641BR八位共阳数码管芯片一片4、8550PNP四个5、不同阻值电阻若干6、30pF电容两个7、12M晶振一个8、按键四个9、28BYJ-48电机一个10、+5V电源一个
硬件线路图及主要芯片说明28BYJ-48四相八拍步进电机
步进电机是一种将电脉冲转化为角位移的执行机构。
通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。
您可以通过控制脉冲个来控制角位移量,从而达到准确定位的
主要技术参数
相数:四相电压:5VDC电流:92mA电阻:130Ω步距角:5.625°
空载牵出频率:800pp
基于单片机的步进电机控制器设计
空载牵入频率:500pp减速比:1/64
牵入转矩:≥78.4mN.m
ULN2003
ULN2003是大电流驱动阵列,多用于单片机、智能仪表、PLC、数字量输出卡等控制电路中。
可直接驱动继电器等负载。
输入5VTTL电平,输出可达500mA/50V。
ULN2003是高耐压、大电流达林顿陈列,由七个硅NPN达林顿管组成。
该电路的特点如下:ULN2003的每一对达林顿都串联一个
2.7K的基极电阻,在5V的工作电压下它能与TTL和CMOS电路直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。
ULN2003是高压大电流达林顿晶体管阵列系列产品,具有电流增益高、工作电压高、温度范围宽、带负载能力强等特点,适应于各类要求高速大功率驱动的系统。
ULN2003芯片引脚图
引脚1:CPU脉冲输入端,端口对应一个信号输出端。
引脚2:CPU脉冲输入端。
引脚3:CPU脉冲输入端。
引脚4:CPU脉冲输入端。
引脚5:CPU脉冲输入端。
引脚6:CPU脉冲输入端。
引脚7:CPU脉冲输入端。
引脚8:接地。
引脚9:该脚是内部7个续流二极管负极的公共端,各二极管的正极分别接各达林顿管的集电极。
用于感性负载时,该脚接负载电源正极,实现续流作用。
如果该脚接地,实际上就是达林顿管的集电极对地接通。
引脚10:脉冲信号输出端,对应7脚信号输入端。
引脚11:脉冲信号输出端,对应6脚信号输入端。
引脚12:脉冲信号输出端,对应5脚信号输入端。
引脚13:脉冲信号输出端,对应4脚信号输入端。
引脚14:脉冲信号输出端,对应3脚信号输入端。
基于单片机的步进电机控制器设计
引脚15:脉冲信号输出端,对应2脚信号输入端。
引脚16:脉冲信号输出端,对应1脚信号输入端。
ULN2003的输出端可达500mA/50V.输出端的二极管学名续流二极管,
英文freewheeldiode。
如果ULN2003的达林顿管输入端输入低电平使其
截止,其驱动的元件是感性元件,则电流不能突变,此时会产生一个高压;如果没有二极管,达林顿管会被击穿,所以这个二极管主要起保护作用。
由于ULN2003是集电极开路输出,为了让这个二极管起到续流作用,必须
将COM引脚(pin9)接在负载的供电电源上,只有这样才能够形成续流回路。
ULN2003是一个非门电路,包含7个单元,单独每个单元驱动电流最
大可达350mA,9脚可以悬空。
STC89C51
89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压、高
性能CMOS8位微处理器,俗称单片机。
单片机的可擦除只读存储器可以反
复擦除100次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与
工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU 和闪烁存储器组合在单个芯片中,ATMEL的89C51是一种高效微控制器。
89C单片机为很主要特性如下:
(1)增强型1T流水线/精简指令集结构8051CPU
(2)工作电压:3.4V-5.5V(5V单片机)/2.0V-3.8V(3V单片机(3)工
作频率范围:0-35MHz,相当于普通8051的0~420MHz.实际工作频率可
达48MHz.
(4)用户应用程序空间12K/10K/8K/6K/4K/2K字节(5)片上集成512字
节RAM
(6)通用I/O口(27/23个),复位后为:准双向口/弱上拉(普通8051传统I/O口)
可设置成四种模式:准双向口/弱上拉,推挽/强上拉,仅为输入/高阻,开漏
每个I/O口驱动能力均可达到20mA,但整个芯片最大不得超过
基于单片机的步进电机控制器设计
55mA
(10)内部集成MA某810专用复位电路(外部晶体20M以下时,可省外部复位电路)
(12)有2个16位定时器/计数器
(13)外部中断2路,下降沿中断或低电平触发中断,PowerDown模式可由外部中断低电平触发中断方式唤醒
(14)PWM(4路)/PCA(可编程计数器阵列),也可用来再实现4
个定时器或4个外部中断(上升沿中断/下降沿中断均可支持)
(15)STC89Cc516AD具有ADC功能。
10位精度ADC,共8路(16)通用异步串行口(UART)
(17)SPI同步通信口,主模式/从模式(18)工作温度范围:0-75℃/-40-+85℃(19)封装:PDIP-28
基于单片机的步进电机控制器设计
STC89C51芯片引脚图
MT03641BR八位共阳数码管
主要参数
工作电压:2V
工作电流:5—10mA数码管显示原理
数码管动态显示介面是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外
基于单片机的步进电机控制器设计
硬件线路图
本程序包括按键处理程序、显示处理程序、中断处理程序、数据处理程序四个主要部分
根据表中所给的段码,只需要送入相应的数码管即可。
基于单片机的步进电机控制器设计
按键处理程序
按键处理安排在主程序当中,使其处于不断检测状态,当有按键按下能够及时对其进行相应的处理。
同时,对于按键还应该进行消抖处理,避免系统误动作。
中断处理程序
中断程序中安排对P1口赋值及对定时器重新装入初值,每次进入中断程序时,先判断是否执行反转,如是,则送反转编码,否则,送正转编码。
显示处理程序
显示程序则通过对相应数码管的通断,然后送段码。
以这种方式来控制其动态显示,同时需要主要每个数码管都应该延时亮一段时间。
并且要对其消隐。
以获得较好的显示效果。
数据处理程序
通过对数据进行处理来获得电机的转速,可以先计算出1m时电机的系统基本框架
根据以上四个主要部分来把整个系统划分成相应模块,有利于提高系统的抗干扰能力。
能较好的保证系统运行的可靠。
程序框图
基于单片机的步进电机控制器设计
程序清单
/某本程序采用STC89C51单片机,以3641八位共阳数码管显示步进电机的转速
趋势,步进电机采用28BYJ-48DC5V型号(采用四相八拍方式),采用ULN2003驱
动,数码管则直接采用PNP三极管驱动,电机的调节则通过按键控制某/#include<reg52.h>//头文件#defineuintunignedint//宏定义#defineucharunignedchar//宏定义
ucharcodeZF[8]={0某01,0某03,0某02,0某06,0某04,0某0c,0某08,0某09};//正转编码表
ucharcodeFF[8]={0某09,0某08,0某0c,0某04,0某06,0某02,0某03,0某01};//反转编码表
ucharcodeSM[10]={0某c0,0某f9,0某a4,0某b0,0某99,0某92,0某82,0某f8,0某80,0某90};//数码表
bitk1=P3^2;//定义K1为启动/停止按键bitk2=P3^3;//定义K2为加速按键
基于单片机的步进电机控制器设计
bitk3=P3^4;//定义K3为减速按键bitk4=P3^5;//定义K4为正/反转按键ucharj=0;
uchartemp1,h,w,p,q,f;
/某1m延时函数(12M晶振下)某/voiddelay(ucharz){
uchar,v;
for(=0;<z;++)for(v=0;v<125;v++);//一个for循环8个机器周期(125某8某1u=1m)}
/某显示函数某/
voiddiplay(uchara,ucharb,ucharc,uchard){if(f%2){P2=0某
fe;P0=0某bf;//f为奇数时代表反转,则第一个数码管显示“-”,否则不显示delay(1);P0=0某ff;}//消隐P2=0某fd;P0=SM[a];//显示十位delay(1);P0=0某ff;//消隐P2=0某fb;P0=SM[b]&0某7f;//显示个位(带小数点)delay(1);P0=0某ff;//消隐P2=0某f7;P0=SM[c];//显示小数点后第一位小数delay(1);P0=0某ff;//消隐P2=0某
ef;P0=SM[d];//显示小数点后第二位小数delay(1);P0=0某ff;//消隐基于单片机的步进电机控制器设计
}
/某数值处理函数某/voiddipoe(){
/某主函数某/voidmain(){
uchark;
TMOD=0某01;//定义定时器0工作方式1EA=1;//开总中断
基于单片机的步进电机控制器设计
elediplay(h,w,p,q);//正常运转时调用显示函数}}
设计体会
通过这次课程设计使我对单片机的c语言编程能力有了进一步的提高,同时也对硬件电路的设计有了更好的掌握,对keil软件运用也更加熟练.。
在设计过程中遇到了各种的困难都通过了和同学讨论和查阅书本都得到了
解决。
通过这次课程设计我对单片机有个更深的了解,同时也增加了我的
学习热情,我对未来充满希望。
最后感谢老师对我们的精心指导和帮助,
感谢同学们对我的帮助。
参考文献
【1】张家生.电机原理与拖动基础【M】.北京:北京邮电大学出版社,2006.【2】马淑华,王凤文,张美金.单片机原理与接口技术【M】.北京:北京
邮电大学出版社,2007.
【3】顾德英,张健,马淑华.计算机控制技术【M】.北京:北京邮电
大学
出版社,2006.
【4】华成英,童诗白.模拟电子技术基础【M】.北京:高等教育出版社,
2022。