📄 display.c
字号:
#include <reg52.h>
#define LCD_Data P0 //LCD数据与控制线
sbit LCD_RS=P2^2; //液晶控制
sbit LCD_RW=P2^1; //液晶写入
sbit LCD_E=P2^0; //液晶使能
extern void Delay(long int time);
void WriteCommandLCD(unsigned char WCLCD);
void WriteDataLCD(unsigned char WDLCD);
/*******************************以下是显示驱动******************************/
void LCDInit(void) //LCM初始化
{
LCD_Data = 0x00;
WriteCommandLCD(0x38);
Delay(50);
WriteCommandLCD(0x38); //显示模式设置,开始要求每次检测忙信号
WriteCommandLCD(0x08); //关闭显示
WriteCommandLCD(0x06); // 显示光标移动设置
WriteCommandLCD(0x01); //显示清屏
WriteCommandLCD(0x0f); // 显示开及光标设置
}
void WriteCommandLCD(unsigned char WCLCD)
{
Delay(50);
LCD_Data = WCLCD;
LCD_RS = 0;
LCD_RW = 0;
LCD_E = 1;
Delay(50);
LCD_E = 0;
}
//读状态
void WriteDataLCD(unsigned char WDLCD)
{
Delay(50);
LCD_Data = WDLCD;
LCD_RS = 1;
LCD_RW = 0;
LCD_E = 1; //-----!!!问题一直出在这里!!!
Delay(50);
LCD_E = 0;
}
void charadds(unsigned long a)
{
unsigned long c,p=0;
c=a/1000000000;
if(c!=0)
{
WriteDataLCD(c+0x30);
p=1;
}
c=(a%1000000000)/100000000;
if(c!=0 || p==1)
{
WriteDataLCD(c+0x30);
p=1;
}
c=(a%100000000)/10000000;
if(c!=0 || p==1)
{
WriteDataLCD(c+0x30);
p=1;
}
c=(a%10000000)/1000000;
if(c!=0 || p==1)
{
WriteDataLCD(c+0x30);
p=1;
}
c=(a%1000000)/100000;
if(c!=0 || p==1)
{
WriteDataLCD(c+0x30);
p=1;
}
c=(a%100000)/10000;
if(c!=0 || p==1)
{
WriteDataLCD(c+0x30);
p=1;
}
c=(a%10000)/1000;
if(c!=0 || p==1)
{
WriteDataLCD(c+0x30);
p=1;
}
c=(a%1000)/100;
if(c!=0 || p==1)
{
WriteDataLCD(c+0x30);
p=1;
}
c=(a%100)/10;
if(c!=0 || p==1)
{
WriteDataLCD(c+0x30);
}
c=a%10+0x30;
WriteDataLCD(c);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -