📄 display.c
字号:
/********************************************************************
* 程序功能 : 中央运算单元测试 LCD 现实单元
*
* 应用软件 : KEIL C
*
* 版 本 : KEIL 8.02
*
* 硬 件 : STC89C58RD+
*
* 创建时间 : 2007-09-28
*
* 创 建 人 : 吕坤
*
********************************************************************/
/* 说 明 :
这里已经定义好了lcd的数据输出针脚,现在默认是使用P0口,如果需要修改,请打开diaplay.h文件自行修改
外部调用时可以使用以下方法:
例:
charadds(123); LCD显示 123
WriteDataLCD('-') LCD现实 -
WriteCommandLCD(0XC0); 将光标指定到第二行第一个字符处开始显示
WriteCommandLCD(0X06); 将光标指定到第一行第一个字符处开始显示
WriteCommandLCD(0x01); 显示清屏
*/
#include<reg52.h>
#include<math.h>
#define LCD_Data P1 //LCD数据与控制线
sbit LCD_RS=P2^2; //液晶控制
sbit LCD_RW=P2^1; //液晶写入
sbit LCD_E=P2^0; //液晶使能
unsigned int place[6];
void Delay5Ms(void); //命令延时程序
void LCDInit(void); //LCD初始化程序
void charadds(unsigned int a) ; //将整形数据拆解成char数组并送显
void WriteDataLCD(unsigned char WDLCD); //想LCD发送数据
void WriteCommandLCD(unsigned char WCLCD); //向LCD发送命令
/********************LCD初始化**********************/
void LCDInit(void)
{
LCD_Data = 0x00;
WriteCommandLCD(0x38);
Delay5Ms();
WriteCommandLCD(0x38); //显示模式设置,开始要求每次检测忙信号
WriteCommandLCD(0x08); //关闭显示
WriteCommandLCD(0x06); // 显示光标移动设置
WriteCommandLCD(0x01); //显示清屏
WriteCommandLCD(0x0C); // 显示开及光标设置
}
/********************LCD命令执行********************/
void WriteCommandLCD(unsigned char WCLCD)
{
Delay5Ms();
LCD_Data = WCLCD;
LCD_RS = 0;
LCD_RW = 0;
LCD_E = 1;
Delay5Ms();
LCD_E = 0;
}
/********************LCD数据发送********************/
void WriteDataLCD(unsigned char WDLCD)
{
Delay5Ms();
LCD_Data = WDLCD;
LCD_RS = 1;
LCD_RW = 0;
LCD_E = 1;
Delay5Ms();
LCD_E = 0;
}
/********************延时***************************/
void Delay5Ms(void)
{
unsigned int TempCyc = 3000;
for(;TempCyc>0;TempCyc--);
}
/********************整形转char型并送显**************/
void charadds(unsigned int a)
{
unsigned long c,p=0;
if(a==0)
{
WriteDataLCD('0');
return ;
}
c=a/1000000000;
if(c!=0)
{
WriteDataLCD(c+0x30); //将转换后的数字送入LCD显示
p=1;
}
c=(a%1000000000)/100000000;
if(c!=0 || p==1)
{ //将转换后的数字送入LCD显示
WriteDataLCD(c+0x30); //c+30 是为了使LCD现实字符型的数字符号,这里将个位数字转换成了asc码
p=1;
}
c=(a%100000000)/10000000;
if(c!=0 || p==1)
{
WriteDataLCD(c+0x30); //将转换后的数字送入LCD显示
p=1;
}
c=(a%10000000)/1000000;
if(c!=0 || p==1)
{ //将转换后的数字送入LCD显示
WriteDataLCD(c+0x30);
p=1;
}
c=(a%1000000)/100000;
if(c!=0 || p==1)
{
WriteDataLCD(c+0x30); //将转换后的数字送入LCD显示
p=1;
}
c=(a%100000)/10000;
if(c!=0 || p==1)
{
WriteDataLCD(c+0x30); //将转换后的数字送入LCD显示
p=1;
}
c=(a%10000)/1000;
if(c!=0 || p==1)
{
WriteDataLCD(c+0x30); //将转换后的数字送入LCD显示
p=1;
}
c=(a%1000)/100;
if(c!=0 || p==1)
{
WriteDataLCD(c+0x30); //将转换后的数字送入LCD显示
p=1;
}
c=(a%100)/10;
if(c!=0 || p==1)
{
WriteDataLCD(c+0x30); //将转换后的数字送入LCD显示
}
c=a%10+0x30;
WriteDataLCD(c); //将转换后的数字送入LCD显示
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -