//0832åç§æ³¢åè¾åºæ¼ç¤º
//P1.1P1.0 = 00æ¶ æ£å¼¦æ³¢
//P1.1P1.0 = 01æ¶ é¯é½¿æ³¢
//P1.1P1.0 = 10æ¶ æ¹æ³¢
//P1.1P1.0 = 11æ¶ ä¸è§æ³¢
//éè¦è¿æ¥ç导线ï¼
//(1)è¯ç å¨Y0æ¥DAC0832çCS
//(2)P3.6å³XWRæåæ¥DAC0832çWR
//(3)8è¯çæ线è¿æ¥8æéçP0å£åDAC0832çD7-D0
//(4)串并转æ¢åºç+5væ¥DAC0832çåèçµåVrefæå
#include <reg51.h>
#include <ABSACC.H>//absacc.hæ¯C51ä¸ç»å¯¹å°å访é®å½æ°ç头æ件
#define daport XBYTE[0x8000]//å°daportå®ä¹ä¸ºå¤é¨I/Oå£ï¼å°å为8000Hï¼å74ls138çY0ææ
sbit P1_1=P1^1;
sbit P1_0=P1^0;
unsigned char i,j,k; bit updown; //ä¸è§æ³¢çä¸å/ä¸é
unsigned char code 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
void main(void)
{
updown=0;
i=128;
j=0;
while(1)
{
if (P1_1==1)
{
if (P1_0==0) //è¾åºå 空æ¯ä¸º25%çæ¹æ³¢
{
if (j<=40) i=255;//i=255æ¶è¾åºççµå为+5v
else if(j<=160) i=0;//i=0æ¶è¾åºççµå为-5v
else j=0;
}
else //è¾åº-5vâ+5vçä¸è§æ³¢
{
if (updown==0) //ä¸å
{
if (i==255) updown=1;
else i=i+5;//i++;
}
else //ä¸é
{
if (i==0) updown=0;//if(i==128) updown=0;i=128è¾åºççµå为0
else i=i-5;//i--;
}
}
}
else{
if (P1_0==0) //æ£å¼¦æ³¢
{
i=sinn[j];
if (j>=63) j=0;
}
else //é¯é½¿æ³¢
{
if (i==255) i=128;
else i++;
}
}
daport=i;
for (k=0;k<2;k++);
j++;
}
}
温馨提示:答案为网友推荐,仅供参考