導航:首頁 > 操作系統 > 單片機dac轉換原理圖及程序

單片機dac轉換原理圖及程序

發布時間:2023-09-22 23:39:29

⑴ 五一單片機與數模轉換晶元dac 0832的硬體連接如圖編寫輸出鋸齒波的程序

可以這樣,DAC0832是根據輸入的數字量,輸出相應的模擬量,鋸齒波是有規律的模擬量。

單片機內部程序可以通過演算法(規律計算或數組),定時生成一個數字量發送到DAC0832,使其輸出相應模擬量,即可。
例如鋸齒波是從0~3V,將0~3V分為若干個點(解析度),定時輸出每個點的數字量。

⑵ 用51單片機控制ISD1820語音晶元的原理圖及c程序或匯編程

#include<reg52.h>
code unsigned char seg7code[11]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,0x40}; //顯示段碼
void Delay(unsigned int tc) //顯示延時程序
{while( tc != 0 )
{unsigned int i;
for(i=0; i<100; i++);
tc--;}
}
sbit TMDAT =P3^1; //DS18B20的數據輸入/輸出腳DQ,根據情況設定
unsigned int sdata;//測量到的溫度的整數部分
unsigned char xiaoshu1;//小數第一位
unsigned char xiaoshu2;//小數第二位
unsigned char xiaoshu;//兩位小數
bitfg=1; //溫度正負標志
void dmsec (unsigned int count) //延時部分
{
unsigned char i;
while(count--)
{for(i=0;i<115;i++);}
}
void tmreset (void) //發送復位
{
unsigned char i;
TMDAT=0; for(i=0;i<103;i++);
TMDAT = 1; for(i=0;i<4;i++);
}
bit tmrbit (void) //讀一位//
{
unsigned int i;
bit dat;
TMDAT = 0;
i++;
TMDAT = 1;
i++; i++;//微量延時 //
dat = TMDAT;
for(i=0;i<8;i++);
return (dat);
}
unsigned char tmrbyte (void) //讀一個位元組
{
unsigned char i,j,dat;
dat = 0;
for (i=1;i<=8;i++)
{ j = tmrbit();dat = (j << 7) | (dat >> 1); }
return (dat);
}
void tmwbyte (unsigned char dat) //寫一個位元組
{
unsigned char j,i;
bit testb;
for (j=1;j<=8;j++)
{ testb = dat & 0x01;
dat = dat >> 1;
if (testb)
{ TMDAT = 0; //寫0
i++; i++;
TMDAT = 1;
for(i=0;i<8;i++); }

else
{TMDAT = 0; //寫0
for(i=0;i<8;i++);
TMDAT = 1;
i++; i++;}
}
}
void tmstart (void) //發送ds1820 開始轉換
{tmreset();//復位
dmsec(1);//延時
tmwbyte(0xcc);//跳過序列號命令
tmwbyte(0x44);//發轉換命令 44H,
}
void tmrtemp (void) //讀取溫度
{
unsigned char a,b;
tmreset ();//復位
dmsec (1);//延時
tmwbyte (0xcc);//跳過序列號命令
tmwbyte (0xbe);//發送讀取命令
a = tmrbyte ();//讀取低位溫度
b = tmrbyte (); //讀取高位溫度
if(b>0x7f) //最高位為1時溫度是負
{a=~a; b=~b+1; //補碼轉換,取反加一
fg=0; //讀取溫度為負時fg=0
}
sdata = a/16+b*16; //整數部分
xiaoshu1 = (a&0x0f)*10/16; //小數第一位
xiaoshu2 = (a&0x0f)*100/16%10;//小數第二位
xiaoshu=xiaoshu1*10+xiaoshu2; //小數兩位
}
void DS18B20PRO(void)
{tmstart();
//dmsec(5);//如果是不斷地讀取的話可以不延時 //
tmrtemp();//讀取溫度,執行完畢溫度將存於TMP中 //
}
void Led()
{
if(fg==1) //溫度為正時顯示的數據
{ P2=P2&0xef;
P0=seg7code[sdata/10]; //輸出十位數
Delay(8); P2=P2|0xf0; P2=P2&0xdf;
P0=seg7code[sdata%10]|0x80; //輸出個位和小數點
Delay(8); P2=P2|0xf0; P2=P2&0xbf;
P0=seg7code[xiaoshu1]; //輸出小數點後第一位
Delay(8); P2=P2|0xf0; P2=P2&0x7f;
P0=seg7code[xiaoshu2]; //輸出小數點後第二位
Delay(4); P2=P2|0xf0;
}
if(fg==0)//溫度為負時顯示的數據
{ P2=P2&0xef;
P0=seg7code[11]; //負號
Delay(8); P2=P2|0xf0; P2=P2&0xdf;
P0=seg7code[sdata/10]|0x80; //輸出十位數
Delay(8); P2=P2|0xf0; P2=P2&0xbf;
P0=seg7code[sdata%10]; //輸出個位和小數點
Delay(8); P2=P2|0xf0; P2=P2&0x7f;
P0=seg7code[xiaoshu1]; //輸出小數點後第一位
Delay(4); P2=P2|0xf0;
}
}
main()
{fg=1;
while(1)
{
DS18B20PRO();
Led();
}
}

⑶ 單片機喇叭dac發聲原理

單片機喇叭dac發聲原理:
在進行DAC輸出擾森的時候,我們顫乎也可同樣採用16位寬的DAC進行采樣,然後以44kHz的頻率將聲音信號轉化出來,這對於MCU上去操作DAC並非難事,只需要啟用一個16位寬的DAC和一個定時器即可,定時器用於控制聲茄李悉音輸出的頻率,如采樣率位44.1KHz,則按照該時鍾頻率輸出即可。

⑷ 求用單片機製作簡易信號發生器的程序以及電路圖

<p>運放選OP07就可以了,由於DAC0832是單電源供電的,只能產握喚生正記性波形,所以利用外部運放來段滑凱實讓余現負極性波形的產生</p>
<p></p>

⑸ 51單片機與AD轉換程序

#include<reg51.h>

#defineucharunsignedchar

#defineuintunsignedint

sbitwr=P2^6;

sbitrd=P2^7;

sbitadint=P2^5;

delay(uintz)

{

ucharw;

while(z--)

{

for(w=0;w<125;w++);

}

}

ad_star()

{

wr=1;

wr=0;

wr=1;

}

main()

{

uchara;

while(1)

{

ad_star();

while(adint);

rd=0;

a=P0;

delay(10);

rd=1;

if(a>0&a<=20){P3=0xc0;}

if(a>20&a<=40){P3=0xf9;}

if(a>40&a<=60){P3=0xa4;}

if(a>60&a<=80){P3=0xb0;}

if(a>80&a<=100){P3=0x99;}

if(a>100&a<=120){P3=0x92;}

if(a>120&a<=140){P3=0x82;}

if(a>140&a<160){P3=0xf8;}

if(a>160&a<=180){P3=0x80;}

if(a>180&a<=200){P3=0x90;}

if(a>200&a<=220){P3=0x88;}

if(a>220&a<=240){P3=0x83;}

if(a>240&a<=255){P3=0xc6;}

}

}

閱讀全文

與單片機dac轉換原理圖及程序相關的資料

熱點內容
androidgridview表格 瀏覽:602
壓縮怎麼eq閃 瀏覽:740
流密碼演算法openssl 瀏覽:262
怎麼數黃豆個數python 瀏覽:799
混沌序列加密的結論 瀏覽:224
最新脫單app哪個好 瀏覽:638
如何用自己電腦做伺服器做網頁 瀏覽:140
伺服器安全配置要考什麼證書 瀏覽:633
ipadpro可以編程 瀏覽:541
外國的程序員和中國的程序員 瀏覽:151
抖音小店app如何聯系客服 瀏覽:975
linux打開多個終端 瀏覽:500
linux中的命令 瀏覽:580
優化小米6相機演算法 瀏覽:259
ak47pdf 瀏覽:150
人與文化pdf 瀏覽:640
原子幣app在哪裡注冊的 瀏覽:530
php數組保存文件 瀏覽:227
無理的命令 瀏覽:511
問道手游解壓失敗是什麼原因 瀏覽:778