//p 1.1p 1.0 = 00正弦波
//p 1.1p 1.0處的鋸齒波= 01
//p 1.1p 1.0 = 10處的方波
//p 1.1p 1.0 = 11三角波
//要連接的電線:
//(1)解碼器Y0連接到DAC0832的CS。
//(2)P3.6即XWR插孔連接到DAC0832的WR。
//(3)8芯電纜連接8排針的P0口和DAC0832的D7-D0。
//(4)串並轉換區的+5v連接到DAC0832的參考電壓Vref插孔。
# include & ltreg 51 . h & gt;
# include & ltABSACC。H & gt//absacc.h是C51中絕對地址訪問函數的頭文件。
#define daport XBYTE[0x8000]//如果將daport定義為地址為8000H的外部I/O端口,則74ls138的Y0有效。
sbit p1_1=p1^1;
sbit p1_0=p1^0;
無符號字符I,j,k;bit updown//三角波的上升/下降
無符號字符代碼sinn[64]={
198,204,210,216,222,228,233,237,242,245,249,251,253,255,255,255,
255,254,252,250,247,243,239,235,230,224,219,213,207,201,194,188,
181,175,169,163,158,152,147,143,139,136,133,131,129,128,128,128,
129,130,132,135,138,142,146,151,156,162,168,174,180,186,193,199
};//正弦的值在128-255之間,所以輸出的正弦幅度為0-5v。
無效總管(無效)
{
up down = 0;
I = 128;
j = 0;
while(1)
{
if (P1_1==1)
{
If (P1_0==0) //輸出占空比為25%的方波。
{
if(j & lt;= 40)I = 255;當//i=255時,輸出電壓為+5v。
else if(j & lt;= 160)I = 0;//當I = 0時,輸出電壓為-5v。
否則j = 0;
}
Else //輸出-5v-+5v的三角波。
{
If (updown==0) //上升
{
if(I = = 255)up down = 1;
else I = I+5;//i++;
}
否則//丟棄
{
if(I = = 0)up down = 0;//if(I = = 128)up down = 0;I=128輸出電壓0。
else I = I-5;//I-;
}
}
}
否則{
If (P1_0==0) //正弦波
{
I = sinn[j];
if(j & gt;= 63)j = 0;
}
Else //鋸齒波
{
if(I = = 255)I = 128;
else i++;
}
}
da port = I;
for(k = 0;k & lt2;k++);
j++;
}
}