📄 lcd.c
字号:
#include "reg24le1.h"
#define F8 0X53
#define F12 0X6E
#define F16 0X54
#define F24 0X6F
#define F32 0X55
#define head 0XAA
//定义迪文液晶的各种操作
typedef unsigned char uchar;
typedef unsigned int uint;
//发送一字节
void uartsendB(unsigned char dat)
{
S0BUF=dat;
while(!TI0);
TI0=0;
}
//发送字符串
void uartsendS(uchar *p,uchar s)
{
uchar m;
for(m=0;m<s;m++)
{
uartsendB(*p);
p++;
}
}
void DwinW(uint x)
{
uartsendB(x >>8);
uartsendB(x);
}
void uartend() //发送帧结束符 cc 33 c3 3c
{
uartsendB(0xcc);
uartsendB(0x33);
uartsendB(0xc3);
uartsendB(0x3c);
}
//位置转换
void uartpos(uint x,uint y)
{
uartsendB(x>>8);
uartsendB(x);
uartsendB(y>>8);
uartsendB(y);
}
void uartp(uchar x,uchar y,char font)
{
x--;
y--;
if(font==F8)
uartpos(x<<3,y<<3);
else if(font==F12)
uartpos((x<<3)+(x<<2),(y<<3)+(y<<2));
else if(font==F16)
uartpos((x<<4),(y<<4));
else if(font==F24)
uartpos((x<<4)+(x<<3),(y<<4)+(y<<3));
else if(font==F32)
uartpos((x<<5),(y<<5));
}
void uartp1(uchar x,uchar y,char font)
{
x--;
y--;
if(font==F8)
uartpos(x<<2,y<<3);
else if(font==F12)
uartpos((x<<2)+(x<<1),(y<<3)+(y<<2));
else if(font==F16)
uartpos((x<<3),(y<<4));
else if(font==F24)
uartpos((x<<3)+(x<<2),(y<<4)+(y<<3));
else if(font==F32)
uartpos((x<<4),(y<<5));
}
//发送一字符
void Dwinchar(uchar x,uchar y, char font, char byte)
{
uartsendB(head);
uartsendB(font);
uartsendB(x/256);
uartsendB(x%256);
uartsendB(y/256);
uartsendB(y%256);
uartsendB(byte);
uartend();
}
//发送一串汉字
void prints(int x,int y,uchar font , uchar *s)
{
uartsendB(head); //帧头0xAA
uartsendB(font); //0x54=16点阵字符串,0x55=32点阵 0x6E=12点阵 0x6F=24点阵 0x98=任意点阵
uartsendB(x/256);
uartsendB(x%256);
uartsendB(y/256);
uartsendB(y%256);
while(*s!='\0') //发送字符串内容
{
uartsendB(*s);
s++;
}
uartend(); //发送帧结束符
}
//开背景灯
void DwinON(char x)
{
uartsendB(head);
if(x)
uartsendB(0x5e);
else
uartsendB(0x5f);
uartend();
}
//设置调色板
void DwinColor(unsigned int Fcolor,unsigned int Bcolor)
{
uartsendB(head);
uartsendB(0x40);
uartsendB(Fcolor >>8);
uartsendB(Fcolor);
uartsendB(Bcolor >>8);
uartsendB(Bcolor);
uartend();
}
void DwinColor1(uint Fcolor)
{
uartsendB(head);
uartsendB(0x42);
uartsendB(Fcolor >>8);
uartsendB(Fcolor);
uartend();
}
//清屏
void DwinClear(void)
{
uartsendB(head);
uartsendB(0x52);
uartend();
}
//显示光标
void DwinCursor(uchar font,uchar cursorEn,uint x ,uint y,uchar cursorWidth,uchar cursorHeight)
{
uartsendB(head);
uartsendB(0x44);
uartsendB(cursorEn);
uartp1(x,y,font);
uartsendB(cursorWidth);
uartsendB(cursorHeight);
uartend();
}
void Dwinrec(uint x1,uint y1,uint x2,uint y2)
{
uartsendB(head);
uartsendB(0x59);
uartpos(x1,y1);
uartpos(x2,y2);
uartend();
}
//填充
void Dwinfillw(uint x,uint y, uint x1, uint y1)
{
uartsendB(head);
uartsendB(0x5B);
uartpos(x,y);
uartpos(x1,y1);
uartend();
}
void Dwinclrw(uint x,uint y, uint x1,uint y1)
{
uartsendB(head);
uartsendB(0x5A);
uartpos(x,y);
uartpos(x1,y1);
uartend();
}
//进度条显示
void DwinJingdu(uint x,uint y,uint step)
{
prints(70,40,F24,"系统启动。。。");
if(step==199)
{step=200;
Dwinchar(x+240,y-20,F16,(step/2)/100+'0');
}
Dwinchar(x+252,y-20,F16,((step/2)%100)/10+'0');
Dwinchar(x+264,y-20,F16,(step/2)%10+'0');
Dwinchar(x+276,y-20,F16,'%');
DwinColor1(0x001f);
Dwinrec(x-2,y-2,x+202,y+14);
Dwinrec(x,y,x+200,y+12);
DwinColor(0x07e0,0x00);
Dwinfillw(x+1,y+1,x+1+step,y+11);
Dwinclrw(x+2+step,y+1,x+200,y+11);
prints(200,200,F16,"小江制作");
}
//波特率设置38400
void baudinint(unsigned int baud)
{
CLKCTRL=0X28;
CLKLFCTRL = 0x01;
P0DIR &= 0xF7; // P0.3 (TxD)输出
P0DIR |= 0x10; // P0.4 (RxD)输入
P0|=0x18;
S0CON = 0x50;
PCON |= 0x80; // 波特率倍增
WDCON |= 0x80; // 选定内部波特率发生器
if(baud==38400)
{
S0RELL = 0xF3; // 波特率38400
S0RELH = 0x03;
}
else if(baud==9600)
{
S0RELL = 0xCC; // 波特率9600
S0RELH = 0x03;
}
}
void dispword(void)
{
static uchar n=1;
prints(100,100,F32,"南华大学!");
n++;
n=n%5;
if(!n)
n=1;
DwinON(0);
}
void showstop(void)
{
prints(100,180,F32,"Stopping...");
}
void showplay(void)
{
prints(100,180,F32,"Playing...");
}
void showvol(char x)
{
prints(10,10,F16,"VOL:");
Dwinchar(50,10,F16,x+'0');
}
void shownext(void)
{
prints(100,180,F32,"Nextone...");
}
void showback(void)
{
prints(100,180,F32,"Lastone...");
}
void showtitle(unsigned char num,unsigned char m,unsigned char s)
{
prints(25,40,F32,"Easy Music Player");
prints(60,100,F16,"Name:");
Dwinchar(110,100,F16,num/100+'0');
Dwinchar(120,100,F16,(num%100)/10+'0');
Dwinchar(130,100,F16,num%10+'0');
prints(140,100,F16,".mp3");
prints(60,130,F16,"Time:");
Dwinchar(110,130,F16,m/10+'0');
Dwinchar(120,130,F16,m%10+'0');
Dwinchar(130,130,F16,':');
Dwinchar(140,130,F16,s/10+'0');
Dwinchar(150,130,F16,s%10+'0');
}
//根据当前的情况显示状态图形
void showstate(void)
{
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -