16级单片机实践经验分享

实验1-李荷心-0203

2018-05-14  本文已影响146人  李荷心0203

实验背景:

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

实验说明:

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

实验步骤:

//该板子上的点阵为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[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<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 == 7)
        {
            j = 0;
        }
    }   
}

心形.jpg 你.jpg 生.jpg 生.jpg 世.jpg 世.jpg

实验总结:

捕获1.PNG
捕获2.PNG

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

捕获3.PNG

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

上一篇 下一篇

猜你喜欢

热点阅读