单片机AT89C2051风扇定时阵风控制器源程序.doc_第1页
单片机AT89C2051风扇定时阵风控制器源程序.doc_第2页
单片机AT89C2051风扇定时阵风控制器源程序.doc_第3页
单片机AT89C2051风扇定时阵风控制器源程序.doc_第4页
单片机AT89C2051风扇定时阵风控制器源程序.doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

; AT89C2051风扇定时阵风控制器源程序(三位数)显示OK!; p3.2=阵风设置开关; 硬件:P3.0=-1键、P3.1=功能键、P3.5=个位显示、; P3.4=十位显示、P3.3=百位显示、P3.7=输出端org 0000hajmp mainnoporg 01bhajmp dszd ljmp 0000hnopnop ajmp 0000horg 30hmain:mov 40h,#00hmov 41h,#00hmov 42h,#00h;个位显示数据mov 43h,#00h;十位显示数据mov 44h,#06h;佰位显示数据 mov 45h,#00h mov 46h,#00h mov 4ah,#09h mov 4bh,#09h mov 4ch,#09h mov r5,#00h nca equ 48h setb p3.0 setb p3.1 setb p3.2mov sp,#50h mov tmod,#10h mov ie,#88h mov tl1,#37h mov th1,#70h setb tr1 clr p3.7 clr nca nopnopdisp:;动态显示mov dptr,#tab clr p3.4 clr p3.3mov a,42h movc a,a+dptranl p1,#01h orl p1,a jb nca,xsz1 setb p3.5 lcall ms10 acall key clr p3.5 clr p3.3mov a,43h movc a,a+dptranl p1,#01horl p1,a jb nca,xsz2 setb p3.4 lcall ms10acall key clr p3.5clr p3.4mov a,44h movc a,a+dptranl p1,#01horl p1,a jb nca,xsz3 setb p3.3lcall ms10 ajmp dispnopnop ajmp dispxsz1: cjne r5,#01h,xsz2xsa:clr p3.4 clr p3.3mov a,42h movc a,a+dptranl p1,#01h orl p1,a setb p3.5 acall ms10acall key xsz2: cjne r5,#02h,xsz3xsb:clr p3.5 clr p3.3mov a,43h movc a,a+dptranl p1,#01horl p1,a setb p3.4 acall ms10acall key xsz3: cjne r5,#03h,dispxsc:clr p3.5 clr p3.4mov a,44h movc a,a+dptranl p1,#01horl p1,a setb p3.3 acall ms10acall key ajmp dispnopnop ajmp dispdszd:;定时计数中断子程序clr tr1setb rs0 push pswpush accmov tl1,#37hmov th1,#70hsetb tr1inc 40hmov r0,40hcjne r0,#8,timmov 40h,#00hcpl p1.0 jb p3.2,zf0 inc 46h mov r6,46h cjne r6,#30h,t11 cpl p3.7 mov 46h,#00h ajmp t11zf0: clr p3.7 t11:inc 41h mov r0,41h cjne r0,#60,tim mov 41h,#00hmov r0,42h cjne r0,#00,tiaajmp tib tia:dec 42h ajmp tim tib:mov r1,43hcjne r1,#00,tic ajmp tidtic:dec 43h mov 42h,#09hajmp tim tid:mov r2,44hcjne r2,#00,tiemov p1,#0ffh setb p3.7clr p1.0clr tr1mov 46h,#00h mov 42h,#0ahmov 43h,#0ah mov 44h,#0ahajmp tim tie:dec 44h mov 43h,#09h mov 42h,#09h tim:pop acc pop psw reti nop nop retikey:;-按键扫描处理nopnop acall ms10k0: jb p3.1,k1 acall ms10 acall ms10 acall ms10 acall ms10jnb p3.1,sz ljmp k1 nop nop ljmp k1sz: jnb p3.1,$ acall ms10 acall ms10 setb nca setb p3.7 inc 45h mov r5,45hk1: cjne r5,#01h,k2 mov 46h,#00h mov ie,#00h jb p3.0,fh acall ms10 acall ms10jnb p3.0,ct1k2: cjne r5,#02h,k3 mov 46h,#00h mov ie,#00h jb p3.0,fh acall ms10 acall ms10jnb p3.0,ct2k3: cjne r5,#03h,k4 mov 46h,#00h mov ie,#00h jb p3.0,fh acall ms10 acall ms10jnb p3.0,ct3k4: cjne r5,#04h,fh mov r5,#00h ljmp qd nop nop ljmp qdfh:retnopnop retct1:;个位定时减jnb p3.0,$mov r4,4ahdec 4ahcjne r4,#00h,ct1amov 4ah,#09hct1a:mov 42h,4ah ret;nopnop retct2:;十位定时减jnb p3.0,$mov r4,4bhdec 4bhcjne r4,#00h,ct2amov 4bh,#09hct2a:mov 43h,4bh retnopnop retct3:;佰位定时减jnb p3.0,$mov r4,4chdec 4chcjne r4,#00h,ct3amov 4ch,#09hct3a:mov 44h,4ch ret nopnop retqd: mov 46h,#00h mov 45h,#00h mov 42h,4ah mov 43h,4bh mov 44h,4ch mov ie,#88h setb tr1 clr p3.7 clr nca retnopnop retms10:;- 延时毫秒 mov r0,#100ms:nopdjnz r0,msretnopnop rettab:db 80h,0f2h,48h,60h,32h,24hdb 04h,0f0h,00h,20h,7ehendkg bit B.1 ;用来判断开机等待t bit B.2 ;用来判断正反转,t=1正转,t=0反转w bit B.3 ;用来辅助正反转判断,选择了就为1,不选则为0KK1 BIT B.4 ;用来辅助加速按键,使其不用延时可以按一次速度指甲一档KK2 BIT B.5 ;同上cctv bit b.7 ;用来辅助中断显示程序计时 org 0000h lJMP MAIN ORG 000BH LJMP CTC0 ORG 0034hGraphemic: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,84H,0FFH;共阳09字型码 ;PN1 EQU 30H ;PN1用来记脉冲的低二位数;PN2 EQU 31H ;PN2用来记脉冲的高二位数PN3 EQU 32H ;PN3用来做延时程序PN4 EQU 33H ;PN4用来做延时程序 ORG 100HMAIN: MOV R6,#00H ;用R6来辅助显示计时 MOV B, #00H CLR KG CLR W MOV TMOD,#01H ;T1和T0都是方式一计数 MOV TL0,#18H MOV TH0,#0E0H ;MOV TL1, #0AFH ; MOV TH1, #3CH SETB EA SETB ET0 ;T0中断允许 SETB TR0 SETB P3.4 ; SETB ET1 ;T1中断允许 ;SETB TR1 SETB PT0 ;设置T1T2的中断优先,都设其为高级中断 ; SETB PT1 MOV R1,#5H ;默认开始的时候速度为5档 SETB KK1 SETB KK2 MOV A,#00H ;把PN1,PN2都清零 ;MOV PN1,A ; MOV PN2,A MOV DPTR,#Graphemic ANL P1,#0FH ;ANL P0,#00Hmainline: jb p2.2,ks ;关机等待 clr w clr kg setb p1.0 setb p1.1 clr p1.2 clr p1.3ks: jnb kg,wait ;是否开机?开了就往下执行,不开就跳到开机等待 ANL P1,#00011111B ;显示最后一位为1,即是可以工作了的意思 SETB P1.4 MOV A,#1H MOVC A,A+DPTR MOV P0,A SETB P3.6 NOP NOP CLR P3.6 LCALL DELAYSPD2: JB P2.1,KEY1 CLR KK1KEY1: JNB P2.1,KEY2 ;当p2.1高电平时就往下执行,但是只要执行一次后,kk就为1,往后就不再执行 JB KK1, KEY2 INC R1 SETB KK1 ;这段的任务是不用延时也能消除按键抖动的程序KEY2: JB P2.4,KEY3 CLR KK2KEY3: JNB P2.4,pos JB KK2, pos SETB KK2 DEC R1 pos: jb p2.0,rev ;正转按钮 setb t setb wrev: jb p2.3,tt ;反转按钮 clr t setb wtt: jnb w,pos ;选择正反转了吗,选了电机就开始转了,不选电机就不转,等待正反转按钮 jb t,positive jnb t,reversepositive: ;电机正转 setb p1.0 clr p1.1 clr p1.2 setb p1.3 lcall BIJIAO0 ;PWM调制 ; lcall ShowSpeed ;显示速度程序 LCALL showdigit1 Ljmp mainlinereverse: ;电机反转 clr p1.0 setb p1.1 setb p1.2 clr p1.3 lcall BIJIAO0 ;PWM调制 ; lcall ShowSpeed ;显示速度程序 LCALL showdigit2 Ljmp mainline wait: mov a,#00h ;如果不开始,那么程序就在这里等待, mov p0,a wait1: setb p0.6 setb p0.7 anl p1,#0fh setb p1.4 setb p1.5 setb p1.6 setb p1.7 SETB P3.6 NOP CLR P3.6 lcall delay jb p2.5,wait1 ;开机等待 setb kg Ljmp mainlineshowdigit1: ANL P1,#10001111B ;显示12在首位 SETB P1.7 MOV A,#1H MOVC A,A+DPTR MOV P0,A SETB P3.6 NOP NOP CLR P3.6 LCALL DELAY ANL P1,#01001111B SETB P1.6 MOV A,#2H MOVC A,A+DPTR MOV P0,A SETB P3.6 NOP NOP CLR P3.6 LCALL DELAY RETshowdigit2: ANL P1,#10001111B ;显示21在首位 SETB P1.7 MOV A,#2H MOVC A,A+DPTR MOV P0,A SETB P3.6 NOP NOP CLR P3.6 LCALL DELAY ANL P1,#01001111B SETB P1.6 MOV A,#1H MOVC A,A+DPTR MOV P0,A SETB P3.6 NOP NOP CLR P3.6 LCALL DELAY RETBIJIAO0: MOV A,R1 SUBB A,#0H JZ JJ0BIJIAO1: MOV A,R1 SUBB A,#1H JZ JJ1 BIJIAO2: MOV A,R1 SUBB A,#2H JZ JJ2 BIJIAO3: MOV A,R1 SUBB A,#3H JZ JJ3 BIJIAO4: MOV A,R1 SUBB A,#4H JZ JJ4 BIJIAO5: MOV A,R1 SUBB A,#5H JZ JJ5 BIJIAO6: MOV A,R1 SUBB A,#6H JZ JJ6 BIJIAO7: MOV A,R1 SUBB A,#7H JZ JJ7 BIJIAO8: MOV A,R1 SUBB A,#8H JZ JJ8 BIJIAO9: MOV A,R1 SUBB A,#9H JZ JJ9 BIJIAO10:MOV A,R1 SUBB A,#0AH JZ JJ10 MOV A,R1 ;如果R1的值小于零,则速度和pwm0的速度不变。 SUBB A,#0FFH JNZ PWM100 ;这一小段是限制调速范围只能在0-10之间 MOV R1,#0H AJMP PWM0PWM100: MOV R1,#0AH ;如果r110则直接给r1赋值10,然后转速和最大速度不变 LJMP PWM10 JJ0: LJMP PWM0 ;由于JZ跳转的距离不够长,所以这里只能用以下几句转跳转来辅助跳转JJ1: LJMP PWM1JJ2: LJMP PWM2JJ3: LJMP PWM3JJ4: LJMP PWM4JJ5: LJMP PWM5JJ6: LJMP PWM6JJ7: LJMP PWM7JJ8: LJMP PWM8JJ9: LJMP PWM9JJ10: LJMP PWM10PWM0: MOV R2,#0FFH MOV R3,#0FFH MOV R4,#0f8H MOV R5,#02fH MOV A,#0H LCALL SHOW LJMP MAINLINE1PWM1: MOV R2,#0FFH MOV R3,#037H MOV R4,#0F8H MOV R5,#0F7H MOV A,#1H LCALL SHOW LJMP MAINLINE1PWM2: MOV R2,#0FEH MOV R3,#06FH MOV R4,#0F9H MOV R5,#0BFH MOV A,#2H LCALL SHOW LJMP MAINLINE1PWM3: MOV R2,#0FDH MOV R3,#0A7H MOV R4,#0FAH MOV R5,#087H MOV A,#3H LCALL SHOW LJMP MAINLINE1PWM4: MOV R2,#0FCH MOV R3,#0DFH MOV R4,#0FBH MOV R5,#4FH MOV A,#4H LCALL SHOW LJMP MAINLINE1PWM5: MOV R2,#0FCH MOV R3,#18H MOV R4,#0FCH MOV R5,#18H MOV A,#5H LCALL SHOW LJMP MAINLINE1PWM6: MOV R2,#0FBH MOV R3,#4FH MOV R4,#0FCH MOV R5,#0DFH MOV A,#6H LCALL SHOW LJMP MAINLINE1PWM7: MOV R2,#0FAH MOV R3,#087H MOV R4,#0FDH MOV R5,#0A7H MOV

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论