📄 文字-滚动显示.txt
字号:
#include<reg51.h>
#include<intrins.h>
#include<absacc.h>
#define write_cmd_addr_0 XBYTE[0x8fff] //写指令地址左
#define read_state_addr_0 XBYTE[0xafff] //读状态地址左
#define write_data_addr_0 XBYTE[0x9fff] //写数据地址左
#define read_data_addr_0 XBYTE[0xbfff] //读数据地址左
#define write_cmd_addr_1 XBYTE[0x4fff] //写指令地址右
#define read_state_addr_1 XBYTE[0x6fff] //读状态地址右
#define write_data_addr_1 XBYTE[0x5fff] //写数据地址右
#define read_data_addr_1 XBYTE[0x7fff] //读数据地址右
#define Col_Add 0x40//列地址
#define Page_Add 0xb8//行地址
#define Start_line 0xc0//起始行
/*********函数声明***********/
void init(void);
void delay_ms(unsigned int n);
void delay_10us(unsigned char n);
void busy_check(bit sel);
void write_cmd(unsigned char command, bit sel);
void write_data(unsigned char mydata, bit sel);
void clear_screen(void);
void Chinese_disp(unsigned char y,unsigned char x,unsigned char n,bit sel);
void display(void);
void tx_disp(unsigned char y,unsigned char x,unsigned char *tx_name,bit sel,unsigned char length);
/*****************************
字模,此字体下对应的
点阵为:宽x高=16x16
*****************************/
unsigned char code Chinese_character[][32]=
{
{
0x80,0xC0,0xF0,0xFF,0x0F,0x02,0xFE,0xFE,0x92,0x93,0x91,0x93,0x92,0xFE,0xFE,0x00,
0x00,0x00,0x7F,0x7F,0x40,0x60,0x31,0x1D,0x0F,0x03,0x3F,0x7F,0x40,0x41,0x79,0x78 // 倪 0
},
{
0x00,0x10,0x10,0x10,0x11,0x11,0x91,0x91,0xF9,0xFD,0x17,0x13,0x11,0x10,0x10,0x10,
0x40,0x40,0x40,0x7E,0x7E,0x42,0x7E,0x7F,0x43,0x7E,0x7E,0x42,0x7E,0x7E,0x40,0x40 // 孟 1
},
{
0x40,0x40,0x60,0x20,0x30,0x38,0x2C,0xE7,0xE7,0x2C,0x28,0x38,0x30,0x60,0x60,0x20,
0x00,0x40,0x61,0x3D,0x1D,0x49,0xC1,0xFF,0x7F,0x05,0x0D,0x39,0x39,0x11,0x01,0x00 // 余 2
},
{
0x20,0x30,0xBC,0xEF,0x73,0x10,0x80,0xC2,0x72,0x3E,0x0E,0x42,0xC2,0xFE,0x7E,0x00,
0x22,0x23,0x23,0x32,0x12,0x12,0x00,0x7F,0x7F,0x21,0x21,0x21,0x21,0x7F,0x7F,0x00 // 绍 3
},
{
0x00,0x82,0x8E,0xBC,0xB8,0x92,0x8E,0xBC,0xB8,0x90,0xC0,0xF0,0xBE,0x9E,0x84,0x80,
0x40,0x60,0x30,0x18,0x1E,0x0E,0x04,0x00,0x00,0x02,0x06,0x1C,0x78,0x70,0x20,0x00 //兴 4
},
{
0x08,0x08,0x08,0x08,0x78,0xF8,0x89,0x0F,0x0E,0x88,0xF8,0x78,0x08,0x08,0x08,0x08,
0x40,0x40,0x40,0x60,0x20,0x31,0x1B,0x0E,0x0E,0x1B,0x11,0x30,0x60,0x60,0x20,0x20 //文 5
},
{
0x44,0x44,0xFC,0xFC,0x44,0x44,0xFE,0xFE,0x92,0xFE,0xFE,0x92,0x92,0xFE,0xFE,0x00,
0x10,0x10,0x1F,0x0F,0x48,0x48,0x45,0x45,0x44,0x7F,0x7F,0x44,0x44,0x45,0x45,0x40 //理 6
},
{
0x40,0x70,0x30,0x12,0x5E,0x5C,0x54,0x51,0x5F,0xDE,0xD4,0x58,0x5F,0x77,0x32,0x10,
0x00,0x02,0x02,0x02,0x02,0x02,0x42,0xC2,0xFF,0x7F,0x02,0x02,0x02,0x02,0x02,0x02 //学 7
},
{
0xFE,0xFE,0x32,0x7A,0xCE,0x8E,0x2C,0x24,0x25,0x27,0x26,0x24,0x24,0x2C,0x0C,0x04,
0xFF,0xFF,0x02,0x06,0x87,0xC3,0x71,0x3F,0x0F,0x01,0x7F,0xFF,0x81,0x81,0xF1,0xF1 //院 8
},
{
0x00,0x00,0x00,0xF8,0xF8,0x48,0x4C,0x4F,0x4B,0x4A,0x48,0x48,0xF8,0xF8,0x00,0x00,
0x00,0x00,0x00,0xFF,0xFF,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0xFF,0xFF,0x00,0x00 //自 9
},
{
0x20,0x24,0x24,0xE4,0xE4,0x24,0x24,0x24,0x30,0x10,0xFF,0xFF,0x10,0xF0,0xF0,0x00,
0x08,0x1C,0x1F,0x0B,0x0C,0x0D,0x4F,0x6E,0x34,0x1C,0x0F,0x23,0x60,0x7F,0x3F,0x00 //动 10
},
{
0x80,0xC0,0x60,0xF8,0xFF,0x07,0x02,0x00,0xFF,0xFF,0xE0,0x70,0x3C,0x1C,0x08,0x00,
0x00,0x00,0x00,0x7F,0x7F,0x04,0x06,0x03,0x3F,0x7F,0x40,0x40,0x40,0x78,0x78,0x00 //化 11
},
{
0x00,0xE0,0xF0,0x18,0x08,0x18,0xF0,0xE0,0x00,0x00,0xF8,0xF8,0x88,0x88,0x88,0x08,
0x08,0x00,0x00,0x10,0x10,0xF8,0xF8,0x00,0x00,0x00,0x00,0x00,0x0F,0x1F,0x30,0x20 // 12
},
{
0x30,0x1F,0x0F,0x00,0x00,0x19,0x39,0x21,0x20,0x31,0x1F,0x0E,0x00,0x00,0x20,0x20,
0x3F,0x3F,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 //051 13
},
{
/*-- 文字: 行 --*/
0x10,0x08,0x84,0xC6,0x73,0x22,0x40,0x44,0x44,0x44,0xC4,0x44,0x44,0x44,0x40,0x00,
0x02,0x01,0x00,0xFF,0x00,0x00,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00//"行",14
},
{
/*-- 文字: 胜 --*/
0x00,0x00,0xFE,0x12,0x12,0xFE,0x20,0x1C,0x10,0x10,0xFF,0x10,0x10,0x10,0x00,0x00,
0x40,0x30,0x0F,0x21,0x41,0x3F,0x20,0x21,0x21,0x21,0x3F,0x21,0x21,0x21,0x20,0x00//"胜",15
},
{
/*-- 文字: 于 --*/
0x40,0x40,0x42,0x42,0x42,0x42,0x42,0xFE,0x42,0x42,0x42,0x42,0x42,0x42,0x40,0x00,
0x00,0x00,0x00,0x00,0x20,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00//"于",16
},
{
/*-- 文字: 言 --*/
0x00,0x04,0x04,0xA4,0xA4,0xA4,0xA5,0xA6,0xA4,0xA4,0xA4,0xA4,0x04,0x04,0x04,0x00,
0x00,0x00,0x00,0xFC,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0xFC,0x00,0x00,0x00,0x00//"言",17
}
};
unsigned char tanhao[]=
{
/*-- 文字: ! --*/
0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x30,0x00,0x00,0x00//"!",18
};
unsigned char tx_051[]=
{0x00,0xE0,0xF0,0x18,0x08,0x18,0xF0,0xE0,0x00,0x00,0xF8,0xF8,0x88,0x88,0x88,0x08,
0x08,0x00,0x00,0x10,0x10,0xF8,0xF8,0x00,0x00,0x00,0x00,0x00,0x0F,0x1F,0x30,0x20,
0x30,0x1F,0x0F,0x00,0x00,0x19,0x39,0x21,0x20,0x31,0x1F,0x0E,0x00,0x00,0x20,0x20,
0x3F,0x3F,0x20,0x20,0x00,0x00
};
/***********************
检测忙状态
***********************/
void busy_check(bit sel)
{
unsigned char busy;
if(sel)
{
while(busy&0x80)
{busy=read_state_addr_1;}
}
else
{while(busy&0x80)
{busy=read_state_addr_0;}
}
}
/***********************
写命令
***********************/
void write_cmd(unsigned char command, bit sel)
{ if(sel)
{
busy_check(1);
write_cmd_addr_1=command;
}
else
{ busy_check(0);
write_cmd_addr_0=command;
}
}
/***********************
写数据
***********************/
void write_data(unsigned char mydata,bit sel)
{if(sel)
{busy_check(1);
write_data_addr_1=mydata;
}
else
{busy_check(0);
write_data_addr_0=mydata;
}
}
/***********************
清屏
***********************/
void clear_screen(void)
{
unsigned char i;
unsigned char k;
write_cmd(Col_Add,0);
for(i=0;i<8;i++)
{
write_cmd(Page_Add+i,0);
for(k=0;k<64;k++)
{write_data(0x00,0);}
}
write_cmd(Col_Add,1);
for(i=0;i<8;i++)
{
write_cmd(Page_Add+i,1);
for(k=0;k<64;k++)
{write_data(0x00,1);}
}
}
/***********************
显示汉字
***********************/
void Chinese_disp(unsigned char y,unsigned char x,unsigned char n,bit sel)
{ unsigned char xx,i;
unsigned char j;
if (sel)
{
for(i=0;i<2;i++)
{ write_cmd(Page_Add+y+i,1);
write_cmd(Col_Add+x,1);
for(j=0;j<16;j++)
{ write_data(Chinese_character[n][16*i+j],1); }
}
}
else
{
for(i=0;i<2;i++)
{ sel=0;
write_cmd(Page_Add+y+i,0);
write_cmd(Col_Add+x,0);
for(j=0;j<16;j++)
{
xx=x+j;
if(xx==64)
{
sel=1;
write_cmd(Page_Add+y+i,1);
write_cmd(Col_Add,1);
}
write_data(Chinese_character[n][16*i+j],sel);
}
}
}
}
void tx_disp(unsigned char y,unsigned char x,unsigned char *tx_name, bit sel,unsigned char length)
{ unsigned char xx,i;
unsigned char j;
if (sel)
{
for(i=0;i<2;i++)
{ write_cmd(Page_Add+y+i,1);
write_cmd(Col_Add+x,1);
for(j=0;j<length;j++)
{ write_data(tx_name[length*i+j],1); }
}
}
else
{
for(i=0;i<2;i++)
{ sel=0;
write_cmd(Page_Add+y+i,0);
write_cmd(Col_Add+x,0);
for(j=0;j<length;j++)
{
xx=x+j;
if(xx==64)
{
sel=1;
write_cmd(Page_Add+y+i,1);
write_cmd(Col_Add,1);
}
write_data(tx_name[length*i+j],sel);
}
}
}
}
//显示叹号'!'
//
//***********************/
//void tanhao_disp(unsigned char pag,unsigned char col,unsigned char *chinese2)
//{
// unsigned char i=0;
// unsigned char j=0;
// for(i=0;i<2;i++)
// {
// write_cmd_2(Page_Add+pag+i);
// write_cmd_2(Col_Add+col);
// for(j=0;j<8;j++)
// write_data_2(chinese2[8*i+j]);
//
// }
//
//}
void display(void)
{
//tx_disp(4,48,tx051,0,27) ;
unsigned char i;
for(i=Start_line;i<0xff;i++)
{
Chinese_disp(0,16,3,0);
Chinese_disp(0,32,4,0);
Chinese_disp(0,48,5,0);
Chinese_disp(0,0,6,1);
Chinese_disp(0,16,7,1);
Chinese_disp(0,32,8,1);
Chinese_disp(2,40,0,0);
Chinese_disp(2,56,1,0);
Chinese_disp(2,8,2,1);
Chinese_disp(4,40,9,0);
Chinese_disp(4,56,10,0);
Chinese_disp(4,8,11,1);
tx_disp(6,45,tx_051,0,27);
// Chinese_disp(0,16,0);
// Chinese_disp_1(0,32,1);
// Chinese_disp_1(0,48,2);
// tanhao_disp(6,32,tanhao);
write_cmd(i,0);
write_cmd(i,1);
delay_ms(1000);
}
delay_ms(6000);
}
void delay_10us(unsigned char n)
{do
{_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}while(--n);
}
void delay_ms(unsigned int n)
{
do delay_10us(131);
while(--n);
}
void init(void) //12864初始化
{
delay_ms(200);
write_cmd(0xc0,0);
delay_ms(5);
write_cmd(0x3f,0);
delay_ms(200);
write_cmd(0xc0,1);
delay_ms(5);
write_cmd(0x3f,1);
}
/***********主程序************/
void main(void)
{ init();
clear_screen();
_nop_();
display();
while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -