基于51单片机的LED显示屏设计和实现电子通信技术专业

上传人:文*** 文档编号:240899567 上传时间:2024-05-16 格式:DOC 页数:36 大小:442.09KB
返回 下载 相关 举报
基于51单片机的LED显示屏设计和实现电子通信技术专业_第1页
第1页 / 共36页
基于51单片机的LED显示屏设计和实现电子通信技术专业_第2页
第2页 / 共36页
基于51单片机的LED显示屏设计和实现电子通信技术专业_第3页
第3页 / 共36页
点击查看更多>>
资源描述
题目 基于51单片机的LED显示屏 摘要: 由于科技的快速发展,LED显示屏已经是在大街上随处可见的应用了,它的应用已经普及到社会中的方方面面。LED点阵具有无限级联的特点,以一个个小的显示屏可以拼接出一块大的显示屏,在许多场合都可以见到它的身影,不仅因为LED显示屏可使呈现的信息更为直观,更为重要的是这种显示方式非常方便且具有较高的性价比,能够给人以视觉上的享受,更能给人一种美的享受。LED显示屏是一个犹发光二极管按照一定的形式排列封装形成的,可显示广告,图文信息等。本设计是基于STC89C51单片机的16*16点阵显示屏,该LED显示屏能实现分辨率16*16的汉字显示,简单的显示图像。该设计包含硬件设计、然健设计以及系统调试等,中需要简单的将硬件模块和软件模块进行组合即可实现显示功能。本文设计的基于51单片机的LED显示屏可实现预期功能,具有功耗低、操作简单、精度高等诸多优势。关键词:点阵显示屏 级联 51单片机Abstract: Due to the rapid development of technology, LED display screen has been widely used in the streets., and its application has been popularized in every aspect of society. LED dot matrix has the characteristics of infinite cascade, with a small display can piece together a large display, on many occasions can see the figure of it, is not only the application of it to make something appear more beautiful, more important is that its application is convenient, cost is low, in addition to can give a person visual impact, more can give a person a kind of beautiful enjoyment. LED displays are arranged in a matrix by several light-emitting diodes, usually used to display advertising, graphics and other information. This design is based on the 16*16 point array display of STC89C51 single chip. The LED display can display the Chinese characters of 16*16 and display the image simply. The design includes hardware, software, debugging, etc., which can realize the expansion of the display screen with simple cascade, but be careful not to exceed the load capacity. The design of this design is small, multi-function, convenient and practical, cost small, the circuit has the structure simple, the operation is convenient, the precision is high, the application is widely characteristic.Keywords: Lattice display Cascade 51 single chip microcomputer目 录第1章 引言IV1.1 选题背景11.2 国内研究状况1第2章 如何选择硬件22.1 主控芯片的选择22.2 显示器件的选择22.3 系统总体方案3第3章 系统硬件电路设计43.1 STC89C51单片机系统设计43.1.1 STC89C51的概述43.1.2 STC89C51的引脚说明43.1.3 STC89C51单片机的最小系统73.2 16*16点阵显示电路设计93.2.1 点阵显示屏的概述93.2.2 点阵显示屏驱动电路93.3 独立按键电路的设计103.4 原理图绘制软件的介绍113.5 系统硬件测试11第4章 系统软件部分设计134.1 软件开发环境的介绍134.2 系统重要函数的介绍134.2.1 主函数的设计134.2.2 按键检测处理函数的设计144.3 系统软件测试15第5章 总结16参考文献17附 录19致 谢33第1章 引言1.1 选题背景LED的主要作用是将输出的电信号转化为光信号进而予以显示,常见的显示器有共阴极和共阳极两种。后者通过发光二极管阴极连接在一起,当某个二极管阳极为高电平则此时该二极管电量,相应字段显示。这种显示方式具有功耗低、寿命长以及耐冲击等诸多优势,是一种新型的信息显示装置,显示屏由多个二极管像素点排列而成,可完成复杂信息的显示。1.2 国内研究状况从上世纪九十年代初期,LED显示屏开始在我国出现,并在显示屏市场中保持快速增长态势,年增长率约为40%左右。根据实际调研数据可知,自LED进入我国显示屏市场依赖,均保持快速增长状态,年增长率均在40%左右,只有1998年为30%。属于增长迅速、发展较快的新兴市场领域。 2003年LED显示屏行业市场发展总体较为成熟,相应企业规模有所增加,产业也逐步走向成熟。根据发光二极管显示屏分会的统计,2003年度销售额过亿元的有西安青松、上海三思、惠州德赛、北京利亚得等四家企业。年销售额超一千万元的企业数量达50余家,年销售总额高达22亿元,占全国显示屏总销售额的73%左右。其中位居前列的六七家企业的销售额之和接近全国的1/3。年度销售额在5000万元以上的单位有12家,其销售额之和为12亿元,占全国年度市场销售额的40%。从2004年到2007年,随着奥运会的临近,近年来各地区城市化改造进程加快,全国LED显示屏市场增长依然强劲,年平均增长率为35%左右。第2章 如何选择硬件2.1 主控芯片的选择方案一:采用STC89C51单片机作为主控芯片。STC89C51是一款高性能、低功耗的微处理器,其片内具有8k在线编程Flash存储器。STC89C51单片机的内核采用的是MCS-51内核,指令完全兼容MCS-51,但是该单片机越做了升级使得芯片具有很多传统的51单片机不具备的功能,例如该芯片还有4K的EEPROM存储,在需要使用到掉电存储数据的时候就可以直接使用单片机内部的存储,不在需要在外接存储芯片进行存储。该系列单片机具有开放简单、可实现在线编程下载等诸多功能,且成本较低。方案二:采用MSP430单片机作为主控芯片。系列单片机是美国在上世纪九十年代末推出了一种低功耗、具有RISC的微处理器之一,这种微处理可专门用于进行混合信号的处理,因而又被人们称之为混合信号处理器,可针对实际需求来将模拟电路以及数字电路集成到一个芯片上,因而在本质上属于一种超大规模集成电路芯片,可针对不同的信号处理问题提供相应的解决方案,该系列单片机常常用于需要电池进行供电的仪表或其他移动电子设备之中。系列中的各成员集成了较多的片上外围资源,包含:12位A/D、集成模拟比较器、集成运算放大器、时钟模块以及看门狗电路等等,除此之外,可实现异步通信,以及可进行多地址访问的串口通信连接,同时还包含数十个输入和输出端口等等。该系列单片机多应用于需要电池供电的便携式仪器仪表中。而却开发难度相对比较大、价格昂贵。所以在一些简单的设计中不宜采用。方案三:采用PIC16F877A单片机作为主控芯片。是由公司开发的新产品,属系统8位单片机微机,同51单片机一样具有闪存功能,可实现数据和程序的反复擦写。但是开发成本高,难度相对大。综合考虑上述三种方案,考虑到资源的合理利用以及开发成本等多种原因,最终采用方案一。2.2 显示器件的选择方案一:采用LED数码管动态扫描显示。LED的主要作用是将输出的电信号转化为光信号进而予以显示,常见的显示器有共阴极和共阳极两种。后者通过发光二极管阴极连接在一起,当某个二极管阳极为高电平则此时该二极管电量,相应字段显示。这种显示方式具有功耗低、寿命长以及耐冲击等诸多优势,是一种新型的信息显示装置,显示屏由多个二极管像素点排列而成,可完成复杂信息的显示。方案二:采用LCD1602液晶显示屏。LCD1602与单片机P0口连接,同时外接上拉电阻,通过上下两行来显示蔬菜大棚温度的设定阈值以及实测值,两者可同时限制,单片机P2.3、P2.4、P2.5分别与液晶显示模块的复位、读写和使能端口相连,数据显示参考主程序其他时序。LCD1602液晶显示器中的每一个字符都是由5*7的点阵组成。该显示方式具有控制简单等优势,同其他液晶控制原理相似。方案三:采用16*16点阵显示。点阵的内部和数码管一样都是由多个的LED灯组成,点阵显示清晰并且能够显示出数字或字母等信息,并且价格便宜,使用简单。可以无限的级联,这样就可以制造出显示面积非常大的显示屏。综合上述的描述,最终根据本设计中选择点阵作为显示。2.3 系统总体方案经过以上的论述,最后选取了当做此次设计的核心芯片;通过16*16点阵显示屏进行实时显示汉字;同时采用五个功能按键对汉字的显示方式进行设置,可以实现向上移动、向下移动、向左移动、向右移动、单个字显示。本设计的具体的系统方案如下图2.1所示。 图2.1 系统方案第3章 系统硬件电路设计3.1 STC89C51单片机系统设计3.1.1 STC89C51的概述是一种低耗能、扩展性强、功能全面的8位微处理器,4K字节闪存。随着微型处理器的到来,计算机的外观方面开始出现翻天覆地的改变。在生产生活的各领域之中,微型计算机的应用越来越广泛,将单片机置于一个控制系统的核心控制模块中可更为简单可靠的完成智能控制,这种系统被称之为嵌入式系统。单片机也被称之为微型控制器,是一种超大规模集成电路,具有一个计算机的完整功能,总的来说,单片机自身就是一个小型具有超强功能和信息计算处理能力的计算机,广泛应用于生产生活的各个领域之中。针对本文所设计的蔬菜大棚温度控制系统,拟采用单片机作为主控模块。3.1.2 STC89C51的引脚说明有和两种不同类型的封装形式。在本文所设计的基于单片机的显示屏中采用第一种封装形式,这种封装形式荷载焊接时利用IC插座进行焊接,随后将芯片插入其中,这种方式可更为方便的实现芯片的替换,也避免了芯片在高温焊接的时候损坏。一共包含40个引脚,可用来对扩展设备进行控制的引脚类型包含。这些引脚可实现单独控制也可对一个单独的IO口进行控制。在控制时非常方便,无需对输入和输出进行定义,在输入输出接口进行幅值时会自动实现转换,给读取IO口时IO口会自动转变成输入。STC89C51单片机所用引脚的作用如下表3-1所示。图3.1 STC89C51单片机引脚对照图表3-1 STC89C51单片机引脚功能对照表单片机P3口第二功能对照表如下:表3-2 STC89C51单片机P3口第二功能对照表3.1.3 STC89C51单片机的最小系统简而言之,单片机最小系统就是以最少的元器件组成能让单片机工作起来的系统,接下来介绍51单片机最小系统必备的器件及其作用。首先电源这对于一个电子产品的话是必不可少,它提供能源给系统运作,在本设计中由于51单片机的工作电压在4.55.5V之间都可以正常工作所以我们采用了USB电源线连接手机充电器插头或者5V的移动电源给系统进行供电。其次晶振电路,单片机其内部含有一个方向放大器,其在该系统中构成内部振荡器,其中为其输入端,是输出端,在振动器外部连接陶瓷振荡器及补偿电容、,并由、相互并联,组成谐振电路。在在外接振荡器时,电容、要选择;外界陶瓷振荡器时电容、要选择范围在之间。该系统的晶振频率通常位于范围之内。外接电容会对晶振频率、稳定性以及起振时间造成一定的影响。因而要将振荡器的外接电容置于单片机旁边才能有效减少其对系统产生的影响,从而保证振荡器的工作稳定性。图3.2 晶振电路单片机要想进行复位,就必须在RST引脚接入高电平信号,假如说,这个引脚的电平信号一直处于高状态时,单片机就会持续进行复位操作。本次设计电路的复位有两种情况,一种是单片机断电后重新上电,还有一种是单片机运行过程中,复位按键按下,单片机复位。单片机的第9引脚接高电平持续两个机器周期以上大约也就是2S就可以实现复位。只要RST引脚保持高电平,则单片机循环复位,直到变为低电平为止。按键按下后,电容被短路,电容两端形成闭合回路,电容放电,电平复位的实现过程相对来说比较简单,直接将RST引脚与电源相连接即可实现复位。首先是按键复位:最简单的复位方式是在RST上加高电平。复位引脚同电阻R1相连,该电阻的另外一端接地。电路如下所示。常用的途径是在复位引脚端和正电压之间安装复位按键。图3.3 复位电路最小系统对应的电路图为:图3.4 STC89C51单片机最小系统3.2 16*16点阵显示电路设计3.2.1 点阵显示屏的概述点阵显示屏指的是才有采用N个LED灯排列成点阵的形式而得名。在控制点阵显示屏显示内容的时候是控制点阵上面对应的LED灯的亮灭。在控制显示方面可以采用点驱动也可以采用行列驱动的方式。点驱动时候一个时刻只亮一个LED灯利用人眼“余辉效应”来控制各个点亮的时间间隔,这样人看起来各个点的亮灭就像同步的一样,这种显示方式电流小,但是这种方式耗时大,显示的点多了就容易出现闪烁的现象。本文所设定的扫描频率为50HZ,同时发光二极管导通时间大于1ms时具有良好的显示效果,不会出现闪烁。行列驱动方式的时候就是每次显示一行或一列,同样利用人眼“余辉效应”来控制各行的时间间隔,这种方式显示起来可以节省时间,当时需要的电流也会比较大,所以需要添加驱动电路。3.2.2 点阵显示屏驱动电路图3.5 点阵显示屏驱动电路如图3.5点阵显示屏的驱动电路,驱动电路采用两块74HC595锁存器进行级联控制点阵行,同样采用两块74HC595锁存器进行级联控制点阵列。74HC595串行输入并行输出的锁存器,只需要单片机3个IO口就可以扩展出N个口来用,每增加1片4HC595锁存器就可以扩展8个IO口。数据在上升沿实现到唯一寄存器的输入,在上升沿输入到储存寄存器之中,若两个时钟是相互连接的,则位移寄存器相较于储存寄存器而言要早一个脉冲。移位寄存器包含一个串行移位输入(Ds),和一个串行输出(Q7)同时还包含异步的低电平复位,存储寄存器具有三态总线输出,当使能OE时(为低电平),储存寄存器数据输出至总线。3.3 独立按键电路的设计按键电路的加入,是为了让操作系统的用户,能够自己就能设置出自己想要控制参数。整个系统有两处独立的按键部分,一是电源按键;二是控制温度阈值的按键。两者互不干扰。电路中采用的按键结构,不能相互之间有联系,按下一个按键时,它周围的按键不能收到影响。所以,对于每一个按键,都要独立的给他们接上一条输入线,并且保持导通,用于方便传输数据。具体电路如图3.6所示。图3.6 独立按键电路五个按键的功能分别为:第一个按键:实现单字显示。第二个按键:实现汉字向左移动。第三个按键:实现汉字向下移动。第四个按键:实现汉字向上移动。第五个按键:实现汉字向右移动。3.4 原理图绘制软件的介绍是公司在本世纪初期推出的一种高效的电路设计软件,该软件代码为开源,可实现从概念设计、顶层设计到输出产生数据之间所有的设计数据和分析论证过程管理,除此之外,当前在电路设计领域应用较为广泛的软件还包含和,这些软件为的前期版本。已不再是一种单纯的(印制电路板)设计软件,而是由不同子模块所组成的一种强大的电路设计工具,其子模块包含如下几个部分,分别是:(原理图)设计、(原理图)仿真、PCB(印制电路板)设计、(自动布线器)和设计以及嵌入式软件开发等,该软件功能覆盖了整个印刷电路板为核心的物理设计,该软件可将项目管理方式、原理图和印刷电路板图的多通道设计和电路仿真等多种技术结合在一起,为电路设计提供强大支持。相较于较早版本的而言,2004在外观上更为简洁和人性化,同时也强化了电路设计的同步化,整合了和设计系统,其电路设计功能更为强大。3.5 系统硬件测试系统硬件电路的测试主要是检测电路是否出现漏焊、短路、断路、虚焊、一些具有方向的元件是否方向弄错、电路设计错误等情况。对于漏焊、元件方向弄错的检测方法是将实物电路板对照着PCB图的线路,检查每一个元件和导线在实物上是否有出现。如果发现没有或者对不上的情况下需及时的重新对照确定漏焊时及时的补焊。对于短路、断路、虚焊这些情况采用数字万用表。将数字万用表打到二极管档位,然后通过红表笔和黑表笔碰一起,万用表会发出鸣叫警示。根据这个原理就可以用来检测短路、断路、虚焊。在需要检测的元件或导线的两端用两根表笔检测,如果导通蜂鸣器会鸣叫,如果断开蜂鸣器不叫。这样根据我们所需要检测的情况,在结合检测的现象就可以测出线路是否有问题。第4章 系统软件部分设计4.1 软件开发环境的介绍本设计采用 Keil Vision4进行编程实现。软件是美国软件公司所出品的编程软件,该软件与51系列单片机有很好兼容性,是当前应用最为广泛的C语言软件开发系统之一。同汇编语言相较而言,C语言具有灵活性强、简单易学、维护性好等诸多优势,且便于新手学习使用。在有汇编语言的基础之上来应用C语言时效果更好。 C51软件能够提供良好的调试环境和工具,此外,该软件生成目标代码的效率非常高,且结构简单紧凑易于理解。4.2 系统重要函数的介绍4.2.1 主函数的设计主函数void main()是程序的入口函数,一个完整的程序必须要包含该函数。在该函数的开头一般都是先对单片机和一些外围器件需要进行初始化才能正常使用的器件进行初始化和重新赋值一些变量,初始化完后进去死循环,如果不进入死循环程序运行一次就会退出,如果加入死循环程序就会不断地进行循环达到实时检测执行的目的。具体流程图如下4.1所示。图4.1 主函数流程图4.2.2 按键检测处理函数的设计按键检测处理函数主要是为了让系统能够识别所按的按键并能够知道蛇身下一刻将往哪一步移动,按键的检测主要是判断IO口是否出现低电平,如果出现低电平后进入经过延时消抖后再次判断是否真的按下按键,如果是进入执行对应的功能。具体流程图如图4.2所示。图4.2 按键检测处理流程图4.3 系统软件测试使用工具:软件、系统硬件、下载器等。系统的软件方面通过KEIL软件进行编写,将编写好的程序生成.HEX文件后通过PL2303下载器下载到单片机中。通过查看系统工作时的具体情况,之后不断的对程序进行修正,最后获得一个比较好的结果。在系统软件调试上主要遇到以下几个问题:(1)存在的问题:点阵显示出现闪烁。解决方法:存在点阵显示出现闪烁的问题可能是因为采用了行列的方式进行驱动,而当显示的间隔时间过长超过人眼“余辉效应”最大时间的话就会出现显示闪烁的,为了解决闪烁的现象降低行列间隔时间间隔。(2)按一次按键,会出现连按好几次的现象。解决方法:通过对程序的分析,发现在按键检测方面在检测到按键的IO口出现低电平就直接进入控制,控制完就退出,这样在按键还没松开就会出现再次检测到以至于按下一次出现连按好几次的现象。发现这问题后通过对程序上添加对按键的消抖延时处理后解决了这一问题。第5章 总结如开头所言,LED显示屏的应用已经普及到了社会中的方方面面,有着应用方便,低成本等好处,学好LED显示屏的设计及应用对于自身是受益匪浅的。本次设计虽然只用了一块16x16的LED点阵,电路简单,但是依旧可以做到显示清晰,并且成本低,还可以无限联级,同时主控芯片也选择了STC89C51,通过本次的课程设计试验是我对Altium Designer、 Keil Vision4等软件有着进一步的了解,同时也对单片机课程知识有着更深的理解,加强了自身对LED点阵设计的能力。对于这次设计来说既是一次机遇,又是一次挑战。在这次设计过程中,我学到老很多东西,通过自己的实践,增强了动手能力。经过此次具体工程的设计让我知道了书本知识和实践操作之间的差异。在实际应用中遇到很多问题,这都要我对问题进行具体分析,并一步一步地去解决它。参考文献1 苏铁力,传感器及其接口技术M,北京:中国石化出版社.19982 中国电子学会,传感器与执行器大全M,北京:电子工业出版社.19983 白雪冰,张延林,等,单片机原理及应用M,哈尔滨:东北林业大学出版社.20064 谢运祥,欧阳森等,电力电子单片机控制技术M,北京:机械工业出版.20075 王洪业,传感器技术M,长沙:湖南科学技术出版社.19956 李光飞,单片机课程设计实例指导,北京:北京航空航天大学出版社.20047 王法能,单片机原理及应用,科学出版社.20048 楼然苗,李光飞,51系列单片机设计实例M,北京:北京航空航天大学出版社.20039 胡汗才,单片机原理与接口技术M,清华大学出版社.200410 王萍,电子技术实验教程,机械工业出版社.200911 朱定华,戴淑萍,单片机微机原理与应用M,清华大学出版社.200312 刘勇 编 数字电路 电子工业出版社 200413 陈正振 编 电子电路设计与制作 广西交通职业技术学院信息工程系 200714 杨子文 编 单片机原理及应用 西安电子科技大学出版社 200615 陈汝全.电子技术常用器件应用手册.北京:机械工业出版社,2004.10.16 郝晓剑,杨述平,张连红.仪器电路设计与应用.北京:电子工业出版社,2007.6.17 毕满清,王黎明,高文华.模拟电子技术基础.北京:电子工业出版社,2008.6.18 韩焱,张艳花,王康谊.电子技术基础.北京:电子工业出版社,2009.6.19 童长飞.CSO5lF系列单片机开发与C语言编程.北京:北京航空航天大学出版社,2005.附 录源程序代码:/* 点阵显示补充说明:*/#include/头文件#include #define uchar unsigned char/宏定义#define uint unsigned int#define ulong unsigned long/*按键引脚定义*/sbit key_L=P17; /左sbit key_R=P36; /右sbit key_U=P34; /上sbit key_D=P35; /下sbit key_O=P13; /逐个显示/*HC595引脚定义*/sbit CLK =P24;sbit DATA =P22;sbit LAT =P23;sbit CLK2 =P00;sbit DATA2 =P02;sbit LAT2 =P01;/*变量定义*/字模uchar code pic32=0x04,0x08,0x04,0x10,0x24,0x20,0x24,0x40,0x24,0xFC,0x24,0xA2,0xFD,0x22,0x26,0x22,0x24,0x42,0x2C,0x42,0x14,0x42,0x24,0x82,0x44,0x1E,0x04,0x00,0x04,0x00,0x00,0x00,/老00x00,0x00,0x3F,0xE1,0x00,0x02,0x00,0x0C,0xFF,0xF0,0x00,0x00,0x40,0x00,0x47,0xF8,0x44,0x00,0x44,0x00,0x7F,0xFF,0x44,0x10,0x44,0x08,0x47,0xF0,0x40,0x00,0x00,0x00,/师10x04,0x02,0x08,0x0C,0x10,0x00,0x3F,0xEE,0xC4,0x01,0x08,0x81,0x11,0x11,0xE6,0x4D,0x20,0x21,0x2F,0xC1,0x20,0x01,0x24,0x07,0x2A,0x00,0x31,0x88,0x00,0x06,0x00,0x00,/您20x02,0x00,0x02,0x20,0x22,0x20,0x22,0x20,0x2A,0x20,0x26,0x20,0xA2,0x20,0x63,0xFF,0x22,0x20,0x26,0x20,0x2A,0x20,0x22,0x20,0x22,0x20,0x02,0x20,0x02,0x00,0x00,0x00,/辛30x21,0x00,0x21,0x00,0x21,0x00,0x21,0x3F,0xF9,0x22,0x21,0x22,0x21,0x22,0x2F,0xE2,0x21,0x22,0x21,0x22,0xF9,0x22,0x21,0x3F,0x21,0x00,0x21,0x00,0x21,0x00,0x00,0x00,/苦40x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x02,0x40,0x01,0x47,0xFE,0x44,0x00,0x48,0x00,0x50,0x00,0x60,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/了50x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xCC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/!6;uchar mode=0; /0不动,1左移,2右移,3上移,4下移uint length; /存储汉字数组长度uchar buffer32;/显示数据暂存uint N=0; /记录移动步数/*函数名称:void Delay(unsigned int num)函数作用:US延时函数参数说明:*/void Delay(ulong num)while( -num ) ;/*函数名称:void delayms(uint ms)函数作用:毫秒延时参数说明:*/void delayms(uint ms)unsigned char i=100,j;for(;ms;ms-)while(-i)j=10;while(-j);/*函数名称:void HC595_send(uchar dat)函数作用:控制列线参数说明:*/void HC595_send(uchar dat)uchar i;CLK = 0;LAT = 0;for(i=0;i8;i+)CLK = 0;if( dat&0x80 )DATA = 1;elseDATA = 0;CLK = 1; /上升沿发送数据dat = 1;/*函数名称:void HC595_send2(uchar dat)函数作用:控制列线上对应的数据参数说明:*/void HC595_send2(uchar dat)uchar i;CLK2 = 0;LAT2 = 0;for(i=0;i8;i+)CLK2 = 0;if( dat&0x80 )DATA2 = 1;elseDATA2 = 0;CLK2 = 1; /上升沿发送数据dat = 1;/*函数名称:void display()函数作用:显示缓存数据buffer参数说明:*/void display()uint L=0xfffe;uchar i;for(i=0;i16;i+) /16列数据,循环16次依次显示出来HC595_send2(0x00);/清除列数据HC595_send2(0x00);LAT2 = 1;HC595_send(L/256);/选通对应的列HC595_send(L%256);LAT = 1;HC595_send2(bufferi*2);/输出对应列的数据HC595_send2(bufferi*2+1);LAT2 = 1;L=(L1)|0x0001;/显示完后转到显示下一列的数据Delay(12);/短暂延时,让数据显示一会CLK = 1;/关闭595CLK = 0;CLK2 = 1;CLK2 = 0;/*函数名称:void move()函数作用:根据移动模式计算显示数据,并显示出来参数说明:*/void move()uint A,B;uchar i,j;if(N=0) /开始显示第一个汉字for(i=0;i32;i+)/将字模存入显示缓存bufferi=pic0i;switch (mode)/逐个显示case 0:if(N%16=0)/每循环16次,换一个字显示for(i=0;i16;i+)/将字模存入显示缓存bufferi*2=picN/16i*2;bufferi*2+1=picN/16i*2+1;break;/左移case 1:for(i=0;i16;i+)if(N+i)/16length/16)bufferi*2=pic(N+i)/16(N+i)%16)*2;bufferi*2+1=pic(N+i)/16(N+i)%16)*2+1;elsebufferi*2=0x00;bufferi*2+1=0x00;break;/右移case 2:for(i=0;i16;i+)j=N%16;if(ij)if(N/16+1length/16)bufferi*2=pic(N)/16+1(16-j+i)*2;bufferi*2+1=pic(N)/16+1(16-j+i)*2+1;elsebufferi*2=0x00;bufferi*2+1=0x00;elseif(N/16length/16)bufferi*2=pic(N)/16(i-j)*2;bufferi*2+1=pic(N)/16(i-j)*2+1;elsebufferi*2=0x00;bufferi*2+1=0x00;break;/上移case 3:for(i=0;i16;i+)A=(picN/16i*28)|picN/16i*2+1;A=A(N%16);if(N/16+1length/16)B=(picN/16+1i*2(16-N%16);elseB=0x0000;bufferi*2=(A|B)/256;bufferi*2+1=(A|B)%256;break;/下移case 4:for(i=0;i16;i+)if(N/16+1length/16)A=(picN/16+1i*28)|picN/16+1i*2+1; A=A(16-N%16);elseA=0x0000;B=(picN/16i*2(N%16);bufferi*2=(A|B)/256;bufferi*2+1=(A|B)%256;break;default:break;if(N%16=0) /一个字全部移入点阵显示时候多显示一会时间for(i=0;i10;i+)display();for(i=0;i=length) /如果移动步数大于显示的最大长度N=0; /重置移动步数为0/*函数名称:void scan()函数作用:按键检测处理参数说明:*/void scan()/逐个显示模式if(key_O=0) /按键按下 delayms(2); /延时消抖if(key_O=0) /再次判断按键按下mode=0; /切换逐个显示模式N=0; /重置移动步数/左移显示模式if(key_L=0) /按键按下 delayms(2); /延时消抖if(key_L=0) /再次判断按键按下mode=1; /切换左移显示模式N=0; /重置移动步数/右移显示模式if(key_R=0) /按键按下 delayms(2); /延时消抖if(key_R=0) /再次判断按键按下mode=2; /切换右移显示模式N=0; /重置移动步数/上移显示模式if(key_U=0) /按键按下 delayms(2); /延时消抖if(key_U=0) /再次判断按键按下mode=3; /切换上移显示模式N=0; /重置移动步数/下移显示模式if(key_D=0) /按键按下 delayms(2); /延时消抖if(key_D=0) /再次判断按键按下mode=4; /切换下移显示模式N=0; /重置移动步数/*函数名称:void main()函数作用:主函数参数说明:*/void main()length=sizeof( pic)/2;/计算显示内容一共有多少个数据while(1) /死循环scan();/按键检测并处理move();/移动并显示出来
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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