久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2720|回復: 1
打印 上一主題 下一主題
收起左側

簡易單片機信號發生器實現

[復制鏈接]
跳轉到指定樓層
樓主
ID:578338 發表于 2019-7-5 11:07 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
這是我單片機完成的課題。
可以實現方波正弦波三角波
并且利用視覺暫留原理顯示頻率
protues仿真和keil程序已打包上傳

單片機源程序如下:
  1.            ORG 00H   
  2. SEL    EQU 50H ;存波形地址 00方波,01三角波,02正弦波
  3. RANGE  EQU 51H;存幅度
  4. FREQ   EQU 52H;存頻率
  5. INC_1 EQU 55H;
  6. INC_2 EQU 56H;
  7. RAN_SIN EQU 57H;三角波幅度

  8. ;定義按鍵的地址
  9. AN_SEL EQU P3.2 ;選擇波形
  10. AN_FREQ EQU P3.3;調節頻率
  11. AN_RANGE EQU P3.4;調節幅度
  12. AN_RST EQU P3.5;恢復

  13. MOV R0, #00H           ;發光管的顯示頻率.由于電流小不夠負載驅動管
  14. MOV R1, #05H
  15. MOV R2, #00H      
  16. MOV R3, #00H     
  17. MOV R4, #00H

  18. LJMP MAIN

  19. ORG 0003H
  20. LJMP SEL_FUNC
  21. ORG 000BH
  22. LJMP FREQ_FUNC
  23. ORG 0013H
  24. LJMP RANGE_FUNC
  25. ORG 001BH
  26. LJMP SEL_RST
  27. ORG 0100H
  28. MAIN:
  29. MOV SP,#60H
  30. CLR A
  31. CLR C
  32. MOV SEL,#00H ;默認為方波
  33. MOV RANGE,#7FH;RANGE為中間值,且不變
  34. MOV FREQ,#00         
  35. MOV P1,#00H                                ;P1口數據位輸出
  36. MOV INC_1,#00H                   ;三角波上升
  37. MOV INC_2,#00H                   ;三角波下降
  38. MOV RAN_SIN,#01H

  39. SETB IT1
  40. SETB EX1
  41. MOV TMOD,#66H
  42. MOV TL0,#0FFH
  43. MOV TH0,#0FFH                         ;外部計數 ,按一下馬上跳轉
  44. MOV TL1,#0FFH
  45. MOV TH1,#0FFH
  46. SETB TR0
  47. SETB TR1
  48. SETB ET0                                 ;啟動各種中斷
  49. SETB ET1
  50. SETB IT0
  51. SETB EX0
  52. SETB EA

  53. LCALL LED_SHOW

  54. MAIN_L:MOV A,SEL
  55.                  MOV DPTR,#WAVE
  56.                 JMP @A+DPTR                                ;和250的散轉指令對應,無中斷就在此循環,顯示波形
  57.        
  58.                
  59.                 SJMP MAIN_L

  60. SQUARE:
  61.         LCALL LED_SHOW

  62.         MOV R5,SEL
  63.         CJNE R5,#00H,WAVE_BACK
  64.         MOV P1,RANGE;幅值
  65.         LCALL DELAY_Xus                                        ;把SEL值給R5,        設定方波占空比為50%
  66.         LCALL DELAY_1000us
  67.         MOV P1,#00H
  68.         LCALL DELAY_Xus                                  
  69.         LCALL DELAY_100us
  70.         SJMP SQUARE

  71. R_SEL:;三角波
  72. LCALL LED_SHOW
  73. MOV R5,SEL
  74.            CJNE R5,#01H,WAVE_BACK
  75.            LCALL JINC_F
  76. RECT:  DJNZ INC_1,RECT
  77.        INC P1                                                                   ;三角波上升下降
  78.        MOV A,P1
  79. ;LCALL DELAY_100us
  80.        CJNE A,RANGE,RECT
  81.        MOV INC_1,INC_2
  82. DOWN: DJNZ INC_2,DOWN               
  83.            DEC P1
  84.            MOV R0,P1
  85.            CJNE R0,#00H,DOWN
  86.            MOV INC_2,INC_1

  87.            LJMP R_SEL
  88.            RET
  89.           ;MOV P1,#00H
  90.            ;MOV R0,P1
  91.            ;CJNE R0,#00H,DOWN
  92.            ;MOV INC_F2,INC_F1
  93.            ;LJMP R_SEL
  94.            ;RET
  95. JINC_F:        MOV A,#0FFH
  96.            MOV B,RANGE
  97.            DIV AB                                                ;檢查是不是在一個循環內部;B的值會改變;
  98.            MOV INC_1,B                                        ;一樣才循環
  99.            MOV INC_2,B
  100.            RET
  101. SIN:

  102. MOV DPTR,#TABLE_SIN
  103. S_SEL:                MOV R5,SEL
  104.                 CJNE R5,#02H,WAVE_BACK
  105.                
  106. SL:          CLR A
  107.         MOVC A, @A+DPTR                  ;數表的值和B運算得到幅度變化。
  108.                 MOV B,RAN_SIN
  109.                 DIV AB
  110.                 MOV P1,A
  111.                 LCALL DELAY_10us
  112.                 INC DPTR
  113.                 MOV A,#01H
  114.                 MOVC A,@A+DPTR
  115.                 CJNE A,#21H,S_SEL
  116.                 LJMP SIN


  117. WAVE_BACK:RET


  118. FREQ_FUNC:  INC FREQ

  119.     AN0:
  120.         MOV R4,#0AH
  121.         CJNE R4,#0AH,BACK
  122.         LCALL DELAY1
  123.         LJMP AN1
  124.         AN1:
  125.         INC R3
  126.         CJNE R3,#0AH,BACK
  127.         LCALL DELAY1
  128.         LJMP AN2
  129.         AN2:
  130.         MOV R3,#00H
  131.         INC R2
  132.         CJNE R2,#0AH,BACK
  133.         LJMP AN3
  134.         AN3:
  135.         MOV R2,#00H
  136.         INC R1
  137.         CJNE R1,#0AH,BACK
  138.         LJMP AN4
  139.         AN4:
  140.         MOV R1,#00H
  141.         INC R0
  142.         CJNE R0,#0AH,BACK
  143.         LJMP AN5
  144.         AN5:
  145.         MOV R0,#00H
  146.         RETI
  147.         BACK:RETI                                  ;R3-R0分別是個十百千位,每一個計數滿進位
  148.         RANGE_FUNC:INC RANGE
  149.                 INC RAN_SIN
  150.                 MOV R6,RAN_SIN
  151.                 CJNE R6,#00H,FUNC_RET
  152.                 MOV RAN_SIN,#01H
  153.                 RETI
  154.         SEL_FUNC: INC SEL
  155.                 MOV R6,SEL
  156.                 CJNE R6,#03H,FUNC_RET
  157.                 MOV SEL,#00H
  158.                 RETI
  159.         FUNC_RET:RETI
  160.         SEL_RST:CLR A
  161.                 CLR C
  162.                 MOV SEL,#00H
  163.                 MOV RANGE,#7FH
  164.                 MOV FREQ,#00
  165.                 MOV        P1,#00H
  166.                 MOV INC_1,#00H
  167.                 MOV INC_2,#00H
  168.                 MOV RAN_SIN,#01H
  169.                 RETI

  170. LED_SHOW:         ;LED顯示
  171.                 SETB P2.5                ;  p2.5是數碼管總開關
  172.                 MOV A,R0
  173.                 MOV DPTR,#TABLE
  174.                 MOVC A,@A+DPTR
  175.                 SETB P2.0                ;P2.0 2.1 2.2 2.3 置為0        四個  讓之前的四位頻率顯示
  176.                 MOV P0,A
  177.                 LCALL DELAY
  178.                 CLR P2.0

  179.                 MOV A,R1
  180.                 MOV DPTR,#TABLE
  181.                 MOVC A,@A+DPTR
  182.                 SETB P2.1
  183.                 MOV P0,A
  184.                 LCALL DELAY
  185.                
  186.                 CLR P2.1
  187.                 MOV A,R2
  188.                 MOV DPTR, #TABLE
  189.                 MOVC A,@A+DPTR
  190.                 SETB P2.2
  191.                 MOV P0,A
  192.                 LCALL DELAY
  193.           
  194.                 CLR P2.2
  195.                 MOV A,R3
  196.                 MOV DPTR,#TABLE
  197.                 MOVC A,@A+DPTR
  198.                         SETB P2.3
  199.                 MOV P0,A
  200.                 LCALL DELAY
  201.                 CLR P2.3
  202.          
  203.             RET

  204.   TABLE: DB 90H,80H,0F8H,92H,99H,0B0H,82H,0A4H,0F9H,0C0H   ;數碼管0-9數字
  205.   DELAY1:MOV R6,#0FFH
  206.   LP:MOV R7,#0FFH
  207.   LP1:NOP

  208.   DJNZ R7,LP1
  209.   DJNZ R6,LP
  210.   RET

  211.   DELAY:MOV R6,#0FH
  212.   LP2:MOV R7,#10
  213.   LP3:NOP
  214.   DJNZ R7,LP3
  215.   DJNZ R6,LP2
  216.   RET
  217.   DELAY_100us: NOP
  218.     MOV R6,#04H
  219.         L1:MOV R7,#0AH
  220.         L2:DJNZ R7,L2
  221.         DJNZ R6,L1
  222.         RET
  223.    DELAY_1000us: NOP
  224.     MOV R6,#0AAH
  225.         L111:MOV R7,#0AH
  226.         L222:DJNZ R7,L2
  227.         DJNZ R6,L1
  228.         RET
  229.   DELAY_Xus:MOV A,FREQ
  230.   MOV R6,FREQ
  231.   JZ DE_BACK

  232.   NOP                       
  233.   
  234.   
  235.   L11:MOV R7,#0AH
  236.   L22:DJNZ R7,L22
  237.             DJNZ R6,L11
  238.           RET
  239.   

  240.   DELAY_10us:MOV A,FREQ
  241.   JZ DE_BACK
  242.   MOV R3,FREQ
  243.   DJNZ R3,$
  244.   DE_BACK:RET

  245.   WAVE:LCALL SQUARE
  246.              LCALL R_SEL
  247.            LCALL SIN
  248.   TABLE_SIN:
  249.         DB    80H,83H,86H,89H,8DH,90H,93H,96H
  250. DB  99H,9CH,9FH,0A2H,0A5H,0A8H,0ABH,0AEH
  251. DB        0B1H,0B4H,0B7H,0BAH,0BCH,0BFH,0C2H,0C5H
  252. DB        0C7H,0CAH,0CCH,0CFH,0D1H,0D4H,0D6H,0D8H
  253. DB        0DAH,0DDH,0DFH,0E1H,0E3H,0E5H,0E7H,0E9H
  254. DB        0EAH,0ECH,0EEH,0EFH,0F1H,0F2H,0F4H,0F5H
  255. DB        0F6H,0F7H,0F8H,0F9H,0FAH,0FBH,0FCH,0FDH
  256. DB  0FDH,0FEH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
  257. DB  0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FEH,0FDH
  258. DB         0FDH,0FCH,0FBH,0FAH,0F9H,0F8H,0F7H,0F6H
  259. DB        0F5H,0F4H,0F2H,0F1H,0EFH,0EEH,0ECH,0EAH
  260. DB        0E9H,0E7H,0E5H,0E3H,0E1H,0DEH,0DDH,0DAH
  261. DB        0D8H,0D6H,0D4H,0D1H,0CFH,0CCH,0CAH,0C7H
  262. DB        0C5H,0C2H,0BFH,0BCH,0BAH,0B7H,0B4H,0B1H
  263. DB        0AEH,0ABH,0A8H,0A5H,0A2H,09FH,09CH,099H
  264. DB        096H,093H,090H,08DH,089H,086H,083H,080H
  265. DB        080H,07CH,079H,078H,072H,06FH,06CH,069H
  266. DB        066H,063H,060H,05DH,05AH,057H,055H,051H
  267. DB        04EH,04CH,048H,045H,043H,040H,03DH,03AH
  268. DB        038H,035H,033H,030H,02EH,02BH,029H,027H
  269. DB        025H,022H,020H,01EH,01CH,01AH,018H,016H
  270. DB        015H,013H,011H,010H,00EH,00DH,00BH,00AH       
  271. DB  09H,08H,07H,06H,05H,04H,03H,02H
  272. DB  02H,01H,00H,00H,00H,00H,00H,00H
  273. DB  0AH,0BH,0DH,0EH,10H,11H,13H,15H
  274. DB  16H,18H,1AH,1CH,1EH,20H,22H,25H
  275. DB  27H,29H,2BH,2EH,30H,33H,35H,38H
  276. DB 3AH,3DH,40H,43H,45H,48H,4CH,4EH
  277. DB 51H,55H,57H,5AH,5DH,60H,63H,66H

  278. DB 69H,6CH,6FH,72H,76H,79H,7CH,80H,21H  ;21H為         結束標志位

  279. END
復制代碼

所有資料51hei提供下載:
Protues.rar (68.45 KB, 下載次數: 23)
keil.rar (29.85 KB, 下載次數: 20)

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:1077459 發表于 2023-6-26 18:55 | 只看該作者
可以實現什么頻率,頻率選擇怎么樣
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产高清在线 | 在线观看一区 | 久久久成人网 | 日本免费小视频 | 日本小电影在线 | 日韩欧美视频在线 | 亚洲精品乱码久久久久久按摩观 | 亚洲精品在线观看视频 | 天天爱爱网 | 国产专区在线 | 国产成人福利 | 99久久精品国产一区二区三区 | 最新av在线播放 | 国产黄色大片在线观看 | 久久亚洲精品国产精品紫薇 | 国产a区 | 在线观看av网站 | 一区二区三区在线电影 | 精品99在线| 中文日本在线 | 欧美手机在线 | 国产一级视频在线 | 自拍偷拍亚洲欧美 | 国产一区二区电影 | 伊人春色成人 | 综合五月 | 嫩草影院黄| 精品日韩一区二区三区 | 老司机久久| 波多野结衣在线观看一区二区三区 | 成人国产a | 天堂在线一区 | 在线观看成人小视频 | 色综网 | 日本天堂视频在线观看 | 99久久免费精品国产男女高不卡 | 日韩一区二区在线视频 | 久久丝袜| 成人小视频在线免费观看 | 91免费观看| 日本高清在线一区 |