?? ex6_1.c
字號:
//程序:ex6_1.c
//功能:簡易數字電壓表程序
#include<reg51.h>
#define uchar unsigned char //無符號字符型數據預定義為uchar
uchar code led[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8E}; //定義0~F顯示碼
sbit P0_2=P0^2; //可尋址位定義
sbit P0_3=P0^3;
sbit P0_6=P0^6;
sbit P0_7=P0^7;
void sepr(unsigned char i); //把形式參數i的高低位分開,分別存放在全局變量chh,chl中
void disp(); //顯示chh,chl中的數據(兩位)
uchar chh,chl; //全局變量定義
void main() //主函數
{
uchar a;
unsigned char i;
while(1) {
P0_2=1;
for(a=0;a<50;a++); //延時
P0_2=0; //在P0.2引腳產生下降沿,START和ALE引腳產生上升沿,鎖存通道地址,所有內部寄存器清0
for(a=0;a<50;a++); //延時
P0_2=1; //在P0.2上產生上升沿,START上產生下降沿,A/D轉換開始
while(P0_3==0); //等待轉換完成,EOC=1表示轉換完成
P0_2=0; //P0_2=0,則OE=1,允許讀數
P1=0xff; //作為輸入口,P1口先置全1
i=P1; //讀入A/D轉換數據
sepr(i); //數據高低位分開
disp(); //顯示數據
}
}
//函數名:sepr
//函數功能: 將8位二進制數00~FFH轉換為0.0~5.0,低位和高位分別存在chl和chh中
//形式參數: i為A/D轉換后的8位二進制數
//返回值: chl中存放拆分后的低位、chh中存放拆分后的高位
void sepr( i) //拆分高位和低位
{
uchar ch;
ch=i;
chh=ch/51; //除以51得到高位
ch=ch%51; //取余運算
chl=ch*10/51; //再除以51,并擴大10倍,得到低位
}
//函數名:disp
//函數功能:顯示全局變量中chl和chh中的數字
//形式參數:無
//返回值:無
void disp()
{
uchar j;
P2=led[chl]; //顯示低位
P0_6 = 1;
P0_7 = 0;
for(j=0;j<100;j++); //延時
P2=led[chh]; //顯示高位
P0_6 = 0;
P0_7 = 1;
for(j=0;j<100;j++); //延時
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -