1、二是通过制作LED点阵增强对LED点阵的了解和应用,以及复习和巩固单片机知识。1 芯片介绍 LED点阵总体框图如图1所示,点阵电路大体上可以分成微机本身的硬件、显示驱动电路、控制信号电路三部分。控制电路部分包括一个51CUP和一些外围电路。在整个电路当中此控制电路部分相当于一个上位机,它负责控制整个电路以及相应的程序的运行、与PC机的串行通讯、以及给屏体电路部分发送命令。点阵显示屏体以及它的行和列的各个驱动电路。由于两部分的电路在制板时可以放在一起,所以可以将其字库放到控制电路部分使用串行通讯方式来与屏体电路部分进行数据和命令的传送。此显示电路采用扫描方式进行显示时,每行有一个行驱动器,各行的
2、同名列共用一个列驱动器。由行译码器给出的行选通信号,从第一行开始,按顺序依次对各行扫描(把该行与电源的一端接通)。另一方面,根据各列锁存的数据,确定相应的列驱动器是否将该列与电源的另一端接通。接通的列就在该行该列点燃相应的LEDl未接通的列所对应的LED熄灭。可通过扫描输出口的控制实现颜色的转换。图1 点阵的总体框图1.1 51系列单片机简介单片机(Microcontroller,又称微处理器)是在一块硅片上集成了各种部件的微型机,这些部件包括中央处理器CPU、数据存储器RAM、程序存储器ROM、定时器/计数器和多种I/O接口电路。8051单片机的基本结构见图2。图2 8051单片机的基本结构
3、8051系列的部结构可以划分为CPU、存储器、并行口、串行口、定时器/计数器、中断逻辑几部分。11.1中央处理器8051的中央处理器由运算器和控制器构成,其中包括若干特殊功能寄存器(SFR)。算术逻辑单元ALU能对数据进行加、减、乘、除等算术运算;“与”、“或”、“异或”等逻辑运算以及位操作运算。ALU只能进行运算,运算的操作数可以事先存放到累加器ACC或寄存器TMP中,运算结果可以送回ACC或通用寄存器或存储单元中,累加器ACC也可以写成A。B寄存器在乘法指令中可以用来存放一个乘数,在除法指令中用来存放除数,运算后B中为部分运算结果。ALU主要用于完成二进制数据的算术和逻辑运算,并通过对运算
4、结果的判断影响程序状态字寄存器PSW中有关位的状态。 CY:进位标志。在进行加法或减法运算时,若运算结果的最高位有进位或借位,CY=1,否则CY=0,在执行位操作指令时,CY作为位累加器。AC:辅助进位标志。在进行加法或减法运算时,若低半字节向高半字节有进位或借位, AC=1,否则AC=0,AC还作为BCD码运算调整时的判别位。F0:用户可设定的标志位,可置位/复位,也可供测试。 OV:溢出标志。当两个带符号的单字节数进行运算,结果超出-128+127的围时,OV=1,表示有溢出,否则OV=0表示无溢出。 P:奇偶校验标志。每条指令指行完毕后,都按照累加器A中“1”的个数来决定P值,当“1”的
5、个数为奇数时,P=1,否则P=0。PSW中的D1位为保留位,对于8051来说没有意义,对于8052来说为用户标志,与F0相同。 控制器包括程序计数器PC、指令寄存器、指令译码器、数据指针DPTR、堆栈指针SP、缓冲器以及定时与控制电路等。控制电路完成指挥控制工作,协调单片机各部分正常工作。程序计数器PC:当一条指令按PC所指向的地址从程序存储器中取出之后,PC的值会自动增量,即指向下一条指令。堆栈指针SP:用来指示堆栈的起始地址。80C51单片机的堆栈位于片RAM中,而且属于“上长型”堆栈,复位后SP被初始化为07H,使得堆栈实际上由08H单元开始。指令译码器:当指令送入指令译码器后,由译码器
6、对该指令进行译码,CPU根据译码器输出的电平信号使定时控制电路产生执行该指令所需要的各种控制信号。数据指针寄存器DRTR:它是一个16位寄存器,由高位字节DPH和低位字节DPL组成,用来存放16位数据存储器的地址,以便对片外64kB的数据RAM区进行读写操作。片RAM有256个字节,其中00H7FH地址空间是直接寻址区,该区域从00H1FH地址为工作寄存器区,安排了4组工作寄存器,每组都为R0R7,在某一时刻,CPU只能使用其中任意一组工作寄存器,由程序状态字PSW中RS0和RS1的状态决定。1.1.2存储器组织8051单片机在物理上有三个存储空间:片数据存储器RAM 、片外数据存储器RAM
7、、程序存储器ROM 。程序存储器ROM地址空间为64kB,片外数据存储器RAM也有64kB的寻址区,在地址上是与ROM重迭的。8051单片机通过不同信号来选通ROM或RAM。当从外部ROM中取指令时,采用选通信号PSEN,而从外部RAM中读写数据时则采用读RD和写WR信号或来选通,因此不会因地址重迭而发生混乱。片RAM的20H2FH地址单元为位寻址区,其中每个字节的每一位都规定了位地址。每个地址单元除了可进行字节操作之外,还可进行位操作。片RAM的80HFFH地址空间是特殊功能寄存器SFR区,对于51子系列在该区域安排了21个特殊功能寄存器,对于52子系列则在该区域安排了26个特殊功能寄器,同
8、时扩展了128个字节的间接寻址片RAM,地址也为80FFH,与SFR区地址重迭。8051的存储器组成结构如图3所示。图3 8051的存储器组成结构11.3管脚说明VCC:供电电压。GND:接地。P0口(P0.0P0.7):该端口为漏极开路的8位准双向口,它为外部低8位地址线和8位数据线复用端口驱动能力为8个LSTTL负载。P1口(P1.0P1.7):它是一个部带上拉电阻的8位准双向I/O口,P1口的驱动能力为4个LSTTL负载。P2口(P2.0P2.7):它为一个部带上拉电阻的8位准双向I/O口,P2口的驱动能力也为4个LSTTL负载。在访问外部程序存储器时,作为高8位地址线。P3口(P3.0
9、P3.7):为部带上拉电阻的8位准双向I/O口,P3口除了作为一般的I/O口使用之外,每个引脚都具有第二功能。P3口也可作为AT89C51的一些特殊功能口,如下所示:P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(计时器0 外部输入)P3.5 T1(计时器1 外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。时钟电路引脚XTAL1和XTAL2: XTAL1:接外部晶振和微调电容的一端,在片它是振荡器倒相放大器的输
10、入,若使用外部TTL时钟时,该引脚必须接地。 XTAL2:接外部晶振和微调电容的另一端,在片它是振荡器倒相放大器的输出,若使用外部TTL时钟时,该引脚为外部时钟的输入端。地址锁存允许ALE: 系统扩展时,ALE用于控制地址锁存器锁存P0口输出的低8位地址,从而实现数据与低位地址的复用。外部程序存储器读选通信号PSEN:PSEN是外部程序存储器的读选通信号,低电平有效。程序存储器地址允许输入端EA /VPP:当EA为高电平时,CPU执行片程序存储器指令,但当PC中的值超过0FFFH时,将自动转向执行片外程序存储器指令。当EA为低电平时,CPU只执行片外程序存储器指令。复位信号RST:该信号高电平
11、有效,在输入端保持两个机器周期的高电平后,就可以完成复位操作。1.2 74LS154芯片介绍1.2.1 74LS154功能简介54/74154 为 4 线16 线译码器,当选通端(G1、G2)均为低电平时,可将地址端(ABCD)的二进制编码在一个对应的输出端,以低电平译出。 如果将G1和G2中的一个作为数据输入端,由ABCD对输出寻址,74LS154还可作1线-16线数据分配器。图4是芯片74LS154管脚。图4 芯片74LS154管脚图1.3引脚功能介绍A、B、C、D 译码地址输入端(低电平有效);G1、G2 选通端(低电平有效);015 输出端(低电平有效)。1.4 74LS373芯片介绍
12、该74HC/HCT04是高速的硅栅CMOS器件,并兼容低功耗肖特基的TTL(LSTTL)。他们中指明遵守JEDEC的没有标准。74HC/HCT04提供的6个颠倒缓冲器。74HC04是含6组相同的反相器。即1A输入高电平,1Y输出低电平六反相器。04为六组反相器,共有54/7404、54/74H04、54/74S04、54/74LS04四种线路结构形式,其主要电特性的典型值如下:型号tPLHtPHLPD5404/740412ns8ns60mW54H04/74H046ns6.5ns140mW54S04/74S043ns113mW54LS04/74LS049ns10ns12mW其管脚图如图5。图5
13、74LS373管脚图极限值电源电压7V输入电压 54/7404、54/74H04、54/74S045.5V 54/74LS047V工作环境温度54XXX-5512574XXX070存储温度-65150硬件设计复位信号RST高电平有效,在输入端保持两个机器周期的高电平后,就可以完成复位操作。复位的实现通常用2种方式:开机上电复位和外部手动复位,本设计用的是外部手动复位。电路图6如下:图6 单片机复位图图7 单片机最小应用系统原理图最后,单片机硬件设计总电路图就并联多个8*8的LED组成16*16的点阵,则一个扫描信号同时要驱动两行的LED。如下图8所示。在这个电路中驱动的扫描信号总共有16条,如
14、果直接由8051输出,将占用2个PORT口,浪费资源不太理想,在此使用的是一个4对16位译码器(74LS154),这个译码器是将输入的16进位码输出低态的扫描信号。输出的低态扫描信号可直接接到PNP晶体管的基极,如果太大的话也可以先经过限流电阻在接到PNP晶体管的基极,信号最后经过晶体管的放大后即可推动16个LED点阵了。图8 总电路图3软件设计3.1单片机延时子程序延时子程序在单片机编程中使用非常广泛,也很重要。程序设计是单片机开发最重要的工作,而程序在执行过程中常常需要完成延时功能。在本设计中,行向的扫描要控制每行的扫描时间,还有所有的字移动有一定的时间间隔,而在所有的字移动一遍结束的一瞬
15、间到下一遍移动开始的一瞬间要有延时,这时的延时可以和移动的时间相同以保持移动的连贯性,也可以不同作为每次开始的停顿。3.1.1机器周期和指令周期机器周期是指单片机完成一个基本操作所花费的时间,一般要用微秒来计量单片机的运行速度,51单片机的一个机器周期包括12个时钟振荡周期,也就是说51单片机采用12MHZ晶振,那么执行一个机器周期就只需要1微秒;如果采用的是6MHZ的晶振,那么执行一个机器周期就只需要2微秒。指令周期是指单片机执行一条指令所需要的时间,一般利用单片机的机器周期来计量指令周期。在51单片机里有单周期指令(执行这条指令只需一个机器周期),双周期指令(执行这条指令只需要两个机器周期
16、),四周期指令(执行这条指令需要四个机器周期)。除了乘、除两条指令是四周期指令,其余均为单周期或双周期指令。也就是说,如果51单片机采用的是12MHZ晶振,那么它执行一条指令一般只需12微秒的时间;如果采用的是6MHZ晶振,那么它执行一条指令一般只需24微秒的时间。振荡周期、时钟周期、机器周期、指令周期的关系是:振荡周期:为单片机提供时钟信号的振荡源的周期。时钟周期:振荡源信号经二分频后形成的时钟脉冲信号,为振荡周期的2倍。机器周期:完成一个基本操作所需的时间,通常为12个振荡周期。指令周期:指CPU执行一条指令所需要的时间,一个指令周期通常含有14个机器周期。3.2延时指令在单片机编程里面并
17、没有真正的延时指令,从上面的概念中我们知道单片机每执行一条指令都需要一定的时间,所以要达到延时的效果,只须让单片机不断地执行没有具体实际意义的指令,从而达到了延时的效果。3.2.1数据传送指令MOV数据传送指令功能是将数据从一个地方复制、拷贝到另一个地方。3.2.2空操作指令NOP空操作指令功能只是让单片机执行没有意义的操作,消耗一个机器周期。3.2.3循环转移指令DJNZ循环转移指令功能是将第一个数进行减1并判断是否为0,不为0则转移到指定地点;为0则往下执行。除了可以给定地址标号让其跳转外,还可以将地址符号改成为,这样程序就跳回本指令执行。3.3程序流程图图9 程序流程图4调试或性能分析4
18、.1调试主要分为硬件调试和软件调试硬件调试:在焊接电路板的时候,应该从最基本的最小系统开始,分模块,逐个进行焊接测试。在对各个硬件模块进行调试时,要保证软件正确的情况下去调试硬件,要不然发生错误时就不知道是哪一方出错了。当然,在设计的过程中也存在着失误和不足,在调试中进行修改了。软件调试:软件部分是先参考书上的例子,然后自己根据硬件电路写程序,由于以前所学是单片机汇编语言,所以这个系统在编写程序过程中都采用汇编语言编写。刚刚开始,编写不会一次性通过,经过仔细分析修改最后编译成功。但是,在实际写如S51中,LED显示屏出现各种各样的乱码,通过再次认真仔细分析多次修改程序后,程序能够正常运行。5总
19、结通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。总的来说,这次设计的1616点阵显示控制还是比较成功的,在设计中遇到了很多问题,最后在老师的辛勤的指导下,终于游逆而解,有点小小的成就感,终于觉得平时所学的知识有了实用的价值,达到了理论与实际相结合的目的,不仅学到了不少知识,而且锻炼了自己的能力,使自己对以后的路有了更加清楚的认识,同时,对未来有了更多的信心。最后,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!参考文献1 许爱钧.单片机原理实用教程基于Proteus虚拟仿真(第2版).北京:电子工业出版社,20132 程启明,黄云峰,徐进,永熹.基于汇编与C语言的单片机原理及应用.北京:中国水利水电出版社,20123盛青松.基于AT89C51的设计J;科技信息;2010年32期
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1