📄 stc eeprom.c
字号:
/*********************************************
;Controller:ST7920
;MCU:AT89C52 ,晶体频率:12MHz
;LCM:128*64
;LCM型号:FYD12864-0402
;LCM 接口:1:GND 2:VCC 3:V0 4.RS 5:RW 6:E 7--14:DB0-DB7 15:PSB16:NC 17:RST 18:Vout 19:A 20:K
;**********************************************/
#include < stdio.h >
#include < intrins.h >
#include < reg52.h >
#include < string.h >
#include"STCINC.H"
#define DATAOUT P0
sbit RS=P2^3;
sbit RW=P2^5;
sbit E=P2^7;
sbit PSB=P2^6;
sbit RST=P2^0;
sbit BF=DATAOUT^7;
unsigned char code tab[64][16]={
/*-- 文字: C --*/
/*-- 隶书48; 此字体下对应的点阵为:宽x高=32x64 --*/
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,
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,
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,
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,
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,
0x00,0x07,0xFE,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x1F,0xFF,0xF0,0x7F,0xF8,0x07,0xFE,0x03,0xFF,0xFF,0xC0,0x0F,0xFF,0xFF,0xF8,
0x00,0x7F,0x8F,0xF0,0x7F,0xF8,0x07,0xFE,0x03,0xFF,0xFF,0xC0,0x1F,0xFF,0xFF,0xF8,
0x00,0xFC,0x01,0xF8,0x0F,0xE0,0x00,0xF8,0x00,0x07,0xE0,0x00,0x1F,0xC7,0xE1,0xF8,
0x01,0xF8,0x00,0xF8,0x07,0x80,0x00,0x60,0x00,0x03,0xC0,0x00,0x1E,0x03,0xC0,0x78,
0x01,0xF0,0x00,0x78,0x07,0x80,0x00,0x60,0x00,0x03,0xC0,0x00,0x1C,0x03,0xC0,0x38,
/*-- 文字: U --*/
/*-- 隶书48; 此字体下对应的点阵为:宽x高=32x64 --*/
0x03,0xE0,0x00,0x38,0x07,0x80,0x00,0x60,0x00,0x03,0xC0,0x00,0x1C,0x03,0xC0,0x3C,
0x07,0xE0,0x00,0x3C,0x07,0x80,0x00,0x60,0x00,0x03,0xC0,0x00,0x38,0x03,0xC0,0x1C,
0x07,0xC0,0x00,0x1C,0x07,0x80,0x00,0x60,0x00,0x03,0xC0,0x00,0x38,0x03,0xC0,0x1C,
0x0F,0xC0,0x00,0x1C,0x07,0x80,0x00,0x60,0x00,0x03,0xC0,0x00,0x30,0x03,0xC0,0x0C,
0x0F,0x80,0x00,0x0C,0x07,0x80,0x00,0x60,0x00,0x03,0xC0,0x00,0x30,0x03,0xC0,0x0C,
0x1F,0x80,0x00,0x0C,0x07,0x80,0x00,0x60,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,
0x1F,0x80,0x00,0x00,0x07,0x80,0x00,0x60,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,
0x1F,0x00,0x00,0x00,0x07,0x80,0x00,0x60,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,
0x3F,0x00,0x00,0x00,0x07,0x80,0x00,0x60,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,
0x3F,0x00,0x00,0x00,0x07,0x80,0x00,0x60,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,
0x3F,0x00,0x00,0x00,0x07,0x80,0x00,0x60,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,
0x3F,0x00,0x00,0x00,0x07,0x80,0x00,0x60,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,
0x3F,0x00,0x00,0x00,0x07,0x80,0x00,0x60,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,
0x3E,0x00,0x00,0x00,0x07,0x80,0x00,0x60,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,
0x3E,0x00,0x00,0x00,0x07,0x80,0x00,0x60,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,
0x3E,0x00,0x00,0x00,0x07,0x80,0x00,0x60,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,
/*-- 文字: I --*/
/*-- 隶书48; 此字体下对应的点阵为:宽x高=32x64 --*/
0x3E,0x00,0x00,0x00,0x07,0x80,0x00,0x60,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,
0x3E,0x00,0x00,0x00,0x07,0x80,0x00,0x60,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,
0x3E,0x00,0x00,0x00,0x07,0x80,0x00,0x60,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,
0x3E,0x00,0x00,0x00,0x07,0x80,0x00,0x60,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,
0x3E,0x00,0x00,0x00,0x07,0x80,0x00,0x60,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,
0x3F,0x00,0x00,0x00,0x07,0x80,0x00,0x60,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,
0x3F,0x00,0x00,0x00,0x07,0x80,0x00,0x60,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,
0x3F,0x00,0x00,0x00,0x07,0x80,0x00,0x60,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,
0x3F,0x00,0x00,0x00,0x07,0x80,0x00,0x60,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,
0x3F,0x00,0x00,0x00,0x07,0x80,0x00,0x60,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,
0x1F,0x00,0x00,0x0C,0x07,0x80,0x00,0x60,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,
0x1F,0x80,0x00,0x0C,0x07,0x80,0x00,0x60,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,
0x1F,0x80,0x00,0x1C,0x07,0x80,0x00,0x60,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,
0x1F,0x80,0x00,0x1C,0x07,0x80,0x00,0x60,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,
0x0F,0x80,0x00,0x18,0x07,0x80,0x00,0xE0,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,
0x0F,0xC0,0x00,0x38,0x07,0xC0,0x00,0xE0,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,
/*-- 文字: T --*/
/*-- 隶书48; 此字体下对应的点阵为:宽x高=32x64 --*/
0x07,0xC0,0x00,0x70,0x07,0xC0,0x00,0xE0,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,
0x03,0xE0,0x00,0x70,0x03,0xC0,0x01,0xC0,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,
0x03,0xF0,0x00,0xE0,0x03,0xE0,0x03,0xC0,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,
0x01,0xF8,0x03,0xC0,0x01,0xF0,0x07,0x80,0x00,0x07,0xE0,0x00,0x00,0x07,0xE0,0x00,
0x00,0x7F,0x1F,0x80,0x00,0xFE,0x3F,0x00,0x03,0xFF,0xFF,0xC0,0x00,0x3F,0xFC,0x00,
0x00,0x3F,0xFF,0x00,0x00,0x7F,0xFC,0x00,0x03,0xFF,0xFF,0xC0,0x00,0x3F,0xFC,0x00,
0x00,0x0F,0xFC,0x00,0x00,0x1F,0xF8,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,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,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,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,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
};
//sbit BF=DATAOUT^7;
/**********************************
**********************************
延时
*********************************
*********************************/
void delayms(unsigned int time) //延时约time个ms
{
unsigned char i;
while(time--)
{
for(i=0;i<120;i++) ;
}
}
void delay50us(unsigned int time) //延时约time个us
{
unsigned char i;
while(time--)
{
for(i=0;i<6;i++) ;
}
}
void init()
{
PSB=1;
delay50us(1);
}
void writecmd(unsigned char dat)
{ unsigned char busy;
do
{
DATAOUT=0xff;
RS=0;
RW=1;
E=1;
busy=DATAOUT;
}
while(busy&0x80);
delayms(100);
RS=0;
RW=0;
DATAOUT=dat;
E=1;
_nop_();
E=0;
}
void writedata(unsigned char dat)
{ unsigned char busy;
do
{
DATAOUT=0xff;
RS=0;
RW=1;
E=1;
busy=DATAOUT;
}
while(busy&0x80);
RS=1;
RW=0;
DATAOUT=dat;
E=1;
_nop_();
E=0;
}
void controldat(unsigned char dat[])//指令数据
{ unsigned char i;
unsigned char d;
i=strlen(dat);
for(d=0;d<i;d++) writecmd(dat[d]);
}
void displaydat(unsigned char address,unsigned char dat[])//显示的数据
{ unsigned char i;
unsigned char d;
i=strlen(dat);
writecmd(address);
for(d=0;d<i;d++) { writedata(dat[d]); }
}
unsigned char byteread(unsigned char addh,unsigned char addl)
{
ISP_ADDRH = addh;
ISP_ADDRL = addl;
ISP_CONTR = ISP_ENABLE; //设置等待时间,并允许ISP操作
ISP_CMD = ISP_BYTE_READ; //选择字节读读操作
ISP_TRIG = 0X46;
_nop_();
_nop_();
ISP_TRIG = 0XB9;
_nop_();
_nop_();
return ISP_DATA;
}
void bytewrite(unsigned char addh,unsigned char addl,unsigned char dat)
{
ISP_DATA = dat;
ISP_ADDRH = addh;
ISP_ADDRL = addl;
ISP_CONTR = ISP_ENABLE; //设置等待时间,并允许ISP操作
ISP_CMD = ISP_BYTE_PROGRAM; //选择字节写操作
ISP_TRIG = 0X46;
_nop_();
_nop_();
ISP_TRIG = 0XB9;
_nop_();
_nop_();
}
void sectorerase(unsigned char addh,unsigned char addl )
{
ISP_ADDRH = addh;
ISP_ADDRL = addl;
ISP_CONTR = ISP_ENABLE; //设置等待时间,并允许ISP操作
ISP_CMD = ISP_BYTE_SECTOR_ERASE; //选择扇区擦除操作
ISP_TRIG = 0X46;
_nop_();
_nop_();
ISP_TRIG = 0XB9;
_nop_();
_nop_();
}
//*********
void main()
{ unsigned char x=0x80;unsigned char y=0x80;
unsigned char d,i;
void delayms(unsigned int time);
void delay50us(unsigned int time);
void init();
void writecmd(unsigned char dat);
void writedata(unsigned char dat);
void controldat(unsigned char dat[]);//指令数据
void displaydat(unsigned char address,unsigned char dat[]);//显示的数据
init();
// writecmd(0x30); delay50us(1);
writecmd(0x01); delay50us(1);//controldat(0x0f); delay50us(1);
writecmd(0x0c); delay50us(1);
/* writecmd(0x36); delay50us(10);
// controldat(0x06); delay50us(1);
// controldat(0x3f); delay50us(1);
// controldat(0x80); delay50us(1);
// controldat(0x04); delay50us(1);
// writecmd(0x05);
// displaydat(0x90,"曾南东是个大大大"); delay50us(1);
// displaydat(0x88,"曾南东是个大大大"); delay50us(1);
// delayms(65534);
// displaydat(&n[0]); delay50us(1);
// controldat(0x0a); delay50us(1);
// displaydat(&n[0]); delay50us(1);
// controldat(0x05); delay50us(1);
// displaydat(0xDE); delay50us(1);
// displaydat("i"); delay50us(1);
// displaydat("我"); delay50us(1);
// delayms(1000);
// writecmd(0x01); delay50us(10);
writecmd(y); delay50us(1);
writecmd(x); delay50us(1);
for(d=0;d<32;d++)
{ y++;
for(i=0;i<16;i++)
{
writedata(tab[d][i]);delay50us(1);
}
writecmd(y); delay50us(1);
writecmd(0x80); delay50us(1);
}
x=0x88; y=0x80;
writecmd(y); delay50us(1);
writecmd(x); delay50us(1);
for(d=32;d<65;d++)
{
for(i=0;i<16;i++)
{
writedata(tab[d][i]);delay50us(1);
}
y++;
writecmd(y); delay50us(1);
writecmd(x); delay50us(1);
}
// delayms(200); */
writecmd(0x30); delay50us(1);
writecmd(0x01); delay50us(1);
displaydat(0x90,"作者:");
displaydat(0x88," 裴建国 杨统芳");
displaydat(0x98," 童月雷 07.6.14");
displaydat(0x80,"无线语音 据传输");
writecmd(0x84);
writedata(0xca); //“数”在keil里面不能转换内码,故单独写
writedata(0xfd);
delayms(1000);
d='9';
sectorerase(0x80,0x00);
delayms(20);
bytewrite(0x80,0x00,d);
delayms(5);
i=byteread(0x80,0x00);
writecmd(0x01);
writecmd(0x90);
writedata(i);
delayms(4000);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -