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

📄 lcdtest.c

📁 各种器件的驱动程序
💻 C
字号:
/**************************************************************************
	LCD测试程序
	魏东 2004-11-22 10:15
	8051,频率:7.372848MHz
**************************************************************************/
#include <stdio.h>
#define __SRC
#include "def_port.h"
#undef	__SRC
#include "lcddrv.h"

#define CON_OSC 7372848					/* 振荡频率 */
#define CON_BPS 256 - ( CON_OSC / 12 / 32 / 19200 )	/* 19200BPS时间常数 */
#define CON_MSC CON_OSC/36000				/* 延时 */

/* 函数定义 */
void main_init (void);			/* 初始化 */
void delay_ms(unsigned char);		/* 延时(单位:毫秒) */

/***********************************************************************************/
/* 延时(单位:1毫秒) */
void delay_ms(unsigned char cn)
{	unsigned char cm;

	while(cn) 
	{	for(cm=0;cm<CON_MSC;cm++) ;	/* 延时(12/CON_OSC)*3 */
						/*	编译为汇编如下:
						delay_ub:	INC 	R6		;1
						CJNE	R6,delay_ub	;2
						*/
		cn --;
	}
}

/* 初始化 */
void main_init (void)
{
	SCON=0x50;	/* 置串口工作方式1(T1用作串口波特率发生) */
	TMOD=0x20;	/* 置定时器1工作方式2 */
	TH1=CON_BPS;	/* 波特率时间常数 */
	TL1=CON_BPS;
	TR1=1;		/* 启动定时器1 */
	ET1=0;		/* 禁止定时器1中断 */
	EA=0;		/* 禁止中断 */
	ES=0;		/* 关串口中断 */
	TI=1;           /* 调试:set TI to send first char of UART  */
}

/***********************************************************************************/

void main (void)
{	unsigned char ci,cx,cy;
	unsigned int ui;

	main_init();		/* 初始化 */
 while(1)
 {
	lcd_id=0;
	printf("lcdtest.....\n");
	lcd_id=1;
	lcd_reset();

	lcd_fill(0);
	for(cy=0;cy<64;cy++)
	{	for(cx=0;cx<128;cx++)
		{	lcd_dot(cx,cy,1);
		}
	}
	for(ui=0;ui<5;ui++) delay_ms(100);
	lcd_fill(0xff);
	for(cy=0;cy<64;cy++)
	{	for(cx=0;cx<128;cx++)
		{	lcd_dot(cx,cy,0);
		}
	}
	for(ui=0;ui<5;ui++) delay_ms(100);
	lcd_fill(0);
	for(cy=0;cy<64;cy++)
	{	for(cx=0;cx<128;cx++)
		{	lcd_dot(127-cx,63-cy,1);
		}
	}
	for(ui=0;ui<5;ui++) delay_ms(100);
	lcd_fill(0xff);
	for(cy=0;cy<64;cy++)
	{	for(cx=0;cx<128;cx++)
		{	lcd_dot(127-cx,63-cy,0);
		}
	}
	for(ui=0;ui<5;ui++) delay_ms(100);

	L_LED=0;	/* 背光亮 */
	lcd_fill(0);
	lcd_set_chlib(3);
	lcd_moveto(16,0);
	printf("汉字液晶");
	lcd_set_chlib(2);
	lcd_moveto(0,6);
	printf("16x16点阵字库");
	lcd_set_chlib(1);
	lcd_moveto(0,10);
	printf("12x12点阵字库");
	lcd_moveto(100,13);
	printf("魏东");
	for(ui=0;ui<25;ui++) delay_ms(100);

	lcd_set_chlib(0);
	lcd_moveto(0,14);
	printf("lcd_off");
	for(ci=0;ci<5;ci++)
	{	if(ci&1) lcd_on();
		else lcd_off();
		delay_ms(100);
	}
	lcd_on();

	lcd_set_chlib(0);
	lcd_moveto(0,14);
	printf("lcd_roll");
	for(ci=1;ci<64;ci++)
	{	lcd_roll(ci);
		delay_ms(50);
	}
	lcd_roll(0);

	lcd_fill(0);
	lcd_set_chlib(1);
	printf("12x12点阵字库小字体,128x64液晶满屏可显示5行每行10个汉字。显示函\xca\xfd中可自动处理英文字母显示位置。");	/*?"数"?*/
	for(ui=0;ui<50;ui++) delay_ms(100);

	lcd_fill(0xff);
	lcd_set_chlib(0x83);
	printf("汉字液晶 ");
	lcd_set_chlib(0x81);
	printf("翻黑\n\n");
	lcd_set_chlib(0x80);
	printf("\n1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ");
	for(ui=0;ui<50;ui++) delay_ms(100);
	L_LED=0;	/* 背光灭 */

 }
}

⌨️ 快捷键说明

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