资源预览内容
第1页 / 共18页
第2页 / 共18页
第3页 / 共18页
第4页 / 共18页
第5页 / 共18页
第6页 / 共18页
第7页 / 共18页
第8页 / 共18页
第9页 / 共18页
第10页 / 共18页
亲,该文档总共18页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
单片机课程设计_直流风扇电机转速测量与PWM控制一设计思路程序应用模块化进行设计,主要有初始化模块、显示模块、读键模块、数制转换模块、双字节除法模块、中断模块和控制调节模块。编程次序可按此先后进行。初始化模块:8155工作方式、T0和T1工作方式、标志位状态、所用单元初值、中断设置以及初始显示等。显示模块:设定值和实测值的数值与字符动态显示。读键模块:从I/O口依据某位数码管亮时读入小按键是否有效,然后根据四个小键盘的不同功能进行相应的处理,只要设定值一改变立刻显示。加1键和减1键要有连加连减功能。数制转换模块:将二进制转换为十进制。外部中断模块:将转1圈的时间通过双字节除法程序求出即时转速。定时中断模块: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 30H DIS1 EQU 31H DIS2 EQU 32H DIS3 EQU 33H LED EQU 34H TM1 EQU 35H; TM2 EQU 36H; INTV BIT 37H;中断标志 THX EQU 38H;定时脉宽高电平 CISHU EQU 39H FIRST BIT 41H; 检测加减是否第一次按下 SET1 BIT 42H SETZ0 EQU 43H;设定当前设定值SETZ0SETZ3 SETZ1 EQU 44H SETZ2 EQU 45H SETZ3 EQU 46H TM3 EQU 47H; 循环次数单元 JIA1 BIT 48H; 单步加标志 LIANJIA BIT 49H; 连加标志 JIAN1 BIT 50H; 单步减标志 LIANJIAN BIT 51H; 连减标志 SETDATA EQU 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 0000H SJMP MAIN ORG 0013H;外部中断1入口地址 AJMP INX1 ORG 001BH;定时器T1中断入口地址 AJMP ITX1 ORG 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,#0FD00H ;设置PA、PB为输出口,PC为输入口 MOV A,#03H MOVX DPTR,A MOV TMOD,#21H ;定时器/计数器T1为方式2,定时器/计数器T0为方式1 MOV TL0,#00H ; 定时器/计数器T0赋初值#00H MOV TH0,#00H MOV THX,#0BBH ;输出单元赋初值#0BBH,即脉冲高电平宽度 MOV TH1,THX MOV TL1,THX SETB TR1 ;启动定时器/计数器T1 SETB TR0 ; 启动定时器/计数器T0 SETB ET1 ;允许定时器/计数器T1溢出中断 SETB EX1 ;允许外部中断1中断 SETB IT1 ;选择边沿触发 SETB EA ;CPU开中断 SETB 07H; SETB SHAN CLR 11H;检测是否成功 MOV LED,#7FH MOV R0,#DIS0 MOV DIS0,#14 MOV DIS1,#15 MOV DIS2,#15 MOV DIS3,#15 MOV SETZ2,#15 MOV SETZ3,#15 CLR ONPRESS SETB SET1 SETB FIRST CLR JIA1 CLR LIANJIA CLR JIAN1 CLR LIANJIAN CLR INTV MOV KP,#1 MOV KI,#1 MOV EK1,#0 MOV CISHU,#20 MOV TM2,#50 RET/=显示模块= DISP:MOV DPTR,#0FD02H ;指向PB口 MOV A,LED RL A ;左移1位 JB ACC.4,D1 MOV A,#0FEH ; 移出则重设起始值 MOV R0,#DIS0 D1:MOV LED,A MOVX DPTR,A MOV A,R0 ; 取显示RAM数据 MOV DPTR,#TAB MOVC A,A+DPTR ; 换码操作 MOV DPTR,#0FD01H ; 置8155 PA口 MOVX DPTR,A INC R0 ;未移出则显示RAM地址加1 RET/=设置时闪烁模块=DISP1:JB SHAN,LIANG;DJNZ TMS,AN 闪烁标志SHAN为1时调用DISP显示模 CPL SHAN; 块显示当前设定值,闪烁时间到,将标志取 MOV TMS,#50 ;反,并再次送入闪烁时长TMS.当闪烁标 SJMP SHANRET;志为0时闪烁时间到先将DIS3, DIS2, LIANG:ACALL DISP ; 送入#16,即全灭值,再调用DISP,再将标 DJNZ TMS,SHANRET; 志位取反,重新装入时长TMS,这样就 CPL SHAN;能实现闪烁功能 MOV TMS,#50 SJMP SHANRET AN: MOV DIS3,#16 MOV DIS2,#16 ACALL DISP MOV DIS3,SETZ3 MOV DIS2,SETZ2SHANRET: RET/=延时5ms子程序模块=DELAY:MOV TM2,#5 DEL2:MOV TM1,#255 DEL1:DJNZ TM1,DEL1 DJNZ TM2,DEL2 RET/=读键模块=M2: MOV DPTR,#0FD03H;置PC口 MOVX A,DPTR JNB ACC.5,KEY; 若PC5为0则调用按键程序 ACALL KK0RETKEY: MOV A,LED JB FIRST,PK1; 若FIRST为1则调用密码按键 PKEY1,KEY2,KEY3,PKEY4 JNB ACC.0,KEY1 ;否则调用一般按键KEY1-KEY4,其中KEY2,KEY3为共用的 JNB ACC.3,KEY4 SJMP PK2PK1: JNB ACC.0,PKEY1 JNB ACC.3,PKEY4PK2: JNB ACC.1,KEY2 JNB ACC.2,KEY3RET;=设置键设定= KEY1:SETB SET1 MOV DIS0,#11 ;将前次设定值代入 MOV DIS1,SETZ1 MOV DIS2,SETZ2 ;装入上次设定值 MOV DIS3,SETZ3 RET;=加键设定= KEY2:JNB SET1,ENDKEY ACALL JIA; 调用JIA程序,看是单步加还是连加 MOV A,DIS3 MOV SETZ3,A CJNE A,#10,ENDKEY JIN1:MOV DIS3,#0;若低位满10则高位加1,并将低位变为0 INC DIS2 MOV A,DIS2 MOV SETZ2,A CJNE A,#10,ENDKEY SJMP ENDKEY;=减键设定=KEY3:JNB SET1,ENDKEY MOV
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号