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

📄 text2.c

📁 能够显示32个汉字的LED大屏显示的单片机源代码
💻 C
📖 第 1 页 / 共 3 页
字号:
			u_ee(1);
			for(i=0;i<8;i++)
			delay(255);
			clr_display();
			d_ee(1);
			for(i=0;i<8;i++)
			delay(255);
		}
}
/*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
      cpu init
	  time0 1ms 
	  time baud 9600	
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;*/
void cpu_init(void)
{
	
	 	 TMOD=0x21;
		 IP=0x02;
		 SCON=0x50;
		 PCON|=0x80;           //dual 4800X2=9600

		 TH1=TL1=0xfa;      //fosc=11.0592Mhz baud=9600    TH1=TL1=256-(11059200/4800/32/12)
		 TH0=0xfc;           //1ms time
		 TL0=0x66;
		 IE=0x10;
		 TR0=1;
		 TR1=1;
		 ES=1;
		 EA=1;
	     AUXR=0x02;            //close inter sram
		 receive_flag=0;
	     SRAM1_E=1;
		 write_picture(0,tuwen);
		 write_picture(1,tuwen3);
}
//;;;;;;;;;;;;;erase inter EEPROM;;;;;;;;;;;;;;;;;;;;;;
//    sectors max for 57;  data form 0~57
//    addr=0x8000+sectors*0x200
void erase_eeprom(unsigned char sectors)
{
		unsigned int addr;
		addr=0x8000+sectors*0x200;
		ISP_ADDRH=(unsigned char)(addr>>8);
		ISP_ADDRL=(unsigned char)addr;
		EA=0;
		ISP_CONTR=WAIT_TIME;
		ISP_CONTR=0x80;
		ISP_CMD=ISP_IAP_SECTOR_ERASE;
		ISP_TRIG=0x46;
		ISP_TRIG=0xb9;
//		_NOP();
		;;;
//		ISP_CONTR=0x00;
//		ISP_CMD=0x00;
//		ISP_TRIG=0x00;
//		ISP_ADDRH=0x00;
//		ISP_ADDRL=0x00;
		EA=1;

}
//;;;;;;;;;;read inter data flash(EEPROM)program ;;;;;;;;;;;;;;;;
//;;;;;;;;;;;;;;ext address data is form 0~29696;;;;;;;;;;;;;;;;;;;;
unsigned char read_eeprom(unsigned int addrdata)
{
		unsigned int address;
		unsigned char data1;
		address=0x8000+addrdata;
		ISP_ADDRH=(unsigned char)(address>>8);
		ISP_ADDRL=(unsigned char)address;
		EA=0;
		ISP_CONTR=WAIT_TIME;
		ISP_CONTR=0x80;
		ISP_CMD=ISP_IAP_BYTE_READ;
		ISP_TRIG=0x46;
		ISP_TRIG=0xb9;
//		_NOP();
		;;;
		data1=ISP_DATA;
//		ISP_CONTR=0x00;
//		ISP_CMD=0x00;
//		ISP_TRIG=0x00;
//		ISP_ADDRH=0x00;
//		ISP_ADDRL=0x00;
		EA=1;
		return data1;
}
//;;;;;;;;;;write data flash(EEPROM) program;;;;;;;;;;;;;;;;;;
//;;;;;;;;;;;ext address 0~29696   data :;;;;;;;;;;;;;;;;;;;;
void write_eeprom(unsigned int addrdata,unsigned char data2)
{
		unsigned int address;
		address=0x8000+addrdata;
		ISP_DATA=data2;
		ISP_ADDRH=(unsigned char)(address>>8);
		ISP_ADDRL=(unsigned char)address;
		EA=0;
		ISP_CONTR=WAIT_TIME;
		ISP_CONTR=0x80;
		ISP_CMD=ISP_IAP_BYTE_PROGRAM;
		ISP_TRIG=0x46;
		ISP_TRIG=0xb9;
//		_NOP();
		;;;
//		ISP_CONTR=0x00;
//		ISP_CMD=0x00;
//		ISP_TRIG=0x00;
//		ISP_ADDRH=0x00;
//		ISP_ADDRL=0x00;
		EA=1;
}
//;;;;;;;;;;;;update eeprom page data, page=512byte;;;;;;;
//0:open inter sram;1:read page data; 2:erase page;3:update data;4:rewrite data;5:close inter sram
void pageeeprom_write(unsigned int addrdata,unsigned char data3)
{
		unsigned int address,i;
		unsigned char sectors;
		unsigned char bytecount;
		address=0x8000+addrdata;
		sectors=addrdata/512;
		bytecount=addrdata%512;
		AUXR=0x01;
		for(i=0;i<512;i++)
		intereeprom[i]=read_eeprom(sectors*512+i);
		erase_eeprom(sectors);
		intereeprom[bytecount]=data3;
		for(i=0;i<512;i++)
		write_eeprom(sectors*512+i,intereeprom[i]);
		AUXR=0x03;
}
//;;;;;;;;;;;;;;page=512byte; 
void write_pagedata(unsigned char pagenumber,unsigned char *data3)
{
		unsigned int address,i;
		unsigned char sectors;
		unsigned char bytecount;
		sectors=pagenumber;
		erase_eeprom(sectors);
		for(i=0;i<512;i++)
		write_eeprom(sectors*512+i,data3[i]);
}
void write_picture(unsigned char picturenumber,unsigned char *picturedata)
{
		unsigned int i;
		unsigned char sectors1,sectors;
		sectors=picturenumber*2;
		sectors1=picturenumber*2+1;
		erase_eeprom(sectors);
		erase_eeprom(sectors1);
		for(i=0;i<1024;i++)
		write_eeprom(picturenumber*1024+i,picturedata[i]);
}

void shift_ee(unsigned char cr,unsigned char picturepage)
{
		unsigned char j;
		unsigned int j1;
		unsigned int j2;
		unsigned char lines,line_count;
		CNTB_245=1;
		CNTA_245=0;
		SELECT0=0;
			line_count=cr/8;
			lines=cr%8;
			j1=ret_lines1(lines)-line_count;
			j2=ret_lines2(lines)-line_count;
			for(j=0;j<4;j++)
			{
				yyj[j1*8+j]=read_eeprom(picturepage*1024+j*2*128+cr);
				yyj[j2*8+j]=read_eeprom(picturepage*1024+(j*2+1)*128+cr);
			}
		CNTB_245=0;
		CNTA_245=1;
		SELECT0=1;
}
void s_d_ee(unsigned char picturepage)    //from eeprom read data shift to right
{
		unsigned char i;
		for(i=0;i<128;i++)
		{
			shift_ee(i,picturepage);
			delay(20);
		}
}
void shift_ee3(unsigned char cr,unsigned char picturenumber)
{
		unsigned char j;
		unsigned int j1;
		unsigned char j2;
		unsigned char lines,line_count;
		unsigned int t1,t2,w;
		CNTB_245=1;
		CNTA_245=0;
		SELECT0=0;
			line_count=cr/8;
			lines=cr%8;
			j1=display_line1(lines)+line_count;
			j2=display_line2(lines)+line_count;
			for(j=0;j<4;j++)
			{
//				yyj[j1*8+j]=point[(j*2*128+127)-cr];
//				yyj[j2*8+j]=point[((j*2+1)*128+127)-cr];
				t1=j*2*128+127;
				t2=(j*2+1)*128+127;
				w=picturenumber*1024;
				yyj[j1*8+j]=read_eeprom(w+t1-cr);
				yyj[j2*8+j]=read_eeprom(w+t2-cr);			
			}
		CNTB_245=0;
		CNTA_245=1;
		SELECT0=1;
}
void left_ee_d(unsigned char picturenumber)        //from eeprom read data shift to left
{
		unsigned char i;
		for(i=0;i<128;i++)
		{
			shift_ee3(i,picturenumber);
			delay(20);
		}
}
void clr_display(void)
{
		unsigned char i;
		unsigned int  j;
		CNTB_245=1;
		CNTA_245=0;
		SELECT0=0;
		for(j=0;j<192;j++)
		{
			for(i=0;i<4;i++)
			yyj[j*8+i]=0;
		}
		for(j=4032;j<4096;j++)
		{
			for(i=0;i<4;i++)
			{
				yyj[j*8+i]=0;
			}
		}
		CNTB_245=0;
		CNTA_245=1;
		SELECT0=1;
}
//test cpld ram program////////////////////////////////////////////
void test_cpldram(void)
{
		unsigned int i;
		SRAM1_E=1;
		CNTB_245=1;
		CNTA_245=0;
		SELECT0=0;
		clr_display();
		for(i=1;i<128;i++)
		{
			display_line(i);
			delay(10);
		}
   		CNTB_245=1;
		CNTA_245=0;
		SELECT0=0;
		clr_line(127);
		CNTB_245=0;
		CNTA_245=1;
		SELECT0=1;
}
/*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
		uart interrupt 4
		receive_send
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;*/
void receive_send() interrupt 4
{
		unsigned char s,i;
		unsigned char bcc=0;
		ES=0;
		if(RI)
		{
			RI=0;
			s=SBUF;
			if((rxhead==0)&&(s!=0xff))
			{
				rxhead=0;
				ES=1;
			}
			if((rxhead==1)&&(s!=LOCAL_PORT))
			{
				rxhead=0;
				ES=1;
			}

			receive_buf1[rxhead++]=s;
			if(rxhead==32)
			{
				for(i=0;i<29;i++)
				bcc=bcc^receive_buf1[2+i];	
				
				if(bcc==receive_buf1[31])
				{
					rxhead=0;
					for(i=0;i<29;i++)
					{
						receive_buf1[i]=receive_buf1[i+2];
					}
					
					receive_flag=1;
					ES=1;
				}
				else
				{
					rxhead=0;
					ES=1;
				}
			}

			
		}
		else if(TI)
		{
			TI=0;
			if(receive_count>=4);
			else
				{
				if(receive_count++==3) 
				SBUF=receive_bcc;

				}
		}
		ES=1;
}

//timer0 count 1ms           
void timer0(void) interrupt 1 
{
			TL0=0x66;
			TH0=0xfc;
			time_counter++;
			if(time_counter>20)
			display_flag=1;

}
void extern_interrupt1() interrupt 2
{
		
}
unsigned int ret_lines1(unsigned char lines)
{
		switch(lines)
		{
			case 0:
			return 4047;
			case 1:
			return 4063;
			case 2:
			return 4079;
			case 3:
			return 4095;
			case 4:
			return 15;
			case 5:
			return 31;
			case 6:
			return 47;
			case 7:
			return 63;
			default :
			break;
		}
}
unsigned char ret_lines2(unsigned char lines)
{
		switch(lines)
		{
			case 0:
			return 79;
			case 1:
			return 95;
			case 2:
			return 111;
			case 3:
			return 127;
			case 4:
			return 143;
			case 5:
			return 159;
			case 6:
			return 175;
			case 7:
			return 191;
			default :
			break;
		}
}
unsigned int display_line1(unsigned char lines)
{
		switch(lines)
		{
			case 0:
			return 48;
			case 1:
			return 32;
			case 2:
			return 16;
			case 3:
			return 0;
			case 4:
			return 4080;
			case 5:
			return 4064;
			case 6:
			return 4048;
			case 7:
			return 4032;
			default :
			break;
		}
		
}
unsigned char display_line2(unsigned char lines)
{

⌨️ 快捷键说明

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