標題: 關于交流電壓表設計,現在有主程序,但是不理解,有沒有哪位仁兄幫忙分析 [打印本頁]
作者: 郭凱朝 時間: 2019-7-2 20:43
標題: 關于交流電壓表設計,現在有主程序,但是不理解,有沒有哪位仁兄幫忙分析
#include<reg51.h>//頭文件
#include<intrins.h>//庫文件
#define uchar unsigned char
#define uint unsigned int
sbit W1=P2^0;
sbit W2=P2^1;
sbit W3=P2^2;
sbit W4=P2^3;
/*ADC0809初始定義*/
sbit ST=P3^0;//ADC0809轉換開始控制
sbit OE=P3^2;//ADC0809輸出允許控制
sbit EOC=P3^1;//ADC0809轉換結束信號
sbit CLK=P3^3;//ADC0809轉換時鐘
uchar date; //數字電壓量
uchar code table1[]={
63,6,91,79,102,
109,125,7,127,
111,119,124,57,
94,121,113,118,
56,115,49,62,
110,64,128,0
};
//延時子函數
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
//顯示電壓值子函數
void display(uchar date)
{
uchar tab[3];
uint temp;
temp=(date*1.0/255)*500/1.41;
tab[0]=temp%10;
tab[1]=temp/10%10;
tab[2]=temp/100%10;
if(tab[2]==0)
P0=(0);
else
P0=(table1[tab[2]]); //再傳段碼
W1=0;
delay(1); //延遲時間2ms以內
W1=1;
if(tab[2]==0&&tab[1]==0)
P0=(0);
else
P0=(table1[tab[1]]); //再傳段碼
W2=0;
delay(1); //延遲時間2ms以內
W2=1;
P0=(table1[tab[0]]); //再傳段碼
W3=0;
delay(1); //延遲時間2ms以內
W3=1;
P0=(0); //再傳段碼
W4=0;;
delay(1); //延遲時間2ms以內
W4=1;
}
void main()//主函數
{
while(1)//大循環
{
ST=0;
ST=1; //獲得上升沿復位
ST=0; //獲得下降沿啟動轉換,同時ALE開鎖存
do
{
CLK=~CLK; //時鐘信號
}
while(EOC==0);//等待轉換結束,eoc=1結束
OE=1;//三態鎖存緩沖器打開
date=P1;//數字電壓信號輸出
OE=0;//三態鎖存緩沖器關閉
display(date);//調用液晶顯示電壓值子函數
}
}
作者: SURUBU1976 時間: 2022-2-23 08:46
原理圖?程序也不全
| 歡迎光臨 (http://m.raoushi.com/bbs/) |
Powered by Discuz! X3.1 |