?? main.c
字號:
/*注意:程序下載到DPY-1實驗板單片機后
一定要使SW DIP1的開關(guān)脫離ON檔。或者直接將下載線從實驗板上拔下!
因為下載線接在I/O口P1.5,P1.6,P1.7上,下載線的電平將會影響測量結(jié)果*/
#include <reg52.h>
code unsigned char seg7code[10]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //顯示段碼
sbit int1=P3^3; //定義管腳功能
sbit cs=P3^2;
sbit wr=P3^6;
sbit rd=P3^7;
void Delay(unsigned int tc) //顯示延時程序
{while( tc != 0 )
{unsigned int i;
for(i=0; i<100; i++);
tc--;}
}
unsigned char adc0804( void ) //讀AD0804子程序
{
unsigned char addata,i;
rd=1;wr=1;int1=1; //讀ADC0804前準備
P1=0xff;
cs=0;wr=0;wr=1; //啟動ADC0804開始測電壓
while(int1==1); //查詢等待A/D轉(zhuǎn)換完畢產(chǎn)生的INT信號
rd=0; //開始讀轉(zhuǎn)換后數(shù)據(jù)
i=i; //無意義語句,用于延時等待
i=i; //用于等待ADC0804讀數(shù)完畢
addata=P1;//讀出的數(shù)據(jù)賦與addate
rd=1; //讀數(shù)完畢
cs=1; //
return(addata);//返回最后讀出的數(shù)據(jù)
}
unsigned int datpro(void)//ADC0804讀出的數(shù)據(jù)處理
{
unsigned char x;
unsigned int dianyah,dianyal; //用于存儲讀出數(shù)據(jù)的高字節(jié)和低字節(jié)
unsigned int dianya=0; //存儲最后處理完的結(jié)果 注意數(shù)據(jù)類型
for(x=0;x<10;x++) //將10次測得的結(jié)果存儲在dianya中
{
dianya=adc0804()+dianya;
}
dianya=dianya/10; //求平均值
dianyah=dianya&0xf0; //屏蔽低四位
dianyah=dianyah>>4; //右移四位 取出高四位
dianyal=dianya&0x0f; //屏蔽高四位 取出低四位
dianya=dianyal*20+dianyah*320; //最后的結(jié)果是一個四位數(shù),便于顯示
return(dianya);//返回最后處理結(jié)果
}
void Led()
{ unsigned int date;
date=datpro(); //調(diào)用數(shù)據(jù)處理最后結(jié)果
P2=P2&0xef;
P0=seg7code[date/1000]|0x80; //輸出個位數(shù)和小數(shù)點
Delay(8);
P2=P2|0xf0;
P2=P2&0xdf;
P0=seg7code[date%1000/100]; //輸出小數(shù)點后第一位
Delay(8);
P2=P2|0xf0;
P2=P2&0xbf;
P0=seg7code[date%100/10]; //輸出小數(shù)點后第二位
Delay(8);
P2=P2|0xf0;
P2=P2&0x7f;
P0=seg7code[date%10]; //輸出小數(shù)點后第三位
Delay(8);
P2=P2|0xf0;
}
main()
{
while(1)
{
Led(); //只需調(diào)用顯示函數(shù)
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -