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

📄 x102_12232.c

📁 可以看WORD文档 在KEIL中开发的程序 已经经过调试
💻 C
字号:
#include <reg52.h>
#include <ctype.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <absacc.h>

#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long

#define cs_e1_com XBYTE[0XA000]
#define cs_e1_dat XBYTE[0XA001]
#define cs_e1_rd XBYTE[0XA002]
#define cs_e2_com XBYTE[0XB000]
#define cs_e2_dat XBYTE[0XB001]
#define cs_e2_rd XBYTE[0XB002]

void delay(uchar delay_temp);//长延时
void lcd_display1_32(uchar page,uchar col,uchar num);
void lcd_display1_16(uchar page,uchar col,uchar num);
void lcd_display2_32(uchar page,uchar col,uchar num);
void lcd_display2_16(uchar page,uchar col,uchar num);
void cls_lcd(uchar cls_code);//液晶显示黑屏或白屏
void cls_lcd1(void);//液晶显示点阵1

const uchar code lcd_data_32[][16]=
{
/*--  0  文字: (空)  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
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,

/*--  1  文字:  三  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x04,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x04,0x00,0x00,
0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,

/*--  2  文字:  毛  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x04,0x44,0x44,0x44,0x44,0xFC,0x22,0x22,0x22,0x22,0x22,0x22,0x00,0x00,0x00,
0x04,0x04,0x04,0x04,0x04,0x04,0x3F,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x70,0x00,

/*--  3  文字:  电  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x00,0xF8,0x48,0x48,0x48,0x48,0xFF,0x48,0x48,0x48,0x48,0xF8,0x00,0x00,0x00,
0x00,0x00,0x0F,0x04,0x04,0x04,0x04,0x3F,0x44,0x44,0x44,0x44,0x4F,0x40,0x70,0x00,

/*--  4  文字:  子  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x00,0x02,0x02,0x02,0x02,0x02,0xE2,0x12,0x0A,0x06,0x02,0x00,0x80,0x00,0x00,
0x01,0x01,0x01,0x01,0x01,0x41,0x81,0x7F,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,

/*--  5  文字:  世  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x20,0x20,0x20,0xFE,0x20,0x20,0xFE,0x20,0x20,0x20,0x20,0xFE,0x20,0x20,0x20,0x00,
0x00,0x00,0x00,0x3F,0x20,0x20,0x27,0x22,0x22,0x22,0x22,0x27,0x30,0x20,0x00,0x00,

/*--  6  文字:  界  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x00,0x00,0xFF,0x49,0x49,0x49,0xFF,0xC9,0x49,0x49,0x49,0xFF,0x00,0x00,0x00,
0x00,0x08,0x08,0x84,0x44,0x22,0x1D,0x00,0x00,0xFD,0x02,0x02,0x04,0x0C,0x04,0x00
};

const uchar code lcd_data_16[][8]=
{
/*--  0  文字: (空) --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0xF8,0x08,0x00,0xF8,0x00,0x08,0xF8,0x00,0x03,0x3C,0x07,0x00,0x07,0x3C,0x03,0x00,

/*--  1  文字:  W  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0xF8,0x08,0x00,0xF8,0x00,0x08,0xF8,0x00,0x03,0x3C,0x07,0x00,0x07,0x3C,0x03,0x00,

/*--  2  文字:  .  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,

/*--  3  文字:  M  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x08,0xF8,0xF8,0x00,0xF8,0xF8,0x08,0x00,0x20,0x3F,0x00,0x3F,0x00,0x3F,0x20,0x00,

/*--  4  文字:  C  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00,

/*--  5  文字:  U  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,

/*--  6  文字:  L  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x08,0xF8,0x08,0x00,0x00,0x00,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x20,0x30,0x00,

/*--  7  文字:  I  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,

/*--  8  文字:  B  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x11,0x0E,0x00,

/*--  9  文字:  O  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x10,0x20,0x20,0x20,0x10,0x0F,0x00
};

uchar i;

main(void)
{
start:	cs_e1_com=0xaf;//开显示
	cs_e2_com=0xaf;//开显示
	cls_lcd(0xff);//黑屏
	delay(0xff);
	delay(0xff);
	cls_lcd(0x00);//清屏
	delay(0xff);
	delay(0xff);
	cls_lcd1();//花屏
	delay(0xff);
	delay(0xff);
	cls_lcd(0xff);//黑屏
	delay(0xff);
	delay(0xff);
	cls_lcd1();//花屏
	delay(0xff);
	delay(0xff);
	cls_lcd(0x00);//清屏
	delay(0xff);
	delay(0xff);
	lcd_display1_32(0xba,13,1);//三
	lcd_display1_32(0xba,29,2);//毛
	lcd_display1_32(0xba,45,3);//电
	lcd_display2_32(0xba,0,4);//子
	lcd_display2_32(0xba,16,5);//世
	lcd_display2_32(0xba,32,6);//界
	
	lcd_display1_16(0xb8,5,1);//W
	lcd_display1_16(0xb8,13,1);//W
	lcd_display1_16(0xb8,21,1);//W
	lcd_display1_16(0xb8,29,2);//.
	lcd_display1_16(0xb8,37,3);//M
	lcd_display1_16(0xb8,45,4);//C
	lcd_display1_16(0xb8,53,5);//U
	lcd_display2_16(0xb8,0,6);//L
	lcd_display2_16(0xb8,8,7);//I
	lcd_display2_16(0xb8,16,8);//B
	lcd_display2_16(0xb8,24,2);//.
	lcd_display2_16(0xb8,32,4);//C
	lcd_display2_16(0xb8,41,9);//O
	lcd_display2_16(0xb8,48,3);//M
	
	for(i=0;i<5;i++)delay(0x88);
	
	goto start;	
}

void delay(uchar delay_temp)//延时子程序
{
	uchar data i,j;
	for(i=0;i<delay_temp;i++)
	{
		for(j=0;j<255;j++);
	}
}

void lcd_display1_32(uchar page,uchar col,uchar num)
{
	uchar i;
	while((cs_e1_rd&0x80)==0x80);//判断空闲否
	cs_e1_com=page;//页地址
	while((cs_e1_rd&0x80)==0x80);//判断空闲否
	cs_e1_com=col;//列地址
	for(i=0;i<16;i++)
	{
		while((cs_e1_rd&0x80)==0x80);//判断空闲否
		cs_e1_dat=lcd_data_32[2*num][i];
	}
	while((cs_e1_rd&0x80)==0x80);//判断空闲否
	cs_e1_com=page+1;//页地址
	while((cs_e1_rd&0x80)==0x80);//判断空闲否
	cs_e1_com=col;//列地址
	for(i=0;i<16;i++)
	{
		while((cs_e1_rd&0x80)==0x80);//判断空闲否
		cs_e1_dat=lcd_data_32[2*num+1][i];
	}
}

void lcd_display1_16(uchar page,uchar col,uchar num)
{
	uchar i;
	while((cs_e1_rd&0x80)==0x80);//判断空闲否
	cs_e1_com=page;//页地址
	while((cs_e1_rd&0x80)==0x80);//判断空闲否
	cs_e1_com=col;//列地址
	for(i=0;i<8;i++)
	{
		while((cs_e1_rd&0x80)==0x80);//判断空闲否
		cs_e1_dat=lcd_data_16[2*num][i];
	}
	while((cs_e1_rd&0x80)==0x80);//判断空闲否
	cs_e1_com=page+1;//页地址
	while((cs_e1_rd&0x80)==0x80);//判断空闲否
	cs_e1_com=col;//列地址
	for(i=0;i<8;i++)
	{
		while((cs_e1_rd&0x80)==0x80);//判断空闲否
		cs_e1_dat=lcd_data_16[2*num+1][i];
	}
}

void lcd_display2_32(uchar page,uchar col,uchar num)
{
	uchar i;
	while((cs_e2_rd&0x80)==0x80);//判断空闲否
	cs_e2_com=page;//页地址
	while((cs_e2_rd&0x80)==0x80);//判断空闲否
	cs_e2_com=col;//列地址
	for(i=0;i<16;i++)
	{
		while((cs_e2_rd&0x80)==0x80);//判断空闲否
		cs_e2_dat=lcd_data_32[2*num][i];
	}
	while((cs_e2_rd&0x80)==0x80);//判断空闲否
	cs_e2_com=page+1;//页地址
	while((cs_e2_rd&0x80)==0x80);//判断空闲否
	cs_e2_com=col;//列地址
	for(i=0;i<16;i++)
	{
		while((cs_e2_rd&0x80)==0x80);//判断空闲否
		cs_e2_dat=lcd_data_32[2*num+1][i];
	}
}

void lcd_display2_16(uchar page,uchar col,uchar num)
{
	uchar i;
	while((cs_e2_rd&0x80)==0x80);//判断空闲否
	cs_e2_com=page;//页地址
	while((cs_e2_rd&0x80)==0x80);//判断空闲否
	cs_e2_com=col;//列地址
	for(i=0;i<8;i++)
	{
		while((cs_e2_rd&0x80)==0x80);//判断空闲否
		cs_e2_dat=lcd_data_16[2*num][i];
	}
	while((cs_e2_rd&0x80)==0x80);//判断空闲否
	cs_e2_com=page+1;//页地址
	while((cs_e2_rd&0x80)==0x80);//判断空闲否
	cs_e2_com=col;//列地址
	for(i=0;i<8;i++)
	{
		while((cs_e2_rd&0x80)==0x80);//判断空闲否
		cs_e2_dat=lcd_data_16[2*num+1][i];
	}
}

void cls_lcd(uchar cls_code)
{
	uchar i,j;
	for(j=0;j<4;j++)
	{
        	while((cs_e1_rd&0x80)==0x80);//判断空闲否
        	cs_e1_com=0xb8+j;//页地址
        	while((cs_e1_rd&0x80)==0x80);//判断空闲否
        	cs_e1_com=0x00;//列地址0
        	for(i=0;i<61;i++)
        	{
        		while((cs_e1_rd&0x80)==0x80);//判断空闲否
        		cs_e1_dat=cls_code;
        		delay(2);
        	}
	}
	for(j=0;j<4;j++)
	{
        	while((cs_e2_rd&0x80)==0x80);//判断空闲否
        	cs_e2_com=0xb8+j;//页地址
        	while((cs_e2_rd&0x80)==0x80);//判断空闲否
        	cs_e2_com=0x00;//列地址0
        	for(i=0;i<61;i++)
        	{
        		while((cs_e2_rd&0x80)==0x80);//判断空闲否
        		cs_e2_dat=cls_code;
        		delay(2);
        	}
	}
}

void cls_lcd1(void)//液晶显示点阵1
{
	uchar i,j;
	for(j=0;j<4;j++)
	{
        	while((cs_e1_rd&0x80)==0x80);//判断空闲否
        	cs_e1_com=0xb8+j;//页地址
        	while((cs_e1_rd&0x80)==0x80);//判断空闲否
        	cs_e1_com=0x00;//列地址0
        	for(i=0;i<30;i++)
        	{
        		while((cs_e1_rd&0x80)==0x80);//判断空闲否
        		cs_e1_dat=0xaa;
        		delay(2);
        		cs_e1_dat=0x55;
        		delay(2);
        	}
        	while((cs_e1_rd&0x80)==0x80);//判断空闲否
        	cs_e1_dat=0xaa;
	}
	for(j=0;j<4;j++)
	{
        	while((cs_e2_rd&0x80)==0x80);//判断空闲否
        	cs_e2_com=0xb8+j;//页地址
        	while((cs_e2_rd&0x80)==0x80);//判断空闲否
        	cs_e2_com=0x00;//列地址0
        	for(i=0;i<30;i++)
        	{
        		while((cs_e2_rd&0x80)==0x80);//判断空闲否
        		cs_e2_dat=0x55;
        		delay(2);
        		cs_e2_dat=0xaa;
        		delay(2);
        	}
        	while((cs_e1_rd&0x80)==0x80);//判断空闲否
        	cs_e2_dat=0x55;
	}
}

⌨️ 快捷键说明

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