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

📄 lcd320a.c

📁 320*240点阵液晶(sed1335)驱动程序,keil c调试通过,总线连接方式
💻 C
字号:
#include        <reg52.h>
#include        <absacc.h>
#include        <intrins.h>
#include	<hzk1.h>

#define lcd_data          XBYTE[0x0000]   /*液晶显示数据入口*/
#define lcd_com           XBYTE[0x0200]   /*液晶显示命令入口*/

bdata unsigned char flag;
sbit f_bw=flag^0;


#define SYSTEM_SET_COM 	0x40	/*初始化设置*/
#define SCROLL_COM  	0x44	/*显示域设置*/
#define SLEEP_IN	0x53	/*休闲模式设置*/
#define	DISP_ON		0x59	/*显示状态开*/
#define	DISP_OFF	0x58	/*显示状态关*/
#define OYLAY		0x5b	/*显示合成设置*/
#define HDOT_SCR	0x5a	/*点位移设置*/
#define CSRRFORM	0x5d	/*光标形状设置*/
#define CGRAM_ADR	0x5c	/*CGRAM首址设置*/
#define CSRDIR_RIGHT	0x4c	/*光标向右移*/
#define CSRDIR_LEFT	0x4d	/*光标向左移*/
#define CSRDIR_UP	0x4e	/*光标向上移*/
#define CSRDIR_DOWM	0x4f	/*光标向下移*/
#define CSRW 		0x46	/*光标指针设置*/
#define	CSRR		0x47	/*读取光标指针*/
#define MWRITE		0x42	/*数据写入设置*/
#define MREAD		0x43	/*数据读取设置*/
//SYSTEM SET
#define SYSTEM_SET_P1 	0x30	/**/
#define SYSTEM_SET_P2 	0x87	/*字符宽8位*/
#define SYSTEM_SET_P3 	0x07	/*字符高*/
#define SYSTEM_SET_P4 	0x27	/*一行显示40个字节*/
#define SYSTEM_SET_P5 	0x42	/*驱动频率时间常数*/
#define SYSTEM_SET_P6 	0xf0	/*扫描驱动帧参数*/
#define SYSTEM_SET_P7 	0x30	/*显示行的字节数低位*/
#define SYSTEM_SET_P8 	0x00	/*显示行的字节数高位*/
//SCROLL
#define SCROLL_P1	0x00	/**/
#define SCROLL_P2 	0x00	/**/
#define SCROLL_P3 	0xf0	/**/
#define SCROLL_P4 	0x00	/**/
#define SCROLL_P5 	0x40	/**/
#define SCROLL_P6 	0xf0	/**/
#define SCROLL_P7 	0x00	/**/
#define SCROLL_P8 	0x80	/**/
#define SCROLL_P9 	0x00	/**/
#define SCROLL_P10	0x00	/**/

data unsigned char lx,ly;

//清屏
void lcd_clear(unsigned char no)
{
data unsigned int i;
lcd_com=CSRDIR_RIGHT;		//光标右移
lcd_com=CSRW;			//光标地址设置
switch(no)
    {
    case 1:
        lcd_data=0xff;        lcd_data=0x00;
        break;
    case 2:
        lcd_data=0x00;        lcd_data=0x40;
        break;
    case 3:
        lcd_data=0x00;        lcd_data=0x80;
        break;
    default:
        lcd_data=0x00;        lcd_data=0x00;
        break;
    }
lcd_com=MWRITE;			//写入显示缓冲区
for (i=0;i<=240*40;i++)
       lcd_data=0x0;
_nop_();
}

void lcd_init(void)
{
	lcd_com=SYSTEM_SET_COM;
	lcd_data=SYSTEM_SET_P1;
	lcd_data=SYSTEM_SET_P2;
	lcd_data=SYSTEM_SET_P3;
	lcd_data=SYSTEM_SET_P4;
	lcd_data=SYSTEM_SET_P5;
	lcd_data=SYSTEM_SET_P6;
	lcd_data=SYSTEM_SET_P7;
	lcd_data=SYSTEM_SET_P8;
	lcd_com=SCROLL_COM;
	lcd_data=SCROLL_P1;
	lcd_data=SCROLL_P2;
	lcd_data=SCROLL_P3;
	lcd_data=SCROLL_P4;
	lcd_data=SCROLL_P5;
	lcd_data=SCROLL_P6;
	lcd_data=SCROLL_P7;
	lcd_data=SCROLL_P8;
	lcd_data=SCROLL_P9;
	lcd_data=SCROLL_P10;
	lcd_com=HDOT_SCR;
	lcd_data=0x00;
	lcd_com=OYLAY;
	lcd_data=0x0c;
	lcd_clear(1);
//	lcd_clear(2);
//	lcd_clear(3);
       	lcd_com=DISP_ON;
	lcd_data=0x04;
//        lcd_com=OYLAY;
//       lcd_data=0x0f;

}


/* 16*16,8*16点阵
入口参数:
f_bw	反向显示
*/
void lcd_show(unsigned char *pr)
{
	data unsigned char i,j;
        data unsigned char l;
	data unsigned int temp;
	lcd_com=CSRDIR_DOWM;		//光标下移
	i=0;
	l=*(pr+i);
	while(l!=0xff)
	{
		lcd_com=CSRW;
		temp=ly*0x30+lx;
		lcd_data=temp%256;
		lcd_data=temp/256;	//光标地址
		lcd_com=MWRITE;
		l=*(pr+i);
		if(l==0xfe)
		{
			i++;
			l=*(pr+i);
			for(j=0;j<16;j++)
			{
				if(f_bw)
				   lcd_data=~hzk0816[l][j];
				else
				   lcd_data=hzk0816[l][j];
			}
		}
		else
		{
			for(j=0;j<32;j++)
			{
				if(f_bw)
				   lcd_data=~hzk1616[l][j];
				else
				   lcd_data=hzk1616[l][j];
				if((j+1)%16==0)
				{
					lx++;
					temp=ly*0x30+lx;
					lcd_com=CSRW;
					lcd_data=temp%256;
					lcd_data=temp/256;
					lcd_com=MWRITE;
				}
			}
		}
		lx++;
                i++;
	}
	f_bw=0;
}

void lcd_show24(unsigned char *pr)
{
	data unsigned char i,j;
        data unsigned char l;
	data unsigned int temp;
	lcd_com=CSRDIR_DOWM;
	i=0;
	l=*(pr+i);
	while(l!=0xff)
	{
		lcd_com=CSRW;
		temp=ly*0x30+lx;
		lcd_data=temp%256;
		lcd_data=temp/256;	//光标地址
		lcd_com=MWRITE;
		l=*(pr+i);
		for(j=0;j<72;j++)
		{
			if(f_bw)
			   lcd_data=~hzk2424[l][j];
			else
			   lcd_data=hzk2424[l][j];
			if((j+1)%24==0)
			{
				lx++;
				temp=ly*0x30+lx;
				lcd_com=CSRW;
				lcd_data=temp%256;
				lcd_data=temp/256;
				lcd_com=MWRITE;
			}
		}
		lx++;
	}
	f_bw=0;
}


main()
{ unsigned char *p;
  unsigned int i;
  lcd_init();
  *p=1;
  *(p+1)=1;
  *(p+2)=2;
  *(p+3)=255;

  while(1)
  {
     lcd_show(p);
  }
}

⌨️ 快捷键说明

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