📄 lcd.c
字号:
#define LCD_FUNC
#include "..\include\DSP281x_Device.h" // DSP281x Headerfile Include File
#include "..\include\LEU_Master_Test.h" //SelfDefine Headerfile Include File
#include "..\include\LCD.h"
#include "..\include\KEY.h"
//#include "../../zcq/flashbioszcqcfg.h"
//lcd func
void lcd_init(void)
{
lcd_ioinit();
LCD_RST_CLEAR=1;
delayms(20);
LCD_RST_SET=0x01;
delayms(40);
lcd_write_command(LCD_MODE);
delayms(1);
lcd_write_command(LCD_MODE);
delayms(1);
lcd_write_command(LCD_TURNON);
delayms(1);
lcd_write_command(LCD_CLEAR);
delayms(10);
lcd_write_command(LCD_SETENTERDOT);
delayms(1);
lcd_write_command(LCD_CURSOROFF);
delayms(1);
lcd_clear();
}
void lcd_write_command(uchar command)
{
LCD_RW_CLEAR=1;
LCD_RS_CLEAR=1;
LCD_D0_7_SET=(command)&0x00ff;
LCD_D0_7_CLEAR=(~command)&0x00ff;
LCD_E_SET=1;
delayus(1);
LCD_E_CLEAR=1;
delayus(20);
}
void lcd_write_data(uchar data)
{
LCD_RW_CLEAR=1;
LCD_RS_SET=1;
LCD_D0_7_SET=(data)&0x00ff;
LCD_D0_7_CLEAR=(~data)&0x00ff;
LCD_E_SET=1;
delayus(1);
LCD_E_CLEAR=1;
delayus(20);
}
void lcd_putchar(uchar * p,uchar x,uchar y,uchar length)// disp ascii
{
uchar addr,i;
if(x==1)
addr=0x80+y-1;
if(x==2)
addr=0x90+y-1;
if(x==3)
addr=0x88+y-1;
if(x==4)
addr=0x98+y-1;
lcd_write_command(addr);
for(i=0;i<length;i++)
{
lcd_write_data(*p);
p++;
}
}
void lcd_clearchar(uchar x,uchar y,uchar length)
{
uchar addr,i;
if(x==1)
addr=0x80+y-1;
if(x==2)
addr=0x90+y-1;
if(x==3)
addr=0x88+y-1;
if(x==4)
addr=0x98+y-1;
lcd_write_command(addr);
for(i=0;i<length;i++)
{
lcd_write_data(' ');
}
}
void lcd_readbusy(void)
{
Uint16 i=0;
EALLOW;
LCD_D0_7_DIR=0xff00 & LCD_D0_7_DIR;//as input
EDIS;
LCD_RW_SET=1;
LCD_RS_CLEAR=1;
LCD_E_SET=1;
delayus(1);
i=LCD_D0_7_DAT;
LCD_E_CLEAR=1;
while(i|0xff7f==0xffff);
EALLOW;
LCD_D0_7_DIR=0x00ff|LCD_D0_7_DIR;//as out
EDIS;
}
void lcd_ioinit(void)
{
EALLOW;
LCD_RW_DIR=0x01; // as OUT
LCD_RS_DIR=1;
LCD_E_DIR=1;
LCD_D0_7_DIR=0x00ff|LCD_D0_7_DIR;
LCD_RST_DIR=0x01;
EDIS;
LCD_RW_CLEAR=1; //拉低
LCD_RS_CLEAR=1; //
LCD_E_CLEAR=1; //
LCD_D0_7_CLEAR=0x00ff;//
LCD_RST_CLEAR=1; //
}
void lcd_clear(void)
{
lcd_write_command(LCD_CLEAR);
delayms(10);
//TSK_sleep(10);
}
void lcd_cursor(uchar x,uchar y)// cursor location
{
uchar addr;
if(x==1)
addr=0x80+y-1;
if(x==2)
addr=0x90+y-1;
if(x==3)
addr=0x88+y-1;
if(x==4)
addr=0x98+y-1;
lcd_write_command(addr);
}
void lcd_test()
{
uchar keyno = 0x01;
while(keyno!=0x80)
{
LCD_D0_7_DAT = keyno;
keyno = keyno<<1;
LCD_E_SET =1;
LCD_E_CLEAR=1;
LCD_RW_SET=1;
LCD_RW_CLEAR=1;
LCD_RS_SET=1;
LCD_RS_CLEAR=1;
LCD_RST_SET=1;
LCD_RST_CLEAR=1;
}
/*
LCD_D0_7_DIR = 0x007f;
LCD_D0_7_DAT = 0X0000;
LCD_D0_7_SET = 0X007F;
LCD_D0_7_CLEAR = 0X0000;
LCD_D0_7_TOG = 0X007F;
*/
}
//***************************************
void menufunc0(void)
{/*
uchar arrow;
if(pdpmenuflag==1)
{
arrow = 1;
pdpmenuflag = 0;
}
lcd_putchar((uchar *)"<---",arrow,3,4);
if((key_read()==DOWN)&&(arrow<5)&&(arrow>0))
{
arrow+=1;
lcd_clear();
}
if((key_read()==0xe7)&&(arrow<5)&&(arrow>0))
{
arrow-=1;
lcd_clear();
}
*/
// lcd_putchar((uchar *)"ABCDEFGH",2,1,16);
//old1menucount=menucount;
// lcd_putchar((uchar *)"欢迎使用",1,3,8);
// lcd_putchar((uchar *)"北京交大思诺科技",2,1,16);
// lcd_putchar((uchar *)"版本 1.0",3,3,8);
//delayms(2000);
}
//***************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -