標(biāo)題: DAC0832數(shù)模轉(zhuǎn)換輸出四種波形 [打印本頁(yè)]

作者: 吃糊杜薩    時(shí)間: 2018-12-5 23:16
標(biāo)題: DAC0832數(shù)模轉(zhuǎn)換輸出四種波形
#include <reg52.h>
#include <ABSACC.H>
#include <math.h>
#include <lcd12864.h>


#define DAC0832Addr 0x7FFF                                          //DAC0832地址


#define PI 3.14159


#define uchar unsigned char                                                //uchar代表無(wú)符號(hào)字符
#define uint unsigned int                                 //unit代表無(wú)符號(hào)整型數(shù)據(jù)類型


sbit Key1=P2^0;                                                                        //定義按鍵 - 用來(lái)選擇波形


char Wave_flag=0;                                                                  //波形標(biāo)志位 0-三角波 1-鋸齒波 2-方波 3-正弦波


void KeyScan(void);                                                                //按鍵掃描函數(shù)
void Waveform(void);                                                        //波形產(chǎn)生函數(shù)        
void TransformData(uchar c0832data);                        //數(shù)據(jù)轉(zhuǎn)換函數(shù) - DA輸出
void delay_ms(uint i);                                                        //延時(shí)函數(shù)




void main(void)
{   
        lcdinit();                        //lcd12864初始化        
        Clear_Screen();                //清屏        
        Show_Word();                 //初始化界面


        while(1)
        {        
                KeyScan();                //按鍵掃描
                Waveform();                //產(chǎn)波函數(shù)
                Display();
        }
}


void Waveform(void)
{
        uchar cDigital=0;        


        switch(Wave_flag)
        {
        /*-- 三角波 --*/
        case 0:   
                /*-- 周期為 (255 + 255) * 1 = 510ms --*/
                for(cDigital=0;cDigital<255;cDigital++)  //產(chǎn)生三角波下降沿
                   {  
                        delay_ms(1);
                        TransformData(cDigital);
        }
                for(cDigital=255;cDigital>0;cDigital--)  //產(chǎn)生三角波上升沿
                {  
                        delay_ms(1);
                        TransformData(cDigital);
                }
                break;
        /*-- 鋸齒波 --*/
        case 1:
                /*-- 周期為 255 * 2 = 510ms --*/  
                for(cDigital=255;cDigital>0;cDigital--)
                   {  
                        delay_ms(2);
                        TransformData(cDigital);
        }
                break;
        /*-- 方波 --*/        
        case 2:  
                /*-- 周期為 510ms --*/  
                cDigital=0;
                TransformData(cDigital);
                delay_ms(255);  


                cDigital=255;                  
                TransformData(cDigital);
                delay_ms(255);
                break;
        /*-- 正弦波 --*/        
        case 3:  
                /*-- 因?yàn)閟in函數(shù)占用時(shí)間未知 周期未確定 --*/
                 for(cDigital=0;cDigital<100;cDigital++)
                   {  
                        TransformData( 127 * sin( (2.0 * PI * (float)cDigital) / 100 ) + 127 );
                        delay_ms(1);
        }
                break;        
        }
}


void KeyScan(void)
{
           if(Key1 == 0)  
        {
                 Wave_flag ++;        
                 while(Key1 == 0);
        }
        if(Wave_flag>3)Wave_flag=0;
}


void TransformData(uchar c0832data)                                //數(shù)/模轉(zhuǎn)換函數(shù)
{
        *((uchar xdata*)DAC0832Addr)=c0832data;  
}


void delay_ms(uint i)  //延時(shí)ms函數(shù)
{
        uint j;


           for(;i>0;i--)
        {
                for(j=110;j>0;j--);
                KeyScan();        
        }
}



DAC0832.zip

97.39 KB, 下載次數(shù): 35, 下載積分: 黑幣 -5


作者: 254+123    時(shí)間: 2020-11-2 15:43
有圖嗎




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