整个程序结束.doc_第1页
整个程序结束.doc_第2页
整个程序结束.doc_第3页
整个程序结束.doc_第4页
整个程序结束.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

;在拆字完后将要显示时,在这里插 / 入键盘扫描程序段,来进行LCD极限压力的设置;- Detectkey: lcall KeyTest MainReturn: ljmp loop1;主程序结束;-;-;下面为所有的子程序;-;-ManuSet: push PSW push accPUSH DPLPUSH DPH lcall UartModle0 POP DPHPOP DPL pop acc pop PSW reti;被测压力数据转换为BCD码;-ad2display: mov r1,a anl a,#0fh mov r0,a dec r0 mov a,r1 / anl a,#0f0h swap a mov r0,a ret;二进制码转换为BCD 码Bin2Bcd: mov r5,#16 clr a mov r3,a mov r4,aTLoop: mov a,voltlow rlc a mov voltlow,a mov a,volthigh rlc a mov volthigh ,a mov a,r3 addc a,r3 da a mov r3,a mov a ,r4 addc a,r4 da a mov r4,a djnz r5,TLoop retTransfer: / mov b,#2 mul ab mov volthigh,b mov voltlow,a call Bin2Bcd mov volthigh,r4 mov voltlow,r3 retDisplayvolt2DisplayBuf: mov r1,#42h mov a,volthigh mov b,#10h div ab mov r1,a inc r1 mov r1,b inc r1 mov a,voltlow mov b,#10h div ab mov r1,a inc r1 mov r1,b ret;-;驱动喇叭,实现声音报警的子程序;-voicewarning: m / ov TH0, ToneHigh mov TL0, ToneLow setb TR0 mov r5,#100 lcall Delay1 clr TR0 setb p3.2ret;驱动喇叭,实现声音报警的中断子程序;-Timer0Int: push PSW push accPUSH DPLPUSH DPH clr TR0 mov TH0, ToneHigh mov TL0, ToneLow setb TR0 cpl P3.2POP DPHPOP DPL pop acc pop PSW reti;-;正反转步进子程序;- /ttyulecheng/-STEPS: /ttyulecheng/ ANL StepState,#83H By-gnksguybb MOV A,StepState JB ACC.7,STPSC MOV DPTR,#CTAB AJMP STPWSTPSC:MOV DPTR,#FTABANL A,#03HSTPW: MOVC A,A+DPTR MOV P1,A INC StepState RETDEL: MOV R5,#0 ;延时子程序DEL0: DJNZ R5,DEL0 RETFTAB: DB 83H,86H,8CH,89HCTAB: DB 79H,7cH,76H,73H;-;KEY扫描有关的程序;-KeyTest: mov dptr,#0e100h mov a,#03h movx dptr,a call TestKey ; 有键入? jnz getkey0 ljmp KReturn ; 无键入, 继续显示getkey0 : call GetKey ; 读入键码 MOV R4,#04H anl a, #1fh ; 显示键码 MOV kPLAYTemp,A mov LEDBuf, a ; mov LEDBuf+1, #11h ; mov LEDBuf+2, #11h ; mov LEDBuf+3, #11h ; mov LEDBuf+4, #11h ; mov LEDBuf+5, #11h LOOPKPLAY: LCALL DisplayLED ;LCALL Delay MOV A , kPLAYTemp DJNZ R4,LOOPKPLAY mov TLCDkeyBuf, kPLAYTemp setb rs0 ;存储键码以便lcd 显示上、下限参数 ! mov r0,kPLAYTemp dec r0 clr rs0 mov a, KEYCount cjne a,#04h , pfjump0 ajmp pfjumppfjump0: jc pfjump1 cjne a,#07h, pfjump2 ajmp pfjump3pfjump2: jc pfjump1pfjump3: mov ColumnTemp,#112 mov COLUMN,ColumnTemp mov LCDcount,#08h mov b,#10h MOV DPTR,#DDATB MOV PAGE1,#02H MOV CODE1,TLCDkeyBuf LCALL CCW_PR mov r0, #LCDkeyBuf mov r1,#TemLCDkeyBuf mov r7,#04hTLCDLOOP: mov a,r0 anl a,#0fh swap a mov r1,a dec r0 mov a ,r0 anl a,#0fh orl a,r1 mov r1,a dec r0 dec r1 djnz r7, TLCDLOOP mov r3,TemLCDkeyBuf-3 mov r2,TemLCDkeyBuf-2 mov r0,#47h ;#LimitParameter0 mov r7,#02hTLCDLOOP1: acall bcd2hex mov r0,#48h ;inc r0 mov r3,TemLCDkeyBuf-1 mov r2,TemLCDkeyBuf djnz r7,TLCDLOOP1 setb rs0 ;存储键码以便lcd 显示上、下限参数 ! mov r0,#LCDkeyBuf clr rs0 mov ColumnTemp,#17H mov KEYCount,#00hpush dplpush dphlcall UartModle ;完全显示,包括数据与字母pop dphpop dpl ajmp KReturnpfjump1: mov a,ColumnTemp add a,#07h mov ColumnTemp,a ajmp LCDKdisplaypfjump: mov ColumnTemp,#91LCDKdisplay: mov COLUMN,ColumnTemp mov LCDcount,#08h mov b,#10h MOV DPTR,#DDATB MOV PAGE1,#02H MOV CODE1,TLCDkeyBuf LCALL CCW_PR INC KEYCountKReturn: ret;串口通讯子程序;-UartModle:mov dptr,#UartTAB ;通过串口传送TOPLIMIT:mov r1,#00hmov r7,#0bhacall Uartloop1mov r0,#LCDkeyBuf;传送数据TOPLIMITmov r7,#04hmov r1,#TemLCDkeyBufacall BCD2ASC ;将数据转换为ASC码mov r0,#TemLCDkeyBuf mov r7,#04hacall Uartloopmov dptr,#UartTAB ;传送LOWLIMIT:mov r1,#0bhmov r7,#0bhacall Uartloop1clr Cmov a,#LCDkeyBufsubb a,#04hmov r0,a ;传送数据LOWLIMITmov r7,#04hmov r1,#TemLCDkeyBufacall BCD2ASC ;将数据转换为ASC码mov r0,#TemLCDkeyBufmov r7,#04hacall Uartloopmov dptr,#UartTAB ;传送CURRENT:mov r1,#22mov r7,#0ahacall Uartloop1mov r0,#42h ;传送数据CURRENTmov r7,#04hmov r1,#TemLCDkeyBufacall BCD2ASC1 ;将数据转换为ASC码mov r0,#TemLCDkeyBuf mov r7,#04hacall Uartloopmov a,SystemStatejz UartDispNormalmov dptr,#UartTAB ;传送WARRING!mov r1,#41mov r7,#0ahacall Uartloop1ajmp UartReturnUartDispNormal:mov dptr,#UartTAB ;传送NORMALmov r1,#32mov r7,#09hacall Uartloop1UartReturn: ret;-UartModle0:mov dptr,#UartTAB ;传送CURRENT:mov r1,#22mov r7,#0ahacall Uartloop1mov r0,#42h ;传送数据CURRENTmov r7,#04hmov r1,#TemLCDkeyBufacall BCD2ASC1 ;将数据转换为ASC码mov r0,#TemLCDkeyBuf mov r7,#04hacall Uartloopmov a,SystemStatejz UartDispNormal0mov dptr,#UartTAB ;传送WARRING!mov r1,#41mov r7,#0ahacall Uartloop1ajmp UartReturn1UartDispNormal0:mov dptr,#UartTAB ;传送NORMALmov r1,#32mov r7,#09hacall Uartloop1UartReturn1: ret;-Uartloop: ;传送数字 mov a,r0 mov sbuf,a Uartwait: jnb ti,Uartwait clr ti dec r0 djnz r7,Uartloop ret;-Uartloop1: ;传送字符 mov a,r1 movc a,a+dptrmov sbuf,aUartwait1: jnb ti,Uartwait1 clr ti inc r1 djnz r7,Uartloop1 ret;-BCD2ASC: ;转换为PC机的ASC码 mov a,r0 add a,#30h mov r1,a dec r0 dec r1 djnz r7,BCD2ASC retBCD2ASC1: ;转换为PC机的ASC码 mov a,r0 add a,#30h mov r1,a inc r0 dec r1 djnz r7,BCD2ASC1 retUartTAB:DB 20h,54h,4fh,50h,4ch,49h,4dh,49h,54h,3ah,20h ;ASC-TOPLIMIT:-11DB 20h,4ch,4fh,57h,4ch,49h,4dh,49h,54h,3ah,20h ;ASC-LOWLIMIT:-11DB 20h,43h,55h,52h,52h,45h,4eh,54h,3ah,20h ;ASC-CURRENT:-10DB 20h,4eh,4fh,52h,4dh,41h,4ch,1ah,0bh ;ASC-NORMAL*-9DB 20h,57h,41h,52h,52h,49h,4eh,47h,21h,0bh ;ASC-WARRING!-10;-;-bcd2hex: mov a,r3 acall bcdh mov r3,a mov a,r2 acall bcdh mov b,#100 mul ab add a,r3 mov r3,a clr a addc a,b mov r2,adrr1: mov a,r2 rrc a mov r2,a mov a,r3 rrc a mov r0 ,a retbcdh: mov b,#10h div ab mov r4,b mov b,#10 mul ab add a,r4 retDelay1: ; 延时10ms子程序 mov r7, #0ah DL:mov r6,#0ffh DL6: djnz r6,DL6 djnz r7, DL djnz r5,Delay1 ret TestKey: mov dptr, #OUTBIT mov a, #0 movx dptr, a ; 输出线置为0 mov dptr, #IN movx a, dptr ; 读入键状态 cpl a anl a, #0fh ; 高四位不用 retKeyTable: ; 数字键码定义 db 00h, 01h, 04h, 07h db 0fh, 02h, 05h, 08h db 0eh, 03h, 06h, 09h db 0dh, 0ch, 0bh, 0ah db 10H,10H,10H,10H,10H db 10H,10H,10H,10H,10HGetKey: mov dptr, #OUTBIT mov P2, dph mov r0, #Low(IN) mov r1, #00100000b mov r2, #6KLoop: mov a, r1 ; 找出键所在列 cpl a movx dptr, a cpl a rr a mov r1, a ; 下一列 movx a, r0 cpl a anl a, #0fh jnz KGoon1 ; 该列有键入 djnz r2, KLoop mov r2, #0ffh ; 没有键按下, 返回 0ffh sjmp KExitKGoon1: mov r1, a ; 键值 = 列 X 4 + 行 mov a, r2 dec a rl a rl a mov r2, a ; r2 = (r2-1)*4 mov a, r1 ; r1中为读入的行值 mov r1, #4KLoopC: rrc a ; 移位找出所在行 jc KExit inc r2 ; r2 = r2+ 行值 djnz r1, KLoopCKExit: mov a, r2 ; 取出键码 mov dptr, #KeyTable movc a, a+dptr mov r2, aKWaitRelease: mov dptr, #OUTBIT ; 等键释放 clr a movx dptr, a mov r6, #10 call Delay call TestKey jnz KWaitRelease mov a, r2 ret;-;AD查询转换有关程序;-Delay: mov r7, #0 ; 延时子程序 DelayLoop: djnz r7, DelayLoop djnz r6, DelayLoop retDisplayLED: mov r0, Buf mov r1, LEDCount ; 共6个八段管 mov r2,LEDBitControll ; 从左边开始显示Loop: mov dptr, #OUTBIT mov a, #00h movx dptr, a ; 关所有八段管 mov a, r0 mov dptr,#LEDmap movc a,a+dptr mov B, #8 ; 送164DLP: rlc a mov r3, a mov acc.0, c ANL A, #0FDH mov dptr, #DAT164 movx dptr, a mov dptr, #CLK164 orl a,#02h movx dptr, a anl a,#0fDh movx dptr, a mov a, r3 djnz B, DLP mov dptr, #OUTBIT mov a, r2 movx dptr, a ; 显示一位八段管 mov r6, #1 call Delay mov a, r2 ; 显示下一位 rr a mov r2, a inc r0 djnz r1, Loop mov dptr, #OUTBIT mov a, #0 movx dptr, a ; 关所有八段管 retLEDMAP: ; 八段管显示码 db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71h db 40H,00h;-;LCD显示有关程序;-CCW_PR: ;;确定字符字模块首地址 MOV A,CODE1;;取代码 ;;字模块宽度为32或16个字节 MUL AB;;代码X32或16 ADD A,DPL;;字符字模块首地址=字模库首地址+代码X32 MOV DPL,A MOV A,B ADDC A,DPH MOV DPH,A PUSH COLUMN;;列地址入栈 PUSH COLUMN;;列地址入栈 MOV CODE1,#00H;;代码寄存器借用为间址寄存器CCW_1: MOV COUNT,LCDcount;;计数器设定为16 MOV A,PAGE1;;读页地址寄存器 ANL A,#03H ORL A,#0B8H;;或 页地址设置代码 MOV COM,A;;写页地址设置指令 LCALL PR0 LCALL PR3 POP COLUMN;;取列地址值 MOV A,COLUMN;;读列地址寄存器 CLR C SUBB A,#PD1;;列地址-模块参数 JC CCW_2;;0为左半屏显示区域(E1) MOV COLUMN,A;;0为右半屏显示区域(E2) MOV A,PAGE1 SETB ACC.3;;设置区域标志位 MOV PAGE1,A;;0为E1,1为E2CCW_2: MOV COM,COLUMN;;设置列地址值 MOV A,PAGE1;;判区域标志以确定设置哪个控制器 JNB ACC.3,CCW_3 LCALL PR3;;区域E2 LJMP CCW_4CCW_3: LCALL PR0;;区域E1CCW_4: MOV A,CODE1;;取间址寄存器值 MOVC A,A+DPTR;;取汉字字模数据 MOV DAT,A;;写数据 MOV A,PAGE1 JNB ACC.3,CCW_5 LCALL PR4;;区域E2 LJMP CCW_6CCW_5: LCALL PR1;;区域E1CCW_6: INC CODE1;;间址寄存器加1 INC COLUMN;;列地址寄存器加1 MOV A,COLUMN;;判列地址是否超出区域范围 CJNE A,#PD1,CCW_7CCW_7: JC CCW_8;;未超出则继续 MOV A,PAGE1;;超出则判是否在区域E2 JB ACC.3,CCW_8;;在区域E2则退出 SETB ACC.3;;在区域E1则修改成区域E2 MOV PAGE1,A MOV COM,#00H;;设置区域E2列地址为0 LCALL PR3CCW_8: DJNZ COUNT,CCW_4;;当页循环 MOV A,PAGE1;;读页地址寄存器 JB ACC.7,CCW_9;;判完成标志D7位,1则完成退出 INC A;;否则页地址加1 SETB ACC.7 CLR ACC.3 MOV PAGE1,A MOV CODE1,LCDcount;;间接寄存器设置为16 LJMP CCW_1;;大循环CCW_9: RETCCATB: DB 00H,00H,00H,00H,00H,00H,00H,0FEH ;文字:上-宋12点阵为:宽x高=16x16 - DB 40H,40H,40H,40H,40H,00H,00H,00H DB 00H,40H,40H,40H,40H,40H,40H,7FH DB 40H,40H,40H,40H,40H,60H,40H,00H DB 0FEH,02H,32H,4EH,82H,00H,0FEH,4AH ;-文字:限-DB 0CAH,4AH,4AH,4AH,7EH,00H,00H,00H DB 0FFH,00H,02H,04H,03H,00H,0FFH,40H DB 20H,03H,0CH,12H,21H,60H,20H,00H DB 00H,02H,02H,02H,02H,02H,02H,0FEH ;-文字:下- DB 22H,62H,0C2H,82H,02H,03H,02H,00H DB 00H,00H,00H,00H,00H,00H,00H,7FH DB 00H,00H,01H,00H,00H,00H,00H,00H DB 0FEH,02H,32H,4EH,82H,00H,0FEH,4AH ;-文字:限- DB 0CAH,4AH,4AH,4AH,7EH,00H,00H,00H DB 0FFH,00H,02H,04H,03H,00H,0FFH,40H DB 20H,03H,0CH,12H,21H,60H,20H,00H DB 00H,00H,40H,42H,5CH,48H,40H,40H ;-文字:当- DB 7FH,40H,50H,4EH,44H,0C0H,00H,00H DB 00H,00H,20H,22H,22H,22H,22H,22H DB 22H,22H,22H,22H,22H,7FH,00H,00H DB 08H,08H,0E8H,0A8H,0A9H,0AEH,0EAH,08H ;-文字:前- DB 08H,0C8H,0CH,0BH,0EAH,08H,08H,00H DB 00H,00H,7FH,04H,24H,44H,3FH,00H DB 00H,1FH,40H,80H,7FH,00H,00H,00H DB 00h,02h,02h,0C2h,02h,02h,02h,02h ;- 文字: 正 - DB 0FEh,82h,82h,82h,82h,82h,02h,00h DB 20h,20h,20h,3Fh,20h,20h,20h,20h DB 3Fh,20h,20h,20h,20h,20h,20h,00h DB 20h,18h,08h,09h,0EEh,0AAh,0A8h,0AFh ;- 文字: 常 - DB 0A8h,0A8h,0ECh,0Bh,2Ah,18h,08h,00h DB 00h,00h,3Eh,02h,02h,02h,02h,0FFh DB 02h,02h,12h,22h,1Eh,00h,00h,00h DB 08h,08h,88h,0FFh,48h,28h,00h,0FFh ;- 文字: 报 - DB 0C1h,41h,41h,49h,51h,0CFh,00h,00h DB 01h,41h,80h,7Fh,00h,00h,00h,0FFh DB 40h,23h,14h,1Ch,33h,60h,20h,00h DB 20h,1Ah,0FAh,0AFh,0AAh,0EFh,0Ah,0FAh ;- 文字: 警 - DB 10h,8Fh,54h,24h,5Ch,84h,04h,00h DB 02h,02h,02h,0EAh,0AAh,0AAh,0ABh,0AAh DB 0ABh,0AAh,0AAh,0EAh,02h,02h,03h,00h DB 00h,0FEh,02h,0FEh,40h,40h,0E0h,20h,10h,10h,08h,08h,04h,06h,0FFh,00h DB 00h,7Fh,40h,7Fh,02h,02h,07h,04h,08h,08h,10h,10h,20h,60h,0FFh,00h DB 00h,80h,00h,00h,00h,00h,00h,00h,00h,00h,00h,10h,20h,40h,80h,00h DB 00h,03h,01h,01h,01h,01h,01h,01h,01h,01h,01h,11h,09h,05h,03h,01hDDATB:DB 00H,0E0H,10H,08H,08H,10H,0E0H,00H,00H,0FH,10H,20H,20H,10H,0FH,00H ;- 文字: 0 -DB 00H,10H,10H,0F8H,00H,00H,00H,00H,00H,20H,20H,3FH,20H,20H,00H,00H ;- 文字: 1 -DB 00H,70H,08H,08H,08H,88H,70H,00H,00H,30H,28H,24H,22H,21H,30H,00H ;- 文字: 2 -DB 00H,30H,08H,88H,88H,48H,30H,00H,00H,18H,20H,20H,20H,11H,0EH,00H ;- 文字: 3 -DB 00H,00H,0C0H,20H,10H,0F8H,00H,00H,00H,07H,04H,24H,24H,3FH,24H,00H ;- 文字: 4 -DB 00H,0F8H,08H,88H,88H,08H,08H,00H,00H,19H,21H,20H,20H,11H,0EH,00H ;- 文字: 5 -DB 00H,0E0H,10H,88H,88H,18H,00H,00H,00H,0FH,11H,20H,20H,11H,0EH,00H ;- 文字: 6 -DB 00H,38H,08H,08H,0C8H,38H,08H,00H,00H,00H,00H,3FH,00H,00H,00H,00H ;- 文字: 7 -DB 00H,70H,88H,08H,08H,88H,70H,00H,00H,1CH,22H,21H,21H,22H,1CH,00H ;- 文字: 8 -DB 00H,0E0H,10H,08H,08H,10H,0E0H,00H,00H,00H,31H,22H,22H,11H,0FH,00H ;- 文字: 9 -DB 00H,00H,0C0H,38H,0E0H,00H,00H,00H,20H,3CH,23H,02H,02H,27H,38H,20H ;- 文字: A -DB 08H,0F8H,88H,88H,88H,70H,00H,00H,20H,3FH,20H,20H,20H,11H,0EH,00H ;- 文字: B -DB 0C0H,30H,08H,08H,08H,08H,38H,00H,07H,18H,20H,20H,20H,10H,08H,00H ;- 文字: C -DB 08H,0F8H,08H,08H,08H,10H,0E0H,00H,20H,3FH,20H,20H,20H,10H,0FH,00H ;- 文字: D -DB 08H,0F8H,88H,88H,0E8H,08H,10H,00H,20H,3FH,20H,20H,23H,20H,18H,00H ;- 文字: E -DB 08H,0F8H,88H,88H,0E8H,08H,10H,00H,20H,3FH,20H,00H,03H,00H,00H,00H ;- 文字: F -;-INT: MOV COM,#0E2H;;初始化子程序,复位 LCALL PR0 LCALL PR3 MOV COM,#0A4H;;关闭休闲状态 LCALL PR0 LCALL PR3 MOV COM,#0A9H;;设置1/32占空比 LCALL PR0 LCALL PR3 MOV COM,#0A0H;;正向排序设置 LCALL PR0 LCALL PR3 MOV COM,#

温馨提示

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

评论

0/150

提交评论