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

📄 duziku.c

📁 程序是基于STC89C58的点阵屏显示程序
💻 C
字号:
#include"reg51.h"
//#include "INTRINS.H"

extern void sendcmd(unsigned char cmd);
extern void sendaddress(unsigned long address);


sbit LA=P1^0;
sbit LD=P1^3;

sbit Data=P2^5;	//595数据线
sbit CS=P3^3;	//595输出线
sbit CLK=P3^2;	//595移位时钟线
sbit OE=P3^5;	  //138的使能
sbit Data1=P3^4;	 
bit gundong=0;//16点阵汉字向左滚动显示切换标志(功能键F11实现切换)
bit shangfan=0;//16点阵汉字上翻显示切换标志(功能键F10实现切换)




//	读字库芯片****************************************
sbit GT32_CS=P1^4;	   //字库芯片使能
sbit GT32_CLK=P1^5;	   //字库芯片时钟线
sbit GT32_SI=P1^7;	   //字库芯片输入数据线
sbit GT32_SO=P1^6;	   //字库芯片输出数据线

extern  unsigned char xdata zimoku[3][128];
extern unsigned char page;






//*********************8X16 点扩展字符在芯片中的字节地址的计算***********
unsigned long kuozimuaddress(unsigned char LSB)
{
unsigned long Address;
if (LSB>=0x20&&LSB<=0x7E)  //内码为20H~7E 的95 个ASC 字符
Address=(LSB-0x20)*16+0x1DD780;
return(Address);
}
//******************************************************************


//****************读一个8x16国际音标字符字母字模(16个字节)********
void jiegjzimu_fun(unsigned char zishu)	
{
unsigned i,j,DATA=0;

GT32_CS=0;
GT32_CLK=1;
GT32_CLK=0;


for(i=0;i<16;i++)
	{	
		for(j=0;j<8;j++)
		{	
			GT32_CLK=0;
			if(GT32_SO) 
				DATA=DATA|0x01;
			if(i==0&&j==0)DATA=DATA&0xfe;

			GT32_CLK=1;			
			if(j!=7) DATA=DATA<<1;
		}
		
	    	zimoku[page][zishu/2*32+i*2+zishu%2]=DATA;
		
	
		DATA=0;
		
	}	

GT32_CS=1;
}
//*******************************************************************
/*消除某一个字母的显示字模库*/
void Clear_one_zimu(unsigned char ge)
{
	xdata unsigned char i=0;
	for(i=0;i<16;i++)
		zimoku[page][ge/2*32+i*2+ge%2]=0;	
}






//********************* //15x16点阵汉字字模地址计算**********************
unsigned long getaddress(unsigned char MSB,unsigned char LSB)	
{
unsigned long BaseAdd=0x02C9D0;	
unsigned long Address;
if(MSB>=0xA1&&MSB<=0xAB&&LSB>=0xA1)
	Address=(((unsigned long)MSB-0xA1)*94+((unsigned long)LSB-0xA1))*32+BaseAdd;
else if(MSB>=0xB0&&MSB<=0xF7&&LSB>=0xA1)
	Address=(((unsigned long)MSB-0xB0)*94+((unsigned long)LSB-0xA1)+846)*32+BaseAdd; 
return(Address);

}
//************************************************************

//*读一个15x16汉字字模(32个字节)*********************
void jiehanzi_fun(unsigned char zishu)	
{
unsigned char i,j,DATA=0;
GT32_CS=0;
GT32_CLK=1;
	for(i=0;i<32;i++)
	{	
		for(j=0;j<8;j++)
		{	
			GT32_CLK=0;
			if(GT32_SO) 
				DATA=DATA|0x01;
			else DATA=DATA|0x0;

			GT32_CLK=1;			
			if(j!=7) DATA=DATA<<1;
		}
		zimoku[page][zishu*32+i]=DATA;
		DATA=0;
	}	

GT32_CS=1;
}
//*******************************************************************

	 



//*****************将一个8x16的拼音字母读到显示缓冲区disp_down***************
void Readtodisp_kuodown(unsigned char ASCIICode,unsigned char count)
{
	unsigned long kuozimuAdd=0;
	kuozimuAdd=kuozimuaddress(ASCIICode);
	sendcmd(0x03);
	sendaddress(kuozimuAdd);                                                                                                                                                                                                                                                                      
	jiegjzimu_fun(count);
}	

void Readtodisp_hanzi(unsigned char *hzstr)
{
	int i=0;
	for(i=0;i<4;i++)
	{
	
		sendcmd(0x03);
		sendaddress(getaddress(*(hzstr+i*2),*(hzstr+i*2+1)));
		jiehanzi_fun(i);	
	}
}

void Clear_all(void)
{
	unsigned char  i=0,j=0;
	for(i=0;i<3;i++)
		for(j=0;j<128;j++)
			zimoku[i][j]=0x00;	
}


  

⌨️ 快捷键说明

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