版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目录1.课程设计目的12.课程设计题目和要求13.设计内容13.1设计概述13.2单元电路设计23.2.1单片机选型23.2.2 驱动单元53.2.3 显示单元84.系统的掉电,复位信号生成电路105.电源116.软件设计137.设计总结16附录18附录27参考文献281.课程设计目的 通过对课题的研究,更加深入,具体的复习所学的有关单片机的知识,从而实现学以致用的根本目标。在设计中,可以全面检查设计者的知识结构以及对知识的掌握情况,从而更好的促进设计者进行二次学习,巩固基础知识。通过设计,学生的动手能力得到提高,对单片机最小系统控制下的LED显示方式有了全面了解。本次设计主要应用的知识有:单
2、片机I/O的应用,8位串行输入并行输出寄存器的应用以及LED汉字显示的扫描方式。2.课程设计题目和要求(1)课程设计题目:基于单片机的LED动态显示(2)要求用16×16 LED点阵显示,静态显示“同一个世界,同一个梦想”10个字。硬件设计避免繁琐,达到所需功能即可。软件设计采用模块化设计。3.设计内容3.1设计概述本系统采用AT89C51单片机作控制器,整个电路主要由单片机控制及驱动显示电路、电源电路等部分组成。通常LED点阵显示应该准备用于存储点阵码的字库存储器,但是为了简化显示屏电路,降低成本,本系统在单片机部分不加字库存储器。而采用软件编程的方式生成字库,并通过扫描驱动的方式
3、将字库中的信息反映到LED阵列的行和列上,从而实现字符的显示。工作前需要用过编程软件将要显示的字符以程序代码的形式生成字库并存入单片机的存储器中,以便系统工作时调用字库,完成显示。工作时,字库中的数据通过AT89 C51的P1.0管脚与P1.4管脚串行输出,数据传输到两组由两个74HC959级联而成的寄存器中。在数据的传输过程中P1.1管脚与P1.5管脚用来以输出脉冲的方式控制两组寄存器中数据的位移,P1.2管脚用来控制寄存器内数据的更新与输出,P1.3管脚用来将寄存器内的数据清零。采用扫描驱动时,两组寄存器内的数据以高低电平的形式同时输出,使得符合导通条件的LED导通发光,不断重复这样的发光
4、过程并利用人眼的视觉惰性达到显示字符的目的(设计框图见图1)。串行口单片机驱动电路驱动电路驱动电路驱动电路时钟电路16×16 LED显示图1 LED显示系统设计框图3.2单元电路设计3.2.1单片机选型单片机是微型计算机的一个重要分支,也是一种非常活跃且颇具有生命力的机种。它只需要与适当的软件及外部硬件相结合,便可构成一个单片机系统。基于单片机的系统设计简单,安装方便,适应性强,应用十分广泛。目前,随着科技的发展,C语言的运用越来越广,与汇编语言相比它具有编程灵活,移植性强等特点,因此C语言具有更好的适应性,所以C语言已被广泛应用于单片机的编程工作。鉴于以上因素,本系统选用支持C语言
5、编程的AT89C51单片机作为核心部件。(如图2所示)由于本次设计重点在于单片机的使用方法,对于单片机内部的结构知识要求相对较少,所以选择单片机型号时要注意所选单片机管脚的功能。AT89C51是美国ATMEL公司生产的低电压,高性能CMOS8 位单片机,片内含4KB的可反复擦写的只读程序存储器(单片机的可擦除只读存储器可以反复擦除1000次)和128KB的随机存储数据存储器,器件兼容MCS-51指令系统,片内置通用8 位中央处理器和Flash存储单元,32个I/0口线,两个16 位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0Hz
6、静态逻辑操作。并支持多种软件可选的节电工作模式。空闲方式时停止CPU的工作,但允许RAM,定时器/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其他所有部件工作,直到下一个硬件复位。图2 AT89C51芯片图及其电气原理图AT89C51的P0口是一个8位漏极开路型双向I/O口,也即地址/数据总线复用口。作为输出口用时,每位能以吸收电流的方式驱动8 个TTL逻辑门电路,对端口写“1”时可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。在Flash编程时,P0接受指令字节,而
7、在程序校验时,输出指令字节,校验时要求外接上拉电阻。其P1口是一个内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可做输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。在Flash编程和程序校验期间,P1接受低8位地址。P2口为一个带有内部上拉电阻的8位双向I/O口,P2的缓冲输出级可驱动4个TTL逻辑门电路门,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。当P2口用于
8、外部程序存储器或16位地址外部数据存储器进行存取时(如执行MOVDPTR指令时),P2口输出地址的高八位。在给出地址“1”时,它利用内部的上拉优势,输出电流。当对外部八位地址数据存储器进行读写时(如执行MOVR1指令时),P2口输出其特殊功能寄存器的内容而且P2口线上的内容在整个访问期间保持不变。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 29P3口是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的
9、一些特殊功能口,例如P3.0 RXD(串行输入口),P3.1TXD(串行输出口),P3.2/INT0(外部中断0),P3.3/INT1(外部中断1),P3.4T0(记时器0外部输入),P3.5T1(记时器1外部输入),P3.6/WR(外部数据存储器写选通),P3.7/RD(外部数据存储器读选通),P3口同时为闪烁编程和编程校验接收一些控制信号。除上述管脚外,AT89C51还有以下几个管脚:RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲
10、。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令时ALE才起作用。此外,该引脚被略微拉高单片机执行外部程序时,应设置ALE无效。 PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次PSEN有效。但在访问外部数据存储器时,这两次有效的PSEN信号将不出现。 EA/VPP:当/EA保持低电平时,则在此期间只访问外部程序存储器(0000H-F
11、FFFH),不管是否有内部程序存储器。如果加密位LB1被编程,EA将内部锁定为RESET;当/EA端保持高电平时,此间访问内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。在熟悉各个管脚的功能后,就可以参照所学习过的8031单片机的使用方法进行系统的设计。系统工作时,P1.0管脚作为点阵数据引脚,其功能是将寄存器中的点阵码以串行通信的方式传送给控制行显示的两片位移寄存器74HC595。P1.1管脚作为数据时钟引脚,用来控制74HC595的数据输入。当P1.1的输出由低电
12、平转为高电平时寄存器内的数据完成一次位移,反之寄存器内的数据保持不变。P1.2管脚作为数据锁存引脚,当P1.2的输出由低电平转为高电平时,74HC595的内部寄存器中的数据进入数据存储器,为输出做准备。反之存储的数据不变。P1.3管脚为总清除引脚,输出低电平时,74HC595内的数据被清零。P1.4管脚为地址数据引脚,其对74HC595的作用与P1.0管脚完全相同,但是P1.4输出的数据作为列扫描时的地址使用。P1.5管脚为地址时钟引脚,用来控制地址的形成,其工作方式与P1.1管脚完全一致。P1.6管脚为地址锁存引脚,用来控制地址的更新,其工作方式与P1.2完全相同。P1.7为控制引脚, 其输
13、出为低电平时,为一起存起允许输出,反之,禁止输出。3.2.2 驱动单元16×16LED显示屏是以扫描方式完成字符显示的,工作过程中,显示器需要16个行输出端,而通常情况下,每一个片子只有8个输出端,所以所选芯片必须可以级联使用。同理,对于列来说,同样需要16个输出端来确定每次扫描的地址。所以,也应该选择能够级联使用的芯片。此外,若想以逐一扫描的方式显示字符,那么所选的驱动芯片必须具有并行输出功能,以便能够在行与列的数据准备好时同时输出,进而完成扫描输出。又因为字符的点阵码和扫描地址是以串行通信的方式从单片机的P1.0管脚与P1.4管脚输出的,所以,所选用的驱动芯片必须具有接收串行输入
14、信号的功能,以便接受以串行形式输入的点阵码及地址码。鉴于以上原因,本次设计选用74HC595作为驱动芯片。74HC595是硅结构的CMOS器件,兼容低电压TTL电路,遵守JEDEC标。74HC595具有8位移位寄存器和一个存储器,具有三态输出功能。移位寄存器和存储器是分别的时钟。数据在SCHcp的上升沿输入,在STcp的上升沿进入的存储寄存器中去。如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲。移位寄存器有一个串行移位输入(SI),一个串行输出(QH),和一个异步的低电平复位,存储寄存器有一个并行8位的,具备三态的总线输出,当使能OE时(为低电平),存储寄存器的数据输出到总线。此
15、外,内置存储状态寄存器,三种状态输出寄存器可以直接清除。具有100MHz的移位频率,输出能力强,可以并行输出,串行输出,总线驱动。是一种标准中等规模集成电路。(见图3)图3 74HC595芯片图74HC595集成电路的功能表如表1所示:表1 74HC595集成电路的功能表输入管脚输出管脚SISCKSCLRRCKOEXXXXHQA-QH输出高阻XXXXLQA-QH输出有效值XXLXX移位寄存器清零L上沿HXX移位寄存器存取LH上沿HXX移位寄存器存取HX下沿HXX移位寄存器状态保持XXX上沿X输出存储器锁存位移寄存器的值XXX下沿X输出存储器状态保持74HC595各个引脚的功能如下:Q1到Q7
16、是并行数据输出口,即储寄存器的数据输出口。SI为串行数据输入口。SQH(9脚)为串行输出口,即级联输出端,他可以接下一个74HC595的SI端,与时钟信号和地址信号相配合完成芯片的级联使用。SCK移位寄存器的为存储寄存器的时钟脉冲输入口,上升沿到来时,数据寄存器的数据位移,从QA到QB到QC,直到QH,下降沿时移位寄存器的数据不变。RCK为存储寄存器的时钟脉冲输入口,上升沿到来时位移寄存器的数据进入数据存储寄存器,下降沿时存储寄存器的数据不变。OE非作为控制引脚,高电平时禁止输出。SCLR为数据清零引脚,低电平时将位移寄存器的数据清零。其时序图如图4所示(深色部分为高阻态)。图4 74HC59
17、5的时序图驱动电路分为两个部分,即地址部分与数据部分。在进行扫描输出时,用来输出地址的两片级联的74HC595开始为确定列扫描输出的地址做准备。其中一片的SI引脚接受单片机P1.4引脚送来的“0”信号使地址的第一位为0,(以后便以该“0”为标志,划分出16个地址)之后扫描输出开始。在驱动电路的数据部分刷新数据之前,两片芯片的SCK引脚同时接受单片机P1.5引脚送来的正脉冲信号,使得两片芯片中的数据寄存器中的数据同时发生位移,此后从SI输入1,这样片就完成了地址的更新,例如,假设原来数据寄存器中的数据为“0000000000000000”更新后就变为“1000000000000000”。工作时,
18、不断重复上述过程,这样,控制列扫描的地址就不断更新,从而获得列扫描输出所需要的16个地址。因为所采用的是16×16点阵排列,所以执行要分成上下两个部分,每扫描一列时数据时分上下两个字节两次送入。74HC595只有8个输出端,因此需级联使用。扫描输出时,SI引脚不断接收从单片机的P1.0管脚传来的点阵码,共需接收两字节,共16个高/低电平。接收点阵码时,两片74HC595的SCK引脚不断接收从单片机P1.1管脚输出的正脉冲,使得两个片子数据寄存器内的数据同时左移。当第一片的数据寄存器存满时,数据就通过级联输出端QH将数据传输给下一片芯片。直到16个高低电平全部进入数据存储器中。此时,R
19、CK引脚接受来自P1.2传来的正脉冲信号,使得数据寄存器中的数据输出,完成一次扫描。应注该意的是,数据部分的输出与地址部分的输出是同时实现的,每一次数据输出只有唯一的地址与其对应。扫描时要通过软件来产生延时,以便人眼可以观察到所显示的字符。3.2.3 显示单元本次设计采用16×16LED点阵,所以LED是显示单元的核心器件。LED(Light Emitting Diode),发光二极管(图5),是一种固态的半导体器件,它可以直接把电转化为光。LED的心脏是一个半导体的晶片,晶片的一端附在一个支架上,一端是负极,另一端连接电源的正极,使整个晶片被环氧树脂封装起来。半导体晶片由两部分组成
20、,一部分是P型半导体,在它里面空穴占主导地位,另一端是N型半导体,在这边主要是电子。但这两种半导体连接起来的时候,它们之间就形成一个P-N结。当电流通过导线作用于这个晶片的时候,电子就会被推向P区,在P区里电子跟空穴复合,然后就会以光子的形式发出能量,这就是LED发光的原理。而光的波长也就是光的颜色,是由形成P-N结的材料决定的。图5 发光二极管发光二极管的核心部分是由p型半导体和n型半导体组成的晶片,在p型半导体和n型半导体之间有一个过渡层,称为p-n结。在某些半导体材料的PN结中,注入的少数载流子与多数载流子复合时会把多余的能量以光的形式释放出来,从而把电能直接转换为光能。PN结加反向电压
21、,少数载流子难以注入,故不发光。这种利用注入式电致发光原理制作的二极管叫发光二极管,通称LED。 当它处于正向工作状态时(即两端加上正向电压),电流从LED阳极流向阴极时,半导体晶体就发出从紫外到红外不同颜色的光线,光的强弱与电流有关。LED发光灯可以分为单色发光灯、双色发光灯、三色发光灯、面发光灯、闪烁发光灯、电压型发光灯等多种类型。按照发光灯强度又可以分为普通亮度发光灯、高亮度发光灯等。LED发光灯的外形由PN结、阳极引脚、阴极引脚和环氧树脂封装外壳组成。其核心部分是具有注入复合发光功能的PN结。环氧树脂封装外壳除具有保护芯片的作用外,还具有透光聚光的能力,以增强显示效果。LED器件种类繁
22、多。早期LED产品是单个的发光灯,随着数字化设备的出现,LED数码管和字符管得到了广泛的应用。LED器件通常用砷化镓(GaAs)、磷化镓(GaP)等半导体材料制成。当向LED器件施加正向电压时,器件内部的电子与空穴直接复合而产生能量,以光的形式释放出来,产生半导体发光。因此LED的驱动就是如何使它的PN结处于正偏状态,而且为了控制它的发光强度,还要解决正向电流的调节问题。具体的驱动方法可以分为直流驱动、恒流驱动、脉冲驱动和扫描驱动等。本次设计采用直流驱动。本次设计的LED点阵显示十分基础,只是简单的显示字符。因此选择LED时只需选择红色LED即可。由于采用阵列的方式排练连接LED,所以连接时应
23、注意选择发光二极管的接法。LED阵列共有两种接法,一种为列共阳极接法,即将二极管的阳极接到各列线上,阴极接到各行线上。工作时,当某一列接高电平,某一行接低电平时,则处于交叉点的承受正电压的LED导通发光。另一种为列共阴极接法,即将二极管的阴极接到格列线上,阳极接到各行线上。工作时,当某一列接高电平,某一行接低电平时,则处于交叉点的承受正电压的LED导通发光。实际设计中,选择何种接法还要根据设计之初的约定以及具体的软件编程来确定。实际完成显示的过程是靠软件来控制的,现谨以4×4点阵显示字母“X”为例说明显示电路的工作过程。首先要了解,字母“X”是以扫描的形式显示的,每次扫描只会显示字母
24、“X”的一部分,但是只要扫描的频率大于50Hz那么利用人眼的视觉迟钝就可以将字母显示出来。现将LED从左到右依次编号,方便说明。4×4点阵LED的连接方法如图6所示,本次设计采用列共阴极接法。图6列共阴极接法示意图显示字母X要经过四次扫描输出:第一次扫描时,根据事先生成的点阵码,LED阵列从上到下共四条行线分别为1状态,0状态,0状态,1状态,从左到右共四条列先分别为0状态,1状态,1状态,1状态。此时1号与13号LED承受正电压,故导通发光。其他LED均不满足导通条件,所以均不发光。第二次扫描时,LED阵列从上到下共四条行线分别为0状态,1状态,1状态,0状态,从左到右共四条列先分
25、别为1状态,0状态,1状态,1状态。此时6号与10号LED承受正电压,LED导通发光。其他LED承受反向电压或不承受电压,故均不发光。第三次扫描时,LED阵列从上到下共四条行线分别为0状态,1状态,1状态,0状态,从左到右共四条列先分别为1状态,1状态,0状态,1状态。此时7号与11号LED承受正电压,故导通发光,其他LED均不发光。第四次扫描时,LED阵列从上到下共四条行线分别为1状态,0状态,0状态,1状态,从左到右共四条列先分别为1状态,1状态,1状态,0状态,此时4号16号LED承受正电压,故导通发光,其他LED均不发光。经过不断重复上述过程,一个静态的字母“X”就显示出来了。应用上述
26、方法,经过不断重复上述过程,一个静态的字母“X”就显示出来了。4.系统的掉电,复位信号生成电路对于单片机系统来说其掉电与复位信号生成电路是非常重要的,由于本次设计重点在于使用单片机控制LED的发光与熄灭,所以现仅对掉电,复位信号生成电路的工作情况进行简述。复位,掉电电路见图7图7复位掉电电路在正常供电器件,比较器LM339反相输入端Vin1为3.6V,而同相输入端Vin2约为3.79V,大于反相输入端电压Vin1因此比较器LM339输出端INT0非为高电平,掉电信号无效。掉电时,电源电压V+逐渐下降,同相输入端电压Vin2也随着下降,当V+小于4.75V时,Vin小于3.6V,比较器输出端为低
27、电平,INT0非有效,CPU响应INT0非中断后将进入掉电运行状态。再上电时,当V+小于4.75V时,比较器反相输入端电位总是高于同相输入端电位,比较器输出低电平,U2B输出高电平,封锁了复位电路的输出,结果U2C输出端,即RESET为低电平,复位信号无效;只有当V+大于4.75V,即电源正常后,比较器输出高电平,与非门UB2解锁,复位电路输出的高电平信号传输到RESET端,使CPU进入复位状态,待上电复位电路中的电容充电结束后,U2A输出低电平,经过UB2和U2C反相后,RESET变为低电平,CPU脱离复位状态。5.电源电子电路要正常工作,电源必不可少,并且电源性能对电路、电子仪器和电子设备
28、的使用寿命、使用性能等影响很大,尤其在带有感性负载的电路和设备中,对电源的性能要求更高。在很多应用直流电的场合中,要求为电路提供1个其输出能从0V开始连续可调(024V)的直流电源,并且要求电源有保护功能。实际上就是要求电源具有足够调压范围和带负载能力的直流稳压电源电路。该电路的关键在于稳压电路的设计,其要求是输出电压从0V开始连续可调;所选器件和电路必须达到在较宽范围内输出电压可调;输出电压应能够适应所带负载的启动性能。此外,电路还必须简单可靠,能够输出足够大的电流。本次设计所采用的AT89C51型单片机,以及驱动电路中的74HC595集成电路所需的采用+5V直流电压供电,所以要求电源部分能
29、够提供稳定可靠的+5V电源。尽管通过计算,可以设计出交流220V转为5V的直流稳压电源,但是考虑到实际应用过程中计算值与实际值必然存在一定的偏差,使得电源的输出不够稳定,为更好的获得+5V的电压,我们采用可调式的电压源,这样可以最大限度的保证电源的稳定性。稳压电路如图8所示,R2/R1的比值范围只能是0到28.6并且必须保证R10.83K,R223.74K两个不等式同时成立。LM317是美国National Semiconductor公司产品,对应我国型号为CW3I7.LM317集成稳压器其输出电压调节范围可达0V到23V,输出电流可达1.5A。内部带有过载保护电路,具有稳压精度高、工作可靠等
30、特点。VD1到VD4为四个整流二极管,构成整流电路。图8稳压电路如图6.软件设计本次设计采用C语言编程,其优点在于与汇编语言相比在处里中断问题时不用考虑中断入口,现场保护和现场恢复处理等,这些问题都由系统自动解决,因此使得程序更加简明易懂。同时C语言也有更好的移植性与适应性,主函数程序流程图如图9所示。调用初始化模块Switch(sec)调用锁存脉冲模块调用延时模块调用地址控制模块生成地址调用扫描输出模块r赋初值0无限循环R<16?breakYN定义r为字符图9主函数流程图由于主函数采用多分支结构语句switch来编写因此仅以一条分支的流程图就可以表示出整个主函数的逻辑结构,所以我们采用
31、图9所示的单分支的流程图来阐述主函数的流程图。此外,其他五个模块的流程图如下所示:调用延时模块P+P赋初值0P<200?定义字符变量P令P1.5管脚输出1令P1.5管脚输出0令P1.4管脚输出1图10延时模块流程图图11地址控制模块流程图P1.6管脚输出1P1.2管脚输出1P1.6管脚输出1P1.2管脚输出1T0定时方式1定时器载入初值50ms启动定时器总中断打开允许输出图12锁存脉冲模块图13初始化模块定义字符型变量i,j将点阵码下部送入ji赋值0i+i赋初值0提取点下部位数据P1.1管脚产生正脉冲j中数据左移1位将点阵码上部送入jj中数据左移1位P1.1管脚产生正脉冲i+提取点上部位
32、数据i<8?i<8?YNYN图14列扫描输出模块根据流程图,可以比较容易的看出整个程序的结构及其运行过程。程序执行时首先调用初始化模块,随后便开始反复列扫描输出。输出时,通过调用地址控制模块,锁存脉冲模块和延时模块来控制点阵码的输出与地址的更新。值得说明的是,调用初始化函数时,系统会因响应定时器中断而自动执行定时中断函数,及其中断服务,而这个中断由系统控制,不被任何函数调用,这是对AT89C51采用C语言编程的特殊之处。此函数用来控制每个字的显示时间。其流程图如图15所示。等待响应定时器中断定时器赋初值50ms计数器计满40计数器加1显示字的序号加1计数器清零YN图15定时中断流程
33、图到此,软件部分的基本设计已经完成,详细的程序请见附录。7.设计总结通过本次设计自己的知识得到了进一步的巩固,加强了理论联系实际的能力,同时也反映出很多不足。现总结如下:本次设计的优点在于采用AT89C51单片机作为系统的核心器件,它比传统的8031具有更大的存储空间以及更高的可靠性。编程方面,与8031相比其兼具汇编语言以及C语言编程的特点使得系统的编程更加灵活,因此使得系统的适应性得到提高。可以通过C语言编程的灵活性与可移植性进一步升级系统的软件功能,延长了系统的开发周期,节约硬件成本。此外系统备置了可调直流稳压电压源。可调式的电压源使得输入电压的稳定性得到提高。可以最大限度的排除因为硬件
34、以及市电不稳等因素造成的电压不稳问题,避免元件因电压不稳而损坏。本系统还配置了常用的掉电与复位电路,保证了市电断电时数据的安全与系统的重新启动。本次设计也存在一些不足,硬件方面,虽然在选择芯片时于对其功能的研究及使用方法有了比较深入的学习,但是对其工作参数的考虑较少,这有可能导致设计出的系统在工作电压,电流以及时钟等参数上有所差异,影响系统的稳定性。此外当驱动的LED增加时,其所需的驱动电流也将增加,此时就需要添加三极管放大器。本次设计没有考虑到这种情况,所以设计存在应用上的局限性。软件方面,由于编程时所采用的C语言是应用于单片机的,这与所学过的C语言编程有着一定的差别,同时,对AT89C51
35、采用C语言编程又有着响应中断的自动性,所以编出的程序可能存在逻辑上的偏差,导致程序无法执行。此外定时器部分也存在着定时偏差,虽然可以通过计算减小这种偏差,但是并不能完全消除,这有可能导致偏差的积累从而使得扫描显示的混乱。上述不足一定程度上是可以弥补的,硬件方面可以通过对所选元件工作参数的挑选与匹配达到增强系统稳定性的目的。而软件方面的不足则可以通过对C语言的深入学习来改善编程的方法与技巧,从而达到改善程序运行稳定性的目的。总之,硬件与软件是不可分开的两个部分,在今后的设计中要更加充分的考虑硬件与软件的结合,争取达到硬件匹配合适软件逻辑清晰。附录程序功能: 依序显示10个字。 /- #inclu
36、de <AT89X51.H> sbit Sdat=P10; /定义Sdat为点阵数据引脚 sbit Sclk=P11; /定义Sclk为数据时钟引脚 sbit Slat=P12; /定义Slat为数据锁存引脚 sbit Clr=P13; /定义Clr为总清除引脚 sbit Ddat=P14; /定义Ddat 为地址数据引脚 sbit Dclk=P15; /定义Dclk为地址时钟引脚 sbit Dlat=P16; /定义Dlat为地址锁存引脚 sbit OE=P17; /定义OE为控制引脚unsigned char msec,sec;/-unsigned char code tong
37、= 0x00,0x7F,0x40,0x48,0x49,0x49,0x49,0x49, /“同”字点阵码 0x49,0x49,0x49,0x48,0x40,0x7F,0x00,0x00, 0x00,0xFF,0x00,0x00,0xF8,0x10,0x10,0x10, 0x10,0x10,0xF8,0x02,0x01,0xFE,0x00,0x00, ;unsigned char code yi= 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01, /“ 一 ”字点阵码 0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x00, 0x00,0x0
38、0,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ;unsigned char code ge= 0x00,0x01,0x01,0x02,0x04,0x08,0x30,0xC7, /“个”字点阵码 0x20,0x10,0x08,0x04,0x06,0x03,0x02,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ;unsigned char code shi= 0x04
39、,0x04,0x04,0x7F,0x04,0x04,0x7F,0x04, /“世字”点阵码 0x04,0x04,0x04,0x7F,0x04,0x04,0x04,0x00, 0x00,0x00,0x00,0xFC,0x04,0x04,0xE4,0x44, 0x44,0x44,0x44,0xE4,0x0C,0x04,0x00,0x00, ;unsigned char code jie= 0x00,0x00,0x00,0xff,0x92,0x92,0x92,0xff, /“界”字点阵码 0x93,0x92,0x92,0x92,0xff,0x00,0x00,0x00, 0x00,0x10,0x10,
40、0x21,0x22,0x44,0xB8,0x00, 0x00,0xff,0x40,0x40,0x20,0x30,0x20,0x00, ;unsigned char code ton= 0x00,0x7F,0x40,0x48,0x49,0x49,0x49,0x49, /“同”字点阵码 0x49,0x49,0x49,0x48,0x40,0x7F,0x00,0x00, 0x00,0xFF,0x00,0x00,0xF8,0x10,0x10,0x10, 0x10,0x10,0xF8,0x02,0x01,0xFE,0x00,0x00, ;unsigned char code y= 0x00,0x01,0x
41、01,0x01,0x01,0x01,0x01,0x01, /“一”字点阵码 0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ;unsigned char code g= 0x00,0x01,0x01,0x02,0x04,0x08,0x30,0xC7, /“个”字点阵码 0x20,0x10,0x08,0x04,0x06,0x03,0x02,0x00, 0x00,0x00,0x00,0x00,0x00,
42、0x00,0x00,0xFE, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ;unsigned char code meng= 0x02,0x22,0x24,0x28,0xFF,0x29,0x26,0x02, /“梦”字点阵码 0x24,0x28,0xFF,0x30,0x2C,0x26,0x24,0x00, 0x00,0x01,0x11,0x11,0x62,0xA2,0x94,0x8C, 0x88,0x90,0xA0,0xC0,0x80,0x00,0x00,0x00, ;unsigned char code xiang= 0x10,0x13,0x1C,0x
43、FF,0x18,0x16,0x10,0x00, /“想”字点阵码 0x7F,0x54,0x54,0x54,0x54,0x7F,0x00,0x00, 0x80,0x02,0x0E,0x80,0x1C,0x02,0x02,0x22, 0x9A,0x82,0x82,0x86,0x80,0x90,0x0C,0x00, ; /- 延时模块 - void delay(void ) /延时函数 unsigned char p; for(p=0;p<200;p+); /- 列扫描输出模块 - sj_uot(unsigned char as,unsigned char bs) / 列扫描输出函数 unsigned char i,j; /声明i,j为字符型变量 j=bs; for(i=0;i<8;i+) /循环8次,一个字节 Sdat=j&0x01; /提取下部的位数据 Sclk=1; /脉冲上沿实现移位 Sclk=0; j>>=1; j=as; for(i=0;i<8;i+) /循环8次,一个字节 Sdat=j&0x01; /提取上部的位数据 Sclk=1; /脉冲上沿实现移位 Sclk=0; j>>=1; /- 初始化模块 -void Init(void) /定时器设
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度咖啡馆餐厅托管运营管理服务合同
- 2025年网络建设工程合同
- 矿山修复挖掘机租赁合同
- 家电维修配件快递配送合同
- 宠物运输服务合同模板适用
- 广告创意实现居间合同
- 互联网接入服务合同
- 广告代理合同2024
- 环保工程责任免除合同
- 船舶制造合同
- 护理人文知识培训课件
- 安徽省合肥市2025年高三第一次教学质量检测地理试题(含答案)
- 2025年新合同管理工作计划
- 统编版八年级下册语文第三单元名著导读《经典常谈》阅读指导 学案(含练习题及答案)
- 风光储储能项目PCS舱、电池舱吊装方案
- TTJSFB 002-2024 绿色融资租赁项目评价指南
- 全新车位转让协议模板下载(2024版)
- 光伏项目安全培训课件
- 全面解读新能源法律风险与应对措施
- 民法学详细教案
- 浙江省杭州市2023年中考一模语文试题及答案
评论
0/150
提交评论