基于stc89c52单片机的8乘8点阵led电子显示屏的设计.doc
《基于stc89c52单片机的8乘8点阵led电子显示屏的设计.doc》由会员分享,可在线阅读,更多相关《基于stc89c52单片机的8乘8点阵led电子显示屏的设计.doc(29页珍藏版)》请在咨信网上搜索。
沈阳工业大学课程设计报告 课程名称: 专业综合课程设计 设计题目: 点阵式LED显示器 专业班级:测控技术与仪器1102班 姓名: 何鹏举 学号: 110401215 指导教师: 刘博 毕业设计 目 录 摘 要 II Abstract II 1 绪论 1 1.1背景及设计目的 1 1.2选题目的和意义 1 2 设计方案简述 2 2.1 LED驱动显示方案 2 2.2数据传输和显示方案 3 2.3.系统模块框图 4 3.详细系统电路设计 4 3.1 单片机系统及外围电路 4 3.2 74HC595列锁存电路 7 3.4 8乘8点阵 10 4系统软件设计 11 4.1 显示驱动程序 11 4.2系统主程序 12 5.调试 13 5.1 硬件调试 13 5.2 软件调试 14 5.3 系统总电路 14 6总结 ..................................................15 参考文献 16 附录:软件C代码 17 摘 要 文章介绍了基于STC89C52单片机的8乘8点阵LED电子显示屏的设计。 分别阐述设计方案的方案论证、51单片机的最小系统及其外围电路、显示屏显示的基本原理、硬件仿真设计、控制方法及其程序的实现。系统的设计和实现流程大体按照模块设计、硬件仿真、元件焊接、硬件调试、软件代码设计、程序调试。设计的结果能够实现对汉字和图形的静态和动态显示,动态显示的方式有多种方式。 关键词:单片机;点阵;硬件调试;软件调试;动态显示 Abstract This paper introduces the microcontroller based STC89C52 8 by 8 dot matrix LED electronic display design. Elaborate design of the program were demonstrated, 51 the microcontroller system and its peripheral circuits, the display shows the basic principle, the hardware simulation design, control methods and procedures for implementation. System design and implementation process in general accordance with the modular design, hardware simulation, welding components, hardware debugging, software code, design, program debugging. Result of the design of Chinese characters and graphics to achieve static and dynamic display, dynamic display mode in several ways. Keywords:microcontroller; lattice; hardware debugging; software debugging; dynamic display - 26 - 1 绪论 1.1背景及设计目的 现代社会,信息的更新速度达到了前所未有的程度。信息的显示方式传统上有LED发光管,LED数码管,虽然两者应用很广泛,但是只能单一地显示电平状态和数码。LED点阵集两者特点于一身,更加由于能显示汉字字符、图形、符号等而广泛应用于人们的日常生活中。它具有发光效率高、使用寿命长、组态灵活、色彩丰富以及对室内外环境适应能力强等特点,被广泛应用在公交车站、码头、商店、学校和银行等公共场合用于信息的发布和广告宣传。 目前,国内的LED点阵显示屏大部分是单显示型,其显示的内容相对较少,显示的花样较单一。一般在产品出厂时,显示的内容就已写入显示屏的控制系统中的EPROM芯片内,当需要更换显示内容时就非常困难,这样使该类型的显示屏使用范围受到了限制。国内的另一种LED显示屏―可编程序型LED显示屏,虽然增加了显示屏系统的编程能力,现实的内容和显示的花样都有所增加,但也存在着显示内容不便的缺点。随着社会经济的迅速发展,如今的广告牌都存在着显示内容丰富。信息量大。信息更换速度快等特点。一次传统的LED显示屏控制系统已经越来越不能满足现代广告宣传业的需求,而利用PC机通信技术控制LED显示屏,则具有显示丰富,信息更换灵活等优点。国内从事LED显示屏生产的企业众多,同时,受到外资企业LED显示屏价格过高的影响,在中国LED显示屏市场上多以本土企业为主。目前,本土LED显示屏生产企业除供应国内需求外,还不断把产品出口到国外市场。随着国际LED显示屏生产大厂不断把生产基地转移至国内, 加之国内众多的LED显示屏本土企业,中国正在成为全球LED显示屏的主要生产基地。因此研究LED汉字滚动显示屏的设计方法具有重要的理论和现实意义。 1.2选题目的和意义 通过这次毕业设计,掌握51单片机的接口电路、点阵显示原理、自动控制等原理。了解简单的16乘16点阵显示图像、汉字、符号的原理,提高动手实践和软编程件调试的能力。同时通过本课题研究、设计、装配、调试、提高自己的独立开发项目和动手能力,巩固已学的单片机及自动控制原理的知识。了解并分析系统各电路模块之间的组成与相互关系和影响。本次毕业设计的完成也为以后学习16位,甚至32位单片机和嵌入式系统等在自动控制方面的应用奠定一定的理论与实际基础,也为以后独立开发单片机系统、嵌入式系统等工业控制打下坚实的基础。 2 设计方案简述 2.1 LED驱动显示方案 按显示方式分,有静态显示和动态(扫描)显示,按译码方式可分为硬件译码和软件译码之分。静态显示就是显示驱动电路具有输出锁存功能,单片机将所要显示的数据送出后就不再管,知道下一次显示数据需要更新时再传送一次新数据,显示数据稳定,占用很少的CPU时间。但每个显示单元都要单独的显示驱动电路,使用的硬件较多;动态显示需要CPU时刻对显示器进行数据刷新,显示数据有闪烁感,占用的CPU时间多,但使用硬件少,能节省线路和单片机I/O空间。若使用静态显示方式,8乘8点阵共有64个发光二极管,单片机没有这么多的端口,如果用锁存器来扩展端口,按8位锁存器来计算,也需要8个锁存器。因此,在实际应用中显示屏几乎都不采用静态显示,而是采用动态扫描的显示方法。 考虑到成本的减少,以及显示的完整性,此次设计使用4块8乘8共阳型点阵拼成16乘16点阵,采用行扫描法,先送出对应点阵第一行发光二极管亮灭的数据并锁存,然后选通第一行使其亮的时间,然后熄灭;再送第二行的数据,依次下去,直到第十六行、整个来回的时间只要达到每秒24次以上,利用人的视觉暂留,就可以看到显示屏上显示出的稳定的图像了。具体的点阵屏的电路如图2-1所示。 图2-1 16乘16点阵 2.2数据传输和显示方案 采用扫描方式显示时,显示数据通常存储在单片机的存储器中,以字节形式顺序排放。显示时要把一行中各列的数据都传送到相应的列驱动器上,这就存在着一个显示数据传输的问题。数据传输可以采用并行方式或串行方式。并行数据传输方式具有操作简单,外围电路少等优点,同时存在占用资源大、控制时间长、扩展性差等缺点;串行方式具有占用资源少,控制简便易行,良好的扩展性等诸多方面的有点,考虑到点阵屏的扩展及其电路走线等问题,本次设计的十六乘十六点阵屏系统的数据传输方式采用串行传输的方法。 采用此方法,控制电路可以只用一根信号线,将列数据一位一位传送到列驱动器,但是,串行传输过程较长导致列数据传输和显示的时间矛盾,针对此问题,可以采用重叠处理的方法。即在显示本行各列数据的同时,传送下一行的数据。为了达到重叠处理的目的,列数据的显示就需要具有所存的功能。经过上述分析,归纳出列驱动器电路应具备串入并出的移位功能和并行锁存功能。 2.3.系统模块框图 STC89C52单片机系统 74HC595行驱动 74HC595列驱动 16乘16点阵 图2-2 系统模块图 3.详细系统电路设计 3.1 单片机系统及外围电路 单片机采用了STC89C52,选用了12M晶振,用P1口低四位作为行选通线,高四位作为列控制线,两个串行口分别用作列数据输入和移位时钟。设计的界面可以显示一个汉字,需要4个8*8点阵模块,组成16*16点阵。 STC89C52是51系列单片机的一个型号, 是标准的40引脚双列直插式集成电路芯片,STC89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用宏晶公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的STC89C52单片机可为您提供许多较复杂系统控制应用场合。 STC89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个RW口线,STC89C52可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。 主要功能特性: · 兼容MCS51指令系统 · 8k可反复擦写(>1000次)Flash ROM · 32个双向I/O口 · 256x8bit内部RAM · 3个16位可编程定时/计数器中断 · 时钟频率0-24MHz · 1个串行中断 · 可编程UART串行通道 · 2个外部中断 · 2个定时计数器中断 · 共5个中断源 · 2个读写中断口线 · 3级加密位 · 看门狗电路 · 低功耗空闲和掉电模式 · 软件设置睡眠和唤醒功能 图3-2:STC89C52引脚图 合适尺寸 实际尺寸 主要引脚功能 1. 电源和晶振 Vcc 运行和程序校验时加+5V Vss 电源地 XTAL1 输入到振荡器的反相放大器 XTAL2 反相放大器的输出,输入到内部时钟发生器 如果使用外部振荡器时,外接12MHZ晶振,同时加上两个30pF的电容来辅助稳定外部振荡器的频率,减少频率偏差。 2. I/O口 P0-P3 为可编程通用I/O 脚,其功能用途由软件定义 P0口为开漏输出结构,在输出的时候通常加以上拉电阻配合使用,提高IO口携带负载的能力。 3. 控制线 RST 复位输入信号,高电平有效,两个机器周期以上的高电平即可。 EA/Vpp 片外程序存储器访问允许信号,低电平有效。 ALE/PROG 地址锁存允许信号,输出。 PSEN 片外程序存储器选通信号,低电平有效。 图3-1 单片机系统电路 3.2 74HC595列锁存电路 3.2.1 74HC595 74HC595是一款漏极开路输出的CMOS移位寄存器,输出端口为可控的输出端,亦能串行输出控制下一级联芯片。 74595的引脚分布: QA--QH: 八位并行输出端,可以直接控制数码管的8个段。 QH': 级联输出端。我将它接下一个595的SI端。 SI: 串行数据输入端。 /SCLR(10脚): 低点平时将移位寄存器的数据清零。通常我将它接Vcc。 SCK(11脚):上升沿时数据寄存器的数据移位。QA-->QB-->QC-->...-->QH;下降沿移位寄存器数据不变。 RCK(12脚):上升沿时移位寄存器的数据进入数据存储寄存器,下降沿时存储寄存器数据不变。通常我将RCK置为低点平,当移位结束后,在RCK端产生一个正脉冲,更新显示数据。 /G(13脚): 高电平时禁止输出(高阻态)。如果单片机的引脚不紧张,用一个引脚控制它,可以方便地产生闪烁和熄灭效果。比通过数据端移位控制要省时省力。 表3-1-1 74HC595管脚定义 管脚编号 管脚名 说明 15、1、2、3 4、5、6、7 QA----QH 三态并行输出管脚 8 GND 电源地 9 SQH 串行输出级联端 10 SCLR 移位寄存器清零端 11 SCK 移位时钟线 12 RCK 输出锁存线 13 OE 输出使能 14 SI 串行数据输入端 15 VCC 电源正 表3-1-2 74HC595真值表 输入管脚 输出管脚 SI SCK SCLR RCK OE H QA—QH高阻 L QA—QH有效值 L 移位寄存器清零 L 上沿 H 移位寄存器存储L H 上沿 H 移位寄存器存储H 下沿 H 移位寄存器状态保持 上沿 移位寄存器锁存输出 下沿 输出存储器状态保持 3.2.2. 595列输出电路 图3-2 74HC595列锁存电路 点阵的十六列由两片74HC595并行输出提供。引脚SI为串行数据输入端,与单片机串口RXD(P3.0)相连,用来传送数据;引脚SCK为移位寄存器的移位时钟脉冲线,与单片机串口TXD(P3.1)相连;引脚SCLR信号是移位寄存器的清零输入端,低电平有效,接单片机P1.5口;RCK是输出寄存器的输出锁存信号,与单片机P1.6口连接。 3.3 8乘8点阵 点阵内部结构如下,8X8点阵共由64个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一行置1电平,某一列置0电平,则相应的二极管就亮;如要将第一个点点亮,则9脚接高电平13脚接低电平,则第一个点就亮了;如果要将第一行点亮,则第9脚要接高电平,而(13、3、4、10、6、11、15、16)这些引脚接低电平,那么第一行就会点亮;如要将第一列点亮,则第13脚接低电平,而(9、14、8、12、1、7、2、5)接高电平,那么第一列就会点亮。因此,要在点阵屏幕上显示出设计好的汉字、图像、字符等就必需采用扫描亮点的方式,利用人的视觉暂留,显示出清晰、稳定的画面。 图3-4 8乘8点阵内部组成 4系统软件设计 显示屏软件的主要功能是向屏体提供显示数据,并产生各种控制信号,使屏幕按设计的要求显示。可把显示屏的软件系统分成两大层:第一层是底层的显示驱动程序,第二层是上层的系统应用程序。显示驱动程序负责向屏体送显示数据,并负责产生扫描信号和其他控制信号,配合LED显示屏的扫描显示工作。显示驱动程序由定时器T0中断程序实现,系统的显示效果处理等工作,由主程序来实现。 4.1 显示驱动程序 进入中断扫描程序后,对单片机重新赋初值,读取当前所在行号,并使其加一,通过串口取出缓冲区的列数据到移位寄存器。为消除在切换下一行时发生拖尾现象,驱动程序先要关掉显示屏,等显示数据经过移位寄存器输出并锁存,再输出新的行号,再打开显示屏。 图4-1中断程序流程图 4.2系统主程序 进入主程序后,首先对系统进行初始化,包括设置定时器工作方式,串口,中断,以及显示效果,包括左移,上移等。通过一维数组dispram[32]来实现列驱动数据的存储,二维数组Bmp[][]存储所有要显示汉字图形的列代码。系统上电后,汉字以上移的形式显示,当显示到第五个汉字时,停顿三秒,汉字再以左移的形式显示,到最后一个字时停止。 从上至下显示汉字 开始 从左至右显示汉字 是否显示到第五个汉字 结束 Y N 图4-2 主程序流程图 5.调试 5.1 硬件调试 由于点阵需要16行和16列来驱动,所以点阵模块线路比较复杂,当元件都焊接好以后,应先从较简单的模块进行检查调试:单片机最小系统,74LS154译码电路,74HC595列驱动电路,最后才是点阵的连接。具体检测单片机晶振能否正常起振,30脚是否有1Mhz的方波输出,74LS154的各行输出的电平是否逐位变化,74HC595的SI端是否有数据输入,其他控制引脚的脉冲和时序是否正常,都没有问题后细心检查点阵的各行各列的连接。总的来说,硬件的调试是比较麻烦的。 对点阵显示屏系统进行测试,所用测试仪表仪器如表5-1所示。 表5-1 测试仪表 测试仪表名称 型号 模拟示波器 LS3102B 20MHz 信号发生器 AFG3102 万用表 UNFTNT56 根据本系统设计电路图进行组装电路,电路组装好以后,首先要检查一遍接线情况,在确定安装接线无误的情况下,就可进行电路通电调试。首先测量电源供电情况是否达到要求;其次是本次设计的点阵屏显示模块的检测是否正确,显示的汉字、字符、图像是否清晰无闪烁;再者是利用软件方式,只测试显示固定不动的画面是否能正常工作;最后测试的行扫描和列扫描模块电路,将行扫描和列扫描的扫描信号线接到信号源上,用信号源输出波形代替单片机控制系统模块发出的行扫和列扫的信号,在单独对点阵屏显示电路模块进行调试,当准确的显示出要移动显示的汉字、字符、图像时即可证明此行扫描电路模块和列扫描电路模块工作正常,可以进行整个系统的调试工作。将所有的模块电路综合成一个整体的系统,通电进行测试工作,在软件上小心的调试,尽力将参数调整到最优,通过多次测量和在不同的光线的环境中测量显示的画面的情况,实现了该系统的稳定清晰的显示汉字、字符、图像任务,完全达到了设计的预想,满足了设计系统的要求。此时证明本系统设计成功。 5.2 软件调试 软件部分的调试主要是显示屏刷新屏幕的时间,进入中断程序后都要对定时器进行重新赋值,以保证屏幕的刷新的稳定,清晰。定时器T0采用工作方式1,即16位定时器模式,通过计算可得,TH0= 0xfb,TL0=0xee。这样每经过1ms,单片机就中断一次,即每次刷新屏幕的频率大概65hz(对于12M晶振),达到人眼视觉暂留的效果。 5.3 系统总电路 图5-3 系统总仿真图 在仿真图中,行线直接用反相器输出驱动点阵的行,由于仿真中不考虑芯片的带负载能力,所以可以仿真,但是实际情况下,每一行的驱动电流远远大于反相器的驱动电流。因此译码器的每行输出必须接三极管,使得点阵的每一行获得足够的驱动电流。 6总结 16乘16点阵显示屏的设计从电路的设计,仿真,硬件连接,调试和软件的调试是一个完整的电路设计过程。在整个过程中,点阵设计涉及三个问题,第一:单片机I/O口地使用,52单片机共有32个I/O口,而点阵有16行,16列,如果都用I/O口驱动,那么很浪费I/O资源,考虑到点阵的16行是逐行扫描的,那么4线16线译码器就可以很好地作为点阵的行驱动器,这样只要利用单片机的4个I/O口。另外,把单片机的串口当并口用,即利用单片机的串口搭配串入并出的移位寄存器-----74HC595,它的并口输出就可以作为点阵的16个列驱动线。那么仅用两条线,串口发送和接收线,就可以完成点阵16列的驱动;第二:行驱动电流问题,由于使用的是共阳的点阵,所以每一行的电流应该能同时点亮16个二极管,大概要达到320mA。那么肯定要用三极管来放大每一行的电流来驱动点阵的每一行;第三:16乘16点阵的级联,采用4块8乘8点阵拼接而成,那么上面两个点阵的每一行都要连接到一起,下面同上,左边的两个点阵的每一列都连接在一起,右边同上。这样16乘16点阵的使用和8乘8点阵一样。16乘16点阵的设计就很好地解决了这些问题。 在硬件调试中,也遇到了以前从未有的问题:点阵显示模糊的汉字图形,但是显示易受外界影响。细细考虑之后,知道点阵每一行显示数据时,列数据的更新时间是1ms,那么串行信号的输入线(RXD),595移位时钟线(TXD),易受到其他信号线的影响,所以两条线与74HC595的连接必须用锡丝连接。这样才能让点阵稳定地显示。 现在市面的广告牌都是用基本的16乘16点阵组成,通过这次16乘16点阵显示屏的设计,我清楚地了解并掌握了它的显示原理和电路实现,相信能为以后学习功能更强大的单片机,设计大屏幕LED显示屏奠定良好的基础。 参考文献 [1] 张齐,朱西宁.单片机应用系统设计技术—基于C51的Proteus仿真[ M ] .北京:电子工业出版社,2009.1 [2] 张惠敏.数字电子技术[ M ] .北京:化学工业出版社,2009. [3] 华强.电子世界.基于8051单片机的数控电源设计[ EB/OL ] . [4] 周雪.模拟电子 技术[ M ].西安:西安电子科技大学出版社,2007. [5] 梅笙,李玮.基于A T89C52控制的数控直流电流源的设计[J ] . [6] 童诗白,华成英.模拟电子技术基础(第四版) 北京:清华大学电子教研室组编.2008 [7] 阎石. 数字电子技术基础(第四版).北京:清华大学电子学教研室组编 2005.12 全书 [8] 黄贤武,郑筱霞,曲波等. 传感器实际应用电路设计[M]. 成都:电子科技大学出版社.1997.4-10. [9] 忠梅. 单片机的C语言应用程序设计[M]. 北京:北京航空航天大学出版社,1997 [10] 陈光东编著《单片微型计算机原理及其C语言程序设计》.华中科技大学出版社 ,2004年4月 [11] 宏晶公司.STC89C52单片机数据手册[Z] [12] 方佩敏.新编传感器原理、应用、电路详解. 编著电子工业出版社,2004.10 [13] 樊昌元,丁义元. 高精度测距雷达研究.电子测量与仪器学报,2010.10 [14] 苏伟,巩壁建.超声波测距误差分析.传感器技术,2004. [15] 恒清,张靖.加强单片机系统抗干扰能力的方法.通化师范学院学报,2004 .10 [16] 胡萍.超声波测距仪的研制.计算机与现代化,2003.10 [17] 苏长赞.红外线与超声波遥控.北京:人民邮电出版社,1993.7 [18] 张谦琳.超声波检测原理和方法.北京:中国科技大学出版社,1993.10 附录:软件C代码 滚动显示学号和时间 #include <REG51.H> #include <intrins.h> #define NOP() _nop_() // 定义空指令 ,这个函数在库 <intrins.h> 中 //SPI IO sbit MOSIO = P3^4; sbit R_CLK = P3^5; sbit S_CLK = P3^6; //变量声明 unsigned long column; //点阵列 unsigned long row; //点阵行 unsigned long dt; //点阵显示数组 unsigned char code tab0[] = {0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x00}; unsigned char code tab1[] = {0,0,0,0,0,0,8,0,14,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,62,0,0,0,0,0,0,0}; unsigned char code tab2[] = {0,0,0,0,0,0,8,0,15,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,63,0,0,0,0,0,0,0}; unsigned char code tab3[] = {0,0,0,0,0,0,24,0,36,0,66,0,66,0,66,0,66,0,66,0,66,0,36,0,24,0,0,0,0,0,0,0}; unsigned char code tab4[] = {0,0,0,0,0,0,16,0,16,0,24,0,20,0,18,0,18,0,127,0,16,0,16,0,124,0,0,0,0,0,0,0}; unsigned char code tab5[] = {0,0,0,0,0,0,24,0,36,0,66,0,66,0,66,0,66,0,66,0,66,0,36,0,24,0,0,0,0,0,0,0}; unsigned char code tab6[] = {0,0,0,0,0,0,8,0,15,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,63,0,0,0,0,0,0,0}; unsigned char code tab7[] = {0,0,0,0,0,0,60,0,66,0,66,0,64,0,32,0,16,0,8,0,4,0,66,0,126,0,0,0,0,0,0,0}; unsigned char code tab8[] = {0,0,0,0,0,0,8,0,15,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,63,0,0,0,0,0,0,0}; unsigned char code tab9[] = {0,0,0,0,0,0,126,0,2,0,2,0,58,0,70,0,64,0,64,0,66,0,66,0,60,0,0,0,0,0,0,0}; unsigned char code tab10[] = {16,0,208,63,8,16,8,16,204,19,74,18,72,18,72,18,72,18,200,19,72,16,8,16,8,16,8,28,0,0,0,0} ; unsigned char code tab11[] = {0,8,238,4,170,30,170,18,170,22,238,18,170,26,170,2,238,62,170,32,170,46,170,32,172,32,208,24,0,0,0,0}; unsigned char code tab12[] = {72,8,144,4,0,2,254,63,32,2,144,4,136,8,246,55,128,0,128,0,252,31,128,0,128,0,128,0,0,0,0,0}; unsigned char code tab13[] = {16,2,16,2,8,62,124,33,196,32,68,32,68,34,124,36,68,36,68,32,68,32,68,32,124,32,68,24,0,0,0,0}; unsigned char code tab14[] = {72,8,144,4,0,2,254,63,2,32,2,32,248,7,0,2,128,1,254,63,128,0,128,0,128,0,224,0,0,0,0,0}; unsigned char code tab15[] = {248,15,8,8,8,8,248,15,0,0,0,0,254,63,32,0,16,0,248,15,0,8,0,8,0,8,0,6,0,0,0,0}; //函数声明 void HC595SendData( unsigned char BT3, unsigned char BT2,unsigned char BT1,unsigned char BT0); /*************主函数*****************************/ void main(void) { int k,i,j,ms; unsigned char *p[] = { tab1, tab2, tab3, tab4, tab5, tab6, tab7, tab8, tab9, tab10, tab11, tab12, tab13, tab14, tab15}; while(1) { for(i = 0; i < 15; i++) //总共15个字 { for(ms = 2; ms > 0; ms--) //显示32次,即肉眼可识别的停留时间 { for(k = 0; k < 16; k++) //显示一个字 {HC595SendData(~(*(p[0] + 2*(k+j) + 1)),~(*(p[0] + 2*(k+j) )),tab0[2*k],tab0[2*k + 1]); } HC595SendData(0xff,0xff,0,0); //清屏 } j++; if(j==15*15) j = 0; } } } /*** 函数名称: HC595SendData 功能描述: 向SPI总线发送数据 ***********/ void HC595SendData( unsigned char BT3, unsigned char BT2,unsigned char BT1,unsigned char BT0) { unsigned char i; for(i = 0; i < 32; i++) { if(i > 23 ) { if((BT0 << (i - 24)) & 0x80) { MOSIO = 1; } else { MOSIO = 0; } } else if(i > 15 & i < 24 ) {if((BT1 << (i - 16)) & 0x80) // 最高位与SendVal左移的最高位 进行逻辑运算 { MOSIO = 1; // 如果为真 MOSIO = 1 } else { MOSIO = 0; } } else if(i < 16 & i > 7 ) { if((BT2 << (i - 8)) & 0x80) { MOSIO = 1; } else { MOSIO = 0; } } else { if((BT3 << i) & 0x80) // 最高位与SendVal左移的最高位 进行逻辑运算 { MOSIO = 1; // 如果为真 MOSIO = 1 } else { MOSIO = 0; } } S_CLK = 0; NOP(); //产生方形波 S_CLK = 1; } R_CLK = 0; //set dataline low NOP(); //产生方形波 R_CLK = 1; //片选 } 年的代码{16,0,16,0,240,31,8,1,4,1,242,15,16,1,16,1,16,1,254,63,0,1,0,1,0,1,0,1,0,0,0,0}; 月的代码{240,31,16,16,16,16,16,16,240,31,16,16,16,16,16,16,240,31,16,16,16,16,8,16,8,16,4,28}; 日的代码{252,31,4,16,4,16,4,16,4,16,4,16,252,31,4,16,4,16,4,16,4,16,4,16,252,31,4,16}; 圆圈缩小 #include <REG51.H> #include <intrins.h> #define NOP() _nop_() // 定义空指令 ,这个函数在库 <intrins.h> 中 //SPI IO sbit MOSIO = P3^4; sbit R_CLK = P3^5; sbit S_CLK = P3^6; //变量声明 unsigned long column; //点阵列 unsigned long row; //点阵行 unsigned long dt; //点阵显示数组 unsigned char code tab0[] = {0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x00}; unsigned char code tab1[] = {224,7,16,8,8,16,4,32,2,64,1,128,1,128,1,128,1,128,1,128,1,128,2,64,4,32,8,16,16,8,224,7}; unsigned char code tab2[] = {0,0,224,7,16,8,8,16,4,32,2,64,2,64,2,64,2,64,2,64,2,64,4,32,8,16,16,8,224,7,0,0}; unsigned char code tab3[- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 stc89c52 单片机 点阵 led 电子显示屏 设计
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文