基于51单片机的LED点阵显示屏设计


    目录
    摘 II
    Abstract III
    第章 绪 1
    11 课题背景 1
    12 选题意义 1
    13 文容 1
    第二章 方法证 3
    21 单片机编程语言 3
    22 控制系统设计 3
    23 显示方式 3
    第三章 系统硬件设计 4
    31 总体硬件设计 4
    32 系统硬件电路介绍 5
    321 电源电路设计介绍 5
    322 复位电路 5
    323 晶振电路 6
    324 键电路 6
    325 点阵驱动模块设计实现 7
    326 通信系统硬件设计  8
    第四章 重器件介绍 9
    41 LED点整显示屏介绍 9
    42 限流电阻 10
    第五章 系统软件设计 11
    61 软件整体介绍 11
    62 显示驱动程序 12
    63 系统程序 13
    第六章 系统创作程调试 14
    61 电路制作程 14
    611 设计原理图 15
    612设计PCB图 15
    613 硬件仿真 16
    614转印PCB 16
    615腐蚀孔 16
    616焊接元器件 17
    62 硬件调试程 17
    63 软件调试程 17
    总结 18
    参考文献 19
    致谢 20
    附录 21
    附录二 23
    附录三 24



    基51单片机LED点阵显示屏设计

    次设计核心模控制块芯片型号STC89C52单片机4块带锁存功串转换芯片74HC595外加NPN三极作16×16LED点阵显示屏驱动PC机作位机单片机进行通信实现显示容更新该系统实现功字符图片动态静态特效显示显示中英文字符该系统带级联扩展端口需扩展显示屏时直接连接端口实现系统采串行传输方式进行数传送减少单片机IO口占简化电路走线次选价格便宜应广泛STC单片机写入程序非常方便整系统成降低许方便系统维护检修

    关键词:单片机STC89C5274HC59516x16LED点阵点阵字库






















    Abstract
    The core of the design of chip used in the model control block is STC89C52 singlechip microcomputerwe use 4 pieces of string with latch function and conversion chip 74 hc595 are needed as a 16 x 16 plus NPN led dot matrix display driverUsing PC as a PC and single chip microcomputer communication realize the display content updatesThe system can realize the function of the characters or images of dynamic and static effects showed that can show Chinese and English charactersWith cascade expansion port and the system also needs to extend screen size directly connect to this portData transfer system adopts serial transmission way for reducing the number of the SCM IO port simplify the circuit lineIs selected for the cheaper price the most widely used on STC microcontroller and write program is also very convenient this makes the cost down a lot of the whole system is convenient for maintenance and overhaul of the system
    Key wordssingle chip STC89C52 74HC595 16x16LED lattice lattice fonts


















    第章 绪
    11 课题背景
    LED显示技术八十年代期迅速发展起新型显示媒体LED显示屏Light Emitting Diode:电子显示屏百甚十万发光二极组成阵列LED点阵显示屏年技术应范围方面进步目前已研究出发蓝光纯绿光LEDLED应越越广泛许器件法相点例工作电压低亮度高功耗寿命长性稳定耐击抗震性强等优点受青睐
    目前LED显示屏应已十分广泛包括:(1)机场航班动态信息显示(2)证券交易金融信息显示(3)港口车站旅客引导信息提示(4)道路交通信息显示(5)调度指挥中心信息显示(6)广告媒体新产品等
    LED显示屏种类分种室显示屏室外显示屏单色显示显示屏全彩色显示屏等
    12 选题意义
    该设计掌握LED点阵显示屏显示原理硬件电路设计方法时解LED行业发展现状趋势通次设计巩固前学知识特硬件电路设计流程块前学KeilProtel99Proteus等设计软件进步认识掌握C语言编程力提高次次设计事相关方面工作奠定定基础课题业工作态度培养非常现实积极意




    13 文容
    文结构容安排:
    (1) 设计总体思路
    根设计特点系统整体设计思路进行简单介绍包括硬件部分软件部分
    (2) 方案证
    通收集资料参目前通设计方法思路拟定套设计方案决定选单片机核心控制器件C语言编程PC机位机外加译码电路驱动电路设计方案
    (3) 系统硬件设计
    证选择STC89C52单片机控制芯片74HC595作译码器件三极8550驱动器件文中详细列出器件连接方法重器件参数
    (4) 重器件介绍
    选择系统中较重器件参数等信息做详细介绍
    (5) 系统软件设计
    针软件整体工作流程模块功做简单介绍系统扫描驱动程序做较详细说明
    (6) 系统制作程调试
    分说明制作硬件电路详细程包括绘制原理图绘制PCB制作电路板元器件焊接等环节调试程中出现问题进行说明
    (7) 结
    设计完成整设计程中遇问题验教训进行总结







    第二章 方法证
    21 单片机编程语言
    目前针单片机编程块学汇编语言C语言两种时C语言进行编程汇编语言较少终选择C语言进行编程
    22 控制系统设计
    方法:4块串转换芯片74LS164串行数转换行数接锁存器74LS373数锁存
    方法二:4块具锁存功串转换芯片74LS595直接串行数转换行数锁存
    通较方法器件较电路较复杂方法二器件少电路简化终选定方法二
    23 显示方式
    图文显示方式般两种:
    方式:静态显示方式
    种方式设计思路简单连线非常单片机脚占量非常直接点阵显示屏连接单片机话显然通锁存器扩展方式扩展端口通计算16x16点阵需256832锁存器硬件电路变非常复杂利屏幕扩展
    方式二:动态扫描方式
    动态扫描采逐行轮流点亮方式点阵显示屏端口进行扫描样实现行名端口套驱动器减少单片机端口占率单片机扩展功留空间数传输时采串行传输方式时根信号线便显示数传送列驱动器疑十分方便济
    较简化电路提高效率终选择方式二采动态扫描方式

    第三章 系统硬件设计
    31 总体硬件设计
    总体硬件设计框图:









    列驱动器

    位机

    电源电路


    16X16LED显示
    点阵

    复位电路
    行驱动器


    键控制电路




    图31
    次设计硬件系统单片机系统位机电源电路复位电路键控制电路点阵驱动电路工作流程:单片机位机进行串行通信显示容存入单片机单片机接收显示容键控制电路产生中断信号控制显示方式单片机显示代码送入驱动电路点阵显示屏点亮实现需显示容该系统实现功点求:
    (1)LED点阵显示屏尺寸16*16必须满足少显示汉字求
    (2)实现中英文字符静态动态等两种特效显示
    (3)编写位机软件实现显示容更新(该功选作)
    (4)具级联扩展功
    (5)驱动电路提供电流电压达点阵屏显示求显示屏亮度适中





    32 系统硬件电路介绍
    321 电源电路设计介绍

    图 321 电源电路
    图 电源电路原理图采5V电源直接系统供电六脚开关控制电源通断5V电源直接电脑取较稳定简化电路需电容滤波
    322 复位电路

    图322 复位电路
    单片机复位需第9脚接持续通高电2us实现电路图中电容10uF电阻10k根公式算出电容充电电源电压07倍(单片机电源5V充电07倍35V)需时间10K*10uF01S单片机启动01S会动复位需手动复位时钮电容短路开始放电01S R2两端电压变35V单片机复位
    323 晶振电路

    图 323 晶振电路
    次设计晶振12MHz电容33pF电容作电路产生谐振振荡频率更加稳定
    324 键电路

    图324 键控制电路
    次设计采四脚轻触开关分接单片机P20P21口键S6选择点阵显示屏显示方式S7切换显示容P20P21没接拉电阻单片机P2口部已接拉电阻外部需接

    325 点阵驱动模块设计实现
    图325 点阵驱动电路

    设计行列译码器均74HC59574HC595带锁存功串转化器采译码器解决单片机端口足问题单片机扩展提供空间
    设计4片74HC595芯片该芯片作讲串行数转化行数进行锁存数输出点阵显示图325该芯片硬件连接方式4片芯片第11脚相连然引出根线SCK该线时钟输入引脚4片芯片12脚相连引出根线RCK该线存储器时钟输入引脚第片芯片SER(数输入)端接单片机端口Q7端接块芯片SER端级联第四块芯片第四块芯片Q7端作级联扩展端接图中J3J3级联扩展端接口该显示屏通级联扩展方式增加显示屏尺寸增加显示容J2点阵显示屏单片机模块连接端口
    该模块具体工作流程:SER端输入串行数信号SCK时钟输入引脚输入高电延时适时间串行显示数移入寄存器中RCK端输入高电数会锁存端E接显示数行输出




    326 通信系统硬件设计 

    图326
    单片机PC机信号电PC机传送数字1时C采EIA电传输线电3V~15V传送数字0’时传输线电+3V~+15V单片机采正逻辑TTL电传输数字10时传输线电分+5V5V果单片机PC机进行通信必须电信号进行转换通查阅相关资料知MAX232芯片讲电信号进行转换样实现单片机PC机间通信图326示串行通信模块原理图进行通信LED灯闪烁提示












    第四章 重器件介绍
    41 LED点整显示屏介绍

    图411 8×8点阵显示屏实物图


    图412 单色LED矩阵部结构

    LED点阵显示屏两类型种阴极种阳极LED显示方式显示码传送序逐行逐列显示图阴极点阵显示屏脚排列图轮流行输出低电进行扫面列输出显示代码进行显示显示信息行显示时间4ms左右闪烁频率眼界闪烁频率眼屏幕显示容稳定次点阵屏正常工作电流20mA
    次设计阴极8×8点阵显示屏四块组成块16×16显示屏增加显示容该显示屏实物区分阴极阳极需万表进行测量具体方法步骤:
    1 万表转二极档位
    2 表笔接触点阵显示屏意脚红表笔黑表笔皆
    3 表笔测试剩引脚二极点亮种颜色二极点亮两表笔进行兑换
    4兑换表笔重复步观察否两种颜色二级点亮接固定端表笔红表笔阳极黑表笔阴接发
    42限流电阻

    图42 限流电阻
    限流电阻作电流限制某范围LED提供稳定工作电流查阅相关资料知三极基极正常工作电流10mA三极工作放状态基极电压07V单片机端口电压33V公式RUA限流电阻R(3307)20130Ω电阻选择150Ω330Ω皆







    第五章 系统软件设计
    61 软件整体介绍
    总体软件设计框图:
    键检测程序

    功函数


    系统程序




    中断显示程序
    初始化程序


    图61 软件设计整体框图

    图61示软件部分模块化方式编写包含5模块:系统程序键检测程序模块功函数模块初始化程序模块中断程序模块程序通适时调初始化程序键检测程序实现系统相功二定时器T0负责调程序中断显示程序功根键产生中断信号相应显代码送入点阵显示屏产生种相应控制信号屏幕设定参数显示初始化程序作系统相关变量进行初始化

    62 显示驱动程序
    显示驱动程序定时器T0进行重新赋值前首先进入中断点阵显示屏刷新频率稳定性保证116×T0 溢116×f12(65536t)中f晶振频率t等定时器T0初值定时器工作模式16位形式接显示驱动程序开始查询前点亮行号通调相关功函数读取行显示数入移位寄存器换行时候会余辉现象产生参示波器显示原理换行时信号消隐关闭显示等显示数锁存时开显示解决拖尾现象程序流程框图:
    进入中断
    定时器赋初值
    判断显示模式调功函数
    读取行号增加1

    数进行处理

    送出处理完成数
    发送新行号开显示
    退出中断

    图61 显示驱动程序流程图
    63 系统程序
    次设计程序求实现文字图形显示特殊显示效果例静态显示左移显示移显示移显示移显示等图象显示清晰乱码
    程序开始先定时器中断端口寄存器等进行初始化然调键检测程序键时系统判断前选择什播放模式前需显示段容显示模式显示容通键选定次中断时系统会中断中前设置作出回应进实现键改变显示模式显示容目
    单元显示板级级采联形式级接收信息级相信息传级样显示屏进行扩展显示更容程序时更改显示容原显示代码更改



























    第六章 系统创作程调试
    61 电路制作程
    系统电路原理图设计PCB图绘制步制作电路板次设计采PCB设计软件Protel99制作流程图:
    设计原理图



    绘制PCB图


    硬件仿真



    转印PCB


    腐蚀孔


    焊接元器件


    图61硬件电路开发流程

    611 设计原理图
    首先Protel99中新建工程然建立Schemetic文件建添加SCH库库中选取相应器件放图纸中等元器件放完进行布局进行连线连完线编辑器件信息例电阻值电容值PCB封装等元器件编流水号选择手动编辑动编辑两种方式接Design栏中选择生成网络表样原理图基绘制完毕


    612设计PCB图
    原工程文件夹先建立PCB文件夹建选择丝印层绘矩形框该框电路板实际尺寸画框开原理图选择Updata PCBPCB进行更新
    更新开PCB图选择装入网络表时器件导入PCB改正导入网络表时出现错误情况PCB库里面没相应封装引起需画画讲库导入软件中
    改正完错误便元器件进行布局布局时量发热量元器件放置板子边缘接调整元器件位置量减少交叉线布局时整体结构量紧凑减少PCB板面积元器件布局完成便重步布线布线时线宽设置05mm1mm间特电源线线线宽设置1mm余信号线设置05mm左右样防止腐蚀时候断线便检查
    设置元器件孔时候时刻注意焊盘焊盘太孔时候没造成法焊接连接走线时候走直角锐角量化成钝角次设计元器件较少加实验室条件限板子做成单面板画PCB时双面板画焊接时底层飞线次总54飞线
    613 硬件仿真
    原理图PCB绘制验证理行性Prpteus70硬件部分进行仿真仿真结果成功仿真结果图613示证明设计思路没错接进行步工作

    图613 硬件仿真图

    614转印PCB
    次转印PCB采热转印法首先喷墨印机PCB图印热转印纸覆铜板酒精洗净电熨斗图形印覆铜板
    615腐蚀孔
    完成热转印覆铜板放入腐蚀液进行腐蚀腐蚀完板子进行孔孔时特注意孔歪焊盘没次检查否遗漏空

    616焊接元器件
    焊接元器件时先焊接矮元件焊接高元件极性元件特注意焊反例点阵显示屏极性电容三极等旦焊错整块板子废掉某器件焊接前先放静电否静电会损坏焊接时锡适量少容易造成虚焊
    62 硬件调试程
    硬件调试时首先检查否虚焊漏焊短路方PCB图飞线没错元器件否焊接反确认误烧录测试程序进行检测
    硬件调试程中出现问题:
    1 电路焊接完成发现显示屏根会亮键反应仔细检查发现问题出单片机控制电路电源线差更没连连接问题解决显示屏亮键反应
    2 单片机烧录进测试程序发现屏幕出现乱码图象毫规律方出现明显供电足现象反复检查发现电路焊接没问题明显短路虚焊发现原点整显示屏焊反
    点阵屏引脚非常取话件容易事容易电路板损坏新做块板子话时间明显够学说方法点阵屏板子没损坏点整屏新装显示图形变正常串码局部供电足现象检查发现取显示屏时候走线弄断
    断走线飞线显示容正常没串码供电足现象
    样硬件调试算成功

    63 软件调试程
    软件调试程花较长时间首先测试程序烧录进硬件进行测试确定硬件没错误写程序烧录进行测试测试程中出现许问题显示种乱码程序仔细认真分析问题解决终实现求项功







    总结
    两月断努力设计终终完成次设计够实现中英文字符图形显示LED显示屏显示时串码亮度均匀清晰显示容实现左右滚动显示静态显示系统通扩展方式增加显示容
    系统具硬件电路简单成低系统稳定性等优点存着缺点例PC机进行串行通信实现显示容更新次心容取单片机开发板烧录程序样容易损坏单片机时间限老师求串行通信模块选做块没做出实物时间通信模块加相信设计会更完美电路布局合理扩展接口应该放电路板方样级联扩展时候减少屏幕间缝隙显示效果优化
    次设计中收获:
    1次设计中专业学知识实践性应巩固尤keilprotel99proteus等软件
    2硬件制作整程绘制原理图焊接元器件系统调试较全面解事相关方面工作帮助
    3次设计程锻炼发现问题解决问题力发现身足处定弥补























    参考文献
    [1]张秀关单片机计算机串口通信实践[M]北京:电子工业出版社20131
    [2]李江全魏中岩姚帅严海娟单片机通信控制应编程实例[M]北京:中国电力出版社201111
    [3]沈洁LED封装技术应[M]北京:化学工业出版20128
    [4]周志敏纪爱华漫步LED世界[M]北京:国防工业出版社20138
    [5]杨清德杨兰云LED应技术问答[M]北京:电子工业出版社20111
    [6]VizimullerP RF design guidesystemscircuitsand equations 1995 
    [7]RDye Visual ObjectOrientated ProgrammingDrDobbs Macintosh Journal Sept1st (1991)
    [8]缪思恩 LED屏幕显示电路设计[J]电子技术应1996(08):5677 
    [9]王亭李瑞涛宋召清WindowsPC机单片机串行通信[J]微型机应2000(1)
    [10]关积珍陆家 国LED显示屏技术产业发展展现代显示2004 (02):3437 
    [11]缪思恩 LED屏幕显示电路设计[J]电子技术应1996(08):5677 
    [12]Dave Jackson 关DSP芯片问答日电子 1998(12):17 
    [13]卢弥坚分布式LED屏幕显示系统[J]电脑信息技术1997(04):613 
    [14]高胜东梁采张宏富种LED屏幕显示系统[J]成气象学院学报1998(03):108120 
    [15]张全福汇编语言程序设计实验教学改革探索教学研究2005(06):35 [9] 文哲雄单片机控制LED显示屏[D]佛山:佛山科学技术学院1995 
    [16]彭宁佩华单片机LED屏幕显示控制系统[J]河北学学报(然科学版)199313(3):8689
































    附录
    PCB

    显示部分PCB

    控制部分PCB




    原理图

    显示部分原理图

    控制部分原理图


    附录二
    实物图













    附录三
    完整程序
    #include
    #include
    #define NOP() _nop_() * 定义空指令 *
    #define uchar unsigned char
    #define uint unsigned int
    #define clrbit(XY) X~(1<#define Kkey P2 定义键
    #define STATIC 1
    #define LEFT 2
    #define RIGHT 3
    #define UP 4
    #define DOWN 5
    #define LEFT_RIGHT 6
    SPI IO
    sbit S_CLK P1^0
    sbit R_CLK P1^1
    sbit OUT_OEP1^4
    sbit MOSIO P1^2

    sbit key0 P2^0
    sbit key1 P2^1

    extern uchar *disptab
    extern unsigned int tab_length
    extern tabchoose(char num)

    uint Saom_num
    uchar word_num
    uchar byte_num
    uchar Speed_move
    uchar Speed_static
    uchar HZ_Num
    uchar key_val
    uchar show_Val[2]
    uint move_timce
    uint Flg
    uchar left_rightFlg
    uchar Movespeed2 移动快慢

    void delay(unsigned int i) 函数声名
    void delay1(void)
    void HC595SendData(uchar SendVal)
    void InitTIMER0(void)
    void SaomiaoFun()
    void HC595Output()
    void StaticFun(unsigned char *byte_Punsigned char ByteNum)
    void Move_left(unsigned char *byte_Punsigned char ByteNum)
    void Move_right(unsigned char *byte_Punsigned char ByteNum)
    void Move_up(unsigned char *byte_Punsigned char ByteNum)
    void Move_down(unsigned char *byte_Punsigned char ByteNum)
    void left_and_right(unsigned char *byte_Punsigned char ByteNum)
    void Init_sys()


    void main()
    {

    uchar Mode_val
    uchar Mode_val0

    Mode_val0
    Mode_val00
    key_val0

    Init_sys()
    while(1)
    {
    if(((Kkey&0x03)0x03))
    {
    delay(5)
    if(key0)
    {
    while(key0)
    Mode_val++
    if(Mode_val>6) 限定模式种类
    {
    Mode_val1
    }
    switch(Mode_val)
    {
    case STATIC {Init_sys()Mode_val00tabchoose(0)HZ_Num1key_val1break}
    case LEFT {Init_sys()Mode_val00tabchoose(0)key_val2Movespeed2break}
    case RIGHT {Init_sys()Mode_val00tabchoose(0)key_val3Movespeed2break}
    case UP {Init_sys()Mode_val00tabchoose(0)key_val4Movespeed2break}
    case DOWN {Init_sys()Mode_val00tabchoose(0)key_val5Movespeed2break}
    case LEFT_RIGHT {Init_sys()Mode_val00tabchoose(0)key_val6Movespeed1break}
    default {Mode_val0break}
    }

    }
    if(key_val1)
    {
    if(key1)
    {
    while(key1)
    Init_sys()
    HZ_Num++
    }
    if(HZ_Num>(tab_length2))
    {
    HZ_Num1
    }

    }
    else
    {
    if(key1)
    {
    while(key1)
    Mode_val0++
    switch(Mode_val0)
    {
    case 1 {tabchoose(1)Init_sys()break}
    case 2 {tabchoose(3)Init_sys()break}
    case 2 {tabchoose(0)Init_sys()break}
    default {Mode_val00break}
    }

    }
    }
    }

    }
    }
    ******************************************************************
    * 系统初始化函数 *
    ******************************************************************
    void Init_sys()
    {
    Saom_num0
    word_num0
    byte_num0
    Speed_move0
    Speed_static0
    move_timce0
    left_rightFlg0
    Flg0
    OUT_OE0 开HC595输出

    InitTIMER0() 初始化定时器0
    }

    ******************************************************************
    * 静态函数 *
    ******************************************************************
    void StaticFun(unsigned char *byte_Punsigned char ByteNum)
    {
    uchar TabB_num
    uint m m越显示字节越

    TabB_numByteNum
    m(uint)(byte_num+32*HZ_Num)
    show_Val[1]*(byte_P+m+1)
    show_Val[0]*(byte_P+m)

    }
    ******************************************************************
    * 左移函数 *
    ******************************************************************
    void Move_left(unsigned char *byte_Punsigned char ByteNum)
    {
    uint m
    if(move_timce16*(ByteNum1))4字
    {
    move_timce0
    }
    mbyte_num+move_timce*2
    show_Val[1]*(byte_P+m+1)
    show_Val[0]*(byte_P+m)
    }
    ******************************************************************
    * 右移函数(写程序时必笔纸进行计算) *
    ******************************************************************
    void Move_right(unsigned char *byte_Punsigned char ByteNum)
    {
    uint m
    if(move_timce16*(ByteNum1))ByteNum字
    {
    move_timce0
    }
    面刷屏分配数算法
    if(Saom_num<(move_timce16)) 扫描列移动次数情况
    {
    mbyte_num2*(move_timce16)+32*(move_timce16)+32+32 括号拆开否出错法
    }
    else if(Saom_num>(move_timce16)) 扫描列移动次数情况
    {
    mbyte_num2*(move_timce16)+32*(move_timce16) 括号拆开否出错法
    }
    show_Val[1]*(byte_P+m+1)
    show_Val[0]*(byte_P+m)
    }
    ******************************************************************
    * 左右交移动 *
    ******************************************************************
    void left_and_right(unsigned char *byte_Punsigned char ByteNum)
    {
    uint m
    ************************************************
    **************中间停留需变量传递*************
    ************************************************
    if(left_rightFlg96)
    {
    left_rightFlg0
    }
    if((left_rightFlg0)||(left_rightFlg48))
    {
    move_timceFlg
    }
    else if((left_rightFlg16)||(left_rightFlg64))
    {
    Flgmove_timce
    }


    if(move_timce16*(ByteNum1))
    {
    move_timce0
    }

    if(left_rightFlg<16)
    {
    mbyte_num+move_timce*2
    show_Val[1]*(byte_P+m+1)
    show_Val[0]*(byte_P+m)
    }
    else if((left_rightFlg>16)&&(left_rightFlg<48))
    {
    mbyte_num+Flg*2
    show_Val[1]*(byte_P+m+1)
    show_Val[0]*(byte_P+m)
    }
    else if((left_rightFlg>48)&&(left_rightFlg<64))
    {
    面刷屏分配数算法
    if(Saom_num<(move_timce16)) 扫描列移动次数情况
    {
    mbyte_num2*(move_timce16)+32*(move_timce16)+32+32 括号拆开否出错法
    }
    else if(Saom_num>(move_timce16)) 扫描列移动次数情况
    {
    mbyte_num2*(move_timce16)+32*(move_timce16) 括号拆开否出错法
    }
    show_Val[1]*(byte_P+m+1)
    show_Val[0]*(byte_P+m)

    }
    else if((left_rightFlg>64)&&(left_rightFlg<96))
    {
    面刷屏分配数算法
    if(Saom_num<(Flg16)) 扫描列移动次数情况
    {
    mbyte_num2*(Flg16)+32*(Flg16)+32+32 括号拆开否出错法
    }
    else if(Saom_num>(Flg16)) 扫描列移动次数情况
    {
    mbyte_num2*(Flg16)+32*(Flg16) 括号拆开否出错法
    }
    show_Val[1]*(byte_P+m+1)
    show_Val[0]*(byte_P+m)
    }

    }


    ******************************************************************
    * 移函数 *
    ******************************************************************
    void Move_up(unsigned char *byte_Punsigned char ByteNum)
    {
    uint d
    uchar ab
    uchar buff_Val[4]
    uint m
    if(move_timce16*(ByteNum1))ByteNum字
    {
    move_timce0
    }

    mbyte_num+32*(move_timce16)

    buff_Val[0]*(byte_P+m)
    buff_Val[1]*(byte_P+m+1)
    buff_Val[2]*(byte_P+m+32)
    buff_Val[3]*(byte_P+m+32+1)
    if((move_timce16)<9) 移动次数8次
    {

    d(buff_Val[1]&0xff)<<8 半屏
    dd+buff_Val[0]
    dd>>(move_timce16)
    ad&0xff

    d(buff_Val[2]&0xff)<<8 半屏
    dd+buff_Val[1]
    dd>>(move_timce16)
    bd&0xff

    show_Val[1]b 列低字节
    show_Val[0]a 列高字节
    }
    else 移动次数8次16次
    {
    d(buff_Val[2]&0xff)<<8 半屏
    dd+buff_Val[1]
    dd>>(move_timce168)关键步骤
    ad&0xff

    d(buff_Val[3]&0xff)<<8 半屏
    dd+buff_Val[2]
    dd>>(move_timce168)关键步骤
    bd&0xff

    show_Val[1]b 列低字节
    show_Val[0]a 列高字节

    }
    }
    ******************************************************************
    * 移函数 *
    ******************************************************************
    void Move_down(unsigned char *byte_Punsigned char ByteNum)
    {
    uint d
    uchar ab
    uchar buff_Val[4]
    uint m
    if(move_timce16*(ByteNum1))ByteNum字
    {
    move_timce0
    }

    mbyte_num+32*(move_timce16)

    buff_Val[0]*(byte_P+m) 32*(move_timce16)变buff_Val[]值扫描列byte_num关
    buff_Val[1]*(byte_P+m+1)
    buff_Val[2]*(byte_P+m+32)
    buff_Val[3]*(byte_P+m+32+1)

    if((move_timce16)<9) 移动次数8次
    {

    d(buff_Val[0]&0xff)<<8 半屏
    dd+buff_Val[3]
    dd<<(move_timce16)
    a(d>>8)&0xff

    d(buff_Val[1]&0xff)<<8 半屏
    dd+buff_Val[0]
    dd<<(move_timce16)
    b(d>>8)&0xff

    show_Val[1]b 列低字节
    show_Val[0]a 列高字节
    }
    else 移动次数8次16次
    {

    d(buff_Val[3]&0xff)<<8 半屏
    dd+buff_Val[2]
    dd<<(move_timce168)关键步骤
    a(d>>8)&0xff

    d(buff_Val[0]&0xff)<<8 半屏
    dd+buff_Val[3]
    dd<<(move_timce168)关键步骤
    b(d>>8)&0xff

    show_Val[1]b 列低字节
    show_Val[0]a 列高字节

    }
    }
    ******************************************************************
    * 扫列行 *
    ******************************************************************
    void SaomiaoFun()
    {
    uint Lie_xuan
    uchar LieX0LieX1

    switch(key_val)
    {
    case 0 { show_Val[1]0xff
    show_Val[0]0xff
    break
    }
    case 1 {StaticFun(disptabtab_length)break}
    case 2 {Move_left(disptabtab_length)break}
    case 3 {Move_right(disptabtab_length)break}
    case 4 {Move_up(disptabtab_length)break}
    case 5 {Move_down(disptabtab_length)break}
    case 6 {left_and_right(disptabtab_length)break}
    default {break}

    }

    Lie_xuan1<<(15Saom_num) 列选扫描
    LieX0Lie_xuan&0xff
    LieX1(Lie_xuan>>8)&0xff

    HC595SendData(show_Val[1])
    HC595SendData(show_Val[0]) 调595驱动程序 LED数送595
    HC595SendData(LieX1) 调595驱动程序 LED列选通信息送595
    HC595SendData(LieX0)

    HC595Output()

    }

    ******************************************************************
    * 定时器0初始化 *
    ******************************************************************
    void InitTIMER0(void)
    {
    TMOD&0x0f 选择模式1
    TMOD|0x01
    TH0(1000)256 赋予1ms初值(赋予10ms初值写成 TH0(10000)256TL0(10000)256)
    TL0(1000)256
    IE0x82
    TR01
    }
    *****************************************************************
    * 延时子程序 *
    * *
    ******************************************************************
    void delay(unsigned int i)
    {
    for(i i > 0 i)
    }

    ******************************************************************
    * 定时器中断函数 *
    ******************************************************************
    void tim(void) interrupt 1 中断行列扫描
    {

    TH0(1000)256 10ms(赋予10ms初值写成 TH0(10000)256TL0(10000)256)
    TL0(1000)256 (15ms保证扫屏闪烁)

    SaomiaoFun()

    if(key_val)
    {
    Saom_num++ 标志位判断扫描第行列
    byte_num+2
    }

    if(Saom_num16) 扫完屏
    {
    Saom_num0
    byte_num0
    Speed_move++
    if(Speed_moveMovespeed) 10x16xMovespeed毫秒移动次(移动)
    {
    Speed_move0
    move_timce++
    left_rightFlg++
    }

    Speed_static++
    if(Speed_static40) 10x16xSpeed_static毫秒跳(静止显示)
    {
    Speed_static0
    HZ_Num++
    if(HZ_Num>(tab_length2))
    {
    HZ_Num1
    }
    }
    }
    }

    *********************************************************************************************************
    ** 函数名称 HC595SendData
    ** 功描述 SPI总线发送数(发送字节)(单传输两线模拟SPI)(三线控制595)S_CLK R_CLK MOSIO
    *********************************************************************************************************
    void HC595SendData(unsigned char SendVal)
    {
    unsigned char i

    for(i0i<8i++)
    {
    if((SendVal< else MOSIO0

    S_CLK0
    NOP() 产生方形波
    NOP() 调试时候空指令
    S_CLK1
    }
    }
    void HC595Output()
    {
    R_CLK0
    NOP() 产生方形波
    NOP() 调试时候空指令
    R_CLK1升输出锁存数
    }
    文档香网(httpswwwxiangdangnet)户传

    《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
    该内容是文档的文本内容,更好的格式请下载文档

    下载文档到电脑,查找使用更方便

    文档的实际排版效果,会与网站的显示效果略有不同!!

    需要 20 香币 [ 分享文档获得香币 ]

    下载文档

    相关文档

    LED点阵显示屏设计报告

    XX大学开发性实验结题报告学 院: 电子工程学院 班 级:光信 姓 名: 学 号: 班 级:光信 姓 名: 学 号: 班 ...

    3年前   
    645    0

    基于51单片机的定时闹钟设计单片机课程设计

    单片机 课 程 设 计 报 告 院系: 信息工程学院 ...

    2年前   
    492    0

    LED显示屏设计方案

    LED显示屏设计方案1、施工方案概述1.1工程概况LED多媒体信息屏系统是一个集计算机网络技术、多媒体视频控制技术和超大规模集成电路综合应用技术于一体的大型的电子信息显示系统,具有多媒体、多途...

    3年前   
    732    0

    基于AT89S51单片机无线传输系统设计毕业设计

    毕业论文(设计) 题 目: 单片机无线传输系统设计 完 成 人: ...

    4年前   
    872    0

    基于51单片机的智能窗户设计毕业设计

    基于51单片机的智能窗户设计【摘 要】 随着电子技术的发展和人民生活水平的不断提高,智能窗已经越来越多地被用到了现代智能化建筑中,提供住户一个安全、方便的环境。据统计,在未来的几年内,安装智...

    5个月前   
    119    0

    基于51单片机压力检测系统设计毕业设计

     学号: xx 大 学 毕业设计(论文) (xxxx届) 题 目 ...

    5年前   
    2722    0

    基于51单片机数字温度计设计课程设计

    课 题: 基于51单片机数字温度计设计专 业: 电子信息工程班 级: 班学 号: 姓 名: ...

    3年前   
    975    0

    基于STM32点阵电子显示屏

    基于STM32点阵电子显示屏基于STM32点阵电子显示屏摘 要如今的社会技术和科技的发展日新月异。LED点阵显示屏广泛应用于各种公共场合。例如,在国防工业和国防系统的展示中,在商场、地铁、学...

    3年前   
    1102    0

    基于AT89C51单片机的简易计算器的设计

     毕 业 设 计 题目 简易计算器的制作 ...

    5年前   
    2353    0

    基于51单片机的数字温度计毕业设计

    数字测温计设计摘要:随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研、各个领域,已经成为一种比较成熟的技术。在工业生产中温度是常用的被控参数,而采用单片机来对这些被控参数进行控制...

    3年前   
    1202    0

    论文:基于51单片机的智能充电器的设计

    在我们的日常生活中,手机已经变得越来越重要了。我们经常需要使用手机,打电话、发短信、上网、看电影、听歌、玩游戏等等。随着大屏幕和高主频的手机出现,锂离子电池就变得更加重要了,其锂离子电池充电器也...

    5年前   
    1660    0

    学士论文开题报告基于51单片机的数字示波器设计

    XX学院信息工程学院学士学位论文开题报告课题名称 基于51单片机的数字示波器设计 学生姓名 导师姓名 所在系部 信息工程学院 ...

    2年前   
    751    0

    基于51单片机音乐盒课程设计

    基于51单片机音乐盒课程设计 课程名称: 微机原理课程设计 题 目: 基于51单片机的音乐盒设计 摘要 随着人类社会的发展,人们对视觉、听觉方面的享受提出了越来越高的要求。小小的...

    5年前   
    1272    0

    基于51单片机的智能充电器的设计

    课题:基于51单片机的智能充电技术基于51单片机的智能充电器设计摘 要:智能充电器的设计第一步需要解决的就是选择什么样的芯片来进行工作,其本身需要将51单片机作为基本的设计基础,这里选择的充...

    7个月前   
    226    0

    基于51单片机的电子密码锁设计

    近年来,在我国社会经济不断进步和迅猛发展的背景下,人们的生活水平越来越高,更多的人开始享受高质量的生活。就拿我们家家离不开的锁具来说,从我国古代历史上就有了各种锁的记载和使用,发展到今天人们追求...

    3年前   
    670    0

    基于51单片机红外感应家用小夜灯的设计

     本科毕业论文(设计)题 目: 基于51单片机红外感应家用小夜灯的设计 院 系:物理与电子信息科学系 专 业:电子信息科学与技术...

    2年前   
    560    0

    基于单片机的时钟设计

    随着时间的推移,事物的发展越来越趋向于高科技,单片机的出现,受到了社会各界的广泛关注,这是由于单片机具备丰富的功能。单片机的特点为:尺寸小,价格低,抗干扰强,开发容易等。运用的范围也很广,如检测...

    4年前   
    1034    0

    LED显示屏广告合同

    LED显示屏广告合同甲方(LED屏拥有方): (以下简称甲方)乙方(广告方): (以下简称乙方)根据《中华人民共和国合同法》、...

    11年前   
    899    0

    LED显示屏广告合同

    LED显示屏广告合同甲方(LED屏拥有方): (以下简称甲方)乙方(广告方): (以下简称乙方)根据《中华人民共和国合同法》、...

    3年前   
    822    0

    LED显示屏管理办法

                        LED显示屏管理办法       拟稿:          审核:          审批:          ...

    5年前   
    2718    0

    文档贡献者

    平***苏

    贡献于2021-06-07

    下载需要 20 香币 [香币充值 ]
    亲,您也可以通过 分享原创文档 来获得香币奖励!
    下载文档

    该用户的其他文档