⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd.c

📁 菜鸟,详细NRF24E1运用,程序,电路
💻 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 + -