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

📄 lcd6610.c

📁 你熟悉QT吗?Linux系统上领先的GUI
💻 C
字号:

#include<iom16v.h>

#define set_lcd_data  (PORTB|=(1<<5))
#define clr_lcd_data  (PORTB&=~(1<<5))
#define set_lcd_clk   (PORTB|=(1<<7))
#define clr_lcd_clk   (PORTB&=~(1<<7))
#define set_lcd_cs    (PORTB|=(1<<3))
#define clr_lcd_cs    (PORTB&=~(1<<3))
#define set_lcd_reset (PORTB|=(1<<4))
#define clr_lcd_reset (PORTB&=~(1<<4))


 #define LCD_CMD_SWRESET	0x01
 #define LCD_CMD_SLEEPOUT	0x11
 #define LCD_CMD_DISPON		0x29
 #define LCD_CMD_BSTRON		0x03 
 #define LCD_CMD_MADCTL		0x36  
  /*next is a data byte*/
 #define MADCTL_HORIZ		0x48    
 #define LCD_CMD_COLMOD		0x3A
 /*第8步是02,256色*/
 #define LCD_CMD_INVON		0x21
 #define LCD_CMD_RGBSET		0x2D
 #define LCD_CMD_SETCON		0x25
    
 #define LCD_CMD_SLEEPIN	0x10
 #define LCD_CMD_CASET		0x2A
 #define LCD_CMD_PASET		0x2B
 #define LCD_CMD_RAMWR		0x2C
 #define MADCTL_VERT		0x68


unsigned char Bmp004[]=
{
/*------------------------------------------------------------------------------
  源文件 / 文字 : www.smart-io.com
  宽×高(像素): 128×16
  字模格式/大小 : 单色点阵液晶字模,横向取模,字节倒序/256字节
  数据转换日期  : 2004-5-27 2:04:32
------------------------------------------------------------------------------*/
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,0x0C,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xEB,0xEB,0xEB,0x00,0x7C,0x7F,0x3C,0x77,0x3E,0x00,0x0E,0x3C,0x00,0x38,0x3C,0x7F,
0x49,0x49,0x49,0x00,0x42,0x92,0x42,0x4C,0x08,0xFE,0x08,0x42,0x00,0x44,0x42,0x92,
0x49,0x49,0x49,0x00,0x02,0x92,0x78,0x04,0x08,0x00,0x08,0x42,0x00,0x02,0x42,0x92,
0x55,0x55,0x55,0x00,0x3C,0x92,0x44,0x04,0x08,0x00,0x08,0x42,0x00,0x02,0x42,0x92,
0x55,0x55,0x55,0x00,0x40,0x92,0x42,0x04,0x08,0x00,0x08,0x42,0x00,0x02,0x42,0x92,
0x22,0x22,0x22,0x06,0x42,0x92,0x42,0x04,0x08,0x00,0x08,0x42,0x06,0x44,0x42,0x92,
0x22,0x22,0x22,0x06,0x3E,0xB7,0xFC,0x1F,0x30,0x00,0x3E,0x3C,0x06,0x38,0x3C,0xB7,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
};

const unsigned char Bmp_ascii[]=
{
/*------------------------------------------------------------------------------
  源文件 / 文字 : a ~Z
  宽×高(像素): 5*7
  字模格式/大小 : 单色点阵液晶字模,纵向取模,字节倒序/44字节
  数据转换日期  : 2004-7-31 2:36:43
------------------------------------------------------------------------------*/
0x7E,0x81,0x81,0x81,0x7E,
0x00,0x82,0xFF,0x80,0x00,
0xC6,0xA1,0x91,0x89,0x86,
0x42,0x81,0x89,0x89,0x76,
0x30,0x2C,0x22,0xFF,0x20,
0x4F,0x89,0x89,0x89,0x71,
0x7E,0x89,0x89,0x89,0x72,
0x03,0x01,0xF9,0x07,0x01,
0x76,0x89,0x89,0x89,0x76,
0x4E,0x91,0x91,0x91,0x7E,

0x28,0x54,0x54,0x78,0x40,
0x01,0x7F,0x48,0x48,0x30,
0x38,0x44,0x44,0x4C,0x00,
0x30,0x48,0x49,0x7F,0x40,
0x38,0x54,0x54,0x58,0x00,
0x48,0x7E,0x49,0x49,0x01,
0x3A,0x55,0x55,0x53,0x21,
0x41,0x7F,0x08,0x48,0x70,
0x00,0x44,0x7D,0x40,0x00,
0x40,0x44,0x44,0x3D,0x00,
0x41,0x7F,0x10,0x68,0x4C,
0x00,0x41,0x7F,0x40,0x00,
0x7C,0x04,0x7C,0x04,0x78,
0x7C,0x04,0x04,0x78,0x00,
0x00,0x38,0x44,0x44,0x38,
0x42,0x7E,0x52,0x12,0x0C,
0x0C,0x12,0x52,0x7E,0x42,
0x44,0x7C,0x48,0x04,0x04,
0x4C,0x54,0x54,0x64,0x00,
0x04,0x3F,0x44,0x40,0x00,
0x3C,0x40,0x40,0x7C,0x40,
0x0C,0x30,0x60,0x30,0x0C,
0x0C,0x70,0x1C,0x70,0x0C,
0x44,0x6C,0x10,0x6C,0x44,
0x02,0x4E,0x50,0x70,0x0E,
0x00,0x64,0x54,0x4C,0x44
};

 
void LCD_write(unsigned char data,unsigned char dc);
void LCD_contrast(unsigned char data);
void lcd_ascii(char *s,unsigned char len);
void lcd_color(unsigned char bkg,unsigned char text);
void lcd_window(unsigned char xp,unsigned char yp,unsigned char xe,unsigned char ye);
void lcd_gotoxy(unsigned char x, unsigned char y);
void lcd_bar(unsigned char len,unsigned char val,unsigned char bkgcol,unsigned char fillcol);
unsigned char lcd_bkg_color;
unsigned char lcd_text_color;
unsigned char lcd_x;
unsigned char lcd_y;

	 

/***********LCD WRITE******************/
/**********基础程序直接调用即可*********/
void LCD_write(unsigned char data,unsigned char dc) 
     {
	  unsigned char temp;

      temp=0;
	  clr_lcd_data;    
	  clr_lcd_clk;

	  if (dc) set_lcd_data;  /*dc=0 instrution*/
	  else clr_lcd_data;
      set_lcd_clk;
	  clr_lcd_clk;
  	  if (data&0x80) set_lcd_data; //high 4 bit
	  else clr_lcd_data;
      set_lcd_clk;
	  clr_lcd_clk;
	  if (data&0x40) set_lcd_data;
	  else clr_lcd_data;
	  set_lcd_clk;
	  clr_lcd_clk;
	  if (data&0x20) set_lcd_data;
	  else clr_lcd_data;
	  set_lcd_clk;
	  clr_lcd_clk;
	  if (data&0x10) set_lcd_data;
	  else clr_lcd_data;
	  set_lcd_clk;
	  clr_lcd_clk;
	  if (data&0x08) set_lcd_data;//low 4 bit
	  else clr_lcd_data;
	  set_lcd_clk;
	  clr_lcd_clk;
	  if (data&0x04) set_lcd_data;
	  else clr_lcd_data;
	  set_lcd_clk;
	  clr_lcd_clk;
	  if (data&0x02) set_lcd_data;
	  else clr_lcd_data;
	  set_lcd_clk;
	  clr_lcd_clk;
	  if (data&0x01) set_lcd_data;
	  else clr_lcd_data;
	  set_lcd_clk;
	  clr_lcd_clk;
	}
/***********液晶初始化******************/
/**********基础程序直接调用即可*********/
/*****************************/
void lcd_init(void) 
     {
	 clr_lcd_cs;          //enable lcd
	 clr_lcd_reset;
     delay_ms(50);	 
	 set_lcd_reset;
     delay_ms(50);
	 	 
	  LCD_write(LCD_CMD_SWRESET,0);
	  LCD_write(LCD_CMD_SLEEPOUT,0);
	  LCD_write(LCD_CMD_DISPON,0);
	  LCD_write(LCD_CMD_BSTRON,0);
	  LCD_write(LCD_CMD_MADCTL,0);
	  LCD_write(MADCTL_HORIZ,1);
	  LCD_write(LCD_CMD_COLMOD,0);
	  LCD_write(2,1);             //2\3\5
	  LCD_write(LCD_CMD_INVON,0);
	  LCD_write(LCD_CMD_RGBSET,0);
	  //wrtab1
	  LCD_write(0,1);
	  LCD_write(2,1);
	  LCD_write(4,1);
	  LCD_write(6,1);
	  LCD_write(9,1);
	  LCD_write(11,1);
	  LCD_write(13,1);
	  LCD_write(15,1);
	  
	  LCD_write(0,1);
	  LCD_write(2,1);
	  LCD_write(4,1);
	  LCD_write(6,1);
	  LCD_write(9,1);
	  LCD_write(11,1);
	  LCD_write(13,1);
	  LCD_write(15,1);	  
	  //wrtab1
	  LCD_write(00,1);
	  LCD_write(07,1);
	  LCD_write(0x0b,1);
	  LCD_write(0x0f,1);
      LCD_contrast(54);    //对比度00~127 
	 set_lcd_cs;          //disable lcd	         
	 }	
/***********液晶对比度******************/
void LCD_contrast(unsigned char data)  //对比度00~127
           {
		    LCD_write(LCD_CMD_SETCON,0);
	  		LCD_write(data,1);
		   }
/***********液晶颜色******************/
/******bkg=背景颜色***text=前景颜色*****/		   	 
void lcd_color(unsigned char bkg,unsigned char text)
	 {
  	  lcd_bkg_color=bkg;
  	  lcd_text_color=text;	 
	 }
/********液晶窗口*P=原点***e=终点******/
void lcd_window(unsigned char xp,unsigned char yp,unsigned char xe,unsigned char ye)
	 {
	  LCD_write(LCD_CMD_CASET,0);
	  LCD_write(xp,1);
	  LCD_write(xe,1);
	  LCD_write(LCD_CMD_PASET,0);
	  LCD_write(yp,1);
	  LCD_write(ye,1);	  
	 }
/********液晶窗口跳转**128x128*******/	 
void lcd_gotoxy(unsigned char x, unsigned char y)
	 {
	 clr_lcd_cs;          //enable lcd		 
	  lcd_x=x;
	  lcd_y=y;
	  lcd_window(x,y,129,129);
	 set_lcd_cs;          //disable lcd		  
	 }	 	 		   
/***********用底色清屏******************/
void lcd_clr(void) 
     {
	  unsigned int count;
	 clr_lcd_cs;          //enable lcd		  
	  lcd_x=0;
	  lcd_y=0;
	  lcd_window(0x00,0x00,0x82,0x83);
	  LCD_write(LCD_CMD_RAMWR,0);
	  for (count=0;count<18000;count++)
	  	 {
	      LCD_write(lcd_bkg_color,1);		  
		 }
	 set_lcd_cs;          //disable lcd			 
	 }
/**********显示一个进度条****粗=14点************/	 		
void lcd_bar(unsigned char len,unsigned char val,unsigned char bkgcol,unsigned char fillcol)
	 {
	  unsigned int count;	 
	 clr_lcd_cs;          //enable lcd	  
      LCD_write(LCD_CMD_MADCTL,0);
	  LCD_write(MADCTL_VERT,1);
	  lcd_window(lcd_x,lcd_y,lcd_x+len+1,lcd_y+13);
	  LCD_write(LCD_CMD_RAMWR,0);
	  for (count=0;count<14;count++)
	  	  {
		   LCD_write(0,1);
		  }
	  for (count=0;count<val*14;count++)
	  	  {
		   LCD_write(fillcol,1);
		  }
	  for (count=0;count<(len-val)*14;count++)
	  	  {
		   LCD_write(bkgcol,1);
		  }		  
	  for (count=0;count<14;count++)
	  	  {
		   LCD_write(0,1);
		  }	  
      LCD_write(LCD_CMD_MADCTL,0);
	  LCD_write(MADCTL_HORIZ,1);	  
	 set_lcd_cs;          //disable lcd		  
	 }
/**********显示一个8x8点ascii***********/
void lcd_ascii(char *s,unsigned char len)
	 {
	  unsigned int count;	 
	  lcd_window(lcd_x,lcd_y,lcd_x+len*16-1,lcd_y+15);
	  LCD_write(LCD_CMD_RAMWR,0);
	  for (count=0;count<len*32;count++)	
	  	  {
		   if (s[count]&0x1)  LCD_write(lcd_text_color,1); //high 8 bit
	  	   else LCD_write(lcd_bkg_color,1);
		   if (s[count]&0x2)  LCD_write(lcd_text_color,1); 
		   else LCD_write(lcd_bkg_color,1);
	  	   if (s[count]&0x4)  LCD_write(lcd_text_color,1); 
		   else LCD_write(lcd_bkg_color,1);
	 	   if (s[count]&0x8)  LCD_write(lcd_text_color,1); 
		   else LCD_write(lcd_bkg_color,1);
	  	   if (s[count]&0x10)  LCD_write(lcd_text_color,1); 
	  	   else LCD_write(lcd_bkg_color,1);
	  	   if (s[count]&0x20)  LCD_write(lcd_text_color,1); 
	  	   else LCD_write(lcd_bkg_color,1);
	  	   if (s[count]&0x40)  LCD_write(lcd_text_color,1); 
	  	   else LCD_write(lcd_bkg_color,1);
	  	   if (s[count]&0x80)  LCD_write(lcd_text_color,1); 
	  	   else LCD_write(lcd_bkg_color,1);	
		  } 
	 }	 
/**********显示一个5x7点ascii***********/
void lcd_ascii_5_7(unsigned char chr_ascii);
void lcd_ascii_5_7(unsigned char chr_ascii)
	 {
	  const unsigned char *s;
	  unsigned char count;
	  lcd_bkg_color=3;
 	  lcd_text_color=247;
	 clr_lcd_cs;          //enable lcd	  
	  s=Bmp_ascii+chr_ascii*5;
	  lcd_window(lcd_x,lcd_y,lcd_x+6,lcd_y+7);	  
      LCD_write(LCD_CMD_MADCTL,0);
	  LCD_write(MADCTL_VERT,1);	  

	  LCD_write(LCD_CMD_RAMWR,0);
	  for (count=0;count<5;count++)	
	  	  {
		   if (*s&0x1)  LCD_write(lcd_text_color,1); //high 8 bit
	  	   else LCD_write(lcd_bkg_color,1);
		   if (*s&0x2)  LCD_write(lcd_text_color,1); 
		   else LCD_write(lcd_bkg_color,1);
	  	   if (*s&0x4)  LCD_write(lcd_text_color,1); 
		   else LCD_write(lcd_bkg_color,1);
	 	   if (*s&0x8)  LCD_write(lcd_text_color,1); 
		   else LCD_write(lcd_bkg_color,1);
	  	   if (*s&0x10)  LCD_write(lcd_text_color,1); 
	  	   else LCD_write(lcd_bkg_color,1);
	  	   if (*s&0x20)  LCD_write(lcd_text_color,1); 
	  	   else LCD_write(lcd_bkg_color,1);
	  	   if (*s&0x40)  LCD_write(lcd_text_color,1); 
	  	   else LCD_write(lcd_bkg_color,1);
    	   if (*s&0x80)  LCD_write(lcd_text_color,1); 
    	   else   LCD_write(lcd_bkg_color,1);
		
		   s++;
		  }
			LCD_write(lcd_bkg_color,1);	 //字体之间隔一竖行
			LCD_write(lcd_bkg_color,1);	
			LCD_write(lcd_bkg_color,1);	
			LCD_write(lcd_bkg_color,1);	
			LCD_write(lcd_bkg_color,1);	
			LCD_write(lcd_bkg_color,1);	
			LCD_write(lcd_bkg_color,1);	
			LCD_write(lcd_bkg_color,1);		
					  
	 lcd_x=lcd_x+6;	                     //自动换下一个位置
	 if (lcd_x>128)
	 	{
		 lcd_x=0;
		 lcd_y=lcd_y+8;
		}	
	 if (lcd_y>128) lcd_y=0;
	 set_lcd_cs;          //disable lcd	  	  
	 }

⌨️ 快捷键说明

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