📄 小屏完美程序.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 + -