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

📄 lcd.c

📁 LCD(FYD12864)串行接口及键盘(I2C)应用例子 已经过测试
💻 C
字号:
#include<regx52.h>
#include<intrins.h>
#include"lcd.h"

uchar m_x=0,m_y=0,m_b=0;
/*  */
void lcd_delay(void)
{ 
unsigned char i;
for (i=0;i<10;i++);

}
/*  */

void lcd_wbyte(char s){
	unsigned char i;       //24个时钟周期读写一个字节 11111_RW_RS_0_D7_D6_D5_D4_0000_D3_D2_D1_D0_0000
for(i=0;i<8;i++)
 	LCD_CLK(
     SID=(bit)(s&0x80);
	 s=s<<1;
	)
}
/*  */
void lcd_write_cmd(char dat){
 
lcd_wbyte(WRITE_CMD);
lcd_wbyte(dat&0xf0);
lcd_wbyte(dat<<4);

lcd_delay();

}
/*  */
void lcd_write_data(char dat){
	 
	lcd_wbyte(WRITE_DATA);
	lcd_wbyte(dat&0xf0);
	lcd_wbyte(dat<<4);

	lcd_delay();

}
/*  */
void lcd_init_text(void){

		SID=0;
		SCLK=0;
		CS=1;
	
	lcd_write_cmd(LCD_TEXT_SEL); 
	lcd_write_cmd(TEXT_ON);
	lcd_write_cmd(TEXT_CLEAR);
	lcd_write_cmd(TEXT_RESET);
//	lcd_write_cmd(0x06);
	lcd_write_cmd(TRAM);

}
/**/
void _clear(void){
	lcd_write_cmd(TEXT_ON);
	lcd_write_cmd(TEXT_CLEAR);
	lcd_write_cmd(TEXT_OFF);
}
/**/
void _puts(char*str){
	lcd_write_cmd(TEXT_ON);
	while(*str)
		lcd_write_data(*str++);
	lcd_write_cmd(TEXT_OFF);
}
/**/
void lcd_init_grah(void){
	lcd_write_cmd(GRAH_ON);
	lcd_write_cmd(GRAM|0x00);
	lcd_write_cmd(GRAM|0x00);
	clear();
	m_x=m_y=m_b=0;
}
void clear(){
	unsigned char i,j;
	for(j=0;j<32;j++)
{
    lcd_write_cmd(GRAM|0x00+j);
	lcd_write_cmd(GRAM|0x00);
	for(i=0;i<32;i++)
	lcd_write_data(0x00);
}
	lcd_write_cmd(GRAM|0x00);
	lcd_write_cmd(GRAM|0x00);
}
void moveto(uchar x,uchar y){

 if(x<0||x>127||y<0||y>63)return;
   m_y=y%32;
   m_x=x/16+(y>>5)*8;
   m_b=x%16;
   lcd_write_cmd(GRAM|m_y);
   lcd_write_cmd(GRAM|m_x);   
}
void pot(uchar x,uchar y){ //画点的效率很低

	moveto(x,y);
	if(m_b>7)lcd_write_data(0x00);
	lcd_write_data(1<<(7-m_b));


}
void draw_line(uchar j){
	 uchar i;
	 if(j<0||j>63)return;
    lcd_write_cmd(GRAM|0x00+j%32);
	lcd_write_cmd(GRAM|0x00+j/32*8);
	for(j=0;j<16;j++)
	lcd_write_data(0xff);


}
void draw_row(uchar k){
uchar i,j;
if(k<0||k>127)return;
  
  moveto(k,0);
  for(i=0;i<64;i++)
  {
   lcd_write_cmd(GRAM|(i%32));
   lcd_write_cmd(GRAM|m_x+(i/32)*8);
   if(m_b>7)lcd_write_data(0x00);
   lcd_write_data(1<<(7-m_b)); 

  }

}

⌨️ 快捷键说明

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