课程设计采用AT89C2052单片机为控制器控制点阵LED显示器进行显示单片机8X8点阵显示.doc

上传人:laozhun 文档编号:4150572 上传时间:2023-04-07 格式:DOC 页数:22 大小:152KB
返回 下载 相关 举报
课程设计采用AT89C2052单片机为控制器控制点阵LED显示器进行显示单片机8X8点阵显示.doc_第1页
第1页 / 共22页
课程设计采用AT89C2052单片机为控制器控制点阵LED显示器进行显示单片机8X8点阵显示.doc_第2页
第2页 / 共22页
课程设计采用AT89C2052单片机为控制器控制点阵LED显示器进行显示单片机8X8点阵显示.doc_第3页
第3页 / 共22页
课程设计采用AT89C2052单片机为控制器控制点阵LED显示器进行显示单片机8X8点阵显示.doc_第4页
第4页 / 共22页
课程设计采用AT89C2052单片机为控制器控制点阵LED显示器进行显示单片机8X8点阵显示.doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《课程设计采用AT89C2052单片机为控制器控制点阵LED显示器进行显示单片机8X8点阵显示.doc》由会员分享,可在线阅读,更多相关《课程设计采用AT89C2052单片机为控制器控制点阵LED显示器进行显示单片机8X8点阵显示.doc(22页珍藏版)》请在三一办公上搜索。

1、目 录1 需求分析21.1前言21.2课题设计内容21.3设计目的22 总体设计32.1设计思路32.2方案设计33 详细设计53.1硬件系统电路设计53.1.1控制电路设计53.1.2主要功能特性:63.2控制系统的软件设计73.2.1 主程序73.2.2初始化程序73.2.3显示程序83.2.4程序设计清单84 实现94.1元器件的选择94.2元器件焊接94.2.1焊接准备94.2.2焊接过程94.3软件的调试和烧入115 使用说明125.1各部分组成及功能125.1.1 LED显示屏125.1.2以单片机为核心的动态扫描电路125.2显示时间的分析136 实验小结147 收获体会15附录

2、一16附录二16附录三171 需求分析1.1 前言当今世界,电子技术迅猛发展,点阵式显示器件作为现代信息显示的重要媒体,在金融证券、体育、机场、交通、商业、广告宣传、邮电电信、指挥调度、国防军事等许多领域中得到了广泛应用。因此点阵式显示器件的研制、生产也的到了迅速的发展,并逐步形成产业,成为光电子行业的新兴产业领域。由于LED电子显示屏具有所显内容信息量大,外形美观大方,操作使用方便灵活.适用于火车,汽车站,码头,金融证券市场,文化中心,信息中心体育设施等公共场所。该项目广泛涉及了计算机及电子技术中的电源技术、单片机技术、数据通讯技术、显示技术、存储技术、系统软件技术、接口及驱动等技术。LED

3、显示又可以分为单色显示和双色显示,可以按照需要的大小、形状和颜色进行组合,并用单片机控制实现各种文字或图形的变化,达到宣传和提示的目的。1.2课题设计内容该电路系统是采用AT89C2052单片机为控制器,控制点阵LED显示器进行显示,本电路控制模块有主模块和显示模块组成。主程序模块负责每次显示时的显示地址首址、每个字的显示时间和下一个显示地址的间隔的处理;而子程序模块负责对指定单元的数据进行输出显示,显示一个完整文字的时间约为8ms。1.3设计目的1使学生更深入地理解和掌握该课程中的有关基本概念,程序设计思想和方法。2培养学生勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论,全方位考虑

4、问题等科学技术人员应具有的素质。3提高学生对工作认真负责、一丝不苟,对同学团结友爱,协作攻关的基本素质。4培养学生从资料文献、科学实验中获得知识的能力。5. 对学生掌握知识的深度、运用理论去处理问题的能力、实验能力、课程设计能力、书面及口头表达能力进行考核。2 总体设计2.1设计思路利用单片机对整个系统进行总体控制,进行显示所要显示的字符。显示方式分为三种:逐字显示、上滚显示、左滚显示。其中显示字模数据由单片机输入显存,点阵的点亮过程有程序控制,由驱动电路完成,点阵采用单色显示,该显示器电路的特点是:点阵的动态显示过程占用时间比较短,亮度比较高,而且亮度可以改变电阻进行调节。2.2方案设计单片

5、机控制的时钟电路,根据不同的要求有不同的设计思路,根据我们现在的水平和现有的设计能力,我们选择了比较简单的那种电路,但是,也是有两种可以选择的方案。方案一:显示预先想要显示的内容,在本设计中要求显示“电子设计”四个文字,显示方式分三种:逐字显示,向左滚动显示,向右滚动显示。向上滚动显示,向下滚动显示,暂停黑屏滚动显示。方案二:在8X8LED点阵上显示柱形,让其先从左到右平滑移动三次,其次从右到左平滑移动三次,再次从上到下平滑移动三次,最后从下到上平滑移动三次,如此循环下去。方案三:点阵LED扫描介绍:点阵LED一般采用扫描式显示,实际运用分为三种方式:(1)点扫描(2)行扫描(3)列扫描若使用

6、第一种方式,其扫描频率必须大于16*64=1024Hz,周期小于1ms即可。若使用第二种和第三种方式,则频率必须大于16*7=128Hz,周期小于7.8ms即可符合视觉暂留要求。此外一次驱动一列或一行(8颗LED)时需外加驱动电路提高电流,否则亮度会不足。根据烧入程序的不同而显示的方式就不同。显示屏在设计与使用中存在如下问题:1.由于要对显示屏上数以万计的像素进行控制,并且随着显示屏面积的增大,电路结构也非常庞大,因此系统的模块化设计成为重点考虑的问题。2.为了在屏上显示动画,视频图像等信息,显示系统必须用30帧/秒以上的速度来更新显示画面,这就要求显示系统有非常高的处理速度。3.为了在显示屏

7、上细致的显示出信息所表示的形状,一般每帧有多至几百KB的显示数据送到显示屏,因此有非常大的数据传输量。4.用LED器件制造的显示屏主要用于大型公共设施和室外场所,尺寸通常在几米到几十米长,显示数据传输距离达几百米到千米以上。有上文可以看到LED显示屏的制造技术是集大容量的数据传输,高速处理,高速LED控制,超高亮度LED器件等技术于一体,涉及了计算机,信息,电子技术,色彩学等领域的综合产物,有着较高的技术难度和较大的生产工作量。对于上文所述的难点有以下解决方案:1.总体设计采用集散控制方案,在统一协调的基础上来进行分级递阶控制,并通过功能分散,危险分散来达到设计的优化。2.化整为零,将显示屏分

8、解为规模较小的显示单元,即用显示单元来组成显示系统。3.显示单元本身具有与显示屏相同的控制功能,并具有良好的嵌入性。4.显示单元具备稳定,高速,简洁的长距离数据传输系统。5.显示单元组成的显示系统应结构简单,性能稳定。3 详细设计3.1硬件系统电路设计3.1.1控制电路设计本字符显示器采用AT89C51单片机作控制器,12MHZ晶振,8*8点阵共阳LED显示器,其中,P0作为字符数据输出口,P2为字符显示扫描输出口,第31脚(EA)接电源,P1.0P1.2口分别接开关K1、K2、K3,改变电阻(270*)的大小可改变显示字符的亮度,驱动用9012三极管。AT89C51的引脚结构图:图3-1 电

9、路结构图AT89C51是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C51单片机可为您提供许多较复杂系统控制应用场合。AT89C51有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C51可以按照常规方法进行编程,也可以在线编程。其将通用的微处理

10、器和Flash存储器结合在一起,特别是可反复擦写的 Flash存储器可有效地降低开发成本。此外,AT89S52设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。3.1.2主要功能特性:兼容MCS-51指令系统 8k可反复擦写(1000次)ISP Flash ROM 32个双向I/O口 4.5-5.5V工作电压 3个16位可编程定时/计数器 时钟频率0-33MHz 全双工UART串行中断口线 256x8bit内部RAM 2个外部中断源

11、 低功耗空闲和省电模式 中断唤醒省电模式 3级加密位 看门狗(WDT)电路 软件设置空闲和省电功能 灵活的ISP字节和分页编程 双数据寄存器指针8X8点阵LED结构如下图所示:图3-2 LED内部结构图从上图中可以看出,8X8点阵共需要64个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一列置1电平,某一行置0电平,则相应的二极管就亮;因此要实现一根柱形的亮法,如上图所示,对应的一列为一根竖柱,或者对应的一行为一根横柱,因此实现柱的亮的方法如下所述:一根竖柱:对应的列置1,而行则采用扫描的方法来实现。一根横柱:对应的行置0,而列则采用扫描的方法来实现。3.2控制系统的

12、软件设计3.2.1 主程序在刚上电时对系统进行初始化,然后读一次键开关状态,由键标志位值(00H、01H、02H)决定显示的方式。主程序流程图如下:NNNYYY开始调用键扫描程序(KEYWORD)20H.0=1?20H.1=1?20H.2=1?转向字显示程序(FUN0)转向左滚动显示程序(FUN2)转向上滚动显示程序(FUN1)图3-3主程序流程图3.2.2初始化程序在系统初始化时,对四个端口进行复位,将显示用的字符数据从ROM表中装入内存单元50H6FH中。“电子设计”中的每个字占用8个地址单元。3.2.3显示程序显示主程序负责每次显示时的显示地址首址(在B寄存器中)、每个字的显示时间(由3

13、0H中的数据决定)和下一个显示地址的间隔(31H中的数据决定)的处理。显示子程序则负责对指定8个地址单元的数据进行输出显示,显示一个完整文字的时间约为8ms。下图为逐字显示及向上滚动显示方式时的显示控制程序流程图:YYNN逐字或向上移显示开始设1帧显示时间及换帧速度寄存器B、R4、R5赋初值调显示子程序(DISPLAY)(R4)-1=0?(B)=#68H????显示首地址修改:(B)+R5(B)转START1图3-4 控制程序流程图利用键扫描程序代替显示程序中的1ms延时程序,既为了按键的快速响应,又可以提高动态显示的扫描频率,减少文字显示时的闪烁现象。对于多个文字的大屏幕显示,应该使用输出数

14、据缓冲寄存器,才可以得到稳定的显示文字。3.2.4程序设计清单 参见附录三4 实现4.1元器件的选择 单片机我们采用了AT89C51,此单片机的使用和外围连接见硬件系统的电路设计原理说明。三极管驱动采用PNP型的,晶振是12MHZ,电源为+5V的电压。外中断的等待用的是单片机的P3.7口,按键是轻触开关。详细目录见附录二。4.2元器件焊接4.2.1焊接准备 焊接开始前必须清理工作台面,准备好焊料、焊剂和镊子等必备的工具。更重要的是要准备好电烙铁。“准备好电烙铁”不仅是要选好一只功率合适的电烙铁,而且是说要调整好电烙铁的工作温度。不可让温度过高,否则烙铁头就会被烧死。所谓烧死,是指烙铁头前端工作

15、面上的镀锡层在过高的温度下被氧化掉,表面形成一层黑色的氧化铜壳层。此时的烙铁头既不传热也不再吃锡,如果勉强压在焊锡上,过了很长时间后焊锡才会突然熔化,滚向一边,决不与烙铁头亲和。烙铁头一旦烧死就必须锉掉表层重新上锡,这对于长寿烙铁头来说就是致命的损失了。必须注意调节电烙铁的工作温度,使其大约维持在300C左右。实际操作的准则是:在不至于烧死烙铁头的前提下尽量调高一些。一定要让烙铁头尖端的工作部位永远保持银白色的吃锡的状态。 4.2.2焊接过程 元器件引出脚的上锡 即将元器件引出脚及焊片、焊盘等被焊物分别地预先用烙铁搪上一层焊锡。这样可以基本保证不出现虚焊。在焊接操作中,一定要养成将元器件预先上

16、锡的良好习惯。对于那些表面氧化、有污渍的引脚和有绝缘漆的线头,上锡前还必须进行表面的清洁处理,手工焊接时一般采用刮削的办法处理。刮削时必须注意做到全面、均匀。尤其是处理那些小直径线头时,不能在刮削的起始部位留下伤痕。较粗的引出脚可以压在粗糙的工作台板的边缘上边转边刮,细线头则应该夹在刀片和手指之间进行。 焊接的操作手法 手工焊接有两种基本手法:一种是用实芯焊锡条时的手法,一种是使用松香焊锡丝作焊料时的手法。学会了怎么样用烙铁来运载、调节焊料,体会到怎样使焊剂在焊接过程中发挥它的作用,才能真正做好焊接。 焊接的质量检验 检验焊接质量有多种方法,比较先进的方法是用仪器进行。而在通常条件下,则采用观

17、察外观和用烙铁重焊的方法来检验。 a)外观观察检验法 一个焊点的焊接质量最主要的是要看它是否为虚焊,其次才是外观。 个良好的焊点其表面应该光洁、明亮,不得有拉尖、起皱、鼓气泡、夹渣、出现麻点等现象;其焊料到被焊金属的过渡处应呈现圆滑流畅的浸润状凹曲面。 用观察法检查焊点质量时最好使用一只35倍的放大镜,在放大镜下可以很清楚地观察到焊点表面焊锡与被焊物相接处的细节,而这里正是判断焊点质量的关键所在,焊料在冷却前是否曾经浸润金属表面,在放大镜下就会一目了然。 B)带松香重焊检验法 检验一个焊点虚实真假最可靠的方法就是重新焊一下:用满带松香焊剂、缺少焊锡的烙铁重新熔融焊点,从旁边或下方撤走烙铁,若有

18、虚焊,其焊锡一定都会被强大的表面张力收走,使虚焊处暴露无余。 带松香重焊是最可靠的检验方法,同时多用此法还可以积累经验,提高用观察法检查焊点 的准确性。 c)其他焊接缺陷 除了虚焊以外还有些焊接缺陷也要注意避免,(k)为引线的绝缘层剥得过长,使导线有与其他焊点相碰的危险;(j)为多股线头没有焊妥,有个别线芯逃逸在外;(l)为焊接时温度太高、时间太长,使基板材料炭化、鼓泡,焊盘已经与板基剥离,元器件失去固定,与焊盘联接的电路将被撕断。 锡焊元器件的无损拆卸 在电子产品的研制、生产和维修中有很多时候需要将已经焊好的元器件无损伤的拆下来,其方法有逐点脱焊法、堆锡脱焊法、吸锡法和吹锡法。但种种拆焊法都

19、必须遵循两条原则:一是拆下来的元器件必须安然无恙,二是元器件拆走以后的印制电路板必须完好无损。4.3软件的调试和烧入为了保证制作的成功机率,我们在制作电路板的初级阶段,首先在Lab2000伟福实验箱上做了仿真实验,直接把设计好的程序在伟福软件编译无误完成之后,全速执行该程序就可以直接验证我们的设计的正确与否了。通过简单的修改和验证,我们的实验源程序没有什么问题,然后我们才开始了课程设计的基本流程了。硬件系统的调试电路系统接上电源之后,对各个电路用万用表进行全面检查,首先检查单片机的电源供电情况,测量第二十和十脚之间的电压,供电正常。再检查显示部分的电源供电情况,LED显示器两端的电压也是正常的

20、。综合调试结果其他的忙完了之后,一切的准备工作就做好了,接着就是综合调试了。因为现在对软件的调试已经完成,没有什么错误了。我们就从硬件开始检查,LED显示器什么也不显示,查找电路,所有的线路都连接好了。接着查看单片机外围电路,发现31脚没有接电路,说明现在读取的是片外的程序。加上跳线,连上电路,电路还是不显示,等了一下,闻到了糊味,触摸了一下单片机,单片机发热了,而且温度高。电路中一定有短路的地方,用刀子把所有的走线的空隙划了一下,割断无意中的连接。换了块单片机,重新烧录程序,再次接上电路,这时候发现有部分点阵LED显示,还是不全面。再次检查,把每一条走线都不放过,这时候找到了有一条线被断开了

21、,线路不通了,找点导线,连上电路。再次查看时,可以正常调试了,功能完全实现了。但是,还是有部分因电流过大而烧坏了,部分段不显示了,换上新的就可以了。其中,软件的程序包括、闪动调整程序、清零程序、时钟调整程序、延时程序、显示程序等。8*8点阵LED字符显示器能显示“电子设计“四个文字,显示方式可由K1,K2,K3选择,K1为逐字显示,K2为向上滚动显示,K3为向左滚动显示。5 使用说明5.1各部分组成及功能5.1.1 LED显示屏LED显示屏以发光二极管为像素,由LED点阵显示单一元拼接而成.最常见的LED点阵显示单元有5X7, 7X9, 8X8结构,前两种主要用于显示各种西文字符,后一种常用于

22、显示各种汉字字符 , 8 X 8LED点阵的外观及引脚图如下图所示。应该说明的是,屏中LED最好使用市售88LED阵列,这样会使焊接工作量大大减少。5.1.2以单片机为核心的动态扫描电路以单片机为核心的动态扫描电路是由单片机,显示控制电路,显示驱动电路组成。单片机及相应软件,主要负责存储显示数据,安排控制信号的定时与顺序,和PC机进行通信等。根据驱动方式的不同,LED大屏幕显示方式可分为静态显示和动态扫描显示两。静态显示是指将一幅画面输入以后要保持到下一幅画面的输入:动态显示是指将画分为若干部分分别进行刷新。静态显示每一个像素需要一套驱动电路,如果显示屏为nXm个像素屏,则需要nXm套驱动电路

23、;动态扫描显示则采用多路复用技术,如果是P路复用的话,则每P个像素需一套驱动电路,nXm个像素仅需nXm/p套驱动电路。另外,对于静态显示方式,需要较多的译码驱动装置,需要的引线也比较多;对于动态扫描显示方式,可以避免以上不足,但是容易造成显示亮度低,屏幕闪烁等问题.在实际的LED大屏幕显示中,很少有采用静态驱动的。显示数据通常以字节的形式顺序存放在单片机的存储器中。在行扫描列控制显示时,把显示数据从存储器中取出传送到每一行对应的列驱动器上,这就存在一个列数据传输方式的问题。从控制电路到列驱动器的数据传输可以采用串行方式或串行方式,它们各有优缺:数据并行传输的速度比较快,但是随着屏幕的增大,点

24、阵模块数量的增多,线路会越来越复杂;数据串行传输的速度比较慢,但它可以大大简化传输线路,对于大屏幕来说,采用串行传输方式比较合扩。采用串行传输的方法,控制电路可以只用一根信号线,将列数据一位一位传往列驱动器,与此同时,列驱动器中每一列都把当前数据传向后一列,并从前一列接收新数据,一直到一行的各列数据全部传输到位后,才能并行地进行LED显示系统的组成显示。对于串行传输来说,数据要经过并行到串行和串行到并行两次变换,因此列数据的准备时间可能相当长,在行扫描周期确定的情况下,留给行显示的时间就少一些,以至影响到LED的亮度。 解决串行传输中列数据准备和列数据显示的时间矛盾问题,可以采用重叠处理的方法

25、。即在显示本行各列数据的同时,准备下一行的列数据,这就需要列数据的显示具有锁存功能。本行己准备好的数据打入并行锁存器进行显示时,串并移位寄存器就可以准备下一行的列数据,而不会影响本行的显示。5.2显示时间的分析对于以动态扫描方式工作的显示系统,扫描时间的确定较为重要,根据人眼的视觉暂留时间,若每秒显示二十四帧以上,便可得到稳定的显示,取每秒二十五帧,即完成对全屏的一次扫描时间为40ms,那么,只要每次完成对全屏的扫描时间不超过该值,将会得到较为稳定的显示。从理论上讲,显示屏的大小是任意的,但从上面的分析可知,显示屏做得越大,即屏幕的点阵规模越大,往显示屏上所送的数据就越多,数据传输与控制的时间

26、也会增加即完成一屏扫描的时间也将越长,然而,40ms的时间却是固定的,多于40ms会有闪烁感。在设计显示屏的大小时,该因素是必需考虑的。为了满足这一要求,关键在于提高微机的程序执行速度,可以选择更快的CPU,或数字信号处理芯片(DSP)。事实上,LED显示屏控制器,要求的数字信号处理能力并不高,主要要求的是显示数据的访问和控制信号的产生。对于这两项功能,采用基于ARM核的32位嵌入式R工SC微处理器是完全可以胜任的。基于ARM核的32位微处理器的速度不仅比8位/16位单片机执行程序的速度要高得多,而且存储容量要大得多,因此,本课题采用基于ARM核的32位嵌入式R工SC微处理器组成大屏幕LED显

27、示系统,与传统的基于8位/16位单片机的LED显示系统相比,在不显著增加系统成本的情况下,可支持更大可视区域的稳定显示,同时可存储更多的显示内容。6 实验小结本LED显示屏控制系统已能实现LED显示的基本功能,并且体现出了相对于传统的基于8位/16位普通单片机的显示系统的优越性,如上设计所述,但由于本组成员水平和设计时间有限,离一个完全实用的,能够完全符合市场需求的LED显示系统还有一定的差距.因此,在以后的研制过程中,还需要在以下几个方面做大量的工作: (1)扮在系统抗干扰方面,不论是硬件部分还是软件部分,都还必须在工作现场根据实际情况进行大量的实验,调试工作,才能最终实现LED显示系统的可

28、靠工作。(2)在增强图文屏显示效果上,可使用双色屏或多色屏,双色(或多色)屏所使用的LED点阵单元,在同一点阵位置上安装了两个(或多个)不同颜色的LED发光灯,对不同颜色的显示控制方面进行进一步的设计,以满足显示更加丰富多彩的图形和文字。(3)由于ARM微处理器的强大运算能力和丰富的片内外围,可将LED显示屏方便地接入以太网络,每一个 LED显示控制器可作为一个网络节点,方便的组成基于工业以太网的LED显示网络,在这方面还应该进行进一步的研究与实验,以满足更高,更复杂的使用要求。7 收获体会在这次课程设计的整个过程中,我们做了一次全面、较规范的设计练习,全面地温习了以前所学过的知识,用理论联系

29、实际并结合单片机原理课程和解决实际问题,巩固、加深和扩展了有关单片机设计方面的知识。尤其重要的是让我们养成了科学的习惯,在设计过程中一定要注意掌握设计进度,按预定计划完成阶段性的目标,在底图设计阶段,注意设计计算与结构设计画图交替进行,采用正确的设计方法。在整个设计过程中注意对设计资料和计算数据的保存和积累,保持记录的完整性。在课程设计的实践中进行了设计基本技能的训练,掌握了查阅和使用标准、规范、手册、图册、及相关技术资料的基本技能以及计算、数据处理等方面的能力。通过对通用89C51单片机机处理器铁电存储器芯片、常用元器件的设计,掌握了一般单片机设计的程序和方法,让我们对整个单片机程序的设计,

30、C51语言有了一个比较深的理解。还有就是增强了自身的动手能力。在这次课程设计中,我主要负责的是程序设计和单片机部件焊接。通过参考相关的程序设计,自己写出了主要的程序代码。同时将元器件正确焊接到基板上。这些都是将以前书本上讲的或是没有讲的,通过一次课程设计具体的实施,使自己的动手能力和独立设计能力真正得到锻炼,对于以后我们的发展与学习来说,都可以看作一笔不小的财富,前面还有很多需要我们去尝试。同时不能忽略的是,这一次课程设计是以小组为单位的。在这次课程设计中,我和自己的小组成员学会了密切分工配合。而这样的合作能力和团队精神在今后的学习工作中是很重要的。附录一参考文献:1 李光飞,楼然苗.51系列

31、单片机设计实例M.北京航空航天大学出版社,2003,3.2 韩志军,沈晋源,王振波.单片机应用系统设计入门向导与设计实例M北京:机械工业出版社,2005,1.3 王幸之,钟爱琴,王雷,王闪.AT89系列单片机原理与接口技术M.北京航空航天大学出版社,2004,5.4 朱定华.单片机原理及接口技术M北京:电子工业出版社,2001,4.5 赵茂泰.智能仪器原理及应用M.北京:电子工业出版社,2004,2.6 刘东红.利用单片机89C51的一个并行IO口实现多个LED显示的一种简单方法J.国外电子元器件,2002年第8期.附录二元器件清单:元件名称规格数量备注AT89C51单片机一块附底座晶振12M

32、HZ一块PNP三极管9012八支8*8点阵共阳LED显示器共阳一块按钮开关三个四脚或两脚极性电容220uf、22uf各一支瓷片电容30pf两个电阻1k、470八个、八个发光二极管一支 MC7805稳压管一块 电源插座一个电阻10k两个附录三/*/ / 采用8*8LED动态显示文字演示程序/ LRM 2004.10.9 /*/使用AT89C51单片机,12MHZ晶振,P0口输出一行数据,P2口作行扫描,用共阳LED管/P1口接三个按键,用于逐字显示、向上滚动显示文字、暂停备用。#include reg51.h#define char unsigned char#define int unsign

33、ed intsbit f0=P10;sbit f1=P11;sbit f2=P12;sbit f3=P13;sbit f4=P14;/*电子设计8*8字模*/*逐字显示*char code distab= /0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xEF,0x83,0xAB,0x83,0xAB,0x83,0xEE,0xE0, /电 0xFF,0xC7,0xEF,0x83,0xEF,0xEF,0xCF,0xEF, /子 0xB1,0xB5,0x04,0xBF,0xB1,0xB5,0x9B,0xA4, /设 0xBB,0xBB,0x1B,0xA0,0xB

34、B,0xBB,0x9B,0xBB, /计 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF;/*从上到下*char code distab2= 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xBB,0xBB,0x1B,0xA0,0xBB,0xBB,0x9B,0xBB, /计 0xB1,0xB5,0x04,0xBF,0xB1,0xB5,0x9B,0xA4, /设 0xFF,0xC7,0xEF,0x83,0xEF,0xEF,0xCF,0xEF, /子 0xEF,0x83,0xAB,0x83,0xAB,0x83,0xEE,0xE0,

35、 /电 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff;/*从左到右*char code distab3= 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xC0,0x80,0xBE,0xAA,0xFf,0x2A,0x3E,0x00, /电 0x00,0x00,0x08,0x09,0xFf,0x49,0x08,0x00, /子 0x84,0xb7,0x51,0xB7,0x84,0x44,0xFF,0x04, /设 0x08,0x08,0xFF,0x08,0x08,0x44,0xFF,0x04, /计 0x00,0x00,0x0

36、0,0x00,0x00,0x00,0x00,0x00;/*从右到左*char code distab4= /* /0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x04,0x08,0x08,0xFF,0x08,0x08,0x44,0xFF, /计 0x04,0x84,0x97,0x71,0xB7,0x84,0x44,0xFF, /设 0x00,0x00,0x00,0x04,0x09,0xFE,0x49,0x08, /子 0x00,0xC0,0x80,0xBE,0xAA,0xFD,0x2A,0x3E, /电 0x00,0x00,0x00,0x00,0x00,0

37、x00,0x00,0x00 */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x08,0x08,0xFF,0x08,0x08,0x44,0xFF,0x04, /计 0x84,0xb7,0x51,0xB7,0x84,0x44,0xFF,0x04, /设 0x00,0x00,0x08,0x09,0xFf,0x49,0x08,0x00, /子 0xC0,0x80,0xBE,0xAA,0xFf,0x2A,0x3E,0x00, /电 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00;char code scan_con8=0xfe,0

38、xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;/ 列扫描控制字/*1毫秒延时程序*/void keyscan();void delay1ms(char t) char i,j; for(i=0;it;i+) for(j=0;j200;j+) keyscan();/*逐字显示*void fun0() char m,n,h; for(h=0;h40;h=h+8) for(n=0;n30;n+) /循环延时显示 for(m=0;m8;m+) P0=distabm+h; delay1ms(1); P2=scan_conm; /*从下到上滚动显示*void fun1() char

39、m,n,h; for(h=0;h40;h+) /控制显示字数(32/8=4个) for(n=0;n10;n+) /控制帧移动速度 for(m=0;m=0;h-) /初值为40 显示黑屏之后再显示字 do /为什么用for循环不能实现用while循环可以 for(n=0;n10;n+) for(m=0;m0);/*从左到右滚动显示*void fun3() char m,n,h=40; do for(n=0;n5;n+) for(m=0;m0);/*从右到左滚动显示*void fun4() char m,n,h=40; do for(n=0;n10;n+) for(m=0;m0);/*按键扫描函数*void keyscan() if(f0=0) while(1) fun0();/逐字显示 else if(f1=0) while(1) fun1(); /从下到上 else if(f2=0) while(1) fun2(); /从上到下 else if(f3=0) while(1) fun4(); /从左到右 else if(f4=0) while(1) fun4(); /从右到左 /*主程序*main() P0=0xff; P1=0xff; P2=0xff; P3=0xff; while(1) fun1();

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号