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

上传人:ylj18****41534 文档编号:38740146 上传时间:2022-09-05 格式:DOCX 页数:31 大小:25.18KB
返回 下载 相关 举报
基于51单片机LED点阵显示屏设计.docx_第1页
第1页 / 共31页
基于51单片机LED点阵显示屏设计.docx_第2页
第2页 / 共31页
点击查看更多>>
资源描述

《基于51单片机LED点阵显示屏设计.docx》由会员分享,可在线阅读,更多相关《基于51单片机LED点阵显示屏设计.docx(31页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、基于51单片机LED点阵显示屏设计书目 摘要 II Abstract III 第一章 绪论 1 1.1 课题背景 1 1.2 选题意义 1 1.3 论文主要内容 1 其次章 方法论证对比 3 2.1 单片机编程语言 3 2.2 限制系统设计 3 2.3 显示方式 3 第三章 系统硬件设计 4 3.1 总体硬件设计 4 3.2 系统各硬件电路介绍 5 3.2.1 电源电路设计介绍 5 3.2.2 复位电路 5 3.2.3 晶振电路 6 3.2.4 按键电路 6 3.2.5 点阵驱动模块设计实现 7 3.2.6 通信系统硬件设计 8 第四章 重要器件介绍 9 4.1 LED点整显示屏介绍 9 4.

2、2 限流电阻 10 第五章 系统软件设计 11 6.1 软件整体介绍 11 6.2 显示驱动程序 12 6.3 系统主程序 13 第六章 系统的创作过程与调试 14 6.1 电路制作过程 14 6.1.1 设计原理图 15 6.1.2设计PCB图 15 6.1.3 硬件仿真 16 6.1.4转印PCB 16 6.1.5腐蚀和打孔 16 6.1.6焊接元器件 17 6.2 硬件调试过程 17 6.3 软件调试过程 17 总结 18 参考文献 19 致谢 20 附录一 21 附录二 23 附录三 24 基于51单片机的LED点阵显示屏设计 摘要 本次设计的核心模限制块所用的芯片型号是STC89C5

3、2单片机,我们运用4块带锁存功能的串并转换芯片74HC595外加NPN三极管作为1616LED点阵显示屏的驱动。用PC机作为上位机与单片机进行通信,实现显示内容的更新。该系统可以实现的功能有字符或图片的动态和静态特效显示,可显示中、英文字符。而且该系统还带有级联扩展端口,须要扩展显示屏的大小时干脆连接此端口就能实现。系统采纳串行传输方式进行数据传送削减了单片机I/O口的占用,简化了电路走线。本次所选用的是价格便宜,应用最广泛的STC单片机,而且写入程序也特别便利,这就使得整个系统成本降低了很多,也便利了系统的维护和检修。 关键词:单片机STC89C52;74HC595;16x16LED点阵;点

4、阵字库。 Abstract The core of the design of chip used in the model control block is STC89C52 single-chip microcomputer,we 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 driver.Using PC as a PC and single chip microcomputer

5、communication, realize the display content updates.The system can realize the function of the characters or images of dynamic and static effects showed that can show Chinese and English characters.With cascade expansion port, and the system also needs to extend screen size directly connect to this p

6、ort.Data transfer system adopts serial transmission way for reducing the number of the SCM I/O port, simplify the circuit line.Is 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 syste

7、m is convenient for maintenance and overhaul of the system. Key words:single chip STC89C52; 74HC595; 16x16LED lattice; lattice fonts. 第一章 绪论 1.1 课题背景 LED显示技术是八十年头后期才快速发展起来的新型显示媒体,LED显示屏Light Emitting Diode:又叫电子显示屏,是由几百甚至几十万个发光二极管组成的阵列。LED点阵显示屏在近几年不论是技术上还是应用范围方面都有了很大的进步,目前已经探讨出了能发蓝光和纯绿光的LED。LED之所以应用越

8、来越广泛是因为它有很多其他器件无法相比的有点,例如工作电压低、亮度高、功耗小、寿命长性能稳定、耐冲击、抗震性强等,这些优点使其受到人们的青睐。 目前LED显示屏的应用已非常广泛了,主要包括:(1)机场航班动态信息显示。(2)证券交易、金融信息显示。(3)港口、车站旅客引导信息提示。(4)道路交通信息显示。(5)调度指挥中心信息显示。(6)广告媒体新产品等。LED显示屏的种类可分为许多种,有室内显示屏、室外显示屏、单色显示显示屏、全彩色显示屏等。1.2 选题意义 该设计使我们驾驭了LED点阵显示屏的显示原理以及其硬件电路的设计方法,同时也了解了LED行业的发呈现状和趋势。通过本次设计我们巩固了以

9、前学过的学问特殊是硬件电路设计流程这一块,而且对以前所学的Keil、Protel99、Proteus等设计软件也有了进一步的相识和驾驭,也使自己的C语言编程的实力得到了提高。其次,本次设计也为今后从事相关方面的工作奠定了肯定基础。因此,此课题无论是对自己的就业与今后工作看法的培育都有特别现实与主动的意 义。 1.3 论文主要内容 论文的结构和主要内容支配如下: (1) 设计的总体思路 依据设计的特点,对系统的整体设计思路进行简洁介绍,包括硬件部分和软件部分。 (2) 方案的论证与对比 通过收集资料,并参照目前通用的设计方法和思路拟定几套设计方案,最终确定选用单片机为核心限制器件,用C语言来编程

10、,以PC机为上位机,外加译码电路和驱动电路的设计及方案。(3) 系统硬件设计 经过论证对比,我们选择STC89C52单片机为限制芯片,74HC595作为译码器件,三极管8550为驱动器件。在论文中具体的列出了这些器件的连接运用方法和重要器件的参数。(4) 重要器件介绍 选择了系统中比较重要的器件对其参数等信息做了具体的介绍。(5) 系统软件设计 针对软件的整体工作流程和各个模块功能做了简洁介绍,对系统的扫描驱动程序做了比较具体的说明。(6) 系统的制作过程与调试 分别说明白制作硬件电路的具体过程,包括绘制原理图、绘制PCB、制作电路板和元器件的焊接等几个环节。最终还多调试过程中出现的问题进行了

11、说明。(7) 结论 设计完成后对自己在整个设计过程中所遇到问题,阅历教训进行总结。 其次章 方法论证对比 2.1 单片机编程语言 目前我们针对单片机编程这一块我们只学习了汇编语言和C语言两种,由于我们平常主要用C语言进行编程而汇编语言较少运用,所以最终选择用C语言进行编程。 2.2 限制系统设计 方法一:用4块串并转换芯片74LS164将串行数据转换为并行数据,再接锁存器74LS373将数据锁存。 方法二:用4块具有锁存功能的串并转换芯片74LS595干脆将串行数据转换为并行数据并锁存。 通过比较方法一所用器件较多,电路较困难,而方法二所用器件少是电路得到了简化,最终我们选定方法二。 2.3

12、显示方式 图文显示的方式一般有两种: 方式一:静态显示方式 此种方式的设计思路简洁,但连线特别之多,单片机的管脚占用量特别大。干脆经点阵显示屏连接到单片机上的话明显是不行能,只有通过锁存器扩展的方式来扩展端口,通过计算1616的点阵须要256/8=32个锁存器。这就是硬件电路变得特别困难,而且不利于屏幕的扩展。方式二:动态扫描方式 动态扫描采纳的是逐行轮番点亮的方式对点阵显示屏的端口进行扫描,这样就可实现多行的同名端口共同运用同一套驱动器,从而削减单片机端口的占用率,为单片机扩展其他功能留下了空间。数据传输时可采纳串行传输方式,此时只用一根信号线便可将显示数据传送至列驱动器,这无疑使非常便利和

13、经济的。经过比较,为了简化电路提高效率我们最终选择方式二,采纳动态扫描方式。 第三章 系统硬件设计 3.1 总体硬件设计 总体硬件设计框图如下: 单 片 机 列驱动器 上位机 电源电路 16X16LED显示 点阵 复位电路 行驱动器 按键限制电路 图3.1 本次设计的硬件系统主要有单片机系统、上位机、电源电路、复位电路、按键限制电路和点阵驱动电路。其工作流程如下:单片机与上位机进行串行通信,将显示内容存入单片机内。单片机接收到显示内容之后,由按键限制电路产生中断信号限制显示方式,最终单片机将显示代码送入驱动电路将点阵显示屏点亮实现所须要显示的内容。对该系统所实现的功能有以下几点要求: (1)L

14、ED点阵显示屏最小尺寸为16*16,必需满意至少显示一个汉字的要求; (2)可实现中英文字符,静态和动态等两种以上特效显示; (3)编写上位机软件,实现显示内容更新(该功能选作); (4)具有级联扩展功能; (5)驱动电路所供应电流、电压要达到点阵屏显示要求,使显示屏亮度适中。 3.2 系统各硬件电路介绍 3.2.1 电源电路设计介绍 图 3.2.1 电源电路 如图 ,为电源电路原理图,我们采纳了5V电源干脆给系统供电,用六脚开关限制电源的通断。因为5V电源是干脆从电脑上取得的比较稳定,为了简化电路就不须要电容滤波了。 3.2.2 复位电路 图3.2.2 复位电路 单片机复位只须要在第9脚接持

15、续通高电平2us就可实现,在电路图中,电容的的大小是10uF,电阻的大小是10k。所以依据公式,可以算出电容充电到电源电压的0.7倍(单片机的电源是5V,所以充电到0.7倍即为3.5V),须要的时间是10K*10uF=0.1S。单片机在启动0.1S内会自动复位。当须要手动复位时,按下按钮电容被短路起先放电,经过0.1S R2两端电压变为3.5V,单片机复位。 3.2.3 晶振电路 图 3.2.3 晶振电路 本次设计所运用的晶振为12MHz,电容大小为33pF。电容的作用是使电路产生谐振,让振荡频率更加稳定。 3.2.4 按键电路 图3.2.4 按键限制电路 本次设计采纳四脚轻触开关,分别接单片

16、机P2.0与P2.1口。按键S6用于选择点阵显示屏的显示方式,S7用于切换显示内容。P2.0与P2.1没有接上拉电阻是因为单片机P2口内部已经接有上拉电阻外部就无需再接。 3.2.5 点阵驱动模块设计实现 图3.2.5 点阵驱动电路 本设计所运用的行、列译码器均为74HC595,74HC595为带有锁存功能的串并转化器。采纳译码器解决了单片机端口不足的问题,为单片机扩展供应了跟多空间。 设计用到了4片74HC595芯片,该芯片的作用是讲串行数据转化为并行数据进行锁存,最终将数据输出到点阵显示,如图3.2.5为该芯片的硬件连接方式。把4片芯片的第11脚相连,然后引出一根线SCK,该线为以为时钟输

17、入引脚;将4片芯片的12脚相连,再引出一根线RCK,该线为存储器时钟输入引脚;将第一片芯片的SER(数据输入)端接单片机端口,Q7端接下一块芯片的SER端,如此级联到第四块芯片。第四块芯片的Q7端作为级联扩展端运用接到图中J3,J3为级联扩展端接口。该显示屏可以通过级联扩展的方式增加显示屏的尺寸从而增加显示内容。J2为点阵显示屏与单片机模块的连接端口。该模块的详细工作流程为:当给SER端输入串行数据信号后,再给SCK时钟输入引脚输入高电平经延时适当时间后,串行显示数据被移入以为寄存器中。再给RCK端输入高电平后,数据将会被锁存。最终将使能端E接地,就能是显示数据并行输出。 3.2.6 通信系统

18、硬件设计 图3.2.6 由于单片机与PC机的信号电平不同,PC机在传送数字“1”时C采纳的是EIA电平,即传输线上的电平为-3V-15V;传送数字0时,传输线上的电平为+3V+15V。而单片机采纳的是正逻辑TTL电平,传输数字“1”和“0”时,传输线上的电平分别为+5V和-5V。所以假如要使单片机与PC机进行通信就必需将电平信号进行转换。通过查阅相关资料得知,可用MAX232芯片讲电平信号进行转换,这样就可实现单片机与PC机之间的通信。如图3.2.6所示为串行通信模块原理图,当进行通信使LED灯可闪耀提示。 第四章 重要器件介绍 4.1 LED点整显示屏介绍 图4.1.1 88点阵显示屏实物图

19、 图4.1.2 单色LED矩阵的内部结构 LED点阵显示屏有两个类型,一种为共阴极另一种为共阳极。LED的显示方式是根据显示码的传送依次逐行或逐列显示。如图为共阴极点阵显示屏的管脚排列图,轮番给行输出低电平进行扫面,给列输出显示代码进行即可显示所要显示的信息。由于每一行的显示时间在4ms左右,闪耀频率大于人眼的临界闪耀频率,所以人眼看到屏幕显示的内容是稳定的。本次点阵屏正常工作电流为20mA, 本次设计所运用的是共阴极88点阵显示屏,由四块组成一块1616的显示屏,从而增加显示内容。由于该显示屏的实物不好区分是共阴极的还是共阳极的,这就须要用万用表进行测量。详细方法和步骤如下: 1、 把万用表

20、转到二极管档位; 2、 用表笔去接触点阵显示屏的随意一只管脚,用红表笔和黑表笔皆可; 3、 用另一只表笔去测试剩下的全部引脚,看有无二极管被点亮,若只有一种颜色的二极管被点亮就将两只表笔进行兑换; 4、将兑换过的表笔重复上一步,视察是否有两种颜色的二级管被点亮,若有,则看接固定端的是哪只表笔,若为红表笔,就是共阳极;若为黑表笔,就是共阴接发。 4.2、限流电阻 图4.2 限流电阻 限流电阻的作用是将电流限制在某一范围,为LED供应稳定的工作电流。经过查阅相关资料得知三极管基极正常工作电流为10mA,三极管工作在放大状态基极电压为0.7V,单片机端口电压为3.3V。由公式R=U/A,可得限流电阻

21、为R=(3.3-0.7)/20=130,因此电阻选择150或330皆可。 第五章 系统软件设计 6.1 软件整体介绍 总体软件设计框图如下: 按键检测程序 功能函数 系统主程序 中断显示程序 初始化程序 图6.1 软件设计整体框图 如图6.1所示,软件部分用模块化的方式来编写,主要包含5个模块:系统主程序、按键检测程序模块、功能函数模块、初始化程序模块和中断程序模块。主程序通过适时调用初始化程序和按键检测程序来实现系统的各相功能,二定时器T0则负责调用其他程序。中断显示程序的主要功能是依据按键产生的中断信号将相应的显代码送入点阵显示屏,并产生各种相应的限制信号,是屏幕根据设定的参数显示。初始化

22、程序的作用的对系统及相关变量进行初始化。 6.2 显示驱动程序 显示驱动程序对定时器T0进行重新赋值之前首先要进入中断,从而使点阵显示屏刷新频率的稳定性得以保证。1/16T0 溢=1/16f/12(65536-t),其中f为晶振频率,t等于定时器T0的初值,定时器的工作模式是16位的形式。接下来显示驱动程序起先查询当前点亮行号,通过调用相关功能函数来读取下一行显示数据,并将其打入移位寄存器。由于在换行的时候会有余辉现象产生,在此可参照示波器的显示原理在换行时将信号消隐即关闭显示。等显示数据被锁存时再打开显示即可解决拖尾现象。程序的流程框图如下: 进入中断 定时器赋初值 推断显示模式调用功能函数

23、 读取行号并增加1 对数据进行处理 送出处理完成的数据 发送新行号,打开显示 退出中断 图6.1 显示驱动程序流程图 6.3 系统主程序 本次设计的程序要求能实现文字和图形的显示,并且还有特别显示效果例如,静态显示、左移显示、又移显示、上移显示和下移显示等。而且图象显示要清楚不能有乱码。 主程序一起先先是对定时器、中断端口、寄存器等进行初始化;然后调用按键检测程序,当有按键按下时,系统推断当前按下选择了什么播放模式,以及当前须要显示哪一段内容。显示模式和显示内容通过按键选定后,当下一次中断来临时,系统将会在中断中对当前的设置作出回应,进而实现了按键变更显示模式和显示内容的目的。单元显示板上一级

24、与下一级采纳的是并联的形式,即下一级接收到的信息与上一级相同。而且还可以将信息传至下一级,这样就可以将显示屏进行扩展从而显示更多的内容。本程序可随时更改显示内容,只要将原来的显示代码更改即可。 第六章 系统的创作过程与调试 6.1 电路制作过程 系统的电路原理图设计与PCB图绘制好之后,下一步就要是制作电路板。本次设计我们采纳的PCB设计软件是Protel99。制作流程图如下: 设计原理图 绘制PCB图 硬件仿真 转印PCB 腐蚀和打孔 焊接元器件 图6.1硬件电路开发流程 6.1.1 设计原理图 首先在Protel99中新建工程,然后再建立Schemetic文件。建好后再添加SCH库,并从库

25、中选取相应与器件放在图纸中。等元器件放完后在对其进行布局最终进行连线。连完线再编辑各个与器件的信息例如电阻值、电容值、PCB封装等,最终还得给元器件编流水号,可选择手动编辑和自动编辑两种方式,接下来在Design一栏中选择生成网络表,这样原理图就基本绘制完毕了。 6.1.2设计PCB图 在原来的工程文件夹先建立一个PCB文件夹,建好后再选择丝印层绘一个矩形框,该框的大小即是电路板的实际尺寸。画好框后再打开原理图选择Updata PCB,对PCB进行更新。 更新好后再打开PCB图并选择装入网络表,此时与器件将被导入PCB。之后再改正导入网络表时出现的错误,许多状况下是因为PCB库里面没有相应的封

26、装引起的,须要自己画,画好后再讲库导入软件中运用即可。 改正完全部的错误便可对元器件进行布局,布局时要尽量将发热量大的元器件放置在板子边缘;接下来要调整元器件位置尽量削减交叉线;布局时要使整体结构尽量紧凑削减PCB板的面积。元器件布局完成后便是最重要的一步布线,布线时线宽要设置在0.5mm到1mm之间,特殊是电源线和地线,线宽要设置在1mm以上,其余的信号线设置为0.5mm左右,这样既可防止腐蚀的时候断线,又便于检查。在设置元器件过孔的时候要时刻留意焊盘的大小,焊盘太小可能在打孔的时候就将其打没了最终造成无法焊接。在连接走线的时候不能走直角和锐角,尽量化成钝角。由于本次设计所运用的元器件较少再

27、加上试验室条件有限我们将板子做成单面板,但画PCB时是根据双面板来画的,焊接时的在底层打飞线,这次总共打了54跟飞线。6.1.3 硬件仿真 原理图和PCB绘制好之后,为了验证理论的可行性,我们用Prpteus7.0对硬件部分进行了仿真。仿真结果最终胜利了,仿真结果如图6.1.3所示。这也就证明我们的设计思路没有错,接下来就可以进行下一步工作了。 图6.1.3 硬件仿真图 6.1.4转印PCB 此次转印PCB我们采纳的是热转印法,首先用喷墨打印机将PCB图打印在热转印纸上,再将覆铜板用酒精洗净,用电熨斗将图形印在覆铜板上。 6.1.5腐蚀和打孔 完成热转印后将覆铜板放入腐蚀液进行腐蚀,腐蚀完后再

28、对板子进行打孔。打孔时要特殊留意不要将孔打歪了或焊盘打没了,最终得再次检查是否有遗漏的空。 6.1.6焊接元器件 在焊接元器件时要先焊接矮的元件再焊接高的元件,对于有极性的元件要特殊留意不要焊反了,例如点阵显示屏、极性电容、三极管等,一旦焊错很可能是整块板子都废掉。对于某些与器件在焊接之前要先放静电,否则静电会使其损坏。在焊接时上锡要适量,过多过少都简单造成虚焊。 6.2 硬件调试过程 硬件调试时首先检查是否有虚焊、漏焊和短路的地方。再比照PCB图看看飞线有没有打错,元器件是否焊接反了,确认无误后再烧录测试程序进行检测。在硬件调试过程中所出现的问题如下: 1、 在电路焊接完成后,发觉显示屏根本

29、不会亮,按键也无反应。经过细致的检查后发觉问题出在单片机限制电路电源线还差一更没有连上,后来将其连接好后问题得以解决,显示屏亮了,按键也有反应。2、 在单片机内烧录进测试程序后发觉屏幕出现乱码,图象毫无规律,而且许多地方出现明显的供电不足现象。经过反复检查之后发觉电路焊接并没有问题,也无明显短路和虚焊,最终我发觉原来是点整显示屏焊反了。由于点阵屏引脚特别多若将其取下的话不是件简单的事,也简单将电路板损坏,但从新做一块板子的话时间又明显不够。最终用同学说的方法还是将点阵屏去了下来,板子也没被损坏。将点整屏从新装过后显示图形变得正常了但还是有一些串码和局部供电不足的现象,经检查发觉是取显示屏的时候

30、走线被弄断了。将断了的走线打上飞线后显示内容正常了,也没有了串码的和供电不足的现象。这样硬件调试就算胜利了。 6.3 软件调试过程 软件调试的过程花了较长时间,首先将测试程序烧录进硬件进行测试,确定硬件没有错误后再将自己写的程序烧录进行测试。在测试的过程中出现了很多问题如显示各种乱码,经过对程序细致仔细的分析过后,最终问题得以解决。最终实现了所要求的各项功能。 总结 在经过我两个多月不断的努力下设计最终最终完成了,本次设计能够实现中英文字符以及图形的显示,并且LED显示屏显示时无串码,亮度匀称、清楚。显示内容可实现以向上、向下、向左、向右滚动显示以及静态显示。系统还可通过扩展的方式来增加所要显

31、示的内容。 本系统具有硬件电路简洁,成本低,系统稳定性好等优点。但也存在着许多缺点,例如不能与PC机进行串行通信,实现显示内容的更新。每次跟心内容都得取下单片机到开发板上去烧录程序,这样简单损坏单片机。由于时间有限和老师要求串行通信模块选做,所以这一块就没有做出实物。今后有时间再将通信模块加上信任本设计将会更完备。还有就是电路布局还不合理,扩展接口应当放在电路板上方,这样级联扩展的时候就可以削减屏幕间的缝隙使显示效果得到优化。 在此次设计中我得到了以下收获: 1、在这次设计中我对本专业所学的学问有了实践性的应用和巩固,尤其是keil、protel99、proteus等软件的运用; 2、我对硬件

32、的制作的整个过程从绘制原理图到焊接元器件再到系统调试有了比较全面的了解。对今后从事相关方面的工作有很大的帮助; 3、这次设计过程熬炼了我发觉问题、解决问题的实力,也发觉了自身的许多不足之处,在今后肯定要弥补。 参考文献 1张秀关.单片机与计算机串口通信实践M.北京:电子工业出版社,2013.1. 2李江全,魏中岩,姚帅,严海娟.单片机通信与限制应用编程实例M.北京:中国电力出版社,2011.11. 3沈洁.LED封装技术与应用M.北京:化学工业出版2012.8. 4周志敏,纪爱华.闲逛LED世界M.北京:国防工业出版社,2013.8. 5杨清德,杨兰云.LED及其应用技术问答M.北京:电子工业

33、出版社,2011.1. 6Vizimuller.P.RFdesignguide-systems,circuits,andequations.1995. 7R.Dye.VisualObject-OrientatedProgramming,Dr.DobbsMacintoshJournal.Sept.1st(1991). 8缪思恩.LED大屏幕显示电路设计J.电子技术应用,1996,(08):56-77. 9王亭,李瑞涛,宋召清.在Windows下PC机和单片机的串行通信J.微型机与应用,2000(1). 10关积珍,陆家和.我国LED显示屏技术和产业发展及展望.现代显示,2004,(02):34-

34、37. 11缪思恩.LED大屏幕显示电路设计J.电子技术应用,1996,(08):56-77. 12DaveJackson.关于DSP芯片的问与答.今日电子,1998,(12):1-7. 13卢弥坚.主从分布式LED大屏幕显示系统J.电脑与信息技术,1997,(04):6-13. 14高胜东,梁采,张宏富.一种LED大屏幕显示系统J.成都气象学院学报,1998,(03):108-120. 15张全福.汇编语言程序设计试验教学改革与探究.教学探讨,2005,(06):3-5.9文哲雄.用单片机限制LED显示屏D.佛山:佛山科学技术学院,1995. 16彭宁,只佩华.单片机对LED大屏幕显示的限制

35、系统J.河北高校学报(自然科学版),1993,13(3):86-89 附录一 PCB 显示部分PCB 限制部分PCB 原理图 显示部分原理图 限制部分原理图 附录二 实物图 附录三 完整程序 #include <reg52.h> #include <intrins.h> #define NOP() _nop_() /* 定义空指令 */ #define uchar unsigned char #define uint unsigned int /#define clrbit(X,Y) X=(1<<Y) /将X的第Y位清零 #define Kkey P2 /定

36、义按键 #define STATIC 1 #define LEFT 2 #define RIGHT 3 #define UP 4 #define DOWN 5 #define LEFT_RIGHT 6 /SPI IO sbit S_CLK =P10; sbit R_CLK =P11; /sbit OUT_OE=P14; sbit MOSIO =P12; sbit key0 =P20; sbit key1 =P21; extern uchar *disptab; extern unsigned int tab_length; extern tabchoose(char num); uint Sa

37、om_num; uchar word_num; uchar byte_num; uchar Speed_move; uchar Speed_static; uchar HZ_Num; uchar key_val; uchar show_Val2; uint move_timce; uint Flg; uchar left_rightFlg; uchar Movespeed=2; /移动快慢 void delay(unsigned int i); /函数声名 /void delay1(void); void HC595SendData(uchar SendVal); void InitTIMER

38、0(void); void SaomiaoFun(); void HC595Output(); void StaticFun(unsigned char *byte_P,unsigned char ByteNum); void Move_left(unsigned char *byte_P,unsigned char ByteNum); void Move_right(unsigned char *byte_P,unsigned char ByteNum); void Move_up(unsigned char *byte_P,unsigned char ByteNum); void Move

39、_down(unsigned char *byte_P,unsigned char ByteNum); void left_and_right(unsigned char *byte_P,unsigned char ByteNum); void Init_sys(); void main() uchar Mode_val; uchar Mode_val0; Mode_val=0; Mode_val0=0; key_val=0; Init_sys(); while(1) if(!(Kkey0x03)=0x03) / delay(5); if(!key0) while(!key0); Mode_v

40、al+; if(Mode_val>=6) /限定模式种类 Mode_val=1; switch(Mode_val) case STATIC: Init_sys();Mode_val0=0;tabchoose(0);HZ_Num=1;key_val=1;break; case LEFT : Init_sys();Mode_val0=0;tabchoose(0);key_val=2;Movespeed=2;break; case RIGHT : Init_sys();Mode_val0=0;tabchoose(0);key_val=3;Movespeed=2;break; case UP :

41、 Init_sys();Mode_val0=0;tabchoose(0);key_val=4;Movespeed=2;break; case DOWN : Init_sys();Mode_val0=0;tabchoose(0);key_val=5;Movespeed=2;break; case LEFT_RIGHT: Init_sys();Mode_val0=0;tabchoose(0);key_val=6;Movespeed=1;break; default : Mode_val=0;break; if(key_val=1) if(!key1) while(!key1); Init_sys(

42、); HZ_Num+; if(HZ_Num>(tab_length-2) HZ_Num=1; 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_val0=0;break; /*/ /* 系统初始化函数 */ /*/ void Init_sys() Sao

43、m_num=0; word_num=0; byte_num=0; Speed_move=0; Speed_static=0; move_timce=0; left_rightFlg=0; Flg=0; / OUT_OE=0; /开HC595输出 InitTIMER0(); /初始化定时器0 /*/ /* 静态函数 */ /*/ void StaticFun(unsigned char *byte_P,unsigned char ByteNum) uchar TabB_num; uint m; /m越大,可显示字节越多 TabB_num=ByteNum; m=(uint)(byte_num+32*HZ_Num); show_Val1=*(byte_P+m+1); show_Val0=*(byte_P+m); /*/ /* 左移函数 */ /*/ void Move_left(unsigned char *byte_P,unsigned char ByteNum) uint m; if(move_timce=16*(ByteNum-1)/4个字 move_timce=0; m=byte_num+move_timce*2; show_Val1=*(byte_P+m+1); show_Val0=*(byte_P+m); /*/ /* 右移函数(写程序时有必要用笔在纸上进行计算)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作计划

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁