找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

帖子
查看: 2306|回復(fù): 0
收起左側(cè)

單片機(jī)2io5鍵盤模擬音量數(shù)碼管顯示匯編源碼與仿真實(shí)例

[復(fù)制鏈接]
ID:302296 發(fā)表于 2018-4-5 10:28 | 顯示全部樓層 |閱讀模式
包括溫度檢測(cè)/4線步進(jìn)電機(jī)/鍵盤模擬音量/點(diǎn)陣顯示等
0.png 0.png

單片機(jī)源程序如下:
  1. ;*******************************************************************************
  2. ;*文件: 5key_volume_con.asm                                                    *
  3. ;*版本: ver1.0                                                                 *
  4. ;*功能描述: 混合鍵盤模擬音量數(shù)碼管顯示                                         *
  5. ;*          上兩鍵:左鍵音量-,右鍵音量+                                         *
  6. ;*          下三鍵:左鍵音量24級(jí),中鍵音量32級(jí),右鍵音量05級(jí)                      *
  7. ;*備注:                                                                        *
  8. ;*軟件仿真: PROTEUS 6                                                          *
  9. ;*******************************************************************************
  10.     KEY_OK      BIT     00H
  11.     VOLNUMB     EQU     22H     
  12.     PHONE       EQU     21H
  13.     COUNTER     EQU     23H     ;用于顯示的計(jì)數(shù)器
  14.     KEYVAL      EQU     25H
  15.     DISPBUF     EQU     5EH
  16.     FIRST       BIT     P2.7    ;第一位數(shù)碼管的位控制
  17.     SECOND      BIT     P2.6    ;第二位數(shù)碼管的位控制
  18.     TMRVAR      EQU     60110   ;65536-5000*12/11.0592  定時(shí)器初值5毫秒
  19. ;===============================================================================        
  20.     ORG     0000H   
  21.     JMP     START
  22.     ORG     0*8+3               ;INT0中斷入口
  23.     RETI
  24.     ORG     1*8+3               ;TIMER0中斷入口
  25.     JMP     INT_T0              ;轉(zhuǎn)去定時(shí)器0中斷服務(wù)程序入口
  26.     ORG     2*8+3               ;INT1中斷入口
  27.     RETI
  28.     ORG     3*8+3               ;TIMER1中斷入口
  29.     RETI
  30.     ORG     4*8+3               ;串行中斷入口
  31.     RETI
  32. ;===============================================================================
  33. START:
  34.     mov     sp,#5fh
  35.     mov     p1,#0ffh
  36.     mov     p3,#0ffh         
  37.     mov     volnumb,#40h
  38.     call    init_t0
  39.     setb    ea
  40. ;===============================================================================
  41. LOOP:;主程
  42.     ACALL KEY
  43.     JB KEY_OK,KEYPROC
  44.     ACALL DISP_VOL
  45.     AJMP LOOP         
  46. ;===============================================================================  
  47. disp_vol:;顯示處理
  48.         mov a,volnumb
  49.         swap a
  50.         anl a,#0fh
  51.         mov dispbuf,a;十位到DISPBUF
  52.         mov a,volnumb
  53.         anl a,#0fh
  54.         mov dispbuf+1,a;個(gè)位到DISPBUF+1
  55.         ret
  56. ;==============================================================================
  57. keyproc:;鍵處理散轉(zhuǎn)
  58.     mov a,keyval
  59.     mov keyval,#00h
  60.     rl a
  61.     mov dptr,#tab_key
  62.     jmp @a+dptr
  63. tab_key:
  64.     ajmp loop
  65.     ajmp volup
  66.     ajmp voldw
  67.     ajmp volrsum
  68.     ajmp vol24
  69.     ajmp vol05
  70. ;===============================================================================
  71. KEY:;鍵盤程序
  72.          clr key_ok;清鍵按下標(biāo)志
  73.          orl p3,#11000000b;下面三鍵判斷
  74.          clr key_ok
  75.          mov a,p3
  76.          orl a,#00111111b
  77.          cpl a
  78.          jz key_1
  79.          acall delay
  80.          acall delay
  81.          mov a,p3
  82.          orl a,#00111111b
  83.          jz key_1
  84.          nop
  85.          jnb acc.7,keydw1
  86.          nop
  87.          jb acc.6,key_ret
  88.          setb key_ok
  89.          mov keyval,#3
  90. key_ret1:mov a,p3
  91.          orl a,#00111111b
  92.          cpl a
  93.          jnz key_ret1;鍵松開否
  94.          ajmp key_ret
  95. key_ret:ret

  96. keydw1:  
  97.          nop
  98.          jnb acc.6,keydw2
  99.          setb key_ok
  100.          mov keyval,#4
  101.          jmp key_ret1
  102. keydw2:  setb key_ok
  103.          mov keyval,#5
  104.          jmp key_ret1  

  105. key_1:   
  106.          setb p3.6
  107.          clr p3.7 ;vol+按下
  108.          nop
  109.          nop
  110.          jnb p3.6,key01
  111.    
  112.          clr  p3.6;vol-按下
  113.          setb p3.7
  114.          nop
  115.          nop
  116.          jnb  p3.7,key02
  117.          
  118. keyexit: ajmp key_ret

  119. key01:
  120.          acall delay
  121.          acall delay
  122.          nop
  123.          nop
  124.          jb p3.6,key01_ret
  125.          setb key_ok
  126.          mov keyval,#1
  127.          nop
  128.          acall delay
  129.          acall delay
  130. key01_ret:jnb p3.6,$
  131.          ajmp keyexit
  132. key02:
  133.          acall delay
  134.          acall delay
  135.          nop
  136.          nop
  137.          jb p3.7,key02_ret
  138.          setb key_ok
  139.          mov keyval,#2
  140.          nop
  141.          acall delay
  142.          acall delay
  143. key02_ret:jnb p3.7,$
  144.          ajmp keyexit
  145. delay:;                去鍵抖延時(shí)
  146.          push psw
  147.          setb rs0
  148.          mov  r7,#50
  149.      d1: mov  r6,#50
  150.      d2: djnz r6,d2
  151.          djnz r7,d1
  152.          pop  psw
  153.          ret
  154. ;===============================================================================   
  155. volup:;鍵盤音量+
  156.         mov phone,volnumb
  157.         mov a,phone
  158.         xrl a,#70h
  159.         jz volup1
  160.         acall uaa
  161.         mov volnumb,phone
  162.         jmp loop
  163. volup1: mov volnumb,#70h
  164.         jmp loop
  165. ;===============================================================================
  166. voldw:;鍵盤音量-
  167.         mov phone,volnumb
  168.         mov a,phone
  169.         jz voldw1
  170.         acall daa
  171.         mov volnumb,phone
  172.         jmp loop
  173. voldw1: mov volnumb,#00h
  174.         jmp loop
  175. ;===============================================================================
  176. volrsum:;32級(jí)
  177.         mov volnumb,#32h
  178.         ajmp loop

  179. vol24:;24級(jí)
  180.        mov volnumb,#24h
  181.        ajmp loop

  182. vol05:;05級(jí)
  183.        mov volnumb,#05h
  184.        ajmp loop

  185. ;===============================================================================
  186. uaa:;遞增1
  187.         mov a,phone
  188.         swap a
  189.         anl a,#0fh
  190.         mov r5,a
  191.         mov a,phone
  192.         anl a,#0fh
  193.         nop
  194.         cjne a,#09h,uaa_1
  195.         nop
  196.         mov r4,#00h
  197.         inc r5
  198.         ajmp uaa_2
  199. uaa_1:
  200.         inc a
  201.         mov r4,a
  202. uaa_2:
  203.         mov a,r5
  204.         swap a
  205.         add a,r4
  206.         mov phone,a
  207.         ret
  208. ;===============================================================================
  209. daa:;遞減1
  210.         mov a,phone
  211.         swap a
  212.         anl a,#0fh
  213.         mov r5,a
  214.         mov a,phone;
  215.         anl a,#0fh
  216.         jnz daa_1
  217.         mov r4,#09h
  218.         dec r5
  219.         nop
  220.         sjmp daa_2
  221.   daa_1:
  222.         dec a
  223.         mov r4,a
  224.   daa_2:
  225.         mov a,r5;
  226.         swap a
  227.         add a,r4
  228.         mov phone,a
  229.         ret
  230. ;===============================================================================   
  231. INIT_T0:                ;初始化T0為5毫秒的定時(shí)器
  232.     MOV     TMOD,#01H
  233.     MOV     TH0,#HIGH(TMRVAR)
  234.     MOV     TL0,#LOW(TMRVAR)
  235.     SETB    ET0         ;開T0中斷
  236.     SETB    TR0         ;定時(shí)器0開始運(yùn)行
  237.     RET                 ;返回
  238. ;===============================================================================
  239. ;以下是中斷程序,實(shí)現(xiàn)數(shù)碼管顯示
  240. INT_T0:                 ;定時(shí)器T0的中斷響應(yīng)程序
  241.     PUSH    ACC         ;ACC入棧
  242.     PUSH    PSW         ;PSW入棧
  243.     MOV TH0,#HIGH(TMRVAR)
  244. ……………………

  245. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
Proteus單片機(jī)仿真實(shí)例大全[1].part001.rar (500 KB, 下載次數(shù): 11)


回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表