收藏 分销(赏)

单片机直流电动机调速设计.docx

上传人:精**** 文档编号:10170600 上传时间:2025-04-24 格式:DOCX 页数:9 大小:39.16KB 下载积分:6 金币
下载 相关 举报
单片机直流电动机调速设计.docx_第1页
第1页 / 共9页
单片机直流电动机调速设计.docx_第2页
第2页 / 共9页


点击查看更多>>
资源描述
一、设计题目:直流电机调速 二、设计思路 1. 问题的提出 能否以单片机现有资源模拟调整直流电动机的转速。 2. 分析问题的功能 (1) .在P1.0引脚输出低频脉宽调制信号(PWM),PWM信号的脉冲占空比(脉 动电压的高电平时间占周期比)可以通过和P1 连接的按键设定,从而调整直 流电动机的转速。 (2) .软件设计:按问题功能分模块,简述各模块功能。 根据实际构思程序分为两个模块 模块1为通过计数来控制对P1.0的置1和清0; 模块2为根据按键设置改变输出脉冲的占空比。 三、详细设计: 1. 硬件详细设计: (1).电路图: JK6I JK17I ©Mu- GND (2).进行硬件资源分配 P1.0连ZDJ-A,输出PWM波,实现电动机调速; P1.1连KEY1,增加占空比,使电机加速; P1.2连KEY2,减小占空比,使电机减速; P3.0连蜂鸣器,当加速到最大值或减速到最小值蜂鸣器会报警; INT0连KEY3,使直流电机停机。 2. 软件详细设计: (1)地址模块 设定主程序和中断服务程序初始地址 ORG 80H AJMP MAIN ORG83H AJMPSTOP ORG 8BH AJMP INTT0 ORG 81H (2)主程序准备模块 为定时器、堆栈栈底地址、软件计数值、赋初值,选择定时器2工作方 式,允许定时器0、外部中断,打开总中断、定时器0中断和外部中断。 MAIN: MOV SP,#60H ;给堆栈指针赋初值 MOV PWMH,#03H ;给定初始高电平脉冲个数 MOV COUNTER,#01H MOV PWM,#0AH MOV TMOD,#02H ;定时器0在模式2下工作 MOV TL0,#48H ;定时器每2us产生一次溢出 MOV TH0,#48H ;自动重装的值 SETB ET0 ;使能定时器0中断 SETB EA ;使能总中断 SETB PX0 ;使外部中断0为最高优先中断 SETB TR0 ;开始计时 (3)定时器中断模块 实现方法:使用定时器产生定时每2us产生一次溢出中断,在中断服务中 通过计数来控制对P1.0的置1和清0, 输出PWM波。 INTT0: PUSH PSW;现场保护 PUSH ACC INC COUNTER ;计数值加1 MOV A,COUNTER CJNE A,PWMH,INTT01 ;如果等于高电平脉冲数 CLR P1.0 ;P1.0变为低电平 INTT01:CJNE A,PWM,INTT02 ;如果等于周期数 MOV COUNTER,#01H ;计数器复位 SETB P1.0 ;P1.0为高电平 INTT02:POP ACC ;出栈 POP PSW RETI (4)调速模块 实现方法:在程序执行过程中,读取按键设置,根据按键设置改变输出脉 冲的占空比,按KEY1时可以加速,按KEY2时可以减速。 KSCAN: JNB P1.1,K1CHECK;扫描 KEY1, JNB P1.2,K2CHECK;扫描 KEY2,如果按下 KEY2,跳转到 KEY2 处理程序 SJMP KSCAN K1CHECK: JB P1.1,K1HANDLE;去抖动,如果按下KEY1,跳转到KEY1处理 程序 SJMP K1CHECK K1HANDLE: MOV A,PWMH CJNE A,PWM,K1H0 ;判断是否到达上边界 SJMP MAIN ;返回到主程序 K1H0: MOV A,PWMH INC A CJNE A,PWM,K1H1 ;如果在加1后到达最大值 CLR TR0 ;定时器停止 SETB P1.0 SJMP K1H2 ;P1.0为高电平 K1H1: CJNE A,#02H,K1H2 ;如果加1后到达下边界 SETB TR0 ;重开定时器 K1H2: INCPWMH SJMP KSCAN ;增加占空比 K2CHECK: JBP1.2,K2HANDLE ;去抖动,如果按下KEY2,跳转到KEY2处理 程序 SJMP K2CHECK K2HANDLE: MOVA,PWMH CJNEA,#01H,K2H0;判断是否到达下边界 SJMPMAIN ;返回到主程序 K2H0: MOV A,PWMH MOV TEMP,PWM DEC A CJNE A,#01H,K2H1 ;如果在减1后到达下边界 CLR TR0 ;定时器停止 CLR P1.0 SJMP K2H2 ;P1.0为低电平 K2H1: DEC TEMP CJNE A,TEMP,K2H2 ;如果到达上边界 SETB TR0 ;启动定时器 K2H2: DEC PWMH SJMP KSCAN ;降低占空比 (5)报警模块 <1> CJNE A,PWM,K1H0 ;判断是否到达最大速度 MOV R7,# LOOP: MOV R6,#80 DJNZ R6,$ CPL P3.0 DJNZ R7,LOOP <2> CJNE A,#01H,K2H0 MOVR5,# LOOP1:MOV R4,#80 DJNZR4,$ CPL P3.0 DJNZ R5,LOOP1 (6 )停机模块 STOP: MOV PWMH,#01H MOV COUNTER,#0 RETI END ;是,则蜂鸣器响 ;判断是否到达最小速度 ;是,则蜂鸣器响 3.设计中的主要困难及解决方案 (1)困难1:直流电机转速的调节 解决方案:调整其脉冲占空比改变其正脉冲长度进而调节器转速。 (2)困难2:电机转速的精确分档和调节 解决方案:通过对占空比的精确分档,使电机转速按按键分档执行,达到电 机转速的分档及精确调节,使电机的调速过程平滑进行,并用指示灯显示速度 极限。 (3)困难3:外部中断 解决方案:设计外部中断按钮和外部中断程序 四、程序清单 PWMH PWM COUNTER TEMP ORG AJMP ORG AJMP DATA 30H DATA 31H DATA 32H DATA 33H 80H MAIN 83H STOP ;高电平脉冲的个数 ;PWM周期 ORG 8BH AJMP INTT0 ORG 81H MAIN: MOV SP,#60H ;给堆栈指针赋初值 MOVPWMH,#03H MOVCOUNTER,#01H MOVPWM,#0AH ;给定初始高电平脉冲个数 MOV TMOD,#02H ;定时器0在模式2下工作 MOV TL0,#48H ;定时器每2us产生一次溢出 MOV TH0,#48H ;自动重装的值 SETB ET0 ;使能定时器0中断 SETB EA ;使能总中断 SETBPX0 ;使外部中断0为最高优先中断 SETB TR0 ;开始计时 KSCAN: JNBP1.1,K1CHECK ;扫描 KEY1, JNBP1.2,K2CHECK ;扫描KEY2,如果按下KEY2,跳转到KEY2处理 程序 SJMP KSCAN K1CHECK: JBP1.1,K1HANDLE SJMP K1CHECK K1HANDLE: MOV A,PWMH ;去抖动,如果按下KEY1,跳转到KEY1处理程序 CJNE A,PWM,K1H0 MOV R7,# LOOP: MOV R6,#80 DJNZ R6,$ CPL P3.0 ;判断是否到达上边界 DJNZ R7,LOOP ;是,则蜂鸣器响 SJMP MAIN ;返回到主程序 K1H0: MOV A,PWMH INCA CJNE A,PWM,K1H1 ;如果在加1后到达最大值 CLR TR0 ;定时器停止 SETB P1.0 SJMP K1H2 ;P1.0为高电平 K1H1: CJNE A,#02H,K1H2 ;如果加1后到达下边界 SETB TR0 ;重开定时器 K1H2: INC PWMH ;增加占空比 SJMP KSCAN K2CHECK: JB P1.2,K2HANDLE ;去抖动,如果按下KEY2,跳转到KEY2 SJMP K2CHECK K2HANDLE: MOV A,PWMH CJNE A,#01H,K2H0 ;判断是否到达下边界 MOVR5,# LOOP1: MOV R4,#80 DJNZ R4,$ CPL P3.0 DJNZ R5,LOOP1 ;是,则蜂鸣器响 SJMP MAIN ;返回到主程序 K2H0: MOV A,PWMH MOV TEMP,PWM DEC A CJNE A,#01H,K2H1 ;如果在减1后到达下边界 CLR TR0 ;定时器停止 CLR P1.0 ;P1.0为低电平 SJMP K2H2 K2H1: DEC TEMP CJNE A,TEMP,K2H2 ;如果到达上边界 SETB TR0 ;启动定时器 K2H2: DEC PWMH ;降低占空比 SJMP KSCAN INTT0: PUSH PSW ;现场保护 PUSH ACC INC COUNTER ;计数值加1 MOV A,COUNTER CJNE A,PWMH,INTT01 ;如果等于高电平脉冲数 CLR P1.0 ;P1.0变为低电平 INTT01: CJNE A,PWM,INTT02;如果等于周期数 MOV COUNTER,#01H ;计数器复位 SETB P1.0 ;P1.0为高电平 INTT02: POP ACC ;出栈 POP PSW RETI 处理程序 STOP: MOV PWMH,#01H MOV COUNTER,#0 RETI END 五.心、得体会 通过一周的单片机设计实习,使我学到了更多了单片机硬件和软件知识,帮 助我提高了动手能力、综合运用能力、实践能力和创新能力。虽然在设计过程中 遇到了许多困难,但通过老师和同学的帮助,以及自己的摸索,我弄懂了单片机 的知识,我做的程序也已经调试成功了,我很高兴经过这次设计,自己的各方面 能力均得到了提高,相信在以后的学习工作中,遇到类似的问题,一定能够更加 完善的解决。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服