久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 21789|回復: 2
打印 上一主題 下一主題
收起左側

第10章 TLC5615數模轉換器DAC

[復制鏈接]
跳轉到指定樓層
樓主
51單片機輕松入門—基于STC15W4K系列(C語言版)
李友全
編著:http://www.zg4o1577.cn/bbs/dpj-37954-1.html


第10章 數模轉換器DAC
1 D/A輸出電路圖
2 TLC5615基本測試實驗
3 TLC5615產生波形實驗
4 TLC5615播放音樂實驗
數模轉換就是將單片機輸出的數字信號轉換為模擬信號(比如正弦波、鋸齒波)

簡稱為D/A,實現數字信號轉換為模擬信號的器件稱為數模轉換器,簡稱DAC

DAC一般是由專用集成電路完成的。

1 D/A輸出電路圖
1號單片機與D/A輸出芯片TLC5615連接電路如圖所示 。

TLC5615的1、2、3腳用于與單片機進行通信(SPI接口),6腳是基準電壓輸入,
7腳是模擬信號輸出。圖中的MC1403是一個廉價的電壓基準芯片,簡單的說就是一 個穩壓精度比L7805之類更高的穩壓塊
2 TLC5615基本測試實驗

#include "STC15W4K.H" // 注意宏定義后面沒分號

#include
sbit CS=P5^5; sbit CLK=P4^0; sbit DIN=P3^4;
void DaConv(unsigned int value)
{
// 此函數內容固定,單片機晶振頻率在5-35MHz范圍內直接復制使用即可
}
void main()
{
unsigned int value; // 待轉換的數據
while(1)
{
value=511; // 這里輸入0--1023的數據觀察D/A轉換輸出電壓 DaConv(value); // 執行D/A轉換,無任何返回值。
}
}
實驗結果如表所示,輸出電壓X = 2·Vref·Value /1023。


3 TLC5615產生鋸齒波、三角波、正弦波實驗

例10.4 TLC5615產生1000Hz鋸齒波、三角波、正弦波,R/C時鐘22.1184MHz。


觀察上圖波形,橫軸是時間,可用單片機定時器定時中斷進行控制,縱軸是模擬電壓值, 用TLC5615進行D/A轉換輸出即可。
要讓TLC5615輸出鋸齒波、三角波、正弦波等波形,我們可以對波形的一個周期抽樣一些 點進行D/A轉換輸出,把抽樣點建立成表格,定時器每中斷一次查表轉換輸出一個值。

比如我們將正弦函數從0°~360°范圍內按10°一個步進值進行等分,可得0、10、20、

30、…340、350,共36個點,這就確定了表格數組大小為36個整數,

第1點輸出電壓值:511×sin(0)+512=512 // 511用于波形向上平移。 第2點輸出電壓值:511×sin(10)+512=601 // 511用于波形向上平移。 第3點輸出電壓值:511×sin(20)+512=687 // 511用于波形向上平移。

unsigned int code SinTable[] = // 正弦波表格
{

512,601,687,768,840,903,955,992,1015,1023,1015,992,955,903,840,768,687,601,512,

423,337,257,183,121,69,32,9,1,9,32,69,121,183,257,337,423,
};
主要程序代碼如下:

void Timer0() interrupt 1
{
static unsigned char counter=0;


P35=!P35;
//
觀察定時器定時時間用的
TH0=0xff;
//
TH0=0xff;
TL0=0xCD;
//
TL0=0x2c;
DaConv(SinTable[counter]);
//
D/A輸出
counter++;



counter%=36; // counter在0到36之間循環變化使波形循環輸出
}
void main()
{
Timer0_Init(); // 初始化并啟動定時器0
while(1); // 通過定時器0來控制產生電壓的時間間隔
}

當需要更換輸出波形時,只需要修改DaConv(SinTable[counter]);語句中的表格名稱即可,實測 D/A輸出波形如圖10-7所示。

4 TLC5615播放音樂實驗

將音樂文件(比如MP3文件)通過其它輔助軟件轉換成單片機內部的表格數組,然后通過不斷查 表+D/A的方式即可播放出音樂,通過調節TLC5615的輸入基準電壓就可調節輸出音量的大小。 主要代碼如下:

void Timer0() interrupt 1

{

static unsigned int counter=0; TH0=0xFE;

TL0=0x33;

DaConv(((unsigned int)wav[counter])<<1); // 將wav數組中的數據擴大2倍后寫入TLC5615 counter++; // 擴大2倍是為了使TLC5615的音頻輸出電壓范圍在0-2.5V之間 counter%=WAV_LEN; // counter在0到WAV_LEN-1之間循環變化使聲音循環播放

}

void main()

{

Timer0_Init(); // 初始化并啟動定時器0

while(1); // 通過定時器0來控制產生電壓的時間間隔

}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏7 分享淘帖 頂2 踩
回復

使用道具 舉報

沙發
ID:85598 發表于 2018-6-5 12:05 | 只看該作者
求教:“{ // 此函數內容固定,單片機晶振頻率在5-35MHz范圍內直接復制使用即可 }”具體內容,謝謝!
回復

使用道具 舉報

板凳
ID:685385 發表于 2020-12-17 11:18 | 只看該作者
“通過其它輔助軟件轉換成單片機內部的表格數組,然后通過不斷查 表+D/A的方式即可播放出音樂,通過調節TLC5615的輸入基準電壓就可調節輸出音量的大小”
這個其他輔助軟件什么意思?可以舉個詳細的例子嗎
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91久久久www播放日本观看 | 精品国产乱码一区二区三 | www.色.com| 亚洲综合色视频在线观看 | 亚洲国产成人av好男人在线观看 | 色性av| 视频在线观看一区 | 亚洲精品国产精品国自产在线 | 日韩一区精品 | 国产精品99久久久久久宅男 | 国产 日韩 欧美 制服 另类 | 美女黄网站| 在线日韩 | 久久激情网 | 日韩精品一二三 | 91精品国产综合久久精品 | 日日干日日色 | 91精品久久久久久久久久入口 | 久久久久久久久一区 | 亚洲色图第一页 | 97视频在线观看免费 | 在线观看黄色电影 | 欧美精品a∨在线观看不卡 欧美日韩中文字幕在线播放 | 高清国产一区二区 | 亚洲美女网站 | 欧美精品一区二区三区在线 | 一区二区国产在线观看 | 中文字幕一区二区三区不卡在线 | 在线欧美一区 | 中文字幕国产日韩 | 久久久91 | 久久一区二区三区四区五区 | 亚洲一级在线 | 在线观看中文视频 | 久久精品国产久精国产 | 精品1区2区3区4区 | 一区精品视频 | 成人精品一区二区三区中文字幕 | 成人a网| 亚洲视频一区在线 | 中文字幕电影在线观看 |