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

📄 小屏完美程序.c

📁 本人设计的12864完美小屏程序
💻 C
字号:
#include<reg52.h>
#include<absacc.h>
#include<intrins.h>
#include"math.h"
#include "font.h"
#define uchar unsigned char
#define uint unsigned int
#define _Nop() _nop_()


uchar amptitude=0;
uchar flag=0; 

uint counter2=0;
uint counter1=0;

bit int2flag=0;
uchar fast=0;
sbit chip2=P2^2;
sbit chip1=P2^1;
sbit en=P2^3;
sbit rw=P3^6;
sbit di=P2^0;
uchar band[16];


uchar code xiegang[]=
{
	/*--  文字:  /  --*/
	/*--  Times New Roman12;  此字体下对应的点阵为:宽x高=8x16   --*/
	0x00,0x00,0x00,0x00,0x80,0x60,0x18,0x04,0x00,0x60,0x18,0x06,0x01,0x00,0x00,0x00,
};


uchar code maohao[]=
{
	/*--  文字:  :  --*/
	/*--  Times New Roman12;  此字体下对应的点阵为:宽x高=16x16   --*/
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x36,0x36,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};

uchar code dot[]=
{
	/*--  文字:  .  --*/
	/*--  Times New Roman12;  此字体下对应的点阵为:宽x高=8x16   --*/
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,
};
unsigned char code yang[32]={
/*--  文字:  扬  --*/
/*--  隶书12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x00,0x40,0x40,0xF0,0xF0,0x40,0x20,0x90,0x90,0xD0,0x30,0x30,0x00,0x00,0x00,
0x00,0x10,0x13,0x33,0x1F,0x0F,0x15,0x14,0x0A,0x1B,0x24,0x33,0x39,0x0F,0x03,0x00,
};
unsigned char code zhou[32]={
/*--  文字:  州  --*/
/*--  隶书12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x00,0x00,0xC0,0x00,0xF0,0x00,0x80,0xF0,0xF0,0x80,0x00,0xF0,0xF0,0x00,0x00,
0x00,0x10,0x12,0x19,0x0C,0x07,0x00,0x01,0x1F,0x1F,0x00,0x01,0x3F,0x3F,0x00,0x00,


};


unsigned char code da[32]={
/*--  文字:  大  --*/
/*--  Times New Roman12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x00,0x80,0xC0,0x80,0x80,0x80,0xF0,0xF0,0x80,0x80,0x80,0x80,0x00,0x00,0x00,
0x00,0x10,0x18,0x18,0x18,0x0C,0x06,0x03,0x01,0x02,0x06,0x0C,0x18,0x38,0x10,0x00
};

unsigned char code xue[32]={
/*--  文字:  学  --*/
/*--  Times New Roman12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x00,0xC0,0x40,0x70,0x40,0x40,0xF0,0x40,0x40,0x70,0x50,0x40,0xC0,0x00,0x00,
0x00,0x0C,0x05,0x04,0x24,0x25,0x25,0x36,0x1F,0x0D,0x05,0x04,0x04,0x0D,0x0C,0x04,


};

unsigned char code dian[32]={
/*--  文字:  电  --*/
/*--  Times New Roman12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x40,0xE0,0xA0,0xA0,0xA0,0xF0,0xB0,0xA0,0xA0,0xA0,0xE0,0x00,0x00,0x00,0x00,
0x00,0x00,0x07,0x06,0x06,0x02,0x0F,0x1A,0x1A,0x32,0x36,0x33,0x30,0x30,0x18,0x00,
};

unsigned char code zi[32]={
/*--  文字:  子  --*/
/*--  Times New Roman12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x00,0x80,0xA0,0xB0,0xB0,0x90,0xD0,0xD0,0xD0,0xB0,0xB0,0x80,0x00,0x00,0x00,
0x00,0x01,0x01,0x01,0x11,0x31,0x30,0x30,0x1F,0x0F,0x01,0x01,0x01,0x01,0x03,0x00,

};
unsigned char code xi[32]={
/*--  文字:  系  --*/
/*--  隶书12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x00,0x20,0xA0,0xA0,0xE0,0xE0,0xA0,0xA0,0x50,0x50,0x10,0x10,0x00,0x00,0x00,
0x00,0x10,0x10,0x18,0x1A,0x2F,0x23,0x3E,0x3E,0x03,0x05,0x09,0x1A,0x18,0x10,0x00,
};

unsigned char code zhi[]={
0x00,0x00,0x80,0xC0,0xE0,0xF0,0xF8,0xBC,0xFC,0xFE,0xFE,0xFF,0x8F,0xC7,0xC7,0x87,
0x87,0x07,0xC7,0xCF,0xEF,0xEE,0xFE,0xFC,0xFC,0xF8,0xF0,0xE0,0xC0,0x80,0x00,0x00,
0xF8,0xFE,0xFF,0x1F,0x03,0x9F,0xDF,0xDF,0xDF,0xFF,0xFF,0x7F,0x7F,0xFF,0xFD,0xDD,
0xDD,0xFE,0xFF,0xFF,0xE1,0xE1,0xE1,0xE1,0xE3,0xFF,0x7F,0x03,0x1F,0xFF,0xFF,0xF8,
0x1F,0x7F,0xFF,0xF8,0xC0,0x81,0xC3,0xFB,0xFD,0xFF,0x7E,0x6E,0x6E,0x6F,0x6F,0x7F,
0x77,0x76,0x7F,0x7F,0x7F,0x7F,0x6E,0xDE,0xFC,0xF8,0x00,0xC0,0xF8,0xFF,0xFF,0x1F,
0x00,0x00,0x01,0x03,0x07,0x0F,0x1E,0x3F,0x3F,0x7F,0x77,0xF7,0xF7,0xE7,0xE7,0xE7,
0xE7,0xE7,0xE7,0xF7,0xF7,0x77,0x7F,0x7F,0x3F,0x1F,0x1F,0x0F,0x07,0x01,0x00,0x00,
};
unsigned char code hui[512]={//东南大学校徽64×64
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0xC0,
0xE0,0xE0,0xF0,0x70,0x78,0x38,0x38,0x1C,0x1C,0x9C,0x8C,0x8E,0x0E,0x0E,0x0E,0x0E,
0x0E,0xCE,0x0E,0x8E,0x0E,0x0C,0x1C,0x9C,0x1C,0x38,0x38,0x38,0x70,0xF0,0xE0,0xE0,
0xC0,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xE0,0xF0,0x78,0x3C,0x1E,0x8F,0x87,0xE3,0x81,
0x81,0x18,0x18,0xB8,0x48,0x43,0x2A,0x26,0x10,0x10,0x0B,0x0A,0x08,0x08,0x08,0x08,
0x08,0x0B,0x0A,0x09,0x08,0x08,0x18,0x13,0x16,0x23,0x20,0x5C,0x86,0x80,0x00,0x71,
0x63,0x43,0x87,0x8F,0x1E,0x3C,0xF8,0xF0,0xE0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0xE0,0xFC,0xFE,0x1F,0x8F,0x81,0x18,0x16,0x2E,0x84,0xC9,0x33,0x09,
0x04,0x02,0x01,0x58,0x12,0x7F,0x14,0x5C,0x00,0x30,0x0A,0x3F,0x1A,0x44,0x38,0x00,
0x40,0x28,0x1C,0x28,0x4C,0x00,0x30,0x00,0x06,0x57,0xF6,0x48,0x10,0x01,0x02,0x06,
0x0C,0x32,0x63,0xD0,0x33,0x78,0x28,0x39,0x07,0x0F,0x7F,0xFC,0xF0,0x80,0x00,0x00,
0x00,0xE0,0xFF,0xFF,0x0F,0x00,0x50,0x53,0x71,0x01,0xE1,0x3E,0x03,0x03,0x06,0x1E,
0x32,0xE2,0x82,0x02,0x02,0x02,0x02,0x02,0x02,0x82,0xC2,0x62,0x32,0x12,0x1A,0x0E,
0x0E,0x1A,0x12,0x32,0x22,0x42,0xC2,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0xC2,0x72,
0x1A,0x0E,0x02,0x03,0x7F,0xE2,0x06,0x27,0x23,0x20,0x00,0x03,0xFF,0xFF,0xF8,0x00,
0x00,0x0F,0xFF,0xFF,0xE0,0x00,0x84,0x0A,0x8A,0x44,0x81,0x3F,0xE0,0x00,0x00,0x00,
0x80,0x80,0x01,0x87,0x8C,0x38,0x78,0xC8,0x0C,0x03,0x00,0xFC,0x0C,0x0C,0xFE,0x0F,
0x0F,0x0F,0xFE,0x0C,0x0C,0xFC,0x00,0x07,0x0C,0x88,0xE8,0x38,0x8E,0x87,0x01,0x80,
0x80,0x00,0x00,0xC0,0x3C,0x07,0x40,0x43,0xE2,0xA6,0x00,0x80,0xFF,0xFF,0x1F,0x00,
0x00,0x00,0x01,0x0F,0x3F,0xFE,0xF0,0xE1,0x81,0x00,0x00,0x00,0x01,0x07,0x0C,0x30,
0x61,0xC1,0x80,0x01,0x01,0x00,0x00,0x01,0x07,0x0E,0x39,0x6F,0xE3,0xA3,0x2F,0x23,
0x23,0x23,0x2F,0x23,0xA3,0xEF,0x38,0x1C,0x07,0x01,0x00,0x00,0x01,0x01,0x80,0x41,
0x20,0x18,0x0E,0x03,0x00,0x00,0x00,0x00,0x80,0xE0,0xF8,0x7F,0x0F,0x03,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x07,0x0F,0x1E,0x3C,0x78,0xF0,0xE0,0xC0,0x80,
0x00,0x00,0x01,0x03,0x66,0x04,0xC4,0x88,0x48,0x10,0x90,0x90,0xE1,0xA3,0x2E,0x38,
0x70,0x78,0x3C,0xE7,0x43,0x10,0x10,0x10,0x08,0xAC,0xF4,0xF6,0xC2,0x01,0x00,0x00,
0x00,0x80,0xC0,0xE0,0xF0,0x78,0x3C,0x0F,0x07,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x03,
0x07,0x0F,0x0E,0x1C,0x1C,0x1C,0x39,0x39,0x30,0x70,0x71,0x73,0x73,0x6E,0x62,0x60,
0x60,0x60,0x61,0x6D,0x7F,0x74,0x70,0x30,0x39,0x39,0x3B,0x1B,0x1D,0x0C,0x0E,0x07,
0x07,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
uchar code num[][16]={
/*--  文字:  0  --*/
/*--  Times New Roman12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,

/*--  文字:  1  --*/
/*--  Times New Roman12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,

/*--  文字:  2  --*/
/*--  Times New Roman12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,

/*--  文字:  3  --*/
/*--  Times New Roman12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,

/*--  文字:  4  --*/
/*--  Times New Roman12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,

/*--  文字:  5  --*/
/*--  Times New Roman12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,

/*--  文字:  6  --*/
/*--  Times New Roman12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,

/*--  文字:  7  --*/
/*--  Times New Roman12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,

/*--  文字:  8  --*/
/*--  Times New Roman12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,

/*--  文字:  9  --*/
/*--  Times New Roman12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,
};
void delay(uchar k)
{
	while(k!=0)
	{
		_Nop();
		k--;
	}
}
void delay1(uchar v)//延时
{
	while(v!=0) v--;
}
void delay2(uchar v)
{
	while(v!=0)
	{
		delay(60000);
		v--;
	}
}

void wcode(uchar c,uchar cs1,uchar cs2)
{	
	EA=0;
	chip1=cs1;
	chip2=cs2;
	di=0;//write code
	rw=0;//write
	P0=c;//先在bus上放上数据
	en=1;//产生一个下降沿用于写
	delay1(10);//141us
	en=0;
	delay1(10);
	chip1=0;
	chip2=0;
	EA=1;
}
void wdata(uchar c,uchar cs1,uchar cs2)
{
	EA=0;
	chip1=cs1;
	chip2=cs2;
	di=1;//write data
	rw=0;//write
	P0=c;//先在bus上放上数据
	en=1;//产生一个下降沿用于写
	delay1(10);
	en=0;
	delay1(10);
	chip1=0;
	chip2=0;
	EA=1;
}
void dison_off(uchar on)
{
	on=on+0x3e;
	wcode(on,1,1);
}
void setstartline(uchar i)	
{
	i=0xc0+i;
	wcode(i,1,1);
}
void setadr(uchar x,uchar y)	
{
	x=x+0xb8;		
	y=y+0x40;		
	wcode(x,1,1);
	wcode(y,1,1);
}
void clear()    		
{
	uchar i,j;
	for(i=0;i<=7;i++)
	{
		setadr(i,0);
		for(j=0;j<=63;j++)
		{
			wdata(0x00,1,1);//两屏同时写0
		}
	}
}
void print(uchar *c,uchar x,uchar y)
{	
	uchar i,cs,temp,flag=0;
	if(y>=0&&y<128){   //当输入的列地址无效时,不操作
	if(y<=63)
	{
		cs=1;//左屏
	}
	else
	{
		temp=y;
		cs=0;//右屏
		y=y-64;
	}
	setadr(x,y);
	for(i=0;i<=7;i++)
	{
		if(temp+i<128)
		{
		if(y+i>63&&cs==1)
		{
			setadr(x,y+i-64);
			cs=0;
			flag=1;
		}
		wdata(c[i],cs,!cs);
		}
	}
	if(flag==1){cs=1;}//再次写左屏

}
}
void print1(uchar *c,uchar x,uchar y)
{	
	uchar i,cs,temp,flag=0;
	if(y>=0&&y<128){   //当输入的列地址无效时,不操作
	if(y<=63)
	{
		cs=1;//左屏
	}
	else
	{
		temp=y;
		cs=0;//右屏
		y=y-64;
	}
	setadr(x,y);
	for(i=0;i<=7;i++)
	{
		if(temp+i<128)
		{
		if(y+i>63&&cs==1)
		{
			setadr(x,y+i-64);
			cs=0;
			flag=1;
		}
		wdata(c[i],cs,!cs);
		}
	}
	if(flag==1){cs=1;}//再次写左屏
	if(x+1<8)
	{
	setadr(x+1,y);
	for(i=0;i<=7;i++)
	{
		if(temp+i<128)
		{
		if(y+i>63&&cs==1)
		{
			setadr(x+1,y+i-64);
			cs=0;//选中右屏
		}
		wdata(c[i+0x08],cs,!cs);
		}
	}  
	} 
	}   
}
void print2(uchar *c,uchar x,uchar y)
{
	uchar i,cs,temp,flag=0;
	if(y>=0&&y<128){//当输入的列地址无效时,不操作
	if(y<=63)
	{
		cs=1;
	}
	else
	{
		temp=y;
		cs=0;//右屏
		y=y-64;
	}
	setadr(x,y);
	for(i=0;i<16;i++)
	{
		if(temp+i<128)
		{
		if(y+i>63&&cs==1)
		{
			setadr(x,y+i-64);
			cs=0;//选中右屏
			flag=1;//置一标志
		}
		wdata(c[i],cs,!cs);
		}
	}
	if(flag==1){cs=1;}//再次写左屏
	if(x+1<8)
	{
	setadr(x+1,y);
	for(i=0;i<16;i++)
	{
		if(temp+i<128)
		{
		if(y+i>63&&cs==1)
		{
			setadr(x+1,y+i-64);//对应于右屏的地址
			cs=0;//选中右屏
		}
		wdata(c[i+16],cs,!cs);
		}
	}  
	}
	}    
}
void print3(uchar *c,uchar x,uchar y)
{
	uchar i,cs,temp,flag=0,n;
       
 for (n=0;n<8;n++)
 {    
	 if(y>=0&&y<128){//当输入的列地址无效时,不操作
	 if(y<=63)
	{
		cs=1;
	}
	else
	{
		temp=y; 
		cs=0;//右屏
		y=y-64;
	}
       setadr(x+n,y);
	    for(i=0;i<64;i++)
	  {
		if(temp+i<128)
		{
		if(y+i>63&&cs==1)
		{    
			setadr(x+1,y+i-64);//对应于右屏的地址
			cs=0;//选中右屏
		}
		wdata(c[i+64*n],cs,!cs);
		}
	}  
    }  
	}
	}    


void printf(unsigned char code *screen,uchar a,uchar b)
{   uchar n=0;
  while (*screen != '\0')
  {
    print(Character8x8+(*screen++*8),a,b+n*8);
    n++;  
	}
}
void writepixel(uchar x,uchar y)//x----行号,y:列号;
{
	uchar cs,xoffset,xpage,pixel,i=0;
	if(y>=0&&y<128&&x>=0&&x<64)
	{
	if(y<=63)
	{
		cs=1;
	}
	else
	{
		cs=0;
		y=y-64;
	}
	xpage=x/8;
	xoffset=x%8;
	setadr(xpage,y);
	switch(xoffset)
	{
	case 0:pixel=0x01;break;
	case 1:pixel=0x02;break;
	case 2:pixel=0x04;break;
	case 3:pixel=0x08;break;
	case 4:pixel=0x10;break;
	case 5:pixel=0x20;break;
	case 6:pixel=0x40;break;
	case 7:pixel=0x80;break;
	}
	wdata(pixel,cs,!cs);
	}
}
void printnum(uchar number,uchar x,uchar y)  
{
	uchar *p=&num[number][0];
	print1(p,x,y);    
}
void main ()
{    uchar a;
    clear();
	dison_off(1);
  
//	print(Character8x8+('a'*8),0,0);
  //  print1(num[2],0,8);
 //   print1(num[3],0,16);
//	print2(yang,3,10);	
//	print2(zhou,3,26);
//	print2(da,3,42);
//	print2(xue,3,58);
//	print2(maohao,3,74);
//	print2(dian,5,40);
//	print2(zi,5,56);
//	print2(xi,5,72);

  print3(hui,0,0);
//	delay2(100);
//	clear();

 // printf(" I love you!! ",1,0);
 // printf("   ****** ****** ",2,0);

⌨️ 快捷键说明

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