uchar h1,date;
unsigned char adval;
void delay(uint z)
{
uchar y;
for(;z>0;z--)
for(y=5;y>0;y--);
}
/***********讀數模轉換數據********************************************************/
//請先了解ADC0832模數轉換的串行協議,再來讀本函數,主要是對應時序圖來理解,本函數是模擬0832的串行協議進行的
// 1 1 0 通道
// 1 1 1 通道
unsigned char ad0832read(bit SGL,bit ODD)
{
unsigned char i=0,value=0,value1=0;
SCL=0;
DO=1;
CS=0; //開始
SCL=1; //第一個上升沿
SCL=0;
DO=SGL;
SCL=1; //第二個上升沿
SCL=0;
DO=ODD;
SCL=1; //第三個上升沿
SCL=0; //第三個下降沿
DO=1;
for(i=0;i<8;i++)
{
SCL=1;
SCL=0; //開始從第四個下降沿接收數據
value<<=1;
if(DO)
value++;
}
for(i=0;i<8;i++)
{ //接收校驗數據
value1<<=1;
if(DO)
value1+=0x80;
SCL=1;
SCL=0;
}
CS=1;
SCL=1;
if(value==value1) //與校驗數據比較,正確就返回數據,否則返回0
return value;
return 0;
}
void penquan() //PWM調壓
{
date=ad0832read(1,0);
h1=(255-date);
out=0;
delay(h1);
if(h1>30) led1=1; else led1=0;
if(h1>70) led2=1; else led2=0;
if(h1>100) led3=1; else led3=0;
if(h1>130) led4=1; else led4=0;
if(h1>160) led5=1; else led5=0;
if(h1>180) led6=1; else led6=0;
if(h1>200) led7=1; else led7=0;
if(h1>220) led8=1; else led8=0;
out=1;
delay(date);
}
void main()
{
while(1)
{
penquan(); //給定個延時次數
}
}
51hei.png (19.72 KB, 下載次數: 44)
下載附件
2023-5-18 18:32 上傳
51hei.png (6.47 KB, 下載次數: 41)
下載附件
2023-5-18 18:32 上傳
Keil代碼下載:無
原理圖下載:無
PCB下載:
PCB.7z
(553.51 KB, 下載次數: 7)
2023-5-18 18:33 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|