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

📄 12232.c

📁 12232 LCD中实现16*16汉字任意行显示的源代码 UV2开发环境
💻 C
📖 第 1 页 / 共 2 页
字号:


	putchar_l(ubyte);


	RS = 0;
	RW=0;
    send_mi(0xee);
    send_si(0xee);


}

//----------------------------------------------------------
//--------设置读写改--------
//----------------------------------------------------------
void read_write_r(u_char ubyte)
{


    send_mi(0xe0);
    send_si(0xe0);
    ubyte=ubyte|read_data();



	putchar_r(ubyte);


	RS = 0;
	RW=0;
    send_mi(0xee);
    send_si(0xee);


}



/****************************************************************************/
/* 函数名:draw_bmp                                                         */
/* 功  能:画一个图,横坐标是col,layer表示上下层,width是图形的宽,高固定16    */
/* 作  者:spot                                                             */
/* 输  入:                                                                 */
/*         col     图型的起始位置0~121                                      */
/*         layer   图形的位置(Y坐标)0-下半部分 非0-上半部分                 */
/*         width                                      */
/*         bmp     图形数据指针                                             */
/*                                                                          */
/* 输  出:无                                                               */
/*                                                                          */
/* 历史记录:                                                               */
/*  spot          2005-06-28     Creat Inital version. (Version 1.0)        */
/****************************************************************************/
void draw_bmp(u_char col,u_char y,u_char width,u_char *bmp)
{
//y:0~7
    u_char x;
    u_char address;           /* address表示显存的物理地址 */
    u_char p=0;
    u_char y0=0;
	u_char buf=0;
	u_char buf0=0;	
	u_char buf1=0;
	u_char buf3=0;
	u_char buf2=0;


//u_char page;            /* page表示上下两页,window表示左右窗口(0左,1右) */
u_char window;

//    if (layer)
//    {
//        page=2;               /* 左-主窗口,右-从窗口 */
//    }
//
    for (x=col; x<col+width; x++)
    {
        if (x>121)
            return;           /* 防止显示乱码 */

        if (x>60)             /* 左右窗口定位 */
        {
            window=1;         /* 右-从窗口    */
            address=x%61;
        }
        else
        {
		window=0;
            address=x;        /* 主窗口输出   */
        }



if(y==0)
{
	buf2=bmp[p];
	buf3=bmp[p+width];
		set_page(2);
		set_address(address);

        if (window)
           putchar_r(buf2);
//         read_write_r(buf2);
			
        else
           putchar_l(buf2);
//			read_write_l(buf2);

		set_page(3);
		set_address(address);

        if (window)
//            putchar_r(buf3);
        read_write_r(buf3);
        else
//           putchar_l(buf3);
		read_write_l(buf3);
}


if(y>0&&y<8)
{
buf=bmp[p];
buf1=buf<<(8-y);
buf=bmp[p];
buf2=buf>>y;
buf=bmp[p+width];
buf2=(buf<<(8-y))|buf2;
buf=bmp[p+width];
buf3=buf>>y;





        set_page(1);      
        set_address(address);

        if (window)
//            putchar_r(buf1);
            read_write_r(buf1);
        else
//            putchar_l(buf1);
        	read_write_l(buf1);

		set_page(2);
		set_address(address);
        if (window)
//            putchar_r(buf2);
			read_write_r(buf2);
        else
//            putchar_l(buf2);
				read_write_l(buf2);

        set_page(3);     
        set_address(address); 
        if (window)
//            putchar_r(buf3);
			read_write_r(buf3);
        else
//           putchar_l(buf3);
			read_write_l(buf3);




}



if(y==8)
{
	buf1=bmp[p];
	buf2=bmp[p+width];
		set_page(1);
		set_address(address);

        if (window)
//            putchar_r(buf1);
				read_write_r(buf1);
        else
//            putchar_l(buf1);
				read_write_l(buf1);
		set_page(2);
		set_address(address);

        if (window)
//            putchar_r(buf2);
				read_write_r(buf2);
        else
//            putchar_l(buf2);
				read_write_l(buf2);

}

if(y>8&&y<16)
{
y0=y;
y=y%8;
buf=bmp[p];
buf0=buf<<(8-y);
buf=bmp[p];
buf1=buf>>y;
buf=bmp[p+width];
buf1=(buf<<(8-y))|buf1;
buf=bmp[p+width];
buf2=buf>>y;
y=y0;





        set_page(0);      
        set_address(address);

        if (window)
//            putchar_r(buf0);
			read_write_r(buf0);
        else
//            putchar_l(buf0);
			read_write_l(buf0);

        set_page(1);     
        set_address(address); 
        if (window)
//            putchar_r(buf1);
				read_write_r(buf1);
        else
//            putchar_l(buf1);
				read_write_l(buf1);

		set_page(2);
		set_address(address);
        if (window)
//            putchar_r(buf2);
				read_write_r(buf2);
        else
//            putchar_l(buf2);
				read_write_l(buf2);

}

if(y==16)
{
	buf0=bmp[p];
	buf1=bmp[p+width];
		set_page(0);
		set_address(address);

        if (window)
//            putchar_r(buf0);
				read_write_r(buf0);
        else
//            putchar_l(buf0);
				read_write_l(buf0);
		set_page(1);
		set_address(address);

        if (window)
//            putchar_r(buf1);
				read_write_r(buf1);
        else
//            putchar_l(buf1);
				read_write_l(buf1);
}









        p++;
    }
}

delay(u_char i)
{
u_char j;
for(i=i<<1;i>0;i--)
for(j=0xf3;j>0;j--)
{}
}

//unsigned char code jing[]=//笑脸
//{0x00,0xE0,0xF0,0x2C,0x06,0x47,0x83,0x41,0x01,0x01,0x43,0x87,0x46,0x1C,0xF8,0xE0,
//0x00,0x07,0x07,0x18,0x10,0x60,0x44,0x88,0x94,0x94,0x88,0x84,0x60,0x30,0x0F,0x07,
//	};

unsigned char code jing[]=
{0xFC,0xFC,0x0C,0xFC,0x00,0xFE,0x66,0x9E,0x00,0xF6,0x36,0xF6,0x06,0xFE,0x06,0x00,
0x1F,0x1F,0x06,0x0F,0x00,0x7F,0x08,0x0F,0x00,0x0F,0x06,0x6F,0x60,0x3F,0x00,0x00
};
 main(void)
{
	int i;
int p=0;
int q=0;
	P0=0xff;
	P1=0xff;
	P2=0xff;
	P3=0xff;
	delay(255);

	lcd_init();
	lcd_init();
    lcd_init();
	lcd_clr();





while(1)
{
if(q<17)
{
if(p<106)
 {
delay(0xff);
draw_bmp(p,q,16,jing);
for(i=0;i<50;i++)
	{
delay(0xff);
	}

//lcd_clr();
p+=16;
q+=0;
 }
else p=0;

}
else q=0;
}

}

⌨️ 快捷键说明

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