实验1-李荷心-0203

实验背景:

LED点阵屏通过LED(发光二极管)组成,以灯珠亮灭来显示文字、图片、动画、视频等,是各部分组件都模块化的显示器件,通常由显示模块、控制系统及电源系统组成。LED点阵显示屏制作简单,安装方便,被广泛应用于各种公共场合,如汽车报站器、广告屏以及公告牌等。

实验说明:

8X8点阵共由64个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一行置1电平,某一列置0电平,则相应的二极管就亮。

实验步骤:

  • 1.首先将开发板与电脑用USB线连接(连接串口可用),并用排线将芯片管教与点阵行孔和列控相连。

  • 2.打开Keil软件进行控制程序编写,建立工程。

  • 3.用一个8X8点阵显示字形“我❤你生生世世”为例,需要LED点阵显示相应字形,采用点阵列扫描(如下程序),可将上图连线点电平设为1,再翻转90°,把每一行显示的二进制化为16进制,直接写在程序中即可,具体如下图示代码:


    实验1-李荷心-0203_第1张图片
    代码.PNG
  • 4.继续添加头文件、点阵显示程序、74HC595驱动程序、扫描延时程序等,写完完整程序后并生成hex文件。

  • 头文件

//该板子上的点阵为8*8,只能显示简单的一些汉子,如果要显示真正的汉字
//通过取模软件取的可以选择16*16点阵的板子

#include
#include

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};
  • 点阵显示程序
    本次实验使用的是7X8二维数组,所以如下代码要改成[7][8],在扫描延时程序中,j的值也要相应的改为7。
//--点阵字码--//
unsigned char code CHARCODE[7][8]=
{
0x10,0x55,0xBF,0x14,0x10,0xFE,0x99,0x52,    //我
0x38,0x64,0x22,0x11,0x11,0x22,0x64,0x38,    //心形
0x20,0x7F,0x84,0x6A,0xC1,0x5F,0x68,0x44,    //你 
0x11,0x21,0xE9,0x29,0xFF,0x29,0x29,0x21,   //生
0x11,0x21,0xE9,0x29,0xFF,0x29,0x29,0x21,    //生
0x20,0xFF,0x21,0xFD,0x25,0xFD,0x21,0x20,    //世 
0x20,0xFF,0x21,0xFD,0x25,0xFD,0x21,0x20,    //世
};
void delay(unsigned int time)
{
  unsigned int i,j;
  for(i=0;i
  • 74HC595驱动程序
/*******************************************************************************
* 函数名         : 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;
}
  • 扫描延时程序
    j的值相应的改为7。
/*******************************************************************************
* 函数名         : 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 == 7)
        {
            j = 0;
        }
    }   
}

  • 5.利用烧录软件进行烧录同时重启开发板。

  • 6.可以看到LED点阵屏显示字形“我❤你生生世世”。


    实验1-李荷心-0203_第2张图片
    我.jpg
实验1-李荷心-0203_第3张图片
心形.jpg
实验1-李荷心-0203_第4张图片
你.jpg
实验1-李荷心-0203_第5张图片
生.jpg
实验1-李荷心-0203_第6张图片
生.jpg
实验1-李荷心-0203_第7张图片
世.jpg
实验1-李荷心-0203_第8张图片
世.jpg

实验总结:

  • 1.使用字模提取软件zimo221.exe (密码:s0gi)可以直接得到所需字形的代码,无须计算,当字形太多时,挨个计算就有点繁杂,懂得计算方法即可。详细说一下这个软件:
    ①用的时候要改成8X8的,因为默认是16X16,输入文字之后,记得要摁“crtl+enter”结束文字输入。我在用的时候,发现输入文字的时候,有的他自动跳成16X16的了,所以我是直接在生成的白板上画的(在“模拟动画”栏里有个“放大格点”,画的时候就不会眼疼了),然后取模方式改成“C51模式”,直接复制生成的十六进制数就好了。我感觉8X8有点小,字太复杂的话,弄出来可能会乱。我是一开始弄了个比较复杂的字,代码也是对的,但是在单片机上显示的时候就看不清了。
实验1-李荷心-0203_第9张图片
捕获1.PNG

实验1-李荷心-0203_第10张图片
捕获2.PNG

②记得在选项中改成“纵向取模”。

实验1-李荷心-0203_第11张图片
捕获3.PNG

③但是也要懂得计算的方法。要注意两个问题,一是采用的是点阵列扫描,由左至右共八列,从上到下为高位到低位;二是二进制转十六进制的计算过程要正确。

  • 2.每一个字由8行8列的点阵组成显示。我们可以把每一个点理解为一个像素,而把每一个字的字形理解为一幅图像。事实上这个汉字屏不仅可以显示汉字,也可以显示在64象素范围内的任何图形。
  • 3.本次实验使用的是7X8的二维数组,所以在计算点阵显示代码的同时,还要注意将代码中4X8二维数组改成7X8二维数组,以及j的改动,注意前后对应,切勿只随意添加点阵显示代码,忽略了前后的照应。
  • 4.刚开始电脑识别不到单片机,老是在设备管理器里显示USB2.0,然后就右击更新驱动,选择自动搜索更新,还不行。之后就找到网盘里的文件,下载“应用驱动”里的CH341SER.EXE,然后发现安装失败。然后就发现网盘里还有一个word文件“关于驱动手动安装失败”,然后就按步骤一步步的来,我的是属于“数据无效”的情况,做完word里的的步骤,然后重新安装了一下那个驱动文件(CH341SER.EXE),就能安装上了。然后再到设备管理器里去右击USB2.0更新驱动,然后就能在烧录软件那里找到端口号了。


    实验1-李荷心-0203_第12张图片
实验1-李荷心-0203_第13张图片
实验1-李荷心-0203_第14张图片
实验1-李荷心-0203_第15张图片
实验1-李荷心-0203_第16张图片
  • 5.通过本次实验,我了解了LED点阵显示的基本原理和实现方法,掌握了常用LED和单片机元件的识别和测试、8×8点阵的显示代码的计算;了解了电路的连接方法以及如何提高电路的性能,并在独立思考、动手操作的能力上有了提高。

你可能感兴趣的:(实验1-李荷心-0203)