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

📄 lcdexper.c

📁 AVR智能车灯控制系统,实现一些车灯的自动控制,还是多功能性,大家参考一下.
💻 C
字号:
#include <iom16v.h>
#include <macros.h>

#define uchar unsigned char
#define uint unsigned int

#define DB PORTA
/******************************************************************** */
#define	SETBIT(x,y) (x|=(1<<y))      //set bit y in byte x
#define	CLRBIT(x,y) (x&=(~(1<<y)))   //clear bit y in byte x
#define	CHKBIT(x,y) (x&(1<<y))       //check bit y in byte x
/******************************************************************** */
#define	RS	 0
#define	RW	 1
#define	E	 2
#define	PSB	 3
#define	RST	 4

unsigned flash char Chanping1[]={"简易信号采集系统"};
unsigned flash char jieguo_1[]={"南方医科大学"};
unsigned flash char jieguo_2[]={"生物医学工程学院"};
unsigned flash char jieguo_3[]={"2005级影像工程"};
unsigned flash char jieguo_4[]={"欧阳斌"};

//***************延时*********************************/
void Delay(uint t)
{
  uint i=0;
  for(i=0;i<=t;i++);
}

void  delay_ms(unsigned int t)
{
    unsigned char t2=200;
	while(t--)while(t2--);   
}  

void port_init(void)
{
 	PORTA = 0xFF;
 	DDRA  = 0xFF;
 	PORTB = 0xFF;
 	DDRB  = 0xFF; 	
}

/*-----------------------------------------------------
  状态检查函数,判断是否处于忙状态
-------------------------------------------------------*/
void  Check_Busy(void)
{
 	unsigned char dat;
 	CLRBIT(PORTB,RS);  //RS=0
 	SETBIT(PORTB,RW);  //RW=1
 	DDRA=0x00;			// portA as input
 	do
 	{
 	   	SETBIT(PORTB,E);
		CLRBIT(PORTB,E);
    }
 	while (PINA&0x80);
}
//**********************写命令到LCD***************************/

void Write_Command(uchar cmdcode)
{
  Check_Busy();
  DDRB=0xff;
  CLRBIT(PORTB,RS);//RS=0;
  CLRBIT(PORTB,RW);//RW=0;
  DDRA=0xff;
  DB=cmdcode;
  Delay(1);//Delay(1);
  SETBIT(PORTB,E);//E=1;
  Delay(1);//Delay(1);Delay(1);
  CLRBIT(PORTB,E);//E=0;
}
//**************************写数据到LCD*************************/
void Write_Data(uchar datacode)
{
  Check_Busy();
  DDRB=0xff;
  SETBIT(PORTB,RS);//RS=1;
  CLRBIT(PORTB,RW);//RW=0;
  DDRA=0xff;
  DB=datacode;
  Delay(1);//Delay(1);
  SETBIT(PORTB,E);//E=1;
  Delay(1);//Delay(1);Delay(1);
  CLRBIT(PORTB,E);//E=0;
}
//**************************初始化LCD***********************/
void Initial_LCD(void) 
{    
  Delay(10);
  Write_Command(0x30);//30H--基本指令操作 
  Delay(5);
  Write_Command(0x0c);//开显示,关光标,不闪烁.
  Delay(10);
  Write_Command(0x02);
  Delay(10);
  Write_Command(0x06);//指定在资料写入或读取时,光标的移动方向,DDRAM的地址计数器(AC)加1。
  Delay(10);
  Write_Command(0x01);//清除显示
  Delay(10);
  Write_Command(0x80);//光标复位
} 

//*************************写一串字符到LCM**************************/
void Write_String(unsigned flash char datacode[])
{
  uchar i=0;
  while(datacode[i])
  {
    Write_Data(datacode[i]);
    i++;
    if(i==0xff)break;
  }
}
/**********************设置坐标*****************/
void Location_XY(uchar x,uchar y)
{
  switch(y)
  {
    case 0:
      y=0x80;break;
    case 1:
      y=0x90;break;
    case 2:
     y=0x88;break;
    case 3:
      y=0x98;break;
    default:
      y=0x80;
  }
  x=x&0x07;
  Write_Command(x+y);
}
//************************在(x,y)处显示字符串string*************/
void Write_String_atXY(uchar x,uchar y,unsigned flash char string[])
{
  Location_XY(x,y);
  Write_String(string);
}

//***********清屏******************************/
void Clear_Lcd( void )
{
         uchar i,j;
         Write_Command(0x34);
         Write_Command(0x36);
         for(i=0;i<32;i++)
         {
                 Write_Command(0x80|i);
                 Write_Command(0x80);
                 for(j=0;j<32;j++)
                    Write_Data(0);
         }
}

//***************清除“文字”函数**********************/
void LcmClearTXT( void )
{
         unsigned char i;
         Write_Command(0x30);
         Write_Command(0x80);
         for(i=0;i<64;i++)
         Write_Data(0x20);
}

void LcmClearBMP( void )
{
	unsigned char i,j;
	Write_Command(0x34);
	Write_Command(0x36);
	for(i=0;i<32;i++)
	{
		Write_Command(0x80|i);
		Write_Command(0x80);
		for(j=0;j<32;j++)
		Write_Data(0);
	}
}
void PutBMP(unsigned flash char *puts)
{          
	unsigned int x=0,y=0;
	unsigned char i,j;
	Write_Command(0x34);
	Write_Command(0x36);
	for(i=0;i<32;i++)  
	{
		Write_Command(0x80|i);
		Write_Command(0x80);  
		for(j=0;j<16;j++)    
		{                     
			Write_Data(puts[x]); 
			x++;
		}
		y=x-16; 
		for(j=0;j<16;j++)    
		{                    
			Write_Data(puts[y+512]);	 
			y++;
		}
	}  
} 

//*******************显示初始界面******************************/
void StartView(void)
{
Write_String_atXY(0,1,Chanping1);
delay_ms(3000);
//Delay(50000);
}

unsigned flash char bmp8[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x00,0x0F,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF8,0x00,0x7F,0xC0,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0x07,0xFF,0xF0,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x1F,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,
0xFF,0xFF,0xFF,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,
0xFF,0xFF,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,
0xFF,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,
0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xC0,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xE0,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0xFF,0xFF,0xFF,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,
0xFF,0xFF,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,
0xFF,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,
0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xFF,
0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFF,0xFF,0xF0,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xF0,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xE0,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xFC,0x01,0xFF,0xC0,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xF8,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x70,0x30,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x11,0x08,0x48,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x11,0x08,0x84,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x11,0x08,0x84,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x11,0x08,0xFC,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x11,0x08,0x84,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x11,0x08,0x84,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,
0x08,0x84,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};

void main(void)
{ port_init(); 	
  SETBIT(PORTB,PSB);//PSB=1;
  SETBIT(PORTB,RST);//RST=1;
  LcmClearTXT();
  Initial_LCD();
  StartView();
   LcmClearTXT();
  while(1)
  {
    Write_String_atXY(1,0,jieguo_1);  
    delay_ms(600);
	/*Write_String_atXY(0,1,Chanping1);
	 delay_ms(10000);*/
    Write_String_atXY(0,1,jieguo_2);  
    delay_ms(600);    
    Write_String_atXY(0,2,jieguo_3);  
    delay_ms(600);    
    Write_String_atXY(2,3,jieguo_4);  
    delay_ms(2000);
	LcmClearTXT();
	LcmClearBMP(); 
	PutBMP(bmp8);
	delay_ms(6000);
	LcmClearBMP(); 
	LcmClearTXT();
}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -