#include #include #define uchar unsigned char #define uint unsigned int #define RS PA4 #define RW PA5 #define EN PA6 void init(void); void write_com(uchar com); void write_dat(uchar dat); void delay_ms(uint q); void message(uchar *p); void left(void); uchar table1[]="AD CONVERTER"; uchar table2[]="V= . "; int ada,num1,qian,bai,shi,ge; float num; uint mega16_ad() { uint addata; ADMUX=0; ADCSR=0X80; ADCSR|=BIT(ADSC); while(!(ADCSR&(BIT(ADIF)))); addata=ADCL; addata=addata+ADCH*256; return addata; } void main() { DDRA|=0x70; DDRB=0xff; init(); DDRA&=~BIT(PA0); PORTA&=~BIT(PA0); while(1) { message(table1); write_com(0x80+0x42); ada=mega16_ad(); num=(((float)ada)/1024)*5; num1=(int)(num*1000); qian=num1/1000; bai=num1%1000/100; shi=num1%1000%100/10; ge=num1%10; table2[3]=qian+48; table2[5]=bai+48; table2[6]=shi+48; table2[7]=ge+48; message(table2); write_com(0x80+0x03+0x10); } } void left(void) { uchar j; for(j=0;j<16;j++) { write_com(0x18); delay_ms(5); } } void message(uchar *p) { while(1) { if(*p=='\0') break; write_dat(*p); delay_ms(5); p++; } } void init(void) { PORTA&=~BIT(5);//RW=0; PORTA&=~BIT(6);//EN=0; write_com(0x38); write_com(0x01); write_com(0x0c); write_com(0x06); write_com(0x80+0x02); } void write_com(uchar com) { PORTA&=~BIT(4);//RS=0; PORTB=com; delay_ms(5); PORTA|=BIT(6);//EN=1; delay_ms(5); PORTA&=~BIT(6);//EN=0; } void write_dat(uchar dat) { PORTA|=BIT(4);//RS=1; PORTB=dat; delay_ms(5); PORTA|=BIT(6);//EN=1; delay_ms(5); PORTA&=~BIT(6);//EN=0; } void delay_ms(uint q) { unsigned int m,n; for(m=q;q--;q>0) for(n=(4*143-2);n>0;n--); }