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

📄 stc eeprom.c

📁 Stc89c58RD+ 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 + -