📄 1602.txt
字号:
#include<reg52.h>
#include<absacc.h>
#include<stdio.h>
#include<stdlib.h>
#include<intrins.h>
#include<absacc.h>
#define ADC XBYTE[0xA000]
#define wc 0x9000
#define wd 0x9800
#define rc 0x9000
void delay5ms()
{
unsigned int TempCyc = 2000;
while(TempCyc--);
}
void waitLcd()
{
bit flag=1;
while(flag==1)
{
unsigned char temp;
temp=XBYTE[rc];
temp=temp>>7;
if (temp==0) flag=0;
}
}
void WC_Lcd(bit isCheck,char c)
{
if (isCheck==1) waitLcd();
XBYTE[wc]=c;
}
void WD_Lcd(char c)
{
waitLcd();
XBYTE[wd]=c;
}
void LcdInit()
{
delay5ms();
delay5ms();
WC_Lcd(0,0x38);
delay5ms();
WC_Lcd(0,0x38);
delay5ms();
WC_Lcd(0,0x38);
delay5ms();
WC_Lcd(1,0x38);
WC_Lcd(1,0x08);
WC_Lcd(1,0x01);
WC_Lcd(1,0x06); // 显示光标移动设置
WC_Lcd(1,0x0C); // 显示开及光标设置
}
void displayOneChar(unsigned char idata X, unsigned char idata Y, unsigned char idata DData)
{if(X>=0x10)Y=1;
Y &= 0x1;
X &= 0xF;
if (Y) X |= 0x40;
X |= 0x80;
WC_Lcd(0,X);
WD_Lcd(DData);
}
unsigned char idata lbuf[7]={0,0,0,0},n,c;
sbit p=P2^1;
main()
{unsigned long idata input,b;
ADC=0x00;
LcdInit();//清屏
if(p==1){
b=(unsigned long)(ADC);
c=ADC;
input=b*500/256;
lbuf[0]=input/1000;//存十位
lbuf[1]=(input%1000)/100;//存个位
lbuf[2]=(input%100)/10;//存小数点后的第一位
lbuf[3]=(input%100)%10;
lbuf[4]=c/100;
lbuf[5]=(c%100)/10;
lbuf[6]=c%10;
displayOneChar(5, 0,0x30+lbuf[0] );//输出十位
displayOneChar(6, 0,0x30+lbuf[1] );//输出电压值的个位
displayOneChar(7, 0,0x2E );//输出小数点
displayOneChar(8, 0,0x30+lbuf[2] );//输出电压值小数点后的第一位
displayOneChar(9, 0,0x30+lbuf[3] );
displayOneChar(10, 0,0x56 );
displayOneChar(0, 0,0x30+lbuf[4] );
displayOneChar(1, 0,0x30+lbuf[5] );
displayOneChar(2, 0,0x30+lbuf[6] );}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -