1601云腾单片机课程设计报告.docx
《1601云腾单片机课程设计报告.docx》由会员分享,可在线阅读,更多相关《1601云腾单片机课程设计报告.docx(20页珍藏版)》请在冰豆网上搜索。
1601云腾单片机课程设计报告
《单片机课程设计》
题目:
学生信息显示与查询系统设计
院系名称:
信息科学与工程学院专业班级:
电信1305
学生姓名:
袁前程学号:
201316020501
指导教师1:
朱春华教师职称:
副教授
指导教师2:
邢超教师职称:
讲师
课程设计时间:
2016-9-5—2016-9-16
电信1305专业课程设计任务书
学生姓名
袁前程
专业班级
电信1305
学院
信息科学与工程学院
题目
学生信息显示与查询系统设计
课程类别
集中实践环节
课程性质
必修
指导教师
朱春华、邢超
同组姓名
主要内容
用51单片机、16*32点阵式LED、4*4键盘以及串行接口组成学生信息的显示与查询系统设计。
基本要求是在键盘输入学生姓名后,点阵LED屏能够滚动显示学生相关信息:
如姓名、学号、性别、班级、组名等信息。
要求开机显示内容为设计者本人的基本信息,同时可以查询实验小组内的其他人员基本信息。
可提分内容:
可以通过电路的串行接口接收上位机程序的指令和查询信息并在电路板LED屏上显示。
任务要求
1.根据功能要求选择设计方案,并进行论证。
2.完成系统整体设计方案,画出电路的总体方框图,并在Proteus上设计出原理图。
3.绘制程序说明及流程图并完成程序设计,要求用汇编程序编写或与C程序的混合编程。
4.在Proteus对电路及程序进行仿真调试,直到正确显示所要求信息的直观显示效果。
5.写出经验体会和总结,撰写课程设计报告。
参考文献
1.单片机技术有关教材
2.电路设计手册
3.其他资料
审查意见
指导教师签字:
教研室主任签字:
年月日
说明:
本表由指导教师填写,由教研室主任审核后下达给选题学生,装订在设计(论文)首页
目录
1引言1
1.1设计意义1
1.2系统功能要求1
1.3设计环境1
2方案设计3
2.1总体设计3
2.2设计论证3
3硬件设计5
3.1硬件设计要求5
3.2硬件电路设计5
3.3设计原理图7
4软件设计8
4.1主程序设计8
4.2显示驱动程序设计8
4.3显示程序设计9
4.4通信程序的设计9
5系统调试11
5.1软件调试11
5.2硬件调试11
6设计总结12
7.参考文献13
附录(软件仿真图)14
16×16点阵LED室内电子显示屏的设计
摘要:
LED点阵显示屏在银行、车站、医院、街头、公交车等随处可见。
LED显示屏作为一种新型的显示器件,点阵模块是以发光二极管为像素单元,由多个发光二极管按矩阵形式排列封装而成,通常用来显示时间、图文等信息。
本设计是基于AT89C51单片机的16x16显示屏,其中包含了硬件、软件、调试等方案的设计。
此外,该设计只需简单的级联就能实现显示屏的拓展,但级联时要注意不要超过驱动负载范围。
关键词:
AT89C51;LED点阵;矩阵键盘
1引言
1.1设计意义
LED点阵显示屏是集微电子技术、计算机技术、信息处理技术于一体的大型显示屏系统。
它以其色彩鲜艳,动态范围广,亮度高,寿命长,工作稳定可靠等优点而成为众多显示媒体以及户外作业显示的理想选择。
LED电子显示屏是随着计算机及相关的微电子﹑光电子技术的迅猛发展而形成的一种新型信息显示媒体。
它利用发光二极管构成的点阵模块或像素单元组成可变面积的显示屏幕,以可靠性高、使用寿命长、环境适应能力强、性能价格比高、使用成本低等特点,在短短的十来年中,迅速成长为平板显示的主流产品,在信息显示领域得到了广泛的应用,LED显示屏显示画面色彩鲜艳,立体感强,静如油画,动如电影,广泛应用到军事、车站、宾馆、体育、新闻、金融、证券、广告以及交通运输等许多行业。
它的优点是:
亮度高、工作电压低、功耗小、微型化、易与集成电路匹配、驱动简单、寿命长、耐冲击、性能稳定。
目前大多数的LED点阵显示系统自带字库。
其显示和动态效果(主要是显示内容的滚动)的实现主要依靠硬件扫描驱动,该方法虽然比较方便,但显示只能按照预先的设计进行。
本文讲述了基于AT89C51单片机16×32LED汉字点阵滚动显示的基本原理、硬件组成与设计、程序编写与调试、Proteus软件仿真等基本环节和相关技术。
1.2系统功能要求
设计一个能显示16×32点阵文字LED显示屏,要求点阵LED屏能够滚动显示学生相关信息:
如姓名、学号、性别、班级等信息,显示图文或文字应稳定、清晰,并能够滚动显示。
要求开机信息显示必须是设计者本人信息,查询人员信息范围可在班级内查询。
1.3设计环境
1.Keil
KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。
Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(μVision)将这些部分组合在一起。
C51工具包的整体结构,μVision与Ishell分别是C51forWindows和forDos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。
开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。
然后分别由C51及C51编译器编译生成目标文件(.obj)。
目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.abs)。
abs文件由OH51转换成标准的hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。
KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。
另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil的优势。
如果使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。
2.Proteus
Proteus软件是英国LabCenterElectronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
它是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等。
支持主流的CPU类型:
如ARM7、8051/52、AVR、PIC10/12、PIC16、PIC18、PIC24、dsPIC33、HC11、BasicStamp、8086、MSP430等,CPU类型随着版本升级还在继续增加,如即将支持CORTEX、DSP处理器;支持通用外设模型:
如字符LCD模块、图形LCD模块、LED点阵、LED七段显示模块、键盘/按键、直流/步进/伺服电机、RS232虚拟终端、电子温度计等等,其COMPIM(COM口物理接口模型)还可以使仿真电路通过PC机串口和外部电路实现双向异步串行通信。
在PROTEUS绘制好原理图后,调入已编译好的目标代码文件:
*.HEX,可以在PROTEUS的原理图中看到模拟的实物运行状态和过程。
2方案设计
2.1总体设计
图2-1总设计原理图
2.2设计论证
图文显示一般有静态和动态显示两种方案,静态方案虽然设计简单,但其使用的管脚太多,如本设计中16x16的点阵共有256个发光二极管,显然单片机没有这么多的端口,如果我采用锁存器来扩展端口,按8位的锁存器来计算,16x16的点阵需要256/8=32个锁存器。
这个数字很庞大,因为我们仅仅是16x16的点阵,在实际应用中的显示屏往往要大得多,这样在锁存器上花的成本将是一个很庞大的数字。
因此在实际应用中的显示屏几乎都不采用这种设计,而采用另外一种称为动态扫描的显示方法。
动态扫描的意思简单地说就是逐行轮流点亮,这样扫描驱动电路就可以实现多行(比如16行)的同名列共用一套驱动器。
具体就16x16的点阵来说,把所有同1行的发光管的阳极连在一起,把所有同1列的发光管的阴极连在一起(共阳极的接法),先送出对应第一行发光管亮灭的数据并锁存,然后选通第1行使其燃亮一定时间,然后熄灭;再送出第二行的数据并锁存,然后选通第2行使其燃亮相同的时间,然后熄灭;以此类推,第16行之后,又重新燃亮第1行,反复轮回。
当这样轮回的速度足够快(每秒24次以上),由于人眼的视觉暂留现象,就能够看到显示屏上稳定的图形了。
采用扫描方式进行显示时,每一行有一个行驱动器,各行的同名列共用一个驱动器。
显示数据通常存储在单片机的存储器中,按8位一个字节的形式顺序排放。
显示时要把一行中各列的数据都传送到相应的列驱动器上去,这就存在一个显示数据传输的问题。
从控制电路到列驱动器的数据传输可以采用并列方式或串行方式。
显然,采用并行方式时,从控制电路到列驱动器的线路数量大,相应的硬件数目多。
当列数很多时,并列传输的方案是不可取的。
采用串行传输的方法,控制电路可以只用一根信号线,将列数据一位一位传往列驱动器,在硬件方面无疑是十分经济的。
但是,串行传输过程较长,数据按顺序一位一位地输出给列驱动器,只有当一行的各列数据都以传输到位之后,这一行的各列才能并行地进行显示。
这样,对于一行的显示过程就可以分解成列数据准备(传输)和列数据显示两部分。
对于串行传输方式来说,列数据准备时间可能相当长,在行扫描周期确定的情况下留给行显示的时间就太少了,以致影响到LED的亮度。
解决串行传输中列数据准备和列数据显示的时间矛盾问题,可以采用重叠处理的方法。
即在显示本行各列数据的同时,传送下一列数据。
为了达到重叠处理的目的,列数据的显示就需要具有所存功能。
经过上述分析,就可以归纳出列驱动器电路应具有的功能。
对于列数据准备来说,它应能实现串入并处的移位功能;对于列数据显示来说,应具有并行锁存的功能。
这样,本行已准备好的数据打入并行锁存器进行显示时,串并移位寄存器就可以准备下一行的列数据,而不会影响本行的显示。
3硬件设计
3.1硬件设计要求
显示系统具体设计主要由单片机系统,通信系统,译码电路,显示驱动电路和16×32的点阵屏六部分组成。
具体工作流程为:
单片机通过通信系统发送控制指令和显示代码内容,接收后执行控制指令处理显示代码将显示内容通过I/O口串行输出并且控制译码电路完成串并转换并行输出,最后由显示驱动电路进行电压和电流的处理以达到LED显示屏的显示电流,电压要求进而使显示屏显示内容。
该系统所要实现的功能和要求有以下几点:
(1)LED显示屏的面积必须满足至少显示一个汉字的标准。
并且显示要清晰.
(2)驱动电路要能提供LED显示所需范围内的电压和电流要求。
(3)译码电路的高低电平的区分能力以及译码的输入输出频率必须满足单片机以及驱动电路的要求。
(4)单片机要能接收上位机的指令和显示内容且能够处理后控制LED显示屏的显示,并且端口驱动能力要足以驱动译码电路。
执行频率要能达到扫描显示的最低要求。
(5)由串口完成单片机与下位机的通信,通信速度和数据传输的可靠性要达到显示要求。
3.2硬件电路设计
根据显示系统的功能特点确定系统硬件由显示屏部分,控制部分,通信系统,译码部分及16×32的点阵屏五部分组成。
单片机通过通信部分向控制部分发送控制指令和显示内容代码,控制部分执行显示指令并将显示代码处理后控制显示部分的显示内容和显示方式。
控制部分是整个系统的核心部分,其功能为与单片机通信接收单片机发送的数据和控制指令处理过后控制显示部分显示内容,在本设计中选择由Atmel公司生产的AT89c51单片机来完成控制工作。
通信部分要满足的设计要求就是稳定、快速、简单易实现。
本设计为了节约单片机外部的IO端口,采用串行通信方式。
串行通信数据是一位一位顺序传送,只用很少几根通信线,在串行发送时,数据是一位一位按顺序进行的,而单片机内部的数据是并行的。
因此,当单片机向外发送数据时,必须将并行数据转换为串行数据再发送。
接收时,要先通过串并转换电路,再接到对应LED点阵引脚上,控制LED的状态。
显示部分包括了一块至少可以显示一个汉字的显示屏(16×16的LED点阵),以及驱动该显示屏的驱动电路。
由于单片机的I/O口有限要不能直接用I/O口来驱动LED显示屏,所以需要对单片机IO口进行扩展增加单片机并行输出的能力。
LED显示屏是由一个一个的发光二极管点阵构成的,要构成大屏幕的LED显示屏就需要多个发光二极管。
目前市场上普遍采用的点阵模块有5×7、8×8、16×16几种。
图3-18×8LED点阵图
译码电路部分的功能是为了解决单片机I/O端口不足。
行译码所用器件为串并转换器74HC595和译码器74LS154。
一个16×16的LED显示屏行和列各有16支引脚,不能单靠51单片机的端口驱动所以必须要对单片机的端口个数进行扩展。
经常采用的端口扩展方法是用串并转换芯片进行译码。
常用的串并转换芯片有74LS154(4线-16线译码器)、74LS164(8位串并转换器)、74HC595等。
51系列单片机端口低电平时,吸入电流可达20mA,具有一定的驱动能力;而为高电平时,输出电流仅数十μA甚至更小(电流实际上是由脚的上拉电流形成的),基本上没有驱动能力,所以单片机不能直接驱动LED显示屏显示。
在单片机和显示屏之间还需要增加以功能放大为目的的驱动电路。
3.3设计原理图
根据硬件要求,选择好合适的元器件,在Proteus软件中绘制原理图。
设计的电路原理图如图3-2所示:
该原理图包括AT89C51单片机,16×32LED点阵显示屏,4×4矩阵键盘,串口,串并转换74HC595,74LS154(4线-16线译码器)译码器等器件。
(本原理图采用网络标号法,故看不出具体连线)
图3-2设计原理图
4软件设计
4.1主程序设计
系统软件采用C语言编写,按照模块化的设计思路设计。
首先分析程序所要实现的功能,程序要实现串口通信,键盘扫描,动态显示三大功能。
通信系统部分接收单片机发来的数据,交给主程序处理再通过控制程序选择不同的显示程序进行显示出相应的字符。
主程序流程图如图4-1所示:
图4-1主程序流程图
4.2显示驱动程序设计
显示驱动程序在进入中断后首先要对定时器T0重新赋初值,以保证显示屏刷新率的稳定,1/16扫描显示屏的刷新率(帧频)计算公式如下:
刷频率(帧频)=1/16×T0溢=1/16×f/12(65536-t)
其中f位晶振频率,t为定时器T0初值(工作在16位定时器模式)。
然后显示驱动程序查询当前燃亮的行号,从显示缓存区内读取下一行的显示数据,并通过串口发送给移位寄存器。
为消除在切换行显示数据的时候产生拖尾现象,驱动程序先要关闭显示屏,即消隐,等显示数据打入输出锁存器并锁存,然后再输出新的行号,重新打开显示。
图4-2所示为显示驱动程序(显示屏扫描函数)流程图:
4.3显示程序设计
LED点阵屏显示方式主要由静态显示和动态扫描显示两种。
本设计采用的是动态扫描显示。
动态扫描显示是把整个LED屏幕分成若干部分,每一幅画面的显示是显示完一部分后,又显示第二部分……直到显示完最后一部分又重新开始显示第一部分,重复循环进行.在重复扫描速度足够快的情况下,我们看到的就是一幅稳定的画面.也就是说采用动态扫描显示需要不断进行画面的刷新.在这种方式下其显示驱动电路可重复利用,引线也大大减少,从而使硬件成本降低,且屏幕上的发光二极管轮流发光,使用时的耗电量大大降低.大屏幕的制造、维护要容易许多,可靠性也增加了。
动态扫描分为行扫描和列扫描两种方式区别在于选通端和数据输入端分别是行还是列。
先选通列然后再从行送入对应列的数据,这样从第1列到第32列循环往复,只要切换的速度足够的快利用人眼的延时特性就可以看见一幅稳定的画面。
图4-2显示驱动流程图
4.4通信程序的设计
系统采用串行中断的方式进行通信。
MCS-51单片机的五个中断源两种类型:
一类是外部中断源;另一类是内部中断源,包括两个定时器/计数器(T0和T1)的溢出中断和串行口的接收和发送中断。
MCS-51单片机设置了4个专用寄存器用于中断控制,分别为定时器控制寄存器(TCON),串行口中断控制器(SCON),中断允许控制寄存器(IE),中断优先级控制寄存器(IP)。
编程时通过设置其状态来管理中断系统。
在使用中断程序时,首先是将中断控制寄存器(IE)初始化。
其控制位分布如表3-1。
EA为中断允许总控制位,EA=1时CPU开发中断;EA=1时。
CPU屏蔽所有中断。
ES、ET、EX1、ET0、EX0为对应的串行口中断、定时器/计数器1中断、外部中断1中断、定时器/计数器0中断、外部中断0中断的中断允许位。
对应位为1时允许其中断,对应位为0时,禁止其中断。
表4-1中断控制寄存器IE
D7
D6
D5
D4
D3
D2
D1
D0
EA
-----
-----
ES
ET1
EX1
ET0
EX0
串口中断程序流程图如图4-6所示,在主程序中先进行了串行中断的初始化,初始化内容包括了串行工作方式选择,波特率的设定,计数初值的设定。
程序开始进入中断等待,当单片机发送数据时产生中断接收允许位RI置1,SBUF(缓冲寄存器)中的值输入到暂存器中进行数据处理。
首先判断数据是否设定的起始标志位‘x’如果是则开始接收起始位后的32个字节,不是则中断返回继续等待。
接收到第33个字节后便将收到的数据发送回单片机进行验证比较。
5系统调试
调试之前,首先在proteus仿真软件中添加元器件后,先做各单元电路模块,最后将各个模块正确连线之后,原理图就绘制完成了。
利用Proteus软件将总的硬件原理图绘制好后,还要设计好各模块要使用的I/O口。
5.1软件调试
利用C语言的编程方式,将系统要求的基本功能,以及创新功能根据程序流程图编写出来,经过一步步地修改和完善,最终程序编写完成。
用Keil软件调试无误后,生成Hex文件。
5.2硬件调试
硬件调试主要是在Proteus仿真软件上做硬件调试工作。
双击Proteus中的AT89C51芯片,将Keil生成的Hex文件加载到芯片内,进行仿真,经不断修改和完善后,调试后所编写的程序能够完美实现系统所需的基本功能。
能够显示出自己的姓名,学号,班级,但有些字显示不完整。
又经过修改和完善之后,个人的信息显示正确,并能够滚动显示。
当按其他按键时,也能够显示同学的信息,按键错误时,会提示信息有误。
(软件仿真图片见附录)。
6设计总结
两周的时间,终于完成了基于AT89C51单片机的LED个人信息显示系统的设计。
LED点阵进行了详细的资料收集,对LED进行了了解。
通过了解我认识到LED是一门当今应用非常广泛的技术,并且在日常生活中随处可以见到,应用非常广泛。
从设计之初就确定了参照大屏幕显示屏的实现方法和实际情况设计一款小屏幕的LED点阵显示屏。
在查阅了大量的大屏幕显示屏资料后确定了题目的设计方案。
整个设计采用AT89c51做为控制器,串行输出,译码,点阵显示等。
在LED点阵显示屏的设计过程中,复习了Protel、Proteus、Keil等软件的基础应用。
在实现这一设计的过程中所遇到的问题和困难给我留下了宝贵的经验和深刻教训。
这些经验和教训是:
首先,在设计之前应该进行大量的资料收集和分析,确定一个清晰的设计思路,否则中途会很迷茫,没有头绪。
而且,对于器件选择,要详细阅读器件使用说明书,不但要考虑器件的功能实现还要考虑器件在整个系统中的兼容性;硬件的系统的建立必须合理和稳定,实物建立之前最好进行仿真这样才能为软件提供一个可靠的试验平台;对于编写的软件,不但要实现基本功能,还要不断的优化、简练、易懂。
7.参考文献
[1]刘欣铭,张广斌.LED显示屏技术综述[J].黑龙江电力,2003,25(4):
294-296.
[2]阳进.基于单片机的LED显示屏的汉字显示[J].中国科技信息,2005,(12):
112.
[3]MarkNelson著.潇湘工作室译.串行通信开发指南[M].中国水利水电出版社,2002.
[4]王宜怀.单片机原理及其嵌入式应用教程[M].北京希望电子出版社,2002.
[5]韩润萍,陈小萍.点阵LED显示屏控制系统[J].微计算机信息,2003,19(10):
50-51.
附录(软件仿真图)