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

📄 点阵显示2.c

📁 51单片机,8字条屏显示,内含原理图和多个c源程序
💻 C
字号:
/*点阵显示汉字程串口输出字符数据,P2口输出行扫描信号,P0_0输出595锁存信号。
  由于595接在LED阴极所以取模时要反白处理*/
#include <REGX51.H>
unsigned char code hanzi[4][32]={		 //二维数据
/*-- /*--  文字:  新  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0xFF,0xF7,0x8F,0xEF,0xF1,0x01,0xFD,0xBB,0xFD,0xD7,0x81,0x00,0xED,0xEF,0xED,0xEF,
0xED,0x00,0xED,0xEF,0xED,0xCB,0xEE,0xAB,0xEE,0xAD,0xEF,0x6E,0xEF,0xAB,0xEF,0xF7,

/*--  文字:  年  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0xFF,0xEF,0xC0,0x0F,0xFE,0xF7,0xFE,0xF7,0xFE,0xFB,0xE0,0x0D,0xFE,0xEE,0xFE,0xEF,
0xFE,0xEF,0xFE,0xEF,0x80,0x00,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,

/*--  文字:  快  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0xFE,0xFB,0xFE,0xFB,0xFE,0xFB,0xE0,0x13,0xEE,0xEA,0xEE,0xEA,0xEE,0xFA,0x80,0x0B,
0xFE,0xFB,0xFD,0x7B,0xFD,0x7B,0xFB,0x7B,0xF7,0xBB,0xE7,0xBB,0x8F,0xDB,0xDF,0xEB,

/*--  文字:  乐  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0xF3,0xFF,0xE0,0x7F,0xFF,0x07,0xFE,0xF7,0xFE,0xF7,0xFE,0xF7,0xC0,0x03,0xFE,0xF7,
0xFE,0xEF,0xF6,0xCF,0xEE,0xE7,0xCE,0xF3,0x9E,0xDB,0xDE,0xBD,0xFF,0x7F,0xFF,0xFF
};

unsigned char code sw[16]={0xe0,0xe2,0xe4,0xe6,0xe8,
     0xea,0xec,0xee,0xf0,0xf2,0xf4,0xf6,0xf8,0xfa,0xfc,0xfe}; /*16行段码*/
unsigned char e;
void delay();                      /*延时*/
void out_rxd(unsigned char *d);   /*串口发送*/
/*主函数*/
void main()
{unsigned char i;    //i是从字模数组里向后取数据时的计数器,用以改变显示文字的内容.
 SCON=0;             //初始化串口为工作方式0(同步通信方式,TxD输出同步脉冲)
 while(1)            //重复循环显示
  {
   
	for(i=1;i<=31;i+=2)
     { 
      P2=0xff;
	   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个字的第二字节。
       out_rxd(&hanzi[2][i]);
	   out_rxd(&hanzi[2][i-1]);
	   out_rxd(&hanzi[3][i]);
	   out_rxd(&hanzi[3][i-1]);
	  P0_0=1;					//锁存为高,595锁存信号
	  P0_0=0;
	  P2=sw[e];				    //输出行信号
      delay();	//延时,等待一段时间,让这列显示的内容在人眼内产生“视觉暂留”现象。*/
	 
	  e++;	   //行加一
	  if(e==16)
	    e=0;																	 
	}
   }
	
}
 
  

void out_rxd(unsigned char *d)	  /*从串口发送数据*/
{
     SBUF=*d;
	  while(TI==0);       //等待发送完毕
      TI=0;
	 
 } 
  
 /*延时子程序*/
void delay()
{unsigned char n;
 for(n=100;n>0;n--)
   {;}
}

⌨️ 快捷键说明

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