找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2605|回復(fù): 0
收起左側(cè)

單片機(jī)+TLC5628信號發(fā)生器Proteus仿真圖與程序

[復(fù)制鏈接]
ID:845605 發(fā)表于 2021-7-19 15:08 | 顯示全部樓層 |閱讀模式
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.png 51hei.png

單片機(jī)源程序如下:
#include <reg52.h>
#include <intrins.h>

/*定義I/O端口*/
sbit CLK = P0^0; //串行時鐘,下降沿有效
sbit DAT = P0^1; //串行數(shù)據(jù)
sbit LOAD = P0^7; //串行數(shù)據(jù)加載,下降沿有效
sbit LDAC = P0^3; //DAC更新鎖存控制,下降沿有效

/*函數(shù)申明*/
void delayms(unsigned char ms);
void TCL5628_Write(unsigned char addr, bit rng, unsigned char dat);
void Init_TLC5628();
void jichiWave();
void delay5us(void);   //誤差 0us
/*函數(shù)定義*/

/*延時函數(shù)*/
void delayms(unsigned char ms)
{
        unsigned char i;
        while(ms--)
        {
                for(i = 0; i < 250; i++)
                {
                        _nop_();
                        _nop_();
                        _nop_();
                        _nop_();
                }
        }        
}

void delay5us(void)   //誤差 0us
{
    unsigned char a;
    for(a=1;a>0;a--);
}


/*TCL5628 driver*/
void TCL5628_Write(unsigned char addr, bit rng, unsigned char dat)
{
        unsigned char n;
        // 發(fā)送通道地址
        n = 3;
        do
        {
                DAT = (bit)(addr & 0x02);
                addr <<= 1;
                CLK = 0;
                CLK = 1;
        }while(--n != 0);
        //發(fā)送RNG位
        DAT = rng;
        CLK = 0;
        CLK = 1;
        //發(fā)送8位DAC數(shù)據(jù)
        n = 8;
        do
        {
                DAT = (bit)(dat & 0x80);
                dat <<= 1;
                CLK = 0;
                CLK = 1;
        }while(--n != 0);
        
        //加載數(shù)據(jù)
        LOAD = 0;
//        delay5us();
        LOAD = 1;
//        delay5us();
        LDAC = 0;
//        delay5us();
        LDAC = 1;
}

/*初始化TLC5628*/
void Init_TLC5628()
{
        DAT = 1;
        CLK = 1;
        LDAC = 1;
        LOAD = 1;
}

///*方法一:采樣設(shè)計
//        TLC5628轉(zhuǎn)換一次大概要12.5us
//        即最高80KHz
//        但是用51單片機(jī),晶振為12MHz
//        最快產(chǎn)生一個方波為2us,即最高頻率為500KHz
//        
//        正弦波產(chǎn)生函數(shù)
//        用32個點
//*/
//void juchiWave()
//{
//        /*根據(jù)曲線光滑來選取采樣點*/
//        code unsigned char juchiTab[] =
//        {
//                0,10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160,170,180,190,200,210,220,230,240,250
//        };

//        unsigned char n;
//        for(n = 0; n < 25; n++)
//        {
//                TCL5628_Write(0,0,juchiTab[n]);
//                delayms(1);
//        }
//}

//void main()
//{
//        Init_TLC5628();
//        while(1)
//        {
//                juchiWave();
//        }
//        
//}

/*方法二:算法設(shè)計*/
void juchiwave()
{
      unsigned char n;
for(n=0;n<50;n++)
                                        {
  TCL5628_Write(0,0,n);
                delayms(1);
}
     }
void main()
{
        Init_TLC5628();
        while(1)
        {
                juchiWave();
        }
        
}

51hei.png

全部資料51hei下載地址:
信號發(fā)生器.zip (91.61 KB, 下載次數(shù): 21)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表