微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 16X64LED点阵显示屏原理图+源代码

16X64LED点阵显示屏原理图+源代码

时间:10-02 整理:3721RD 点击:
  • 在介绍总体方案之前,先简单介绍一下点阵显示屏的显示原理以及如何改变显示功能的基本原理,人眼正常视觉刷新时间大于20ms,在刷新时间低于20ms的时候人眼会产生幻觉,也就视觉暂缓,点阵显示就是利用这一特点实现动态扫描显示的。利用51单片机的可编程系统对整个电路进行控制,数据的处理,发送,以及切换都在动态变换,从而可以有比较好的显示效果。
    基本模块
    CPU模块:51单片机及其外围电路
    Led显示模块(部分)
    74HC595列扫描及数据处理模块
    列驱动模块
    74HC138译码器行扫描模块
    Max232程序下载模块
    4路独立按键
2.源程序代码:
#include <reg52.h>                         //头文件
#include "hanzi.h"
#define  uchar unsigned char
#define   uint unsigned int
//*****************************************************************//
sbit R=P2^2;                            //定义数据输入端口P2^0
sbit CLK=P2^0;                       //时钟信号
sbit STB=P2^1;                               //595锁存信号
sbit key1=P1^0;
sbit key2=P1^1;
sbit key3=P1^2;
sbit key4=P1^3;
uchar k1_flag=0,k2_flag=0,k3_flag=0,n;
uchar yd,h;   //m为移动计数器,h为行段计数器;
long  zimo;               //字模计数器
uchar BUFF[10];        //缓存;
float d=40;
void  key();                 //按键处理函数
void  tiaozheng_data(void);     //调整数据函数
void  fasong_data(void);        //发送数据函数
void  saomiao(void);                //行扫描函数
void  writebyte(char dat);        //595写一字节函数
void main()
{
       uchar i;                       //d的大小决定移动速度
       yd=0;                        //移动计数器,记录移动字节数
       zimo=0;                           //字模计数器,记录字数
       while(1)
       {
              while(yd<16)
              {   
                     for(i=0;i<d;i++)
                     {   
                            key();            //按键扫描函数
                            saomiao();            //调用扫描函数
                     }
                     yd++;                         //移动一位
              }
              yd=0;
              zimo=zimo+32;                 //向后移动一个字
              if(k1_flag==0)
              {
                     if(zimo>=32*65)               //取决于字数 默认table1[]
                     zimo=0;
              }
              if(k1_flag==1)                         //取决于字数  table2[]
              {
                     if(zimo>=32*24)               //取决于字数  
                     zimo=0;
              }
              if(k1_flag==2)                         //取决于字数  table3[]
              {
                     if(zimo>=32*141)                    //取决于字数  
                     zimo=0;
              }
              if(k1_flag==3)                           //取决于字数  table2[]
              {
                     if(zimo>=32*24)               //取决于字数  
                     zimo=0;
              }
              if(k1_flag==4)
              {
                     if(zimo>=32*141)                    //取决于字数    table3[]  
                     zimo=0;
              }
       }
}

感谢小编分享学习

小编原理图与源码在哪?

谢谢分享                  

感谢小编分享..

好东西!

xiexielouzhufenxiang

谢谢

感谢祖国有个你不用积分就分享

谢谢分享啦!长见识了

赞.!      

iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii

我去试试看,最近急需

就这些吗?                         .

感谢小编分享学习

感谢小编分享学习

感谢小编分享学习

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top