📄 lcd12232c.c.bak
字号:
//#include <pic.h>
//#include <pic1687x.h>
//#include "DJ485headB.h"
#include"config.h"
//定义:
extern bank1 char c485Buf[35];
void check_busy();
void LCD_Write_Com(unsigned char val);
void LCD_Write_Dat(unsigned char val);
void ioint();
void delayLCD(unsigned int time);
void LcdCout(unsigned char COUNT ) ;
void LCDCOUNTOVER (unsigned char COUNT);
void LcdFuc2(char CLen,const unsigned char *FData);
void LCDdelay1ms(uchar count);
//LCD显示用的数字缓存
unsigned char DispCout[1];
unsigned char timecount ;
void LCDdelay1ms(uchar count)
{
// int i,j;
uchar i,j;
for(i=0;i<count;i++)
for(j=0;j<130;j++)
;
}
//
void delayLCD(unsigned int time)
{
int s;
for(s=0;s<time;s++);
}
void check_busy(){
RS=0;RW=1; //按照上表,设定好读取LCD状态字的控制线。
do{
E=0;
E=1;
}while(Lcd_IO&0x80); //判断最高位状态,如果是1,则反复送E时续,直到LCD空闲
E=0;
SetLcd_IO=0;
//使IO口处于输出状态,为向LCD写数据作准备。
}
//写命令与数据
void LCD_Write_Com(unsigned char val)
{
check_busy(); //检查LCD是否空闲
RS=0;RW=0; //根据上表设定控制脚,CS1、2在check_busy();里事先有设定
E=1;
Lcd_IO=val; //E时续下降沿输入数据
asm("nop");
asm("nop");
E=0;
SetLcd_IO=0xff; //写完数据,立即把IO口设定成高阻,提高可靠性。
delayLCD(10);
// delay3();
}
void LCD_Write_Dat(unsigned char val)
{
check_busy();
RS=1;RW=0;
E=1;
Lcd_IO=val;
E=0;
SetLcd_IO=0xff;
delayLCD(10);
}
// 初始化函数
void ioint()
{
PORTA=0;
PORTD=0; //先清0 C、D口,避免干扰
SetLcd_CON =0B11100000; //把C口控制线设成输出。
SetLcd_IO=0x00; //D口输入。
}
//
void Lcdint() //显示屏初始化
{
ioint();
//delay3 的延时是300US
//delay1ms 0x10 是12MS 0A是 7.8MS 0X7F是100MS
//;FUNCTION SET 设定为八位并口模式
LCDdelay1ms(0X7F);
LCD_Write_Com(0x30);
//
// 要延时200USS
delayLCD(100);
LCD_Write_Com(0x30);
//;DISPON/OFF CONTROL 显示状态设定
//要延时200USS
delayLCD(100);
LCD_Write_Com(0X0F);
//;DISPLAY CLEAR 消除显示
//延时100MS
LCDdelay1ms(0x7f);
LCD_Write_Com(0X01);
//ENTRY MODE SET 进入设定点
LCD_Write_Com(0X06);
//延时10MS
LCDdelay1ms(0x7f);
}
void LcdCout(unsigned char KCOUNT )
{
switch ( KCOUNT )
{
case 0 : //可以直接输入数字
DispCout[1] =0XB0; break;
case 1 :
DispCout[1] = 0XB1;break ;
case 2 :
DispCout[1] =0XB2;break ;
case 3 :
DispCout[1] =0XB3;break ;
case 4 :
DispCout[1] =0XB4;break ;
case 5 :
DispCout[1] =0XB5;break ;
case 6 :
DispCout[1] =0XB6;break ;
case 7 :
DispCout[1] =0XB7; break ;
case 8 :
DispCout[1] =0XB8; break ;
case 9 :
DispCout[1] =0XB9; break ;
default: break ;
}
}
void LcdFuc2(char CLen,const unsigned char *FData)
{
char c;
LCD_Write_Com(0X01);
LCDdelay1ms(0x7f);
if(CLen<15)
{
LCD_Write_Com(0x80);
nop;
if (CLen != 0)
{
for (c = 0; c < CLen; c++)
{
LCD_Write_Dat(*FData++); // Send data
nop;
}
}
}
else if(CLen>14)
{
LCD_Write_Com(0x80);
for (c = 0; c < 14; c++)
{
LCD_Write_Dat(*FData++); // Send data
}
LCD_Write_Com(0X90);
for (c = 14; c < CLen; c++)
{
LCD_Write_Dat(*FData++); // Send data
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -