单片机课程设计-直流风扇电机转速测量与PWM控制

上传人:aa****6 文档编号:29985898 上传时间:2018-01-26 格式:DOC 页数:18 大小:34KB
返回 下载 相关 举报
单片机课程设计-直流风扇电机转速测量与PWM控制_第1页
第1页 / 共18页
单片机课程设计-直流风扇电机转速测量与PWM控制_第2页
第2页 / 共18页
单片机课程设计-直流风扇电机转速测量与PWM控制_第3页
第3页 / 共18页
单片机课程设计-直流风扇电机转速测量与PWM控制_第4页
第4页 / 共18页
单片机课程设计-直流风扇电机转速测量与PWM控制_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《单片机课程设计-直流风扇电机转速测量与PWM控制》由会员分享,可在线阅读,更多相关《单片机课程设计-直流风扇电机转速测量与PWM控制(18页珍藏版)》请在金锄头文库上搜索。

1、单片机课程设计_直流风扇电机转速测量与 PWM 控制一设计思路程序应用模块化进行设计,主要有初始化模块、显示模块、读键模块、数制转换模块、双字节除法模块、中断模块和控制调节模块。编程次序可按此先后进行。初始化模块:8155 工作方式、T0 和 T1 工作方式、标志位状态、所用单元初值、中断设置以及初始显示等。显示模块:设定值和实测值的数值与字符动态显示。读键模块:从 I/O 口依据某位数码管亮时读入小按键是否有效,然后根据四个小键盘的不同功能进行相应的处理,只要设定值一改变立刻显示。加 1 键和减 1 键要有连加连减功能。数制转换模块:将二进制转换为十进制。外部中断模块:将转 1 圈的时间通过

2、双字节除法程序求出即时转速。定时中断模块:PWM 输出波形形成。控制调节模块:通过设定值和实测值的比较来改变脉冲波的占空比,该数据的调节分为简单比例调节 PP和比例积分调节 PI。调节公式分别为:YK=YK1+KP*EKYK=YK1+KP*EK+KI*EK2YK:要输出的数据YK1:上次输出的数据EK:设定值和实测值的差值EK1:上次的 EK 值EK2:EK-EK1 的差值KP:比例系数(设 KP=12)KI:积分系数(设 KI=12)一 带注释软件清单;=使用单元设定=/.使用单元设定DIS0 EQU 30HDIS1 EQU 31HDIS2 EQU 32HDIS3 EQU 33HLED EQ

3、U 34HTM1 EQU 35H;TM2 EQU 36H;INTV BIT 37H;中断标志THX EQU 38H;定时脉宽高电平CISHU EQU 39HFIRST BIT 41H; 检测加减是否第一次按下SET1 BIT 42HSETZ0 EQU 43H;设定当前设定值 SETZ0SETZ3SETZ1 EQU 44H SETZ2 EQU 45HSETZ3 EQU 46HTM3 EQU 47H; 循环次数单元JIA1 BIT 48H; 单步加标志 LIANJIA BIT 49H; 连加标志JIAN1 BIT 50H; 单步减标志LIANJIAN BIT 51H; 连减标志SETDATA EQ

4、U 52H; 设定速度暂存单元REALDATA EQU 53H; 实测速度暂存单元YK1 EQU 54H; 上次输出数据暂存单元KP EQU 56H;比例系数KI EQU 57H;积分系数EK EQU 58H;设定值和实测值的差值EK1 EQU 59H;上次的 EK 值OUTPUT EQU 60H;EK2 EQU 61H;EK-EK1 的值ONPRESS BIT 62H;判定 ENTER 键是否弹起标志TMS EQU 63H;闪烁时长SHAN BIT 64H; 闪烁标志;=主程序=ORG 0000HSJMP MAINORG 0013H;外部中断 1 入口地址AJMP INX1ORG 001BH

5、;定时器 T1 中断入口地址AJMP ITX1ORG 0070HMAIN: MOV SP,#70H;设定堆栈指针入口地址ACALL INIT;调用初始化程序M1: JB SET1,FLASH;当前为设置状态则跳到闪烁显示模块ACALL DISP; 否则为一般显示SJMP NEXTTFLASH: ACALL DISP1NEXTT: ACALL DELAY;调用按键延时程序ACALL M2;调用按键程序DJNZ CISHU,M1;第隔 100MS 刷新一下实测值 MOV CISHU,#20ACALL CONTROL;调用控制调速模块SJMP M1/=初始化模块=INIT:MOV DPTR,#0FD

6、00H ;设置 PA、PB 为输出口,PC 为输入口MOV A,#03HMOVX DPTR,AMOV TMOD,#21H ;定时器/计数器 T1 为方式 2,定时器/计数器 T0 为方式 1MOV TL0,#00H ; 定时器/计数器 T0 赋初值#00HMOV TH0,#00HMOV THX,#0BBH ;输出单元赋初值#0BBH,即脉冲高电平宽度MOV TH1,THX MOV TL1,THXSETB TR1 ;启动定时器/计数器 T1SETB TR0 ; 启动定时器/计数器 T0SETB ET1 ;允许定时器/计数器 T1 溢出中断SETB EX1 ;允许外部中断 1 中断SETB IT1

7、 ;选择边沿触发SETB EA ;CPU 开中断SETB 07H; SETB SHANCLR 11H;检测是否成功MOV LED,#7FHMOV R0,#DIS0MOV DIS0,#14MOV DIS1,#15MOV DIS2,#15MOV DIS3,#15MOV SETZ2,#15MOV SETZ3,#15CLR ONPRESSSETB SET1SETB FIRSTCLR JIA1CLR LIANJIACLR JIAN1CLR LIANJIANCLR INTVMOV KP,#1MOV KI,#1MOV EK1,#0MOV CISHU,#20MOV TM2,#50RET/=显示模块=DISP:

8、MOV DPTR,#0FD02H ;指向 PB 口MOV A,LEDRL A ;左移 1 位JB ACC.4,D1MOV A,#0FEH ; 移出则重设起始值MOV R0,#DIS0D1:MOV LED,AMOVX DPTR,AMOV A,R0 ; 取显示 RAM 数据MOV DPTR,#TABMOVC A,A+DPTR ; 换码操作 MOV DPTR,#0FD01H ; 置 8155 PA 口MOVX DPTR,AINC R0 ;未移出则显示 RAM 地址加 1RET/=设置时闪烁模块=DISP1:JB SHAN,LIANG;DJNZ TMS,AN 闪烁标志 SHAN 为 1 时调用 DIS

9、P 显示模CPL SHAN; 块显示当前设定值,闪烁时间到,将标志取MOV TMS,#50 ;反,并再次送入闪烁时长 TMS.当闪烁标SJMP SHANRET;志为 0 时闪烁时间到先将DIS3, DIS2, LIANG:ACALL DISP ; 送入#16,即全灭值,再调用 DISP,再将标DJNZ TMS,SHANRET; 志位取反,重新装入时长 TMS,这样就CPL SHAN;能实现闪烁功能MOV TMS,#50SJMP SHANRETAN: MOV DIS3,#16MOV DIS2,#16ACALL DISPMOV DIS3,SETZ3MOV DIS2,SETZ2SHANRET: RE

10、T/=延时 5ms 子程序模块=DELAY:MOV TM2,#5DEL2:MOV TM1,#255DEL1:DJNZ TM1,DEL1DJNZ TM2,DEL2RET/=读键模块=M2: MOV DPTR,#0FD03H;置 PC 口MOVX A,DPTR JNB ACC.5,KEY; 若 PC5 为 0 则调用按键程序ACALL KK0RETKEY: MOV A,LEDJB FIRST,PK1; 若 FIRST 为 1 则调用密码按键 PKEY1,KEY2,KEY3,PKEY4JNB ACC.0,KEY1 ;否则调用一般按键 KEY1-KEY4,其中 KEY2,KEY3 为共用的JNB AC

11、C.3,KEY4SJMP PK2PK1: JNB ACC.0,PKEY1JNB ACC.3,PKEY4PK2: JNB ACC.1,KEY2JNB ACC.2,KEY3RET;=设置键设定=KEY1:SETB SET1MOV DIS0,#11 ;将前次设定值代入MOV DIS1,SETZ1MOV DIS2,SETZ2 ;装入上次设定值MOV DIS3,SETZ3RET;=加键设定=KEY2:JNB SET1,ENDKEYACALL JIA; 调用 JIA 程序,看是单步加还是连加MOV A,DIS3MOV SETZ3,ACJNE A,#10,ENDKEYJIN1:MOV DIS3,#0;若低位

12、满 10 则高位加 1,并将低位变为 0INC DIS2MOV A,DIS2MOV SETZ2,ACJNE A,#10,ENDKEYSJMP ENDKEY;=减键设定=KEY3:JNB SET1,ENDKEYMOV A,DIS3JZ PANGAOJJ:ACALL JIAN ; 调用 JIAN 程序,看是单步加还是连减MOV SETZ3,DIS3RETPANGAO:MOV A,DIS2 ; 低位减到 0 判断高位是否为 0,JZ ENDKEY ; 是 0 则什么也不做,返回JIE1:MOV DIS3,#9 ; 若高位不为 0 则高位减 1,低位置 9 DEC DIS2MOV SETZ2,DIS2

13、SJMP JJ;=ENTER 键设定=KEY4:JB ONPRESS,ENDKEYCLR SET1; 将设置标志清掉MOV DIS0,#10MOV SETZ1,DIS1RET/=设定密码时的设置和 ENTER 按键=PKEY1:RETPKEY4:JB 11H,SUCCESSMOV A,DIS3CJNE A,#5,ERROR ; 判定输入密码的低位是否正确,不正确直接MOV A,DIS2; 跳到输入密码状态 ,若正确,再看高位正确否CJNE A,#6,ERROR ; 正确则跳到 SUCCESS,否则也返回输入密码状态SUCCESS:SETB 11H ; 11H 为判定密码成功与否标志JB 07H

14、,FC ; 输入成功密码第一次先跳到 FC,测定初值CLR FIRST ; 设定完成,将输入密码标志清掉SETB TR1 ; 定时器 0 和 1 打开SETB TR0; SETB ONPRESSSJMP PRETFC: MOV DIS0,#11; 设定输入测定值的显示方式 MOV DIS1,#15MOV SETZ2,#0MOV SETZ3,#0CLR 07H; 07H 是用于设定是否第一次设定SETB ONPRESSRETERROR:MOV DIS3,#15; 当密码输入错误时,返回输入密码状态MOV DIS2,#15PRET: RETENDKEY:RET;=单步加减连续加减子程序=;=加部分=JIA:JB JIA1,S1SETB JIA1MOV TM3,#20S2:INC DIS3JB LIANJIA,ALLRETS1:JB LIANJIA,S2DJNZ TM3,ALLRET SETB LIANJI

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号