- #include<reg51.h>
- #define uint signed int
- #define uchar signed char
- uchar aa[]={"current voiltage :"};
- sbit lcden = P3^4;
- sbit lcdrs = P3^5;
- sbit START = P2^0;
- sbit CLK = P2^1;
- sbit EOC = P2^2;
- sbit OE = P2^3;
- sbit AA = P2^4;
- sbit BB = P2^5;
- sbit CC = P2^6;
- float v;
- void delay(uint ms) //延时函数
- {
- uchar i;
- while(ms--);
- {
- for(i<0;i<120;i++);
- }
- }
- void write_com(uchar com) //写命令函数
- {
- lcdrs=0;
- P0=com;
- delay(5);
- lcden=1;
- delay(5);
- lcden=0;
- }
- void write_data(uchar date) //写数据函数
- {
- lcdrs=1;
- P0=date;
- delay(5);
- lcden=1;
- delay(5);
- lcden=0;
- }
- void LCD1602_init() //1602初始化函数
- {
- lcden=0;
- write_com(0x38);
- write_com(0x0C);
- write_com(0x01);
- }
- void display (int v)
- {
- int shu,i;
- write_com(0x80);
- for(i=0;i<16;i++)
- {
- write_data(aa[i]);
- }
- write_com(0x80+0x46);
- shu=v/100;
- write_data(shu+'0');
- delay(5);
- write_data('.');
- delay(5);
- shu=v%100/10;
- delay(5);
- write_data(shu+'0');
- delay(5);
- shu=v%10;
- write_data(shu+'0');
- delay(5);
- write_data('V');
- }
- void main()
- {
- LCD1602_init();
- TMOD=0x02;
- TH0=0x14;
- TL0=0X14;
- IE=0X82;
- TR0=1;
- P2=0x0f; //选用通道0,CLK=1,START=1,EOC=1,OE=1.
- while(1)
- {
- START=0;
- START=1;
- START=0;
- while(EOC=0);
- OE=1;
- v=P1*1.0/255*500;
- display(v);
- OE=0;
- }
- }
- void Timer0() interrupt 1
- {
- CLK=!CLK;
- }
复制代码 |