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

📄 4字点阵屏驱动程序.c

📁 51单片机C语言多种点阵屏驱动程序(开发软件为keil C ---8字点阵屏左移程序
💻 C
字号:
/****************************************************************************************

51_isp学习板 4个汉字LED点阵屏驱动程序。 C51程序
编写:luojian
日期:2007-7-26

Email:lojan@126.com
接口:
请查看"51_isp学习板原理图"

本程序目的在于了解和撑握单片机人驱动16*16点阵LED动态扫描程序的写法和用LED显示汉字的方法。
所先由专用汉字取模软件对汉字进行取模,由于一个汉字至少要16*16的点阵可能正常,所以一个汉字
在单片机中要32个字节的内存保存。89S51数据存储器有4K,所以89S51中可以保存100个左右的汉字。

单片机通过串口与点阵屏连接,点阵屏列驱动为74HC595一个数8位,四字须8个595IC,行驱动为74HC138由于
两个138驱动16行。

 程序的算法为取出每一个汉字的最上一行编码通过串口发送到595上,595通过内移位锁存器将数据锁存在
  端口上,8951向595发送移位时钟信号和锁存信号。并驱动138对各列进行扫描。扫描完16行后重复。

*****************************************************************************************/
#include <at89x51.H>
unsigned char code hanzi[4][32]; //字模数组
unsigned char code sw[16]={0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f, //138的驱动代码,根据138的真值表计算而来。
                           }; /*16行段码*/
unsigned char e;
void delay();                      /*延时*/

/*********************************************************
函数名:out_rxd
功能:从串口发送数据。串口工作在同步模式下。RX发送数。TX发送时钟脉
51_isp学习板 4个汉字LED点阵屏驱动程序。 C51程序

/*********************************************************/

void out_rxd(unsigned char *d)	  /*从串口发送数据*/
{
     SBUF=*d;
	  while(TI==0);       //等待发送完毕
      TI=0;
 } 

/*********************************************************
函数名:delay()
功能:延时
51_isp学习板 4个汉字LED点阵屏驱动程序。 C51程序

/*********************************************************/
void delay()
{unsigned char n;
 for(n=50;n>0;n--)
   {;}
}
/*********************************************************
函数名:main()
功能:主功能函数
51_isp学习板 4个汉字LED点阵屏驱动程序。 C51程序

/*********************************************************/
void main()
{
 unsigned char i;    //i是从字模数组里向后取数据时的计数器,用以改变显示文字的内容.
 P2_0=0;             //关闭蜂鸣器
 SCON=0;             //初始化串口为工作方式0(同步通信方式,TxD输出同步脉冲)
 while(1)            //重复循环显示
  {
   
	for(i=1;i<=31;i+=2)         //
     { 
       P0_4=1; 
	   out_rxd(&hanzi[0][i]);	//从串口输出第1个字的第一字节。
	   out_rxd(&hanzi[0][i-1]);	//从串口输出第1个字的第二字节。
       out_rxd(&hanzi[1][i]);	//从串口输出第2个字的第一字节。
	   out_rxd(&hanzi[1][i-1]);	//从串口输出第2个字的第二字节。0x00,
       out_rxd(&hanzi[2][i]);
	   out_rxd(&hanzi[2][i-1]);
	   out_rxd(&hanzi[3][i]);			
	   out_rxd(&hanzi[3][i-1]);
	  P0_6=1;					//锁存为高,595锁存信号
	  P0=sw[e];				    //输出行信号
      delay();	//延时,等待一段时间,让这列显示的内容在人眼内产生“视觉暂留”现象。*/	 
                //关闭显示
   	  e++;	    //行加一
	  if(e==16) //一共16行。
	    e=0;																	 
	}
   }
	
}

unsigned char code hanzi[4][32]={		 //二维数据
/*--  文字:  我  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0xFD,0x9F,0xF5,0xE3,0xED,0xEF,0xED,0xEF,0xFD,0xEF,0x80,0x00,0xFD,0xEF,0xED,0xEF,
0xEB,0x8F,0xF3,0xE3,0xFB,0xEC,0xF5,0xEF,0xB6,0x6F,0xAF,0xEF,0x9F,0xEB,0xBF,0xF7,

/*--  文字:  很  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0xFF,0xF7,0xE0,0x27,0xEF,0xBB,0xE0,0x2D,0xEF,0xAE,0xEF,0xB7,0xE0,0x3B,0xFD,0xB9,
0xED,0xBA,0xC5,0xBB,0xFB,0xBB,0xF7,0xBB,0xE5,0xBB,0x8E,0xBB,0xDF,0x1B,0xFF,0xBB,

/*--  文字:  爱  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0xE0,0xFF,0xF6,0x03,0xF7,0xB7,0xFB,0x6F,0x80,0x03,0xBF,0xBB,0xFF,0xBD,0xC0,0x03,
0xFF,0xDF,0xF0,0x1F,0xFB,0xCF,0xFD,0x2F,0xFC,0xF7,0xF3,0x39,0x8F,0xCE,0xDF,0xF3,

/*--  文字:  你  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0xFF,0x6F,0xFE,0x6F,0xDF,0x77,0x80,0x37,0xDF,0xBB,0xED,0xD3,0xFD,0xE9,0xF5,0xBA,
0xED,0x3B,0xED,0xBB,0xDD,0xDB,0x9D,0xDB,0xDD,0xEB,0xFD,0x7B,0xFE,0xFB,0xFF,0xFF


};


⌨️ 快捷键说明

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