×
单片机 > 单片机程序设计 > 详情

DDS技术的数控信号发生器51单片机控制程序

发布时间:2020-06-06 发布时间:
|

;***************************************************** 
;       基于DDS技术的数控信号发生器控制程序          ; 
;              正弦波1Hz-10MHZ                       ; 
;              单片机 STC12C5410AD                   ;       
;              AD9850  50MHZ晶振                     ; 
;*****************************************************             

;***************************************************** 
;                      端口定义                      ; 
;***************************************************** 
            SCLK  BIT     P3.2;液晶串行操作时钟口 
            SID   BIT     P3.3;数据输入口 
            CS    BIT     P3.4;液晶使能 0禁 
            LB    BIT     P3.5;背光灯   0亮 
             
            KW1   BIT     P1.2;功能、确认键 
            KW2   BIT     P1.1;修改、返回键 
            KW3   BIT     P1.0;加键 
            KW4   BIT     P3.7;减键 
             
            LED1  BIT     P1.7;跳频 
            LED2  BIT     P1.6;扫频 
            LED3  BIT     P3.0;点频 
            LED4  BIT     P3.1;相移 
             
            DATAS BIT     P1.3;AD9850 数据口 
            FQ_UD BIT     P1.5;AD9850 使能 
            W_CLK BIT     P1.4;AD9850 移位时钟 
             
;***************************************************** 
;                     内存定义                       ;    
;*****************************************************                     
            L0    DATA    21H;算法数据缓冲单元 
            L1    DATA    22H; 
            L2    DATA    23H; 
            L3    DATA    24H; 
            L4    DATA    25H; 
            L5    DATA    26H; 
            L6    DATA    27H; 
            L7    DATA    28H; 
             
            SSDIS DATA    39H;闪烁暂存单元 
             
            DIS7  DATA    37H;频率显示单元 
            DIS6  DATA    36H;DIS7-DIS0 
            DIS5  DATA    35H;高-低 
            DIS4  DATA    34H; 
            DIS3  DATA    33H; 
            DIS2  DATA    32H; 
            DIS1  DATA    31H; 
            DIS0  DATA    30H; 
             
            PHASE DATA    3CH;相移控制字 
             
            CON3  DATA    3BH;频率控制字 
            CON2  DATA    3AH;CON3-CON0 
            CON1  DATA    39H;高-低 
            CON0  DATA    38H; 
             
            IT03  DATA    3DH;0.3s定时中断 
             
            GNCDT DATA    3EH;功能菜单标志 
            MSXZT DATA    3FH;模式选择标志 
            FSXZT DATA    40H;方式选择标志 
            XWZLT DATA    41H;相位增量标志 
            PLSZT DATA    42H;频率设置标志 
              
            JDIS5 DATA    4FH;扫频     
            JDIS4 DATA    4EH;间隔 
            JDIS3 DATA    4DH;存储 
            JDIS2 DATA    4CH;单元 
            JDIS1 DATA    4BH; 
            JDIS0 DATA    4AH; 
             
            LCON3 DATA    53H;扫频 
            LCON2 DATA    52H;频率终值 
            LCON1 DATA    51H; 
            LCON0 DATA    50H; 
             
            ZCON3 DATA    57H;扫频 
            ZCON2 DATA    56H;频率增量 
            ZCON1 DATA    55H; 
            ZCON0 DATA    54H; 
             
            FCON3 DATA    5BH;扫频 
            FCON2 DATA    5AH;频率初值 
            FCON1 DATA    59H; 
            FCON0 DATA    58H; 
             
            RCON3 DATA    5FH;频率 
            RCON2 DATA    5EH;控制字 
            RCON1 DATA    5DH;暂存单元 
            RCON0 DATA    5CH; 
             
            PHCON1 DATA   44H;相位增量 
            PHCON0 DATA   43H; 
             
            PHDIS4 DATA    49H;相位显示单元  
            PHDIS3 DATA    48H; 
            PHDIS2 DATA    47H; 
            PHDIS1 DATA    46H; 
            PHDIS0 DATA    45H; 
             
            ZHLIANG0 DATA   60H 
            ZHLIANG1 DATA   61H 
            ZHLIANG2 DATA   62H 
            ZHLIANG3 DATA   63H 
             
;******************************************************             
;                 中断及入口程序                      ; 
;******************************************************             
            ORG     0000H 
            LJMP    START 
            ORG     0003H 
            RETI 
            ORG     000BH 
            LJMP    INTT0 
            ORG     0013H 
            RETI 
            ORG     001BH 
            RETI 
            ORG     0023H 
            RETI 
            ORG     002BH 
            RETI 
             
;****************************************************** 
;                主程序入口                           ; 
;******************************************************            
START:       
            MOV     R1,#20H 
            MOV     R7,#60H 
            CLR     A 
CLEAR:      MOV     @R1,A 
            INC     R1 
            DJNZ    R7,CLEAR             
            MOV     P0,#0FFH 
            MOV     P1,#0FFH 
            MOV     P2,#0FFH 
            MOV     P3,#0FFH 
            CLR     CS 
            MOV     IT03,#06H 
            MOV     6FH,#0AH 
            LCALL   SETUP          ;LCD初始化 
            LCALL   BEGINLCD       ;开机界面 
             
            CLR     W_CLK          ;AD9850初始化 
            CLR     FQ_UD          ;  
            LCALL   SETUP_AD9850   ; 
             
            MOV     CON0,#96H      ;默认频率值 
            MOV     CON1,#4FH      ;125MHZ,1000HZ,863CH 
            MOV     CON2,#01H      ;50MHZ,1000HZ,014F96H 
            MOV     CON3,#00H      ; 
             
            MOV     TMOD,#01H      ;计数器0 方式1 
            MOV     TL0,#0B0H      ;50ms 
            MOV     TH0,#3CH       ;定时 

ADDPLAY:    LCALL   SEND9850       ;写入AD9850                                 
            LCALL   CON_DIS        ;控制字转频率字 
            LCALL   DISPLCD        ;频率显示 
            LCALL   DELAY10ms 
            SETB    LB 
                         
MAIN:        
             
            CLR     LED1 
            JNB     KW1,GNCD0 
            JNB     KW3,CSDPADD0 
            JNB     KW4,CSDPSUBB0 
            LJMP    MAIN             
             
GNCD0:      LJMP    GNCD             
CSDPADD0:   LCALL   CSDPADD 
            LJMP    MAIN 
CSDPSUBB0:  LCALL   CSDPSUBB 
            LJMP    MAIN 
             
;********************************************* 
;           AD9850控制程序                   ; 
;********************************************* 
;初始化DDS 
SETUP_AD9850:CLR    W_CLK  
             CLR    FQ_UD  
             SETB   W_CLK 
             CLR    W_CLK 
             SETB   FQ_UD 
             CLR    FQ_UD 
             RET 
              
;发送数据到AD9850 
SEND9850:    CLR    FQ_UD 
             MOV    A,CON0 
             LCALL  SEND_8DATA 
             MOV    A,CON1 
             LCALL  SEND_8DATA 
             MOV    A,CON2 
             LCALL  SEND_8DATA 
             MOV    A,CON3 
             LCALL  SEND_8DATA  
             MOV    A,#000B 
             LCALL  SEND_8DATA 
             SETB   FQ_UD 
             CLR    FQ_UD 
             RET 

;发送数据到AD9850(相移) 
SEND9850PH:  CLR    FQ_UD 
             MOV    A,CON0 
             LCALL  SEND_8DATA 
             MOV    A,CON1 
             LCALL  SEND_8DATA 
             MOV    A,CON2 
             LCALL  SEND_8DATA 
             MOV    A,CON3 
             LCALL  SEND_8DATA  
              
             MOV    A,PHASE 
             RLC    A 
             RLC    A 
             RLC    A 
             ANL    A,#0F8H  
             LCALL  SEND_8DATA 
             SETB   FQ_UD 
             CLR    FQ_UD 
             RET 

SEND_8DATA:   
             MOV    C,ACC.0 
             MOV    DATAS,C 
             SETB   W_CLK 
             CLR    W_CLK 
             MOV    C,ACC.1 
             MOV    DATAS,C 
             SETB   W_CLK 
             CLR    W_CLK 
             MOV    C,ACC.2 
             MOV    DATAS,C 
             SETB   W_CLK 
             CLR    W_CLK 
             MOV    C,ACC.3 
             MOV    DATAS,C 
             SETB   W_CLK 
             CLR    W_CLK 
             MOV    C,ACC.4 
             MOV    DATAS,C 
             SETB   W_CLK 
             CLR    W_CLK 
             MOV    C,ACC.5 
             MOV    DATAS,C 
             SETB   W_CLK 
             CLR    W_CLK 
             MOV    C,ACC.6 
             MOV    DATAS,C 
             SETB   W_CLK 
             CLR    W_CLK 
             MOV    C,ACC.7 
             MOV    DATAS,C 
             SETB   W_CLK 
             CLR    W_CLK 
             RET 
;********************************************* 
;              液晶显示程序                  ; 
;********************************************* 
;开机界面              
BEGINLCD:    CLR    LB              
             MOV    A,#80H 
             LCALL  WRITE_COM 
             MOV    DPTR,#CHINESE1 
             LCALL  WRITE_HZ7 
             MOV    A,#90H 
             LCALL  WRITE_COM 
             MOV    DPTR,#CHINESE2 
             LCALL  WRITE_HZ7 
             LCALL  DELAY1s 
             LCALL  DELAY1s 
             LCALL  DELAY1s 
              
             MOV    A,#80H 
             LCALL  WRITE_COM 
             MOV    DPTR,#CHINESE3 
             LCALL  WRITE_HZ7 
             MOV    A,#90H 
             LCALL  WRITE_COM 
             MOV    DPTR,#CHINESE4 
             LCALL  WRITE_HZ7 
             LCALL  DELAY1s 
             LCALL  DELAY1s 
             LCALL  DELAY1s 
              
             MOV    A,#80H 
             LCALL  WRITE_COM 
             MOV    DPTR,#CHINESE4 
             LCALL  WRITE_HZ7 
             MOV    A,#90H 
             LCALL  WRITE_COM 
             MOV    DPTR,#CHINESE5 
             LCALL  WRITE_HZ7 
             LCALL  DELAY1s 
             LCALL  DELAY1s 
             LCALL  DELAY1s 
              
SINF:        MOV    A,#80H 
             LCALL  WRITE_COM 
             MOV    DPTR,#CHINESE6 
             LCALL  WRITE_HZ7 
             SETB   LB 
             RET 
              
;频率值显示程序              
DISPLCD:      
                 
                            
             MOV    A,DIS7                           
             CJNE   A,#00H,DIS7PD  
             MOV    DIS7,#0AH 
             MOV    A,DIS6                          
             CJNE   A,#00H,DIS6PD  
             MOV    DIS6,#0AH             
             MOV    A,DIS5                         
             CJNE   A,#00H,DIS5PD  
             MOV    DIS5,#0AH              
             MOV    A,DIS4                         
             CJNE   A,#00H,DIS4PD  
             MOV    DIS4,#0AH              
             MOV    A,DIS3                          
             CJNE   A,#00H,DIS3PD  
             MOV    DIS3,#0AH             
             MOV    A,DIS2                         
             CJNE   A,#00H,DIS2PD  
             MOV    DIS2,#0AH              
             MOV    A,DIS1 
             CJNE   A,#00H,DIS1PD 
             MOV    DIS1,#0AH 
             LJMP   DIS0PD 
              
DIS7PD:      LJMP   LCD3              
DIS6PD:      ;CJNE   A,#0AH,DIS7PD 
             ;LJMP   LCD2 
             LJMP   LCD3              
DIS5PD:      LJMP   LCD2              
DIS4PD:      LJMP   LCD2              
DIS3PD:      ;CJNE   A,#0AH,LCD2 
             ;LJMP   LCD1 
             LJMP   LCD2    

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
51单片机CO2检测显示程序解析