精华内容
下载资源
问答
  • 单片机led点阵汉字显示 感觉挺不错的 适合初学者 就传上来给大家分享
  • 单片机-中级实验例程--LED点阵显示汉字
  • 实验6.LED点阵显示汉字 //该板子上的点阵为8*8,只能显示简单的一些汉子,如果要显示真正的汉字 //通过取模软件取的可以选择16*16点阵的板子 #include<reg51.h> #include<intrins.h> sbit SRCLK=P3^6;...

    实验6.LED点阵显示汉字

    //该板子上的点阵为8*8,只能显示简单的一些汉子,如果要显示真正的汉字
    //通过取模软件取的可以选择16*16点阵的板子
    
    #include<reg51.h>
    #include<intrins.h>
    
    sbit SRCLK=P3^6;
    sbit RCLK=P3^5;
    sbit SER=P3^4;
    
    //--定义要使用的IO口--//
    #define COMMONPORTS		P0
    
    //--列选通控制--//
    unsigned char code TAB[8]  = {0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
    
    //--点阵字码--//
    unsigned char code CHARCODE[4][8]=
    {
    
    0x00,0x12,0x14,0x78,0x14,0x12,0x00,0x00,  //大
    0x00,0x08,0x12,0x01,0xFF,0x00,0x10,0x08,   //小
    0x7F,0x41,0x5D,0x55,0x5D,0x41,0x7F,0x00,  //回
    
    {0x7C,0x48,0x48,0xFF,0x48,0x48,0x7C,0x00}  //中
    
    };
    void delay(unsigned int time)
    {
      unsigned int i,j;
      for(i=0;i<time;i++)
        for(j=0;j<121;j++);
    }
    
    /*******************************************************************************
    * 函数名         : Hc595SendByte(unsigned char dat)
    * 函数功能		   : 想74H595发送一个字节的数据
    * 输入           : 无
    * 输出         	 : 无
    *******************************************************************************/
    void Hc595SendByte(unsigned char dat)
    {
    	unsigned char a;
    	SRCLK=0;
    	RCLK=0;
    	for(a=0;a<8;a++)
    	{
    		SER=dat>>7;
    		dat<<=1;
    
    		SRCLK=1;
    		_nop_();
    		_nop_();
    		SRCLK=0;	
    	}
    
    	RCLK=1;
    	_nop_();
    	_nop_();
    	RCLK=0;
    }
    /*******************************************************************************
    * 函数名         : main
    * 函数功能		   : 主函数
    * 输入           : 无
    * 输出         	 : 无
    *******************************************************************************/
    
    void main()
    {	
     	unsigned char tab, j;
    	unsigned int  i;
    
    	while(1)
    	{	
    		for(i= 0; i<50; i++ )   //两个字之间的扫描间隔时间
    		{
    			for(tab=0;tab<8;tab++)
    			{	
    
    				Hc595SendByte(0x00);			     //消隐																
    				COMMONPORTS	= TAB[tab];				 //输出字码	
    				Hc595SendByte(CHARCODE[j][tab]);	
    				delay(2);		
    			}
    			 
    		}
    		j++;
    		if(j == 4)
    		{
    			j = 0;
    		}
    	}	
    }
    
    
    展开全文
  • 字库轮换,单片机LED点阵显示汉字,此软件很简单。
  • 基于stc89c52单片机LED点阵静态显示一个汉字
  • 一个基于51单片机的24*24点阵显示汉字,包括Proteus仿真文件及详细的程序。汉字通过PcToLcd软件来提取数据。
  • 采用AT89C51几外围电路作为控制模块,设计了一个简单的LED点阵显示系统,它能循环显示几个汉字。用protues仿真软件成功进行了系统的仿真.
  • 为了LED点阵显示屏显示的信息可以方便更新,提出了一种基于P89V51RD2单片机LED显示屏的的设计方案,并完成了系统的软硬件设计。该系统的硬件部分主要有单片机、移位寄存器、译码器以及数据存储器等部分组成;软件有...
  • 51单片机驱动1616LED点阵显示动画汉字汇编程序
  • 基于C51单片机的8×8-LED点阵汉字显示一 设计要求  1、设计一个8*8点阵LED电子显示屏  2、要求在目测条件下LED显示屏各点亮度均匀、充足,可静态显示一个字。 二 总体方案设计 2.1系统框图  根据设计要求与设计...
  • 这里提供一个完整的AT89S51单片机驱动驱动led点阵显示具有动画效果的汉字的汇编程序列子。
  • 单片机 LED点阵

    千次阅读 多人点赞 2018-06-01 18:15:55
    单片机 LED点阵一、简述 使用8×8LED点阵显示汉字。向上滚动"中华"两个汉字。 文件打包:链接: https://pan.baidu.com/s/1oHSAIY6qVA7qFFWUvMvJEA 密码: snyg二、效果三、工程文件结构1、Keil工程2、...

    单片机 LED点阵

    一、简述

         使用8×8LED点阵显示汉字。向上滚动"中华"两个汉字。

         文件打包:链接: https://pan.baidu.com/s/1oHSAIY6qVA7qFFWUvMvJEA 密码: snyg

    二、效果


    三、工程文件结构

    1、Keil工程


    2、仿真电路图


    四、代码

    88led.c文件

    #include<reg51.h>
    #define uint unsigned int
    #define uchar unsigned char
    uchar code led[]={0xEF,0xEF,0x83,0xAB,0xAB,0x83,0xEF,0xEF,0xD5,0x93,0x55,0xC0,0x00,0xEF,0xEF,0xEF};//汉字“中华” 点阵码
    uchar code  led_w[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//对应1~8行,赋给P2口,控制在哪一行显示
    /********************************************************************/
    //函数名:delay_1ms(uint x)
    //功能:利用定时器0精确定时1ms; 自加 time_t的值为后面时间调整函数服务
    //调用函数:
    //输入参数:x,1ms计数
    //输出参数:
    //说明:延时的时间为1ms乘以x 
    /********************************************************************/
    void delay_1ms(uint x)
    {
    	TMOD=0X01;//开定时器0,工作方式为1
    	TR0=1;//启动定时器0;
    	while(x--)
    	{
    		TH0=0Xfc;//定时1ms初值的高8位装入TH0
    		TL0=0X18;//定时1ms初值的低8位装入TL0
    		while(!TF0);//等待,直到TF0为1
    		TF0=0;	   //重置溢出位标志
    	}		
    	TR0=0;//停止定时器0;
    }
    /**********************************************************/
    //函数名:ledplay()
    //功能:led点阵显示程序
    //调用函数:
    //输入参数:
    //输出参数:
    //说明:
    /**********************************************************/
    void ledplay()
    {
    	uchar i,y,j;
    	y=0; //稳定显示电平,平滑滚动,每8行数据显示10次
    	j=0;//数据偏移,每次偏移1位
    	while(1)//实现汉字向上滚动效果
    	{
    		for(i=0;i<8;i++)//显示8行数据
    		{
    			P0=0xFF;//消除上次电平的影响		
    			P2=led_w[i];//控制显示行
    			P0=led[i+j];//行电平数据
    			delay_1ms(3);//延时3ms
    		}
    		y++;
    		if(y>9)
    		{
    			P0=0xFF;//消除上次电平的影响
    			delay_1ms(1);//延时,确保消除上次电平的影响
    			y=0;
    			j++;
    			if(j>8)	//"中华"二字一共16行电平数据(0~15),i+j要<15
    				j=0;
    		}
    	}
    
    }
    /**********************************************************/
    //主程序
    /**********************************************************/
    void main()
    {
    	ledplay();//调用显示程序;
    }

    五、总结


    展开全文
  • 【资源下载】下载地址:点击下载(1251)百度网盘 #include<reg51.h> #define uchar unsigned char #define uint unsigned int sbit SH_CP=P1^0;... 此字体下对应的点阵为:宽x高=16x16 --*/ 0x.

    【资源下载】下载地址:点击下载(1251) 百度网盘

    #include<reg51.h>
    #define uchar unsigned char
    #define uint unsigned int
    sbit SH_CP=P1^0;   //三个引脚口
    sbit DS=P1^1;
    sbit ST_CP=P1^2;
    uchar code tab[]=
    {
    /*--  文字:  东  --*/
    /*--  楷体_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/
    0x02,0x00,0x02,0x00,0x02,0x00,0x7F,0xFC,0x04,0x00,0x09,0x00,0x11,0x00,0x21,0x00,
    0x3F,0xF8,0x01,0x00,0x09,0x20,0x11,0x10,0x21,0x08,0x41,0x04,0x05,0x00,0x02,0x00,
    
    /*--  文字:  方  --*/
    /*--  楷体_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/
    0x02,0x00,0x01,0x00,0x01,0x00,0xFF,0xFE,0x04,0x00,0x04,0x00,0x04,0x00,0x07,0xF0,
    0x04,0x10,0x04,0x10,0x04,0x10,0x08,0x10,0x08,0x10,0x10,0x10,0x20,0xA0,0x40,0x40,
    
    /*--  文字:  红  --*/
    /*--  楷体_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/
    0x10,0x00,0x10,0x00,0x21,0xFC,0x24,0x20,0x44,0x20,0xF8,0x20,0x10,0x20,0x20,0x20,
    0x40,0x20,0xFC,0x20,0x40,0x20,0x00,0x20,0x1C,0x20,0xE0,0x20,0x43,0xFE,0x00,0x00,
    
    /*--  文字:  太  --*/
    /*--  楷体_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/
    0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0xFF,0xFE,0x01,0x00,0x01,0x00,
    0x02,0x80,0x02,0x80,0x04,0x40,0x04,0x40,0x0A,0x20,0x11,0x10,0x21,0x08,0xC0,0x06,
    
    /*--  文字:  阳  --*/
    /*--  楷体_GB231212;  此字体下对应的点阵为:宽x高=16x16   --*/
    0x00,0x00,0x7C,0x00,0x45,0xFC,0x49,0x04,0x49,0x04,0x51,0x04,0x49,0x04,0x49,0x04,

     

     

      

     

    展开全文
  • 本文讨论了基于单片机LED点阵显示控制系统设计所用的各种方法,制作出一个以单片机作为控制单元的点阵显示屏。设计采用动态扫描的显示方法,选取74LS154和74LS595芯片分别构成行、列驱动电路,单片机通过行、列驱动...
  • 单片机8×8点阵显示汉字的汇编语言设计程序 8X8点阵LED汉字逐字显示 8X8点阵LED逐字显示简单汉字,循环显示,包含仿真电路及源程序代码
  • 这是关于51单片机LED汉字点阵显示
  • 使用Proteus7.8实现LED点阵显示的仿真。可以显示一行四个汉字,有跑马滚动显示文字效果。可以显示多于4字的整行文字。提供仿真图,源代码。 注意,仿真时宏定义要修改一下,如下所示: //因为仿真时延时要短些,所以...
  • 利用单片机STC89C52实现汉字LED点阵显示
  • 用AT89C单片机实现LED点阵汉字移动显示,包括硬件和程序设计(汇编语言)
  • 单片机驱动16*16点阵LED汉字显示c51程序
  • 点阵显示器的特点是可以按照需要的大小、形状和颜色进行组合,用单片机控制实行各种文字或图型的变化,达到广告宣传和提示的目的。
  • LED显示汉字的C语言代码以及HEX文件,包含接线图。可在51单片机16*16LED点阵显示汉字
  • LED 点阵汉字显示屏的设计过程中,学到了很多东西,基本了解了整个嵌入式开发的流程。
  • LED点阵显示屏具有耗电省、成本低、寿命长、占用空间小以及能够实时显示等特点,而且显示内容的信息量大,用户可随时任意自行编辑修改显示内容,因此,近年来已得到了广泛应用。  2 总体设计  系统采用了...
  • LED点阵显示屏具有耗电省、成本低、寿命长、占用空间小以及能够实时显示等特点,而且显示内容的信息量大,用户可随时任意自行编辑修改显示内容,因此,近年来已得到了广泛应用。  2 总体设计  系统采用了...
  •  LED点阵是一种简单的汉字显示器件, 具有价廉、易于控制实现、使用寿命长等特点, 广泛应用于各种公共场合, 如车站、机场公告、公共汽车显示排等。对于LED 的控制, 可以采用数字电路实现, 其缺点是显示的字符不...
  • 使用51单片机实现点阵汉字平滑滚动显示

    万次阅读 多人点赞 2018-12-30 19:59:24
    使用51单片机实现点阵汉字平滑滚动显示 #说明:采用的芯片是89C51,LED点阵屏的规格是16*16,同时使用了两个74HC595芯片,字模生成软件在文末有网盘链接。 1 连接原理图 整体的电路连接如上图所示,单片机只需要...

    使用51单片机实现点阵汉字平滑滚动显示

    #说明:采用的芯片是89C51,LED点阵屏的规格是16*16,同时使用了两个74HC595芯片,字模生成软件在文末有网盘链接。

    1 连接原理图

    在这里插入图片描述
    整体的电路连接如上图所示,单片机只需要使用三个IO接口,就可以实现对点阵屏的控制。当然对于不同的单片机而言连线是不同的,但是使用74HC595扩展的原理是相同的,在这里不再对于其IO扩展原理进行探究。

    2 实现的功能

    在51单片机以及C语言的环境下,实现LED点阵屏幕上汉字的平滑滚动,就像是公交车上显示“前方到站第二医院,下车乘客请提前做好准备”一样。我们最后显示的是“计算机测控技术”几个字,当然显示的汉字内容是自定义的。同时,设置一个按钮能够让平滑滚动的汉字可以随时停下来。
    在这里插入图片描述
    这里有两点细节需要注意一下:
    1、汉字循环到最后一个时,要继续滚动出第一个汉字,而不是跳变到开头重新循环。
    2、汉字滚动的时候按下按钮停止,滚动停止的时候按下按钮继续滚动,使用同一个按钮。

    3 C语言程序实现

    3.1 定义变量

    在这里我们定义芯片P3.4、P3.5、P3.6 三个接口为输出IO接口,P2.7为接开关控制的IO接口。同时定义一个大数组储存所有汉字对应的取模16进制码,一个小数组用于表示现在屏幕上所需显示的汉字。

    #include <reg51.h>
    #include <intrins.h>
    
    typedef unsigned int u16;	//常规无符号字符串和整数定义		  
    typedef unsigned char u8;
    //将595的三个内置接口赋给新的名字
    sbit SRCLK = P3 ^ 6;	// 数据输入口(串)	
    sbit RCLK = P3 ^ 5;	// 移位寄存器时钟	
    sbit SER = P3 ^ 4;	// 存储寄存器时钟
    sbit stopscreen = P2^7;	 //暂停与开始开关定义引脚
    
    /*定义一个数组存储所有需要平滑滚动的文字的16进制码,由取模软件自动生成,
    每个字由32个16进制数字组合而成,现在数组中存储的是“计算机测控技术”*/
    u8 code word[] = {
    /*--  文字:  计  --*/
    	0x00, 0x02, 0x04, 0x02, 0x08, 0x02, 0x08, 0x02, 0x00, 0x02, 0x00, 0x02, 0xEF, 0x7F, 0x08, 0x02,
    	0x08, 0x02, 0x08, 0x02, 0x08, 0x02, 0x08, 0x02, 0x28, 0x02, 0x18, 0x02, 0x08, 0x02, 0x00, 0x02,
    
    	/*--  文字:  算  --*/
    	0x04, 0x02, 0x7C, 0x7E, 0x12, 0x09, 0x01, 0x00, 0xFC, 0x1F, 0x04, 0x10, 0xFC, 0x1F, 0x04, 0x10,
    	0xFC, 0x1F, 0x04, 0x10, 0xFC, 0x1F, 0x10, 0x04, 0xFF, 0x7F, 0x10, 0x04, 0x08, 0x04, 0x04, 0x04,
    
    	/*--  文字:  机  --*/
    	0x08, 0x00, 0x88, 0x0F, 0x88, 0x08, 0x88, 0x08, 0xBF, 0x08, 0x88, 0x08, 0x8C, 0x08, 0x9C, 0x08,
    	0xAA, 0x08, 0xAA, 0x08, 0x89, 0x08, 0x88, 0x48, 0x88, 0x48, 0x48, 0x48, 0x48, 0x70, 0x28, 0x00,
    
    	/*--  文字:  测  --*/
    	0x00, 0x20, 0xE4, 0x23, 0x28, 0x22, 0x28, 0x2A, 0xA1, 0x2A, 0xA2, 0x2A, 0xA2, 0x2A, 0xA8, 0x2A,
    	0xA8, 0x2A, 0xA4, 0x2A, 0xA7, 0x2A, 0x84, 0x20, 0x44, 0x21, 0x44, 0x22, 0x24, 0x28, 0x10, 0x10,
    
    	/*--  文字:  控  --*/
    	0x08, 0x02, 0x08, 0x04, 0x08, 0x04, 0xC8, 0x7F, 0x5F, 0x40, 0x28, 0x29, 0x88, 0x10, 0x58, 0x20,
    	0x0C, 0x00, 0x8B, 0x3F, 0x08, 0x04, 0x08, 0x04, 0x08, 0x04, 0x08, 0x04, 0xEA, 0x7F, 0x04, 0x00,
    
    	/*--  文字:  技  --*/
    	0x08, 0x04, 0x08, 0x04, 0x08, 0x04, 0xC8, 0x7F, 0x3F, 0x04, 0x08, 0x04, 0x08, 0x04, 0xA8, 0x3F,
    	0x18, 0x21, 0x0C, 0x11, 0x0B, 0x12, 0x08, 0x0A, 0x08, 0x04, 0x08, 0x0A, 0x8A, 0x11, 0x64, 0x60,
    
    	/*--  文字:  术  --*/
    	0x80, 0x00, 0x80, 0x04, 0x80, 0x08, 0x80, 0x08, 0xFE, 0x3F, 0xC0, 0x01, 0xA0, 0x02, 0xA0, 0x02,
    	0x90, 0x04, 0x88, 0x08, 0x84, 0x10, 0x82, 0x20, 0x81, 0x40, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00};
    //下面一个用于存储每一时刻点阵屏显示内容的数字,随着时间会不断重新赋值与变化
    u8 now[32] = {
    	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
    

    3.2 点阵显示函数

    由于使用595进行了接口扩展,首先编写行显示函数LED_line,接着再编写汉字显示函数LED_array,>>和<<这两个符号是二进制移位符号。

    void delay(u16 i)	   //延时函数,很普通
    {
    	while (i--);
    }
    //行显示函数: LED_line (字节1 1 ,字节2 2 ,行号)
    void LED_line(u8 ledata1, u8 ledata2, u8 line_num)
    {
    	u8 b_num, i;
    	u8 REG595[4]; 		 // 发送到595的四个字节。
    	REG595[0] = ledata2; REG595[1] = ledata1;
    	if (line_num<8) {
    		REG595[2] = 0;
    		REG595[3] = 0x01 << line_num;
    	}
    	else {
    		REG595[2] = 0x01 << (line_num - 8);
    		REG595[3] = 0;
    	}
    	SRCLK = 1; // 移位准备
    	RCLK = 1; 	//输出准备
    	for (b_num = 0; b_num<4; b_num++) {   // 向595发送四个字节
    		for (i = 0; i<8; i++) { 	   //发送8位数
    			SER = REG595[b_num] >> 7; 	 //从最高位开始发送
    			REG595[b_num] <<= 1;
    			SRCLK = 0;
    			SRCLK = 1; 	  //移位寄存器时序,低电平准备,高电平有效
    		}
    	}
    	RCLK = 0; 	// 存储寄存器时序,低电平准备,高电平有效,四个字节同时发出
    	RCLK = 1;
    }
    
    void LED_array(u8 word[], u16 t_delay)	//汉字显示函数
    {
    	u8 i;
    	while (t_delay--) {
    		for (i = 0; i<16; i++) { // 逐行显示
    			LED_line(~word[i * 2], ~word[i * 2 + 1], i);
    		}
    	}
    }
    

    3.3 平滑滚动

    通过上面的内容,我们只要调用LED_array函数,正确传参后就可以在LED点阵屏上显示我们想要显示的内容了。实现平滑滚动才是本文的关键,主函数的算法流程图如下所示:
    在这里插入图片描述
    总的来说,就是使用小数组(now)在大数组(word)中一步步移动的方法,在算法与数据结构里,我们往往把这种方法叫做滑动窗口法。在汉字取模软件中生成的16进制数,每两个一组代表LED点阵上的一行灯的亮灭。这也不难理解,因为一行是16个LED灯,一个两位16进制数刚好可以表示8个2进制数,所以两个两位16进制数控制一行。因此,我们滑动窗口每次移动2个两位16进制数。

    void main()	   //主函数
    {
    	u16 i, j;	
    		for(j=0;;j++){	   //在这里不使用while循环是因为while循环显示输出不稳定
    			//每次赋给now的值都后移两位,显示出来就是点阵一行行地变化
    			for (i=0;i<32;i++){			//对now中32个位置,每个位置都赋值
    				/*将需要实时显示的内容放到实时数组now中去,同时使用对数组最大数224取余实现循环平滑滚动*/
    				now[i] = word[(i+(2*j))%224];	
    			}
    			LED_array(now, 10);		//调用汉字显示函数,依次显示now中内容
    			delay(300);	  //延迟后进行下一循环
    			if(stopscreen==0){		//按键防抖设计
    				delay(50);
    				if(stopscreen==0){			
    					while(1){		//按第一下开关停止平滑滚动
    						LED_array(now, 10);
    						if(stopscreen==0){	 	//按键防抖设计
    							delay(50);
    							if(stopscreen==0){
    								break;	  //按第二下开关继续平滑滚动
    							}
    						
    						}
    					}
    				}		
    				
    			}
    		}			
    }
    

    4 总结

    清楚了LED点阵屏显示的原理,我们可以设计LED点阵屏的多种显示方式,甚至可以做出动画片、游戏等。
    字模生成软件百度云:链接:https://pan.baidu.com/s/1OwK_L_aDjWas5LF_MuULmQ
    提取码:idov

    展开全文
  • LED点阵显示技术: 在8X8 LED点阵上显示字符,汉字,有多种显示方式. 硬件电路: 8X8LED,AT89S51芯片,12MHZ晶振,电解电容,1K排阻. 含电路图等,完整课设
  • 这可是我花钱从同方知网买的,希望对单片机学习的朋友有帮助!

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 201
精华内容 80
关键字:

单片机led点阵显示汉字