找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2744|回复: 1
打印 上一主题 下一主题
收起左侧

51单片机通信加LCD显示的Proteus仿真文件和汇编程序

[复制链接]
跳转到指定楼层
楼主


仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机汇编语言源程序如下:
  1. ;====================================================================
  2. ; Main.asm file generated by New Project wizard
  3. ;
  4. ; Created:   周三 5月 30 2018
  5. ; Processor: AT89C51
  6. ; Compiler:  ASEM-51 (Proteus)
  7. ;====================================================================
  8.           ORG   0000H
  9. ;====================================================================
  10.          
  11.           AJMP  MAIN
  12.           ORG   0100H

  13. ;=========================================================================================选择

  14. MAIN:     MOV   P2,#0FFH
  15.           MOV   A,P2
  16.           CJNE  A,#0FEH,CONGJI2
  17.           LJMP  ZHUJI         
  18. CONGJI2:  MOV   P2,#0FFH
  19.           MOV   A,P2
  20.           CJNE  A,#0FDH,MAIN
  21.           LJMP  CONGJI

  22. ;=========================================================================================主机
  23.          
  24. ZHUJI:    CLR   A
  25.           MOV   SP,#60H
  26.           MOV   TMOD, #20H         
  27.           MOV   TL1, #0F4H               
  28.           MOV   TH1, #0F4H
  29.           MOV   PCON,#80H
  30.           MOV   SCON,#50H
  31.           SETB  TR1
  32.                  
  33. BEGAIN:   ACALL KEY
  34.           MOV   R1,A
  35.           ACALL HUJIAO
  36.           AJMP        BEGAIN                        

  37. KEY:      ACALL KS1
  38.           JNZ   LK1
  39.           AJMP  KEY
  40. LK1:      ACALL DELAY
  41.           ACALL KS1
  42.           JNZ   CKEY
  43.           AJMP  KEY
  44. CKEY:          MOV   R2,#7FH
  45.           MOV   R4,#00H
  46. CKEY1:    MOV   P1,R2
  47.           JB    P1.0,LONE
  48.           MOV   A,#00H
  49.           AJMP  LPK
  50. LONE:     JB    P1.1,LTWO
  51.           MOV   A,#04H
  52.           AJMP  LPK
  53. LTWO:     JB    P1.2,LTHR
  54.           MOV   A,#08H
  55.           AJMP  LPK
  56. LTHR:     JB    P1.3,NEXT0
  57.           MOV   A,#0CH
  58. LPK:      ADD   A,R4  
  59.           PUSH  ACC
  60. LK3:      ACALL KS1
  61.           JNZ   LK3
  62.           ACALL DELAY
  63.           POP   ACC
  64.           RET         
  65. NEXT0:    INC   R4
  66.           MOV   A,R2
  67.           JNB   P1.3,KEND
  68.           RR    A
  69.           MOV   R2,A
  70.           AJMP  CKEY1
  71. KEND:     AJMP  KEY
  72. KS1:          MOV   P1,#0FH
  73.           MOV   A,P1
  74.           CPL   A
  75.           ANL   A,#0FH
  76.           RET                                                   
  77. HUJIAO:          CALL  DELAY
  78.           MOV   A,#0EH
  79.           CPL   P3.4
  80.           MOV   SBUF,A
  81. WAIT1:          JBC   TI,TXYES
  82.           SJMP  WAIT1                                      
  83. TXYES:    JBC   RI,NEXT1
  84.           SJMP  TXYES                                                                                                                  
  85. NEXT1:    MOV   A,SBUF
  86.           CJNE  A,#01H,HUJIAO         
  87.       
  88. XSHU:   
  89.           MOV    A,R1                  
  90.           MOV   C,P                                         
  91.           MOV   ACC.7,C
  92.           MOV   SBUF,A
  93. WAIT3:          JNB   TI,WAIT3
  94.           CLR   TI
  95. WAITC:    JNB   RI,WAITC
  96.           CLR   RI                                                                                                         
  97.              MOV   A,SBUF
  98.           CJNE  A,#0FH,XSHU
  99.           CLR    P3.7        

  100. DELAY:   
  101.           MOV   R6,#0FFH
  102. LOOP1:    DJNZ  R6,LOOP1
  103.           RET

  104. ;=======================================================================================从机         
  105.          

  106. CONGJI:   CLR   A
  107.           MOV   SP,#60H
  108.          
  109. ;=======================================================================================从机初始化LCD
  110.          
  111. initlcd:  mov A,#38H                           ; 2行5*7
  112.           acall COMMAND                        ; 命令子程序
  113.           acall DELAYS                         ; 延迟子程序
  114.           mov A,#0EH                           ; 显示开光标开
  115.           acall COMMAND
  116.           acall DELAYS
  117.           mov A,#01H                           ; 清屏LCD
  118.           acall COMMAND
  119.           acall DELAYS
  120.           mov A,#06H                           ; 光标右移
  121.           acall COMMAND
  122.           acall DELAYS
  123. cursor:   MOV A,#80H                           ; 光标定位于第一行第一个位置
  124.           acall COMMAND
  125.           acall DELAYS

  126. ;=======================================================================================R4储存第一次按键数据,R5计按键次数,R7计显示的字符数
  127.           mov   R5,#02h
  128.           mov   R4,#00h
  129.           mov   R7,#10h
  130. ;========================================================================================
  131.          
  132. ;=========================================================================================
  133.          
  134. RSTRT9:          MOV   TMOD, #20H
  135.           MOV   TL1, #0F4H
  136.           MOV   TH1, #0F4H
  137.           MOV   PCON,#80H
  138.           MOV   SCON,#50H
  139.           SETB  TR1

  140. JIESHOU9:
  141.         
  142.           CLR   TI
  143.           JNB   RI,JIESHOU9
  144.           CLR   RI
  145.             MOV   A,SBUF
  146.           CJNE  A,#0EH,FA29         
  147. FA19:          MOV   A,#01H
  148.           MOV   SBUF,A
  149.           CPL   P3.7
  150. WAIT19:   JBC   TI,RX9
  151.           SJMP  WAIT19
  152. FA29:            MOV   A,#02H
  153.           MOV   SBUF,A
  154. WAIT29:   JBC   TI,JIESHOU9
  155.           SJMP  WAIT29
  156. RX9:      CLR   TI        
  157.           JNB   RI,RX9
  158.           CLR   RI
  159.           MOV   A,SBUF  
  160.           MOV   C,P
  161.           MOV   R1,A
  162.           JC    FAF09
  163. FA0F9:    MOV   A,#0FH   
  164.           MOV   SBUF,A
  165. WAIT39:          JNB   TI,WAIT39
  166.           CLR   TI  
  167.           SJMP  CHULI9
  168. FAF09:    MOV   A,#0F0H
  169.           MOV   SBUF,A
  170. WAIT49:          JNB   TI,WAIT49
  171.           CLR   TI
  172.           LJMP  RX9                                 
  173. CHULI9:          MOV   A,R1

  174. XIANS9:     
  175.           ANL   A,#0FH
  176.           LCALL DISPLAY9
  177.           LJMP  JS9                                 

  178. DELAY9:   
  179.           MOV   R6,#03FH
  180. LOOP19:   DJNZ  R6,LOOP19
  181.           RET
  182.                     
  183. DISPLAY9:                           ;按键顺序是乱的
  184.           CJNE  A,#00H,LT19
  185.           MOV   A,#03H              ;3
  186.           sjmp  LAST9
  187. LT19:          CJNE  A,#01H,LT29
  188.           MOV   A,#07H                    ;7
  189.           SJMP        LAST9
  190. LT29:          CJNE  A,#02H,LT39
  191.           MOV   A,#0bH                     ;b
  192.           SJMP        LAST9
  193. LT39:          CJNE  A,#03H,LT49
  194.           MOV   A,#0fH                    ;f
  195.           SJMP        LAST9                  
  196. LT49:          CJNE  A,#04H,LT59
  197.           MOV   A,#02H                    ;2  
  198.           SJMP        LAST9
  199. LT59:          CJNE  A,#05H,LT69
  200.           MOV        A,#06H                    ;6
  201.           SJMP        LAST9                  
  202. LT69:            CJNE  A,#06H,LT79
  203.           MOV   A,#0aH                    ;a
  204.           SJMP        LAST9
  205. LT79:          CJNE  A,#07H,LT89
  206.           MOV   A,#0eH                    ;e
  207.           SJMP        LAST9
  208. LT89:          CJNE  A,#08H,LT99
  209.           MOV   A,#01H                    ;1
  210.           SJMP        LAST9
  211. LT99:          CJNE  A,#09H,LT109
  212.           MOV        A,#05H                    ;5
  213.           SJMP        LAST9
  214. LT109:          CJNE  A,#0AH,LT119
  215.           MOV   A,#09H                    ;9
  216.           SJMP        LAST9
  217. LT119:          CJNE  A,#0BH,LT129
  218.           MOV   A,#0dH                    ;d
  219.           SJMP        LAST9
  220. LT129:          CJNE  A,#0CH,LT139
  221.           MOV   A,#00H                    ;0
  222.           SJMP        LAST9
  223. LT139:          CJNE  A,#0DH,LT149
  224.           MOV   A,#04H                    ;4
  225.           SJMP        LAST9
  226. LT149:          CJNE  A,#0EH,LT159
  227.           MOV   A,#08H                    ;8
  228.           SJMP        LAST9
  229. LT159:          CJNE  A,#0FH,LAST9
  230.           MOV   A,#0cH                    ;c

  231. ;=====================================================================================计算对应的字符码如A是41H
  232.          
  233. LAST9:    cjne   R5,#01h,multi
  234. aftermul: djnz   R5,before
  235.           add    A,R4
  236.           acall  DATA1
  237.           acall  DELAYS
  238.           mov    R5,#02h
  239.           mov    R4,#00h
  240.           ajmp   ifcursor
  241. before:          RET
  242.          
  243. JS9:      
  244.           LJMP   JIESHOU9
  245.          
  246. ;======================================================================================

  247. ifcursor: djnz   R7,before            ;如果显示完一行,那么光标切换到第二行
  248.           mov    A,#0c0h
  249.           acall  COMMAND
  250.           acall  DELAYS
  251.           mov    R7,#10h
  252.           ajmp   before
  253.          
  254. multi:    mov    B,#10h
  255.           mul    AB
  256.           mov    R4,A
  257.           clr    A
  258.           ajmp   aftermul
  259.          
  260. ;=======================================================================RS3.4 RW3.5 E3.3
  261. COMMAND:   mov P0,A                   ;命令子程序                              
  262.            clr P3.4
  263.            clr P3.5
  264.            setb P3.3
  265.            clr P3.3
  266.            ret
  267. DATA1:     mov P0,A                   ;数据子程序                              
  268.            setb P3.4
  269.            clr P3.5
  270.            setb P3.3                              
  271.            clr P3.3                                
  272.            ret
  273. DELAYS:    mov R2,#50
  274. D1:        mov R3,#0FFH
  275. D2:        djnz R3,D2
  276.            djnz R2,D1
  277.            ret  
  278.            END
复制代码

所有资料51hei提供下载:
communication X.rar (184.59 KB, 下载次数: 21)
通信LCD程序.docx (17.34 KB, 下载次数: 13)
communication.pdf (105.44 KB, 下载次数: 11)





分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:366541 发表于 2018-7-7 01:21 | 只看该作者
刚学,还是半双工通信,按钮选择发送信息方向,通过键盘输入字形码可以在另一个系统的LCD上显示出该字符。最后的压缩文件里包括了所有的文件

communication X.rar

184.59 KB, 下载次数: 7, 下载积分: 黑币 -5

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表