欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 單片機頻率計設計(lcd1602顯示) 仿真+匯編程序 [打印本頁]

作者: xianren_0201    時間: 2019-6-22 20:43
標題: 單片機頻率計設計(lcd1602顯示) 仿真+匯編程序
T0用來定時,T1用來對1s內外來高電平計數

目前量程為0~65535Hz

可以通過對程序的些許修改使量程達到0~4,294,967,295Hz

本人現在大三,初學單片機
這是一次課程設計
歡迎各位牛人批評指正,傳授經驗

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


單片機源程序如下:
  1. /**************************************************************************************
  2. *                              簡易頻率儀設計                                                                                                  *                                                                                                                                             
  3. ***************************************************************************************/
  4.         ORG        00H
  5.         LJMP        MAIN
  6.         ORG                0BH
  7.         LJMP        T0_INT
  8.         ORG                2000H
  9.         T0COUNT        EQU                36H
  10.         LCDW        EQU                45H
  11.         LCDQ        EQU                46H
  12.         LCDB        EQU                40H
  13.         LCDS        EQU                41H
  14.         LCDG        EQU                42H
  15.         TEMP_L        EQU                43H
  16.         TEMP_H        EQU                44H        
  17.         RS          EQU          P2.6
  18.         RW          EQU          P2.5
  19.         E                  EQU          P2.7
  20.         ORG                        2000H
  21. MAIN:
  22.         MOV                 SP,#60H
  23.         LCALL                SET_T
  24.         LCALL                INIT_LCD
  25.         LCALL                LCDDISP1
  26.         SJMP                [        DISCUZ_CODE_1        ]nbsp;      
  27. /*****************************T0,T1設置***********************************************/
  28. SET_T:
  29.         MOV                        TMOD,#51H
  30.         MOV                        TH0,#3CH
  31.         MOV                        TL0,#0B0H
  32.         MOV                        TH1,#00H
  33.         MOV                        TL1,#00H
  34.         SETB                EA
  35.         SETB                TR0
  36.         SETB                TR1
  37.         SETB                ET0
  38.         RET
  39. /*****************************LCD初始化***********************************************/
  40. INIT_LCD:        
  41.         MOV                 P0,#01H                        ;清屏  
  42.         LCALL                LcdWriteCom   
  43.         MOV                 P0,#38H                         ;功能設置,DB4=1為8位數據接口,DB3=1為雙行顯示 DB2=0為5*7點陣   
  44.         LCALL                 LcdWriteCom   
  45.         MOV                 P0,#0CH                         ;顯示開關控制,DB2=1為開顯示,DB1=1為光標開,DB0=0為字符不閃爍   
  46.         LCALL                 LcdWriteCom   
  47.         MOV                 P0,#06H                         ;輸入方式設置,設置光標的移動方向,并指定整體顯示是否移動,DB1=1為增量方式,DB0=0為不以為
  48.         LCALL                 LcdWriteCom

  49.         RET
  50. /*****************************LCD第一行顯示程序***********************************************/
  51. LCDDISP1:
  52.         MOV                 P0,#80H                        ;第一行的開始位置   
  53.         LCALL                 LcdWriteCom
  54.         MOV                        DPTR,#TABLE1
  55.         MOV                 R1,#00H                   ;顯示table中的值  
  56. LOOP1: MOV                 A,R1                        ;到table取碼   
  57.         MOVC                 A,@A+DPTR   
  58.         LCALL                   LcdWriteData                  ;顯示到LCD
  59.         INC                 R1   
  60.         CJNE                 A,#00H,LOOP1                 ;是否到00H  
  61.         RET
  62. /*****************************LCD第二行顯示程序***********************************************/
  63. LCDDISP2:
  64.         MOV                 R3,LCDW        
  65.         CJNE                R3,#30H,GO_W
  66.         MOV                        LCDW,#20H
  67.         MOV                 R3,LCDQ        
  68.         CJNE                R3,#30H,GO_Q
  69.         MOV                        LCDQ,#20H
  70.         MOV                        R3,LCDB
  71.         CJNE                R3,#30H,GO_B
  72.         MOV                        LCDB,#20H
  73.         MOV                        R3,LCDS
  74.         CJNE                R3,#30H,GO_S
  75.         MOV                        LCDS,#20H
  76. GO_W:
  77.         MOV                 P0,#0C3H                        ;第二行的開始位置   
  78.         LCALL                 LcdWriteCom  
  79.         MOV                 A,LCDW
  80.         LCALL                LcdWriteData
  81. GO_Q:
  82.         MOV                 P0,#0C4H                        ;第二行的開始位置   
  83.         LCALL                 LcdWriteCom  
  84.         MOV                 A,LCDQ
  85.         LCALL                LcdWriteData        
  86. GO_B:        
  87.         MOV                 P0,#0C5H                        ;第二行的開始位置   
  88.         LCALL                 LcdWriteCom  
  89.         MOV                 A,LCDB
  90.         LCALL                LcdWriteData
  91. GO_S:
  92.         MOV                 P0,#0C6H                          
  93.         LCALL                 LcdWriteCom
  94.         MOV                 A,LCDS
  95.         LCALL                LcdWriteData
  96. GO_G:
  97.         MOV                 P0,#0C7H                          
  98.         LCALL                 LcdWriteCom
  99.         MOV                 A,LCDG
  100.         LCALL                LcdWriteData
  101.         MOV                 P0,#0C8H         
  102.         LCALL                 LcdWriteCom
  103.         MOV                        DPTR,#TABLE2
  104.         MOV                 R1,#00H                   ;顯示table中的值  
  105. LOOP2: MOV                 A,R1                        ;到table取碼   
  106.         MOVC                 A,@A+DPTR   
  107.         LCALL           LcdWriteData                  ;顯示到LCD
  108.         INC                 R1   
  109.         CJNE                 A,#00H,LOOP2                 ;是否到00H
  110.         RET
  111.          
  112. /*****************************LCD寫入命令***********************************************/
  113. LcdWriteCom:
  114.         CLR                 RS      
  115.         CLR                 RW   
  116.         CLR                 E   
  117.         LCALL                 DELAY   
  118.         SETB                E   
  119.         RET
  120. /*****************************LCD寫入數據***********************************************/
  121. LcdWriteData:  
  122.         
  123.         MOV                 P0,A
  124.         SETB                 RS   
  125.         CLR                 RW   
  126.         CLR                        E   
  127.         LCALL                 DELAY
  128.         SETB                 E
  129.         RET
  130. /*****************************頻率計算***********************************************/  
  131. HZ_CAL:
  132.         MOV                        R5,#00H
  133.         MOV                        R2,#00H
  134.         MOV                        R3,TH1
  135.         MOV                        R4,TL1
  136.         MOV                        R6,#27H
  137.         MOV                        R7,#10H
  138.         LCALL                DIV_CAL
  139.         MOV                        A,R4
  140.         ADD                        A,#30H
  141.         MOV                        LCDW,A
  142.         
  143.         MOV                        TEMP_H,R6
  144.         MOV                        TEMP_L,R7
  145.         MOV                        R5,#00H
  146.         MOV                        R2,#00H
  147.         MOV                        R3,TEMP_H
  148.         MOV                        R4,TEMP_L
  149.         MOV                        R6,#03H
  150.         MOV                        R7,#0E8H
  151.         LCALL                DIV_CAL
  152.         MOV                        A,R4
  153.         ADD                        A,#30H
  154.         MOV                        LCDQ,A

  155.         MOV                        TEMP_H,R6
  156.         MOV                        TEMP_L,R7
  157.         MOV                        R5,#00H
  158.         MOV                        R2,#00H
  159.         MOV                        R3,TEMP_H
  160.         MOV                        R4,TEMP_L
  161.         MOV                        R6,#00H
  162.         MOV                        R7,#64H
  163.         LCALL                DIV_CAL
  164.         MOV                        A,R4
  165.         ADD                        A,#30H
  166.         MOV                        LCDB,A

  167.         MOV                        TEMP_H,R6
  168.         MOV                        TEMP_L,R7
  169.         MOV                        R5,#00H
  170.         MOV                        R2,#00H
  171.         MOV                        R3,TEMP_H
  172.         MOV                        R4,TEMP_L
  173.         MOV                        R6,#00H
  174.         MOV                        R7,#0AH
  175.         LCALL                DIV_CAL
  176.         MOV                        A,R4
  177.         ADD                        A,#30H
  178.         MOV                        LCDS,A

  179.         MOV                        A,R7
  180.         ADD                        A,#30H
  181.         MOV                        LCDG,A
  182.         MOV                        T0COUNT,#00H
  183.         RET
  184. DIV_CAL:
  185. /**************************************************************************************
  186. *                              雙字節無符號除法                                                                                                  *
  187.                         R5R2R3R4/R6R7)=(R2)R3R4        余數R6R7                                                                                                                                                                  
  188. ***************************************************************************************/
  189.         
  190. NDIV42:        
  191.         MOV                A,R1
  192.         PUSH        ACC
  193.         MOV                B,#00H
  194. NDV421:
  195.         MOV                A,R2
  196.         CLR                C
  197.         SUBB        A,R7
  198.         MOV                R1,A
  199.         MOV                A,R5
  200.         SUBB        A,R7
  201.         MOV                R1,A
  202.         MOV                A,R5
  203.         SUBB        A,R6
  204.         JC                NDV422
  205.         MOV                R5,A
  206.         MOV                A,R1
  207.         MOV                R2,A
  208.         INC                B
  209.         SJMP        NDV421
  210. NDV422:
  211.         PUSH        B
  212.         MOV                B,#10H
  213. NDV423:
  214.         CLR                C
  215.         MOV                A,R4
  216.         RLC                A
  217.         MOV                R4,A
  218.         MOV                A,R3
  219.         RLC                A
  220.         MOV                R3,A
  221.         MOV                A,R2
  222.         RLC                A
  223.         MOV                R2,A
  224.         XCH                A,R5
  225.         RLC                A
  226.         XCH                A,R5
  227.         MOV                F0,C
  228.         CLR                C
  229.         SUBB        A,R7
  230.         MOV                R1,A
  231.         MOV                A,R5
  232.         SUBB        A,R6
  233.         JB                F0,NCV424
  234.         JC                NDV425
  235. NCV424:
  236.         MOV                R5,A
  237.         MOV                A,R1
  238.         MOV                R2,A
  239.         INC                R4
  240. NDV425:
  241.         DJNZ        B,NDV423
  242.         POP                ACC
  243.         CLR                OV
  244.         JNZ                NDV426
  245.         SETB        OV
  246. NDV426:
  247.         XCH                A,R2
  248.         MOV                R7,A
  249.         MOV                A,R5
  250.         MOV                R6,A
  251.         POP                ACC
  252.         MOV                R1,A
  253.         RET
  254. /*****************************延時程序***********************************************/
  255. DELAY:        MOV R7,#10
  256. D1:                MOV R6,#0F8H   
  257. D2:                DJNZ R6,D2   
  258.                 DJNZ R7,D1   
  259.                 RET
  260. /*****************************T0中斷服務程序***********************************************/        
  261. T0_INT:
  262.         MOV                        TH0,#3CH
  263.         MOV                        TL0,#0B0H
  264.         INC                        T0COUNT
  265.         MOV                        R2,T0COUNT
  266.         CJNE                R2,#20,OVER
  267.         CLR                        TR0
  268.         CLR                        TR1
  269.         LCALL                HZ_CAL        
  270.         LCALL                LCDDISP2
  271.         MOV                        T0COUNT,#00H
  272.         MOV                        TH0,#3CH
  273.         MOV                        TL0,#0B0H
  274.         MOV                        TH1,#00H
  275.         MOV                        TL1,#00H
  276.         SETB                TR0
  277.         SETB                TR1               
  278. OVER:
  279.         RETI         
  280. TABLE1:
  281.         DB                "Frequency:" , 00H
  282. TABLE2:
  283.         DB                "Hz" , 00H      
  284. END
復制代碼

所有資料51hei提供下載:
單片機課程設計_4.0.rar (71.49 KB, 下載次數: 94)



作者: peng521juan6    時間: 2019-7-1 08:34
MARK  學習了
作者: makaichuang123    時間: 2019-12-11 21:24
沒有仿真工程文件啊  打不開




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1