8x8LED点阵+单片机+普中+江科大自化协

发布者:心灵之舞最新更新时间:2024-08-08 来源: cnblogs关键字:8x8LED点阵  单片机  普中 手机看文章 扫描二维码
随时随地手机看文章

1 功能:

(1)静态显示:显示一个笑脸;

(2)动态显示:a,移动显示“HELLO!”,b,显示笑脸哭脸的变化;

2 原理

3 框图

4 硬件原理图

5 软件设计


5.1 静态显示源程序


(1)主函数


#include

#include 'delay100ms.h'


sbit SER = P3^4;    //74HC595的串行数据输入DS

sbit RCK = P3^5;    //74HC595的移位寄存器SH_CP

sbit SCK = P3^6;    //74HC595的锁存寄存器ST_CP


#define matrixled_col P0


//笑脸的数据,列向取模

unsigned char code disp[]={0x3C,0x42,0xA9,0x85,0x85,0xA9,0x42,0x3C};


/**

    * @brief:74HC595写入一个字节

    * @param:需要写入的字节

    * @retval:无

*/

void hc74595_wrbyte(unsigned char byte)

{

    unsigned char i;

    for(i=0;i<8;i++)

    {

        SER = byte & (0x80>>i);

        SCK = 1;

        SCK = 0;

    }

    RCK = 1;

    RCK = 0;

}


/**

    * @brief:LED点阵显示屏显示1列数据

    * @param: column 选择要显示的列,范围0-7,0在最左边

    * @param: dat 选择列显示的数据,高位在上,1为亮,0为灭

    * @retval:无

*/

void matrixled_showcol(unsigned char column,dat)

{

    hc74595_wrbyte(dat);

    matrixled_col = ~(0x80>>column);

    delay100ms(1);

    matrixled_col = 0xff;

}


void main()

{

    unsigned char     i;

    SCK = 0;

    RCK = 0;

    while(1)

    {

        for(i=0;i<8;i++)

        {    

            matrixled_showcol(i,disp[i]);        

        }

    }

}


(2)延时函数及头文件


#include

#include


void delay100ms(unsigned int x)        //@11.0592MHz

{

    unsigned char i;

    while(x--)

    {

        _nop_();

        i = 43;

        while (--i);

    }

}


#ifndef _delay100ms_h_

#define _delay100ms_h_

void delay100ms(unsigned int x);

#endif


5.2 动态显示 


5.2.1 移动显示HELLO!!


(1)主函数


#include

#include 'matrix_8x8led.h'


unsigned char code disp[]={

    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,            //0-7,空白区域

    0x00,0x7F,0x08,0x08,0x7F,0x00,0x7F,0x49,            //8-39,HELLO!!

    0x49,0x49,0x00,0x7F,0x49,0x49,0x49,0x00,

    0x7F,0x01,0x01,0x01,0x00,0x7F,0x41,0x41,

    0x7F,0x00,0x00,0x7B,0x7B,0x00,0x00,0x00,

    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00                //40-47,空白区域

};


void main()

{

    unsigned char     i;

    unsigned char     offset=0;    //偏移量

    unsigned char     count=0;    //延时计数

    

    matrix_8x8led_init();     //LED点阵初始化

    

    while(1)

    {

        for(i=0;i<8;i++)    //循环8次,显示8列数据,即一帧数据

        {    

            matrix_8x8led_showcol(i,disp[i+offset]);    

            count++;        //计数延时,影响数据移动快慢

            if(count>20)

            {

                count = 0;

                offset++;

                if(offset>40)

                    offset=0;                    

            }                

        }    

    }

}


(2)LED点阵驱动函数


#include

#include 'delay100ms.h'


#define matrixled_col P0


sbit SER = P3^4;    //74HC595的串行数据输入DS

sbit RCK = P3^5;    //74HC595的移位寄存器SH_CP

sbit SCK = P3^6;    //74HC595的锁存寄存器ST_CP


/**

    * @brief:74HC595写入一个字节

    * @param:需要写入的字节

    * @retval:无

*/

void hc74595_wrbyte(unsigned char byte)

{

    unsigned char i;

    for(i=0;i<8;i++)

    {

        SER = byte & (0x80>>i);

        SCK = 1;

        SCK = 0;

    }

    RCK = 1;

    RCK = 0;

}


/**

    * @brief: LED点阵显示屏初始化

    * @param: 无

    * @retval:无

*/

void matrix_8x8led_init()

{

    SCK = 0;

    RCK = 0;

}


/**

    * @brief:LED点阵显示屏显示1列数据

    * @param: column 选择要显示的列,范围0-7,0在最左边

    * @param: dat 选择列显示的数据,高位在上,1为亮,0为灭

    * @retval:无

*/

void matrix_8x8led_showcol(unsigned char column,dat)

{

    hc74595_wrbyte(dat);

    matrixled_col = ~(0x80>>column);

    delay100ms(10);

    matrixled_col = 0xff;

}


#ifndef _matrix_8x8led_h_

#define _matrix_8x8led_h_

    void matrix_8x8led_init();

    void matrix_8x8led_showcol(unsigned char column,dat);

#endif

(3)延时函数:略


5.2.2 笑脸哭脸变化


(1)主函数


#include

#include 'matrix_8x8led.h'


unsigned char code disp[]={

    0x3C,0x42,0xA9,0x85,0x85,0xA9,0x42,0x3C,    //笑脸

    0x3C,0x42,0xA1,0x85,0x85,0xA1,0x42,0x3C,    //一般

    0x3C,0x42,0xA5,0x89,0x89,0xA5,0x42,0x3C        //哭脸

};


void main()

{

    unsigned char     i;

    unsigned char     offset=0;    //偏移量

    unsigned char     count=0;    //延时计数

    

    matrix_8x8led_init();     //LED点阵初始化

    

    while(1)

    {

        for(i=0;i<8;i++)    //循环8次,显示8列数据,即一帧数据

        {    

            matrix_8x8led_showcol(i,disp[i+offset]);    

            count++;        //计数延时,影响数据移动快慢

            if(count>20)

            {

                count = 0;

                offset+=8;    //偏移+8,切换下一帧画面

                if(offset>16)

                    offset=0;                    

            }                

        }    

    }

}


关键字:8x8LED点阵  单片机  普中 引用地址:8x8LED点阵+单片机+普中+江科大自化协

上一篇:LCD1602+单片机+普中+江科大自化协
下一篇:intrins.h 简介

推荐阅读最新更新时间:2026-03-25 12:01

8x8LED点阵+单片机++江科大自化协
1 功能: (1)静态显示:显示一个笑脸; (2)动态显示:a,移动显示“HELLO!”,b,显示笑脸哭脸的变化; 2 原理 3 框图 4 硬件原理图 5 软件设计 5.1 静态显示源程序 (1)主函数 #include REGX52.H #include delay100ms.h sbit SER = P3^4; //74HC595的串行数据输入DS sbit RCK = P3^5; //74HC595的移位寄存器SH_CP sbit SCK = P3^6; //74HC595的锁存寄存器ST_CP #define matrixled_col P0 //笑脸的数据,列向取模 unsigned
[单片机]
<font color='red'>8x8LED</font><font color='red'>点阵</font>+<font color='red'>单片机</font>+<font color='red'>普</font><font color='red'>中</font>+江科大自化协
单片机8X8LED点阵显示“中国生日快乐”
硬件图如下图: 元件清单如下图(有些多余了): 程序如下(C语言): #include reg51.h unsigned char led1 ={0XEF,0XEF,0X83,0XAB,0XAB,0X83,0XEF,0XEF}; //中 unsigned char led2 ={0x01,0X7D,0X45,0X45,0X65,0X45,0X7D,0X01}; //国 unsigned char led3 ={0xF7,0XD7,0X80,0X77,0XC1,0XF7,0XF7,0X00}; //生 unsigned char led4 ={0x83,0XBB,0XBB,0X83,0XBB,0XBB,0X83,0XF
[单片机]
<font color='red'>单片机</font><font color='red'>8X8LED</font><font color='red'>点阵</font>显示“中国生日快乐”
单片机开发 --- 8X8LED点阵
一、电路图 引脚D0 ~ D7 接的是点阵的行,引脚P0~P7接的是点阵的列 二、74HC595芯片 74HC595芯片是8位串行输入8位串行或并行输出,串行到并行的数据转换。通过SRCLK上升沿,将SER的状态(高电平为1,低电平为0)以左移的方式存到芯片的寄存器中;通过RCLK上升沿,把寄存器中的8位以并行的方式输出(D0~D7)。在此次实验,74HC59起的作用与之前数码管实验中的138译码器的作用相同,但两者功能不同。 三、电路原理 根据电路图可知,当D0~D7为高电平时,P0 ~ P7为低电平时,LED才会亮。点阵的显示与数码管显示的方式类似,能过每次点亮不同行的LED并不断切换,可以形成同时显示的错觉。
[单片机]
<font color='red'>单片机</font>开发 --- <font color='red'>8X8LED</font><font color='red'>点阵</font>
单片机C语言程序设计:8X8LED 点阵显示数字
/* 名称:按键控制 8X8LED 点阵屏显 示图形 说明:每次按下 K1 时,会使 8X8LED 点阵屏循环显示不同图形。 本例同时使用外部中断和定 时中断。 */ #include reg51.h #include intrins.h #define uchar unsigned char #define uint unsigned int //待显示图形编码 uchar code M = { {0x00,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x00}, //图 1 {0x00,0x38,0x44,0x54,0x44,0x38,0x00,0x00}, //图 2 {0x
[单片机]
<font color='red'>单片机</font>C语言程序设计:<font color='red'>8X8LED</font> <font color='red'>点阵</font>显示数字
LCD1602+单片机++江科大自化协
1 实现现象 LCD1602工作原理 LCD1602显示某字符或字符串只需在C51程序中写入要显示的字符常量或字符串常量,C51程序在编译后会自动生成其标准的ASCII码,然后将该ASCII码送入显示RAM,内部控制电路会自动将该ASCII码对应的字符点阵在LCD1602上显示出来。 2 程序设计 2.1 LCD1602控制程序及头文件 #include REGX52.H #include intrins.h //引脚配置,硬件原理图,普中A2 sbit LCD1602_RS = P2^6; sbit LCD1602_RW = P2^5; sbit LCD1602_E = P2^7; #define L
[单片机]
LCD1602+<font color='red'>单片机</font>+<font color='red'>普</font><font color='red'>中</font>+江科大自化协
DS1302时钟+单片机++江科大自化协
1、现象: 2、参考程序 2.1 主程序 #include REGX52.H #include LCD1602.H #include DS1302.H void main() { LCD1602_Init(); DS1302_Init(); LCD1602_ShowString(1,1, - - ); //静态字符初始化显示 LCD1602_ShowString(2,1, : : ); DS1302_SetTime( ); //设置时间 while(1) { DS1302_ReadTime( ); //读取时间 L
[单片机]
DS1302时钟+<font color='red'>单片机</font>+<font color='red'>普</font><font color='red'>中</font>+江科大自化协
蜂鸣器播放DOREMI+51单片机+江科大自化协
现象 在无源蜂鸣器上循环演奏低音“DO、RE、MI、FA、SO、LA、SI”这7个音调。 参考程序 1 主函数 #include REGX52.H #include delayms.h #include timer0.h sbit Buzzer = P2^5; //音调与频率对照表,低中高:1,1#,2,2#,3,4,4#,5,5#,6,6#,7 //unsigned int FreqTable ={ // 63628,63731,63835,63928,64021,64103,64185,64260,64331,64400,64463,64528, // 64580,64633,64684,647
[单片机]
蜂鸣器播放音乐+51单片机+江科大自化协
1 现象 利用蜂鸣器实现音乐播放功能,播放《天空之城》。 2 原理 (1)天空之城的乐谱 3 参考程序 3.1 主程序 #include REGX52.H #include delayms.h #include timer0.h //蜂鸣器端口定义 sbit buzzer = P2^5; //播放速度,值为四分音符的时长 #define SPEED 500 //音符与索引对应表,P:休止符,L:低音,M:中音,H:高音,下划线:升半音符号# #define P 0 #define L1 1 #define L1_ 2 #define L2 3 #define L2_ 4 #define L3 5
[单片机]
蜂鸣器播放音乐+<font color='red'>普</font><font color='red'>中</font>51<font color='red'>单片机</font>+江科大自化协
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved