新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 用集成芯片MAX038實現智能信號發生器

        用集成芯片MAX038實現智能信號發生器

        作者: 時間:2016-11-18 來源:網絡 收藏
        單片機不僅在控制系統有很大的應用,在信號的產生方面也有獨特的應用。在現代電子學的各個領域中,常常需要高精度切頻率方便可調節的信號發生器,可以利用單片集成芯片實現函數信號發生器,這種信號發生器風產生多種波形信號,達到較高的頻率,且易于調試。在參考有關資料下,學習設計了利用集成芯片MAX038實現智能信號發生器。

        本文引用地址:http://www.104case.com/article/201611/315969.htm

        主要器件:

        1、AT89C52單片機芯片,用于控制信號發生芯片,實現不同波形的選擇和輸出。

        2、高頻波形發生器MAX038,具有高頻率、高精度、低輸出電阻、驅動能力強等特點。

        3、簡單的按鍵選擇電路。

        試驗流程圖:



        試驗電路圖:

        試驗程序代碼:

        //SignalGen.h程序

        #ifndef_SIGNALGEN_H//防止SignalGen.h被重復引用

        #define_SIGNALGEN_H

        #include //引用標準庫的頭文件

        #define uchar unsigned char

        uchar key;//按鍵值

        sbit A0 = P2^0;// MAX038的波形選擇位A0

        sbit A1 = P2^1;// MAX038的波形選擇位A1

        void delay();

        uchar keyscan();

        #endif

        //SignalGen.c程序

        #include "SignalGen.h"

        /*用于鍵消抖的延時函數*/

        void delay()

        {

        uchar i;

        for (i=400;i>0;i--);

        }

        /*鍵掃描函數*/

        uchar keyscan(void)

        {

        uchar scancode,tmpcode;

        P1 = 0xf0;//發全0行掃描碼

        if ((P1&0xf0)!=0xf0)//若有鍵按下

        {

        delay();//延時去抖動

        if ((P1&0xf0)!=0xf0)//延時后再判斷一次,去除抖動影響

        {

        scancode = 0xfe;

        while((scancode&0x10)!=0)//逐行掃描

        {

        P1 = scancode;//輸出行掃描碼

        if ((P1&0xf0)!=0xf0)//本行有鍵按下

        {

        tmpcode = (P1&0xf0)|0x0f;

        /*返回特征字節碼,為1的位即對應于行和列*/

        return((~scancode)+(~tmpcode));

        }

        else scancode = (scancode<<1)|0x01;//行掃描碼左移一位

        }

        }

        }

        return(0);//無鍵按下,返回值為0

        }

        /*主程序*/

        void main()

        {

        uchar key;

        while(1)

        {

        key = keyscan();//調用鍵盤掃描函數

        delay();

        switch(key)

        {

        case 0x11://第1行第1列,選擇正弦波輸出

        A0 = 0;

        A1 = 1;

        break;

        case 0x21://第1行第2列,選擇矩形波輸出

        A0 = 0;

        A1 = 0;

        break;

        case 0x41://第1行第3列,選擇三角波輸出

        A0 = 1;

        A1 = 0;

        break;

        default:break;

        }

        }

        }



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 定安县| 临清市| 陇南市| 项城市| 开封县| 广安市| 宜君县| 吴江市| 莒南县| 三亚市| 岑巩县| 永昌县| 藁城市| 两当县| 察哈| 吐鲁番市| 大安市| 都兰县| 湘潭市| 衡南县| 西乌珠穆沁旗| 威海市| 郯城县| 英吉沙县| 郓城县| 城步| 上虞市| 柳林县| 临高县| 鄂托克旗| 平定县| 定南县| 礼泉县| 台东市| 上蔡县| 大理市| 赫章县| 井研县| 罗平县| 靖边县| 类乌齐县|