找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机汇编语言波形发生器程序设计 Proteus仿真图 生方波、三角波、锯齿波和正弦波

[复制链接]
跳转到指定楼层
楼主
汇编语言编写的
可以产生方波、三角波、锯齿波和正弦波等多种波形
protues源程序和hex文件附件中都有
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下:
  1. RS EQU P3.0
  2. RW EQU P3.1
  3. E  EQU P3.3
  4. LCD EQU P2
  5. BF EQU P2.7

  6. ORG 0000H
  7. LJMP MAIN
  8. ORG 0003H                        
  9. LJMP INT00
  10. ORG 0100H
  11. MAIN: MOV SP,#60H               
  12.       SETB IT0                        
  13.       SETB EA                        
  14.       SETB EX0
  15.       LCALL LCDXS
  16.       SJMP $
  17. INT00:MOV A,#01H
  18.       ACALL W_CMD
  19.       JNB P1.0,STW0               
  20.       JNB P1.1,TZW0               
  21.       JNB P1.2,TGW0               
  22.       JNB P1.3,SQW0               
  23.       JNB P1.4,SNW0
  24. STW0:LJMP STW
  25. TZW0:LJMP TZW
  26. TGW0:LJMP TGW
  27. SQW0:LJMP SQW
  28. SNW0:LJMP SNW        
  29. INTIR:MOV A,#01H
  30.      ACALL W_CMD
  31.      MOV A,#34H
  32.      ACALL W_CMD
  33.      MOV A,#0CH
  34.      ACALL W_CMD
  35.      MOV A,#14H
  36.      ACALL W_CMD
  37.      MOV A,#80H
  38.      ACALL W_CMD        
  39.      RETI
  40. STW:    MOV DPTR,#NAME0
  41.         LCALL LOP
  42.         MOV R0,#0FEH
  43.         MOV A,#00H
  44. LOOP:        MOVX @R0,A  
  45.         JB P1.0,INTIR  
  46.         INC A         
  47.         SJMP LOOP   
  48.         LJMP INTIR
  49. TZW:        MOV DPTR,#NAME1
  50.         LCALL LOP
  51.         MOV R0,#0FEH               
  52.         MOV A,#00H
  53. UP:        MOVX @R0,A        
  54.         JB P1.1,MIDDLE               
  55.         INC A                        
  56.         JNZ UP                                
  57.         DEC A                                
  58.         LCALL DELAY        
  59.         JB P1.1,MIDDLE        
  60. DOWN:        DEC A
  61.         MOVX @R0,A               
  62.         JB P1.1,MIDDLE               
  63.         JNZ DOWN                        
  64.         SJMP UP                        
  65.         LJMP INTIR               
  66. DELAY:        MOV R7,#100         
  67. DELAY1: MOV R6,#10
  68.         NOP
  69. DELAY2: DJNZ R6,DELAY2
  70.         DJNZ R7,DELAY1
  71.         RET
  72. TGW:        MOV DPTR,#NAME2
  73.         LCALL LOP
  74.         MOV R0,#0FEH        
  75.         MOV A,#00H
  76. UP2:        MOVX @R0,A               
  77.         JB P1.2,MIDDLE               
  78.         INC A                                
  79.         JNZ UP2                        
  80. DOWN2:        DEC A                        
  81.         MOVX @R0,A               
  82.         JB P1.2,MIDDLE               
  83.         JNZ DOWN2               
  84.         SJMP UP2                        
  85.         LJMP INTIR               
  86. SQW:        MOV DPTR,#NAME3
  87.         LCALL LOP
  88.         MOV R0,#0FEH        
  89. POSI:        MOV A,#00H               
  90.         MOVX @R0,A               
  91.         LCALL DELAY               
  92.         JB P1.3,MIDDLE               
  93. NEGA:        MOV A,#0FFH               
  94.         MOVX @R0,A               
  95.         LCALL DELAY        
  96.         JB P1.3,MIDDLE        
  97.         SJMP POSI                        
  98.         LJMP INTIR
  99. SNW:        MOV DPTR,#NAME4
  100.         LCALL LOP
  101.         MOV R0,#0FEH                        
  102.         MOV R1,#00H
  103. XX:        MOV A,R1        
  104.         LCALL HANSHU               
  105.         MOVX @R0,A                        
  106.         JB P1.4,MIDDLE               
  107.         INC R1
  108.         SJMP XX                                
  109.         LJMP INTIR               
  110. HANSHU:        MOV DPTR,#TAB1
  111.         MOVC A,@A+DPTR
  112.         RET
  113. MIDDLE: LJMP INTIR

  114. LCDXS:MOV A,#01H
  115.      ACALL W_CMD
  116.      MOV A,#34H
  117.      ACALL W_CMD
  118.      MOV A,#0CH
  119.      ACALL W_CMD
  120.      MOV A,#14H
  121.      ACALL W_CMD
  122.      MOV A,#80H
  123.      ACALL W_CMD
  124.      MOV DPTR,#INIT
  125. LOP: MOV R2,#0
  126. LOP1:MOV A,R2
  127.      MOVC A,@A+DPTR
  128.      ACALL W_DATA
  129.      INC R2
  130.      CJNE R2,#16,LOP1
  131.      RET
  132. W_CMD:ACALL WAIT
  133.       MOV LCD,A
  134.       CLR RS
  135.       CLR RW
  136.       SETB E
  137.       NOP
  138.       CLR E
  139.       RET
  140. W_DATA:ACALL WAIT
  141.        MOV LCD,A
  142.        SETB RS
  143.        CLR RW
  144.        SETB E
  145.        NOP
  146.        CLR E
  147.        RET           
  148. WAIT:MOV LCD,#0FFH
  149.      CLR RS
  150.      SETB RW
  151.      CLR E
  152.      NOP
  153.      SETB E
  154.      JB BF,WAIT
  155.      RET
  156. INIT: DB '    Welcome!    '
  157. NAME0:DB ' Sawtooth Wave  '
  158. NAME1:DB 'Trapezoidal Wave'
  159. NAME2:DB 'Triangular Wave '
  160. NAME3:DB '  Square Wave   '
  161. NAME4:DB '   Sine Wave    '
  162. TAB1:   DB 080h,083h,086h,089h,08ch,090h,093h,096h,099h,09ch,09fh,0a2h,0a5h,0a8h,0abh,0aeh
  163.         DB 0b1h,0b3h,0b6h,0b9h,0bch,0bfh,0c1h,0c4h,0c7h,0c9h,0cch,0ceh,0d1h,0d3h,0d5h,0d8h
  164.         DB 0dah,0dch,0deh,0e0h,0e2h,0e4h,0e6h,0e8h,0eah,0ebh,0edh,0efh,0f0h,0f1h,0f3h,0f4h
  165.         DB 0f5h,0f6h,0f8h,0f9h,0fah,0fah,0fbh,0fch,0fdh,0fdh,0feh,0feh,0feh,0ffh,0ffh,0ffh
  166.         DB 0ffh,0ffh,0ffh,0ffh,0feh,0feh,0feh,0fdh,0fdh,0fch,0fbh,0fah,0fah,0f9h,0f8h,0f6h
  167.         DB 0f5h,0f4h,0f3h,0f1h,0f0h,0efh,0edh,0ebh,0eah,0e8h,0e6h,0e4h,0e2h,0e0h,0deh,0dch
  168.         DB 0dah,0d8h,0d5h,0d3h,0d1h,0ceh,0cch,0c9h,0c7h,0c4h,0c1h,0bfh,0bch,0b9h,0b6h,0b3h
  169.         DB 0b1h,0aeh,0abh,0a8h,0a5h,0a2h,09fh,09ch,099h,096h,093h,090h,08ch,089h,086h,083h
  170.         DB 080h,07dh,07ah,077h,074h,070h,06dh,06ah,067h,064h,061h,05eh,05bh,058h,055h,052h
  171.         DB 04fh,04dh,04ah,047h,044h,041h,03fh,03ch,039h,037h,034h,032h,02fh,02dh,02bh,028h
  172.         DB 026h,024h,022h,020h,01eh,01ch,01ah,018h,016h,015h,013h,011h,010h,00fh,00dh,00ch
  173.         DB 00bh,00ah,008h,007h,006h,006h,005h,004h,003h,003h,002h,002h,002h,001h,001h,000h
  174.         DB 000h,000h,001h,001h,002h,002h,002h,003h,003h,004h,005h,006h,006h,007h,008h,00ah
  175.         DB 00bh,00ch,00dh,00fh,010h,011h,013h,015h,016h,018h,01ah,01ch,01eh,020h,022h,024h
  176.         DB 026h,028h,02bh,02dh,02fh,032h,034h,037h,039h,03ch,03fh,041h,044h,047h,04ah,04dh
  177.         DB 04fh,052h,055h,058h,05bh,05eh,061h,064h,067h,06ah,06dh,070h,074h,077h,07ah,07dh
  178.         END
复制代码

Keil汇编语言代码下载:
仿真程序.7z (67.65 KB, 下载次数: 72)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

沙发
ID:1013775 发表于 2022-5-23 23:05 | 只看该作者
大佬,为什么我的LCD屏幕不亮啊
回复

使用道具 举报

板凳
ID:1099375 发表于 2023-11-12 11:28 | 只看该作者
楼主,设计与这个有关想详细询问一下可以吗,
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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