1、ADC(LCD)轉換
ADC0804寫入時序圖
ADC0804讀取時序圖
sbit RS=P2^0 ; //P1.0之代稱為RS
sbit RW=P2^1 ; //P1.1之代稱為RW
sbit E=P2^2 ; //P1.2之代稱為E
sbit ADCRD=P3 ^0 ; //設定P3.0為ADCRD的功能接腳
sbit ADCWR=
2、P3 ^1 ; //設定P3.1為ADCWR的功能接腳
char code *keycode[]={"0","1","2","3","4","5","6","7","8","9"};
char code *ptr ;
char code *digi[]={"DIGI:0.0000"};
int i,j,k,b[5],c=1;
long a; //設定為長整數
void main()
{
EA=1 ; //接受中斷請求之服務
IT0=1 ; // 偵測負緣觸發動作
EX0=1 ; // 啟動INT0
// start first
3、ADC
ADCWR=0 ; ADCWR= 1 ;
for(;;) ;
}
void external0(void ) interrupt 0
{
ADCRD=0 ;
a=P0 ;
a=a*196;
Command(0x3f) ; //採用8位元資料存取/雙列字/5*10點矩陣字型
Command(0xe) ; //顯示器ON/游標被顯示在位址計數器
Command(0x80) ; //設定DD RAM位址為0 -> 第一行的第一位置
if(c==1)
4、 {
ptr=digi[0] ;
while(*ptr!=0) //若其資料不為零則
Data(*ptr++); //把資料送到LCD去顯示
c--;
}
b[0]=a/10000;
a=a%10000;
b[1]=a/1000;
a=a%1000;
b[2]=a/100;
a=a%100;
b[3]=a/10;
a=a%10;
b[4
5、]=a;
for(i=0;i<=4;i++)
{
j=i;
if (i>=1) j++;
Command(0x85+j) ;
ptr=keycode[b[i]] ; //找出所按的鍵碼值之位址
while(*ptr!=0) //若其資料不為零則
Data(*ptr++); //把資料送到LCD去顯示
}
ADCRD=1 ; // start next ADC
ADCWR=0 ; ADCWR= 1 ;
}