此毕业设计论文几乎所有内容都是作者原创,已经查重通过 ,重复率不到5%。程序部分如有疑问,可以qq联系。1366715589
、
电子与信息工程学院 二零一四年六月
天津工业大学 毕业设计(论文)
基于单片机的LED显示屏系统设计
学 生 姓 名 qq1366715589 院 部 名 称 电子与信息工程学院 专 业 电子信息工程 指 导 教 师 职 称
2014年6月1日
天津工业大学毕业设计(论文)任务书
题目 学生姓名 课题类型 基于51单片机的led显示屏系统设计 学院名称 电子与信息工程学院 专业班级 电子1001班 生产实际 我国经济发展迅猛,对信息传播有越来越高的要求,可以相信,LED电子显示屏以其大的显示信息量,寿命长,耗电量小,重量轻,空间尺寸小,稳定性高,易于操作,安装和维护等特点,将在社会经济发展中扮演越来越重要的角色。本设计利用单课题意义 片机对整个系统进行总体控制,进行显示所要显示的汉字和字符。其中显示字模数据有单片机输入显存,点阵的点亮过程有程序控制,由驱动电路完成。点阵采用单色显示,该显示器电路的特点是:点阵的动态显示过程占用时间比较短,亮度均匀。 3.01—3.14 前期资料查询、根据任务要求绘制电路图 任务与进度要求 3.14—3.21 PCB绘制,元件选择、采购. 3.22—4.15 元件焊接,编写产品功能软件。 4.16—4.30 产品下载程序进行调试运行和修改 5.01—6.10 论文写作并整理和修改完成。 [1] 刘全等编著·基于51系列单片机LED显示屏开发技术(第2版):北京航空航天主要参考文献 大学出版社,2011.4. [2] 张凯等编著·MCS-51单片机综合系统及其设计开发·北京:科学出版社,1996:187~189. [3] 朱宇光编著·单片机应用新技术教程·北京:电子工业出版社,2000:301~303. [4] 诸昌钤·LED显示屏系统原理与工程技术·成都:电子科技大学出版社,2000:245~250. 起止日期 备注
2014.03.01—2014.06.01 院长 教研室主任 指导教师
毕业设计(论文)开题报告表
2014 年 1 月 15 日 姓名 题目 学院 电子与信息工程学院 专业 电子信息工程 班级 指导教师 基于51单片机的led显示屏设计 一、与本课题有关的国内外研究情况、课题研究的主要内容、目的和意义: 国内外研究情况:LED产业国外发展较早,技术也比较成熟,据行业协会的不完全统计,从1998年以来,我国LED显示屏行业持续高速速度增长,产业规模不断扩大。目前国内主要LED显示屏制造厂商主要集中在华东、华北、华南区域,大型制造商的市场范围几乎覆盖整个国内市场。就整个行业来说,具有较强的开发能力。就整个LED显示屏系统而言,中国与国际处在同一技术水平,因为国内产品在性价比方面具有得天独厚的优势,市场占有率在90%以上,国外同类产品很难打入中国市场。 课题研究的主要内容:设计一个实用的16*64 LED点阵屏的图文显示,要求在目测条件下LED显示屏各点亮度均匀、充足,可显示图形和文字,显示图形或文字稳定、清晰无串扰。图形或文字显示有静止和移入移出等显示方式。并论证单片机对LED点阵屏的控制电路,驱动电路的设计方法,并根据LED点阵屏的硬件特点, 对其软件实现的算法给出了具体的分析。实现了显示的字体能够进行移动。 目的和意义:本次设计可以使我更加了解我国LED显示屏的发展前景,以及更好的了解了LED显示屏的主要功能和适用范围,并且通过自己不懈的努力,对其工作原理和安装过程更为了解,对一些电子电路知识更为精通。我想通过本次设计所取得成果是巨大的而深远的,对以后的工作会有很大的帮助,其次是通过自己的亲身制作很的提高了我的动手能力 二、进度及预期结果:已经完成原理图设计 起止日期 3.01—3.13 3.14—3.21 3.22—4.15 4.16—4.30 5.01—6.10 完成课题的现有条件 审查意见 主要内容 前期资料查询、原理的了解,方案论证, 电路选择和电路图绘制。 元件选择、采购,电路焊接、程序编写。 程序下载调试、作品修改和定型。 论文写作、整理和定型。 预期结果 LED显示屏各点亮度均匀、充足,可显示图形和文字,显示图形或文字稳定、清晰无串扰。图形或文字显示有静止和移入移出等显示方式。。 全面的图书资料和网络资源,以及实验室条件。 指导教师: 年 月 日 学院意见 主管领导: 年 月 日
天津工业大学毕业论文进度检查记录
题目 学生姓名 基于单片机的LED显示屏系统设计 学院名称 电子与信息工程 专业班级 指导教师职称 指 导 记 录 指导教师姓名 日 期 1.10 2.28 3.6 3.13 3.20 3.27 4.3 4.10 4.17 4.24 4.30 5.8 5.15 5.22 5.26 5.30
天津工业大学本科毕业论文评阅表
(论文类) 题目 基于单片机的LED显示屏系统设计与仿真 学生班级 指标 能体现本专业培养目标,使学生得到较全面训练。题目大小、难度适中,学生工作量饱满,经努力能完成。 题目与生产、科研等实际问题结合紧密。 能独立查阅文献以及从事其他形式的调研,能较好地理 指导教师姓名 满分 10 10 评分 学生姓名 评审项目 选题 课题调研、 解课题任务并提出实施方案;有分析整理各类信息,从文献检索 中获取新知识的能力。 结构严谨,理论、观点、概念表达准确、清晰。 论文撰写 文字通顺,用语正确,基本无错别字和病句,图表清楚,书写格式符合规范。 外文应用 能正确引用外文文献,翻译准确,文字流畅。 论文论点正确,论点与论据协调一致,论据充分支持论点,论证过程有说服力。 论文水平 有必要的数据、资料支持,数据、资料翔实可靠,得出的结论有可验性。 论文有独到见解或有一定实用价值。 合计 意见及建议: 评阅人签名: 15 10 10 5 15 15 10 100 年 月 日
天津工业大学毕业论文成绩考核表 学生姓名 题目 学院名称 电子与信息工程 专业班级 基于单片机的LED显示屏系统设计与仿真 1.毕业设计(论文)指导教师评语及成绩: 成绩: 指导教师签字: 年 月 日 2.毕业设计(论文)答辩委员会评语及成绩: 答辩主席(或组长)签字: 年 月 日 3.毕业设计(论文)总成绩: a.指导教师 给定成绩 b.评阅教师 给定成绩 c.毕业答辩成绩 总成绩 (a×0.5+b×0.2+c×0.3) 成绩: 摘 要
本文主要阐述了用51单片机控制单色16*64的LED点阵屏显示的方法,对LED点阵屏如何进行行列信号控制及信号传输中的驱动问题进行了研究,并讨论了单片机控制系统中关键的数据处理以及发送问题。结果表明采用并行数据输入、串行数据及同步时钟传输的专用电路可大大减少CPU的辅助时间,提高了数据的发送速度。并给出了通过软件控制点阵屏显示的几种方式,如静态显示,分屏显示以及左移显示,对其软件的算法给出了具体分析。基于各种算法我们就可以灵活的运用软件实现各种显示,并将其用于商业用途。
关键词:LED点阵屏;单片机;驱动;扫描
Abstract
This article mainly elaborates the method of using MCU-51 to control single color 16*64 LED lattice screen display, and researching how to carry on the ranks signal control and the question of signal actuation with the LED lattice screen, and discusses the essential data processing and the transmission question in the monolithic integrated circuit control system. The result indicates that CPU non-cutting time can be reduced greatly by using the allocated-use circuit with parallel data input, serial data and synchronism clock transmission, which has raised the data transmitting speed. This system has given several ways to control lattice screen display via software such as the static state display, divided screen display and left shift display, which has given the concrete analysis of software's algorithm. We can realize all kinds of display nimbly by using software based on each algorithm, and use it in the commercial trade .
Key words:LED lattice screen;One-chip computer;Drive;Scan
天津工业大学本科毕业论文
目 录
第一章 绪 论 ............................................ 1
1.1课题的背景和意义 ......................................................................................... 1 1.2 相关技术发展现状 ........................................................................................ 2
1.2.1 LED显示屏发展的简要回顾 ............................................................... 2 1.2.2 我国LED显示屏的发展现状 ............................................................. 3 1.2.3 LED显示屏的发展趋势 ....................................................................... 4
第二章 系统总体设计 ...................................... 6
2.1需求分析 ......................................................................................................... 6 2.2系统组成及功能描述 ..................................................................................... 6 2.3系统的功能描述 ............................................................................................. 7 2.4系统的工作过程 ............................................................................................. 7
第三章 基于51单片机的LED显示屏系统设计 ................. 8
3.1硬件系统总体设计 ......................................................................................... 8
3.1.1 STC90C51的硬件结构 ......................................................................... 8 3.1.2 STC90C51主要性能参数 .................................................................. 9 3.1.4 STC90C51单片机适用领域 ............................................................... 10 3.2 单片机STC90C51电路及外围电路 ............................................................ 10 3.4 LED显示屏扫描电路设计 ............................................................................ 13
3.4.1 LED点阵屏内部结构及显示原理 ..................................................... 13 3.4.2 列扫描电路设计 ............................................................................. 15 3.4.3 行驱动扫描电路设计 ....................................................................... 16
第四章 软件设计 ......................................... 17
4.1系统软件设计思路 ....................................................................................... 17 4.2显示驱动程序 ............................................................................................... 17 4.3上移程序设计 ............................................................................................... 18
天津工业大学本科毕业论文
第五章 系统调试与实验 ................................... 21
5.1实验平台 ....................................................................................................... 21 5.2软件平台 ....................................................................................................... 23 5.2.1 字模提取 ................................................................................................... 24 5.3实验方案 ....................................................................................................... 25 5.3.1主控部分测试 ............................................................................................ 25 5.3.2 led显示部分测试....................................................................................... 25
结 论 .................................................. 27 参考文献 ................................................ 28 附 录 .................................................. 29 谢辞 .................................................... 55
天津工业大学本科毕业论文
第一章 绪 论
1.1课题的背景和意义
随着我国社会经济文化等的不断发展,民众的消费标准也在发生着不断的变化,户外灯箱广告更是扮演着越来越重要的宣传角色,在车站、商场、学校单位等场合都会见到霓虹灯之类的广告。但是传统的霓虹灯广告牌不管是在显示色彩效果、用电量还是在可修改性上都已经无法满足当今日新月异的社会需求,传统的霓虹灯广告在社会快速发展中需要更多的改进。
电子控制技术的高速发展和led发光二级管制造工艺的进展为高亮度大屏幕的诞生创造了条件。由于LED显示屏相对于传统的霓虹灯之类的广告牌有很多方面的优势,所以发展很快,得到了广大应用厂商的认可。这一种刚刚兴起的led大屏幕技术成为了广大民众目光的聚焦焦点。与之前的显示设备比较,首先,LED 显示屏可以显示几乎所有常用色彩,色彩丰富,三基色的发光管可以显示全彩色,显示方式又是多种多样的,无限变化(文字、图形、动画、视频、电视画面等),这一个产品就集合了电子技术领域多个学科的相关知识,是一中高新技术产品。可以用来显示各种文字图形,并且可以与计算机相连接同步显示计算机屏幕的信息,相当于投影仪。其次,LED 显示屏的像素点是LED发光二极管,将多个发光二极管以大小间距相同的排列形式组合成LED显示阵列,这种显示屏具有成本低、耗电量低、亮度和清晰度高、寿命长等众多优点,而且 LED 显示屏不受空间的限制,可以根据用户要求设计屏的大小,需要多大的尺寸就可以做多大的尺寸.具有全彩色效果,可视角度大,是这个信息时代在传播介质方面划时代的产物。最后,LED 显示屏应用范围很广,金融证券、股票炒股、银行利率等信息显示、商业广告播放、文化娱乐等方面,显示的效果亮度高且清晰稳定,越来越多的地方开始使用LED电子显示屏,有巨大的社会效益和经济效益。 Led显示屏集众家之长,在国际领域得到了广泛的应用。
1
天津工业大学本科毕业论文
1.2 相关技术发展现状
LED显示屏发光效率高,能够很好的适应室内室外等应用区域的环境,自上世纪90年代前期开始,随着LED制造业的技术水平有了新的进展,理论等相关技术框架基本形成,在国外得到大范围多领域的应用。而在我们中国改革开放30年的发展之后,主要是进入上世纪90年代我国的经济得到了飞速的发展,快速的提高,经济发展的背景下各种商业信息的传播在整个市场上有很大需求,LED显示屏及时的出现很好的满足了当时社会和市场的需要,LED显示屏的研发与加工技术水平也得到了相应的提高,适用范围领域也得以扩展。在LED显示屏快速发展的过程中,从开始出现到大范围多领域的应用也是经历了一个过程,总的来说,LED显示屏经历了单色、双色到红绿蓝三基色全彩多灰度级显示的一个过程。目前关于LED显示屏的理论框架和相关制造加工技术等已经相当成熟,led显示屏的像素点越做越小,红绿蓝三基色全彩屏的分辨率越来越高,并朝着高亮度、低功耗、大视角的方向发展。相关理论也日臻完善。
1.2.1 LED显示屏发展的简要回顾
Led显示屏以很高的稳定性、超强的环境适应能力、高性能低价格、使用时间长、可视范围角度大等特点,在为期不长的十几年时间里,以迅雷不及掩耳之势发展成为平面大面积显示的主流产品之一,在信息显示传播,广告媒体领域得到了广泛认可和应用。
LED显示屏的成长历程:1.在上世纪九十年代以前是LED显示屏的成长形成时期,或者说是LED显示屏的幼年时期,各方面理论技术还不成熟。一个方面,受LED相关的材料制造加工技术还不够先进,LED显示屏的应用领域就收到了很大的限制,另一个方面,显示屏控制技术几乎全是通过通信数据传输而实现的控制方法,从客观上来讲极大地影响了他的显示效果。在这个时期,国外的LED显示屏应用很是广泛 ,在我们中国则很少见,出现的为数不多的相关产品也是以单红色、红绿双基色为主,控制技术也几乎全是通过通信数据传输而实现的控制方法,显示的灰度等级就目前的现状来看,当时的灰度级是很小很小的,当时只可以实现单点的4个灰度级,而现在至少也是256灰度级,并且当时产品的成
2
天津工业大学本科毕业论文
本也是相当高的。2.1991-1996年这6年之间,LED显示屏以高速度、大范围、多领域的方式就这样进入了九十年代,进入了广发人民群众的视野,在全球信息化产业快速发展的大背景下,信息技术在我们生活工作的多个领域不断发展创新突破。蓝色发光二级管晶片研制成功,从此,LED显示屏进入了全彩色显示的新纪元;电子技术以及单片微型计算机等控制技术的快速发展,在显示屏控制领域有了更进一步的发展,相关工作人员研究开发出来了视频控制卡,显示屏灰度等级也有了很大的提高,实现16级灰度等级和64级灰度等级的调灰,显示屏的在显示动画方面的效果得到了空前的提高。在这一个阶段,LED显示屏在我们中国的发展速可以说是遍地开花,从初期的不多的几家企业、年产值只有几千万元发展到几十家企业、年产值达数亿元,产品应用领域涉及金融证券、体育届、机场航班信息显示、铁路车次信息显示、车站时间表信息显示、公路交通、商业广告、邮电电信等诸多领域。LED显示屏在平面媒体显示领域逐渐成为主流产品,这样的局面已经逐渐形成,LED显示屏产业也自然而然地成为新兴的高新技术产业。3.1994年末-至今,是led显示屏产业格局调整相继完善的时期上世纪九十年代中期年以来,LED显示屏产业迅速发展进而产生的内部竞争加剧,许多中小企业也如同雨后春笋般不断涌现,这样就使得相关产品价格有了大幅度的回落,应用的范围也不断的扩大,这也导致了LED相关产品在质量、标准化等方面的问题,不利于相关产品的统一及标准化。我们国家的相关部门通过及时调整,对LED显示屏的发展过程中出现的问题进行了适当的规范和引导。国家多个部门联合出台了相关的文件规范使得LED显示屏走向标准化、规范化。相关的标准规定等也在不断完善。
1.2.2 我国LED显示屏的发展现状
1.产业规模不断扩大
我国led产业经历了十余年的成长历程,LED显示屏产业中,一些支柱型企业相继诞生。据行业协会给出的统计信息来看,自十九世纪九十年代末,我国LED显示屏行业持续快速发展,产业规模不断扩大,产业链不断扩大完善。就整个LED显示屏系统而言,我国的led显示屏技术已经达到了国际先进水平并处于领先地位,这也得力于国内产品在性价比方面所具有的得天独厚的优势,市场占
3
天津工业大学本科毕业论文
有率在90%以上,国外的相关产品几乎不能够进入中国市场。 2.市场保持持续增长
2003年LED显示屏行业整体的发展速度相比之前要快很多 ,很多企业都已经具有相当的规模并还在逐渐增多,产业布局发展也在走向成熟。04年至07年之间,随着北京奥运会的临近,各地城区城市化的步伐也逐渐加快,全国LED显示屏市场依然活力不减保持着快速增长的趋势,年平均增长率仍然能够保持在百分之三十五左右。
1.2.3 LED显示屏的发展趋势
据CCID微电子研究所预计,在未来的5年时间内,我国LED显示屏将在电信、邮政、金融系统、商业系统、交通系统、体育场馆等领域不断开拓市场,寻求新的发展空间以及应用领域,与此同时LED显示屏在市场上的需求正以大约平均每年30%的速度递增,发展趋势如下: 1高亮度、全彩化
在蓝色及纯绿色的led显示屏出现以后,LED显示屏的成本在随着时间的推移越来越低,已具备成熟的商业化条件。基础材料也逐渐向成熟的产业化发展。这种情况使得LED三基色全彩色显示屏幕成本有大幅下滑,应用速度加快。LED显示屏等产品的性能也不断提高,三基色全彩色显示屏的色彩、白平衡等已经能够实现很理想的效果了,能够全天候在室外环境下工作,很好的满足了用户的相关需求,因为三基色led全彩色显示屏幕性价比很高,预测在未来发展的相当长的一段时间内,三基色全彩LED显示屏在在室内外显示媒体领域逐渐代替了传统的灯箱、霓红灯等产品。 2.标准化、规范化
这个产业最近几年的发展, 该市场内存在的竞争主要是在价格方面的竞争, 在几次价格战之后相关产品价格几乎达到了均衡,因而市场竞争的焦点转移到了产品的质量以及整个系统的可靠性,这就对LED显示屏的标准化和规范化有了较高要求,一些大的企业相继实施ISO9000系列标准。行业规范和标准体系的形成,对led产品以后的发展有着很好的基础,在这样热大潮中,那些相对落后的企业相继被淘汰,整个业界的质量水平会得到一个整体的提升,也有利于LED产品的
4
天津工业大学本科毕业论文
标准化、规范化。预测在不长的几年时间内,小规模企业将被淘汰,该行业的发展也会井然有序。 3.产品结构多元化发展
在这个信息化的时代,信息传递在生活工作中占据着愈来愈重要的作用,信息也广泛存在于生活工作的各个方面,LED显示屏幕自然而然的有了很多用武之地。因此,相关的led产品也会因为市场的需要而相继推出,小型的led显示产品在led显示屏市场将会占越来越多的份额。LED显示屏应用领域的突破体现了该类产品向着多样化发展的趋势。 1.3 LED显示屏显示原理
LED点阵屏的内部结构可以分为共阴极和共阳极两种,本设计采用的是共阳型
的LED点阵屏。当显示屏的行选信号被选通时,列选端四位数据给低电平的发光二极管就会被点亮。利用这个原理,要显示文字或图形信息时,只需要将要显示的信息进行相关的编码,再将编码数据根据相关算法按照一定的顺序发送到显示屏,逐行点亮就可以显示出想要显示的信息。 根据人眼的视觉暂留原理,将每一次数据更新扫描的时间控制在20ms左右就可以看到稳定的文字图像。 1.4 课题研究的目的
本设计让我对led产业整个发展现状以及发展趋势有了更加深入的了解,知道了不同型号led显示屏的应用领域和使用范围。对led显示屏的工作原理过程有了更深入的认识。我想通过本次设计所取得成果是巨大的而深远的,对以后的工作会有很大的帮助,其次是通过自己的亲身制作很的提高了我的动手能力。本设计实现的是16×64 像素的LED点阵屏,要求LED显示屏可以有足够的亮度,能够稳定的显示要求的文字图像等信息,并实现文字图像等的移动显示。从而实现简单动画的显示。 1.5课题的主要工作
课题的工作主要可以分为两大部分,一个主要部分是硬件电路设计,另一个
主要部分是软件程序设计。硬件电路主要包括电源电路的设计、单片机控制单元的设计等。软件部分主要是静态显示、左移显示、右移显示、上移显示的程序编写等。
5
天津工业大学本科毕业论文
第二章 系统总体设计
2.1需求分析
本系统名为基于51单片机的LED显示屏,即用STC90c516RD+单片机作为主控芯片实现LED显示屏信息的显示。此系统由开关电源供电,有足够的驱动能力,而且STC90C51单片机有很好的稳定性,能够很好地实现各种信息的显示。本系统依赖稳定的硬件电路可以实现多种文字、简单图案信息的静态显示、上下左右移动等显示。 主要需求如下:
1.静态显示功能,可以做小型广告牌,本设计可以应用在大小店铺显示各种商品信息,要求系统能够显示文字、简单图像信息。足以满足大小店铺的显示需求。并且稳定性高、用电量低、亮度大。
2.多种颜色显示功能。传统广告牌色彩单一,此设计丰富了传统的显示方式,用三基色显示模块,可以显示丰富的色彩,很好的增加了广告牌的吸引力。增强了效果。
3.各种动态显示,目前常见的显示屏多为静态显示,并无动画,此设计可实现动态显示。
2.2系统组成及功能描述
基于51单片机的LED显示屏设计主要是利用视觉暂留原理通过行扫描和列扫描的方式点亮点阵屏上的任意一点从而显示设定信息。系统主要分为供电模块、显示模块、控制模块等。系统的核心部分是51单片机控制模块,它负责外围所有器件的控制。
系统的硬件组成主要包括控制模块、电源模块、显示部分。
系统的软件组成包括控制程序、显示程序、上下左右移动程序等。系统的结
构框图如图2-1所示:
6
天津工业大学本科毕业论文
LED显示屏单片机主控部分电源部分
图2-1 系统原理框图
2.3系统的功能描述
本系统实现了文字、简单图像的静态及动态显示功能,通过单片机控制,从而实现显示的功能 。即基于51单片机的led显示系统。
本设计以STC90C516RD+作为核心控制单元,实现了16*64 LED点阵屏的图文显示,在目测条件下LED显示屏各点亮度均匀、充足,图形或文字显示可以静态显示、上下左右移动显示等。Led显示屏由多个共阳极点阵模块组成,通过90c51单片机控制扫描显示。系统的复位部分为系统在开机时自动复位,也可以手动复位。
2.4系统的工作过程
将工作电源即开关电源接通以后,整个系统首先进入上电复位状态。首先是三种基本颜色的行扫描显示以检测显示模块是否能够正常工作以及检测是否有坏点从而保证系统的正常工作。控制单元的单片机将控制信号及显示信息的编码数据通过串行的方式发送到点阵屏,再通过控制行扫描信号显示全部信息。
7
天津工业大学本科毕业论文
第三章 基于51单片机的LED显示屏系统设计
3.1硬件系统总体设计
系统的硬件组成主要包括控制模块、电源模块、显示部分。其方框图图3-1
所示:
LED显示屏单片机主控部分图3-1 系统框图
电源部分 3.1.1 STC90C51的硬件结构
STC90C51单片机内部包括一个8位CPU;一个时钟电路,4KB程序存储空间;128BRAM;两个16位定时/计数器;64KB扩展总线控制电路;四个8-bit并行I/O端口;一个可编程串口;5个中断源,其中包括两个优先级嵌套中断等模块。STC90C51单片机芯片内部结构如图3.1所示:
8
天津工业大学本科毕业论文
P0.0~P0.7P2.0~P2.7Vcc(+5V)VssRAM地址寄存器RAM(128×8)端口0驱动器端口2驱动器端口0锁存器端口2锁存器ROM(4K×8)程序地址寄存器缓冲器ACCPCON堆栈指示器SPPC加1寄存器B寄存器暂存器2ALUPSENALEEARST暂存器1SCONTMODTCON程序计数器PC状态寄存器定时指令与寄存控制器端口1锁存器端口1驱动器TH0TL0TH1TL1SBUFSBUFIE(TX)(RX)中断、串行口和定时器数据指针DPTR端口3锁存器端口3驱动器XTAL1XTAL2P1.0~P1.7P3.0~P3.7图3-1 STC90C51单片机芯片内部结构
3.1.2 STC90C51主要性能参数
STC90C516RD+单片机相关参数如下:
1.工作电压:5.5V - 3.8V(5V 单片机)/3.8V - 2.4V(3V 单片机) 2.工作频率范围:0-40MHz,相当于普通8051单片机的 0~80MHz.
4.用户应用程序空间 4K/6K/7K/8K/10K/12K/13K/16K/32K/40K/48K/56K/ 61K/字节
5.片上集成 1280字节/512/256字节 RAM 8.EEPROM 功能 9.看门狗
10.通用异步串行口(UART),还可用定时器软件实现多个UART 11.工作温度范围:0-75℃/-40-+85℃ 12.封装:LQFP-44,PDIP-40,PLCC-44。
9
天津工业大学本科毕业论文
3.1.4 STC90C51单片机适用领域
STC90C51单片机超强抗干扰能力,新一代加密技术,防止代码被破解。超大容量SRAM,最高4.2k。降低对外电磁辐射,超低功耗,正常工作模式,功耗4mA-7mA。经济实用性强,在相对领域定会有广泛的应用市场。其应用领域主要有一下几个:
1.电子称重计
2.教学用仪器、医疗仪器。 3.种金属探伤仪器。 4.矿山生产智能监测仪。 5.矿的产煤计数器 6.汽车安全系统 7.智能玩具
8.用超声波测量江河水位 9.交流电监测仪 10.消防系统报警监测仪 11.各类水表、电表
3.2 单片机STC90C51电路及外围电路
系统控制模块为单片机及其外围电路,主要实现点阵屏扫描显示和信息的更新,其芯片引脚图如图3-3所示:
10
所示:
1、基础时钟电路
2、单片机模块及其外围电路
的接口相接。单片机的最小系统如图3-4所示:
天津工业大学本科毕业论文
图3-3 STC90C51引脚图
(19脚)和XTAL2(18脚)外接一个石英晶体振荡器和振荡电容。电路如图3-3
功耗。STC90C51的时钟方式有两种,一种是片内时钟震荡方式,需要在XTAL1
图3-3 晶振电路
示控制和数据信息的更新,将数据传至显示屏,单片机的供电电源采用5V,1A
单片机电路作为整个系统的核心控制部分,主要是控制LED显示屏的信息显
时钟模块是ST90C51单片机不可缺少的模块,时钟模块可以使单片机实现低
的开关电源,保证单片机的正常工作。单片机与LED显示屏之间通过一个16pin
11
3.单片机复位电路
电路图如图3-5所示:
天津工业大学本科毕业论文
效,用来完成单片机的复位和初始化操作,复位后程序计数器PC=0000H,即复
位后将从程序存储器的0000H单元读取第一条指令码,通俗的来说,就是单片机
单片机的复位引脚RST(9脚),当输入连续两个机器周期以上高电平时为有
需要设计复位电路。按键按下时,复位电路对单片机进行复位,RST高电平有效。
在运行程序的时候重新开始。在此系统中,为了保证系统在上电时进行初始化,
图3-5 单片机复位电路
图3-4 单片机最小系统
12
天津工业大学本科毕业论文
3.4 LED显示屏扫描电路设计 3.4.1 LED点阵屏内部结构及显示原理
LED点阵屏的内部结构可以分为共阴极和共阳极两种,本设计采用的是共阳型
的LED点阵屏。当显示屏的行选信号被选通时,列选端四位数据给低电平的发光二极管就会被点亮。利用这个原理,要显示文字或图形信息时,只需要将要显示的信息进行相关的编码,再将编码数据根据相关算法按照一定的顺序发送到显示屏,逐行点亮就可以显示出想要显示的信息。 根据人眼的视觉暂留原理,将每一次数据更新扫描的时间控制在20ms左右就可以看到稳定的文字图像。其硬件电路如(图3.4.1)所示
图3-4-1 8*8共阳极LED点阵
13
天津工业大学本科毕业论文
例如,若要图中所示64个LED显示一个“0”字的方框,则首先在列1~8上写入列编码的信号,接着应将对应的行上加选通信号,即在行、列的信号端分别加上如(图3.4.2)所示数据,这样,假设显示数字为“0”时:
1 2 3 4 5 6 7 8
● ● ● ● ●
● ●
● ●
● ●
● ● ● ● ●
00 00 3E 41 41 41 3E 00
图3-4-2 在点阵上所加的行信号以及列选择信号
因此,形成的列代码为00H,00H,3EH,41H,41H,41H,3EH,00H;只要把这些编码送至列数据输出,就可以实现零的数字显示。 送显示代码过程如下所示:
送第一组的八列数据到相应的输出口。然后将第一行扫描为低电平延时2毫秒左右;
送第二组的八列数据到相应的输出口。然后将第二行扫描为低电平延时2毫秒左右;
以此类推,扫描完所有行,又从头开始送。如此循环下去,当刷新频率足够高时(大于24Hz),由于人眼的视觉暂留特性,便可得到一个稳定的“0”字。
14
天津工业大学本科毕业论文
3.4.2 列扫描电路设计
每个汉字需要4个8*8的LED点阵,要想实现16行扫描驱动,上下2行只使用了1个SM16126接到LED点阵模块上,而每个汉字是按照16*16取模,所以需要1个SM16126来驱动一个汉字,我的电路设计的是4个汉字,所以每种颜色的汉字显示需要1*4=4个SM16126来实现16行扫描显示。列驱动是用SM16126芯片搭建构成的。
SM16126的引脚SDI是串行数据的输入端。芯片的输出端为
OUT0~~OUT15, SDO 串行数据输出端,可接至下一个芯片的SDI端口,很方便的实现多片SM16126的级联.
由SM16126在5V供电的情况下(25℃),可以达到25MHz以上的时钟频率,而我采用的90C51的时钟频率只有24MHz,串口方式0的时钟频率只有fosc/12=2MHz,所以SM16126完全可以胜任;由于SM16126输出高电平时每个管脚的驱动电流在3—45mA,而每个LED发光管的驱动电流大约是20mA,有足够的驱动能力去驱动二极管达到要求的亮度. SM16126芯片管脚说明 GND 接地端
SDI 串行数据输入端
OUT0~~OUT15 恒流源输出端 SDO 数据输出以便级联下一个芯片
R~EXT 通过接电阻来调节各个输出口的电流大小 VDD 芯片电源 SM16126封装示意图如图 SM16126芯片 特性: 1. 16个恒流源输出通道
2. 电流输出大小稳定,几乎是恒流输出
3. 恒流电流范围值,3——45mA@VDD=5V;3——30mA@VDD=3.3V 4. 非常准备的恒流输出,误差<±3%,芯片间最大误差:<±6%
5. 以调节外借电阻来调节输出电流的大小
15
天津工业大学本科毕业论文
6. 高达25MHz时钟频率
图3.4.3 SM16126管脚说明图
3.4.3 行驱动扫描电路设计
本设计采用的是行驱动电路,主要是将输入的信号通过3/8译码器译码后,再通过4953扩流以驱动LED点亮,然后再进行行扫描来达到动态显示的目的。每一显示行需要的电流是比较大的,要使用行驱动管,每片4953可以驱动2个显示行.其内部是两个CMOS场效应管。
16
天津工业大学本科毕业论文
第四章 软件设计
4.1系统软件设计思路
本设计显示屏软件的主要功能是利用串行的方式将要显示的数据发送给显示屏,同时把相关的控制信号发送出去以控制数据的显示方式,在软件模块化设计原则的指导下,显示程序可以分为两个主要模块:第一块是显示相关程序,第二块是顶层应用程序。显示相关程序负责把要显示信息的编码数据通过相应的算法发送给显示屏,相应的控制信号相应的控制信号也会同时发出,这样数据信号与控制信号一起完成扫描显示的工作。
4.2显示驱动程序
显示驱动程序是首先进行屏幕干扰排除发送高电平去除之前残留的数据,之后发送相应的列数据,组后进行相应行的扫描,之后逐行扫描显示。在扫描过程中要消除切换行时LED灯的余辉,即消影处理,这就要输出列高电平将显示屏短时间关闭。
17
天津工业大学本科毕业论文
开 始 将数据读取到缓冲区 将缓冲区数据调整后发送到串发送完Y 关闭138,锁存SM16126,输出行号及N 返 回
图4-2 显示驱动程序流程图
4.3上移程序设计
行 扫 描
行 扫 描 字模数组变量加上移动变量move
图4-3 上移程序流程图
18
天津工业大学本科毕业论文
上移程序:
void StaticDisplay_1(void) {
uchar k;
uchar speed,move;
if(++speed>10) {
speed=0; move++; if(move>=108) {
move=0; } }
for(k=0;k<8;k++) {
//左16*16
ColumnScan(zimuo[0][k*2+move*2],0x00,zimuo[0][k*2+move*2]); //上半屏左8位数据
ColumnScan(zimuo[1][k*2+move*2],0x00,zimuo[1][k*2+move*2]);
//下半屏左8位数据
ColumnScan(zimuo[0][k*2+1+move*2],0x00,zimuo[0][k*2+1+move*2]);//上半屏右8位数据
19
天津工业大学本科毕业论文
ColumnScan(zimuo[1][k*2+1+move*2],0x00,zimuo[1][k*2+1+move*2]);//下半屏右8位数据
}
ColumnScan(0x00,0x00,0x00); ColumnScan(0x00,0x00,0x00); ColumEnable(Enable); RowScan(k);
//行扫描
//右16*16
ColumnScan(0x00,0x00,0x00); ColumnScan(0x00,0x00,0x00);
RowEnable(Enable); Delay(1);
RowEnable(Disable); }
20
天津工业大学本科毕业论文
第五章 系统调试与实验
本设计采用STC90C516RD+单片机作为控制模块,STC90C516RD+单片机的调试环境为ARM公司的keil vision4集成开发调试环境,
5.1实验平台
实验平台是STC90C516RD+单片机主控模块和点阵模块。单片机主控模块通
过16pin的接口与点阵显示模块相连接进行数据传输。硬件平台的如图5-1所示。
图5-1 主控系统
主控系统将数据通过串行的方式利用排线将数据传输给点阵屏,软件算法通过列数据输出和行扫描实现文字、图形等信息的显示。利用数据移位的原理实现左移以及右移显示,此处以左移为代表,还有上下移动显示,此处以上移为代表进行显示。效果图如图5-2所示
21
天津工业大学本科毕业论文
22
天津工业大学本科毕业论文
图5-2 点阵屏显示效果图
5.2软件平台
STC90C516RD单片机采用的是ARM公司的开发调试环境,keil vision4集成
开发环境,它采用创建工程文件的方式来进行软件的开发调试和管理。在编辑完成代码之后,用户可以对程序进行编译连接。编译连接成功之后,可以运行程序,并且可以对程序进行调试。工作环境如图5-3所示。
图5-3 keil开发环境
23
天津工业大学本科毕业论文
5.2.1 字模提取
字模的设计是用的字模提取软件,该软件中显示的字体都是通过专门的汉字
提取软件来实现的。该软件名为字模提取PCtoLCD2002完美版。其提取方法为在选项中设置点阵格式、扫描方式、点阵模块点数、输出语言设置、输出数制等,之后在汉字输入区输入你所需要的汉字后(可输入多个汉字),设置想要的汉字的格式之后点击生成字模,这时点阵生成区则会出现相应字体的汉字代码。该软件的操作界面如图5-4:
24
天津工业大学本科毕业论文
图5-4 取模软件界面
5.3实验方案
此次试验有两部分的任务:控制部分和显示部分,系统调试的控制部分首先
测试单片机上电是否正常,晶振是否起振,然后对于全局变量进行定义,对时钟和管脚进行初始化,将单片机放置在开发板上观察链接各个引脚的led等是否都有闪烁从而粗略的估计单片机的工作状态。之后对点阵屏进行测试。
5.3.1主控部分测试
单片机主控部分的测试主要是供电部分和各个引脚输出部分以及晶振部分。
供电部分的测试主要是通过观察与正极相连的发光二级管工作是否正常。单片机的各个引脚的检测是将单片机放置到开发板上,通过观察与其相连接的发光二级管的工作状态大概估计单片机各个引脚是否输出正常。如果单片机能够正常工作说明单片机晶振工作正常,可以正常起振。
5.3.2 led显示部分测试
为了测试LED点阵屏是否能够进行正常的显示,在单片机上电之后,运行监
25
天津工业大学本科毕业论文
测程序,分别逐行的扫描各种颜色,如果没有坏点且各行的亮度正常说明LED显示屏可以正常显示。
26
天津工业大学本科毕业论文
结 论
本设计课题为基于单片机的LED显示屏设计,改系统充分发挥单片机的控制、运算以及数据处理等功能,大大提高了信息显示的稳定性。本系统实现了文字、简单图像的静态及动态显示功能,通过单片机控制,从而实现显示的功能 。即基于51单片机的led显示系统。
以STC90C516RD+作为核心控制单元,实现了16*64 LED点阵屏的图文显示,在目测条件下LED显示屏各点亮度均匀、充足,各个点阵显示模块均应用共阳极LED模块,通过单片机控制扫描显示。系统的复位部分为系统在开机时自动复位,也可以手动复位
本设计在应用上还是有一定的局限性的,在今后的研究中可以大限度的降低
其制作成本,显示模块的多彩化处理可以用更廉价的材料以及更高的分辨率,另外,在数据传送方面也可以再进行改进,比如可以用无线的方式进行数据传输和数据更新,通过WiFi进行改字等等。
27
天津工业大学本科毕业论文
参考文献
[1] 李华等编著•MCS-51系列单片机实用接口技术•北京:北京航空航天大学出
版社,1993:234~236. [2] 张立科•单片机通信技术与工程实践•北京:人民邮电出版社,2005:156~161. [3] 张凯等编著•MCS-51单片机综合系统及其设计开发•北京:科学出版社,1996:187~189. [4] 朱宇光编著•单片机应用新技术教程•北京:电子工业出版社,2000:301~303. [5] 诸昌钤•LED显示屏系统原理与工程技术•成都:电子科技大学出版社,2000:
245~250. [6] 余永权•89系列FLASH单片机原理与应用•北京:电子工业出版社,2000:
112~114. [7] 楼然苗,李光飞•51系列单片机设计实例•北京:北京航空航天大学出版2003:
330~332. [8] 李东生•PROTEL 99SE电路设计技术入门与应用•北京:电子工业出版社2002:
387~390. [9] 张有顺编著•MCS-51/96系列单片机简明教程•北京:中国脊梁出版社,1998:
124~125.
[10]谢宋和•单片机在 LED 显示屏中的应用•电子与自动化•98年第4期 [11] Keil software Company.Cx51 Compiler User’s Guide.2001
[12]陈森发等.城市主干道交通信号灯模糊线控制的探讨.运筹与管
理,1998,7(1):35-41
[13]查振业,叶信阳.智能交通灯控制系统.华中理工大学学
报,1997,25(2):63-65
[14]吴黎明,王桂棠.单片机原理及应用技术.北京:科学出版社,2005 [15]朱善君等.单片机接口技术与应用.北京:清华大学出版社,2005 [16]李建忠.单片机原理及应用.西安电子科技大学出版社,2008
[17]郭天祥著 新概念51单片机C语言教程-入门、提高、开发、拓展全攻略:
电子工业出版社,2009.1
[18]林立灯编著 单片机原理及应用-基于Proteus和Keil C:电子工业出版社,
2009.7
[19]朱宇光编著·单片机应用新技术教程·北京:电子工业出版社,2000:301~303. [20]张凯等编著·MCS-51单片机综合系统及其设计开发·北京:科学出版社,
1996: 187~189. [21]王为青,邱文勋. 51单片机开发案例精选[J].人民邮电出版社,2001,(5):
45-47.
28
天津工业大学本科毕业论文
附 录
附件一:基于单片机的LED显示屏系统设计与仿真源程序
#include #define uint unsigned int #define uchar unsigned char #define Enable 1 #define Disable 0 sbit CLK = P2^0; //SM16126时钟 sbit STB = P2^1; //SM16126移位寄存器使能 sbit R_IN = P2^2; //红色数据 sbit B_IN = P2^3; //蓝色数据 sbit G_IN = P1^7; //绿色数据 sbit EN = P1^6;//74HC138使能 sbit A0 = P1^5; //译码器A0 sbit A1 = P1^4; //译码器A1 sbit A2 = P1^3; //译码器A2 uchar code zimu[8][16]= { {0x80,0x00,0x40,0x00,0x20,0x00,0xF8,0x0F,0x08,0x08,0x08,0x08,0x08,0x08,0xF8,0x0F},{0x08,0x08,0x08,0x08,0xF8,0x0F,0x08,0x08,0x08,0x08,0x08,0x08,0xF8,0x0F,0x08,0x08},/*\"自\ {0x00,0x00,0x9F,0x3F,0x90,0x20,0x90,0x20,0x90,0x3F,0x1E,0x04,0x02,0x04,0xC2,0x7F},{0x42,0x44,0x5E,0x44,0xD0,0x7F,0x10,0x04,0x10,0x24,0x10,0x44,0xEA,0x7F,0x04,0x40},/*\"强\ {0x00,0x00,0xFE,0x3F,0x00,0x01,0x00,0x01,0x80,0x00,0x80,0x00,0xC0,0x02,0xA0,0x04},{0x90,0x08,0x88,0x10,0x84,0x20,0x82,0x20,0x81,0x00,0x80,0x00,0x80,0x00,0x80,0x00},/*\"不\ {0x80,0x00,0x40,0x00,0xF8,0x0F,0x08,0x08,0xF8,0x0F,0x08,0x08,0xF8,0x0F,0x08,0x08},{0xF8,0x0F,0x08,0x08,0x80,0x00,0x10,0x21,0x12,0x49,0x12,0x48,0xE1,0x0F,0x00,0x00}/*\"息\}; uchar code zimu1[8][16]= { {0x00,0x00,0xFC,0x7F,0x04,0x00,0xE4,0x1F,0x24,0x10,0xE4,0x1F,0x24,0x10,0xE4,0x1F},{0x04,0x00,0xE4,0x1F,0x04,0x08,0x04,0x04,0xF4,0x7F,0x02,0x02,0x82,0x02,0x01,0x01},/*\"厚\ {0x08,0x02,0x08,0x02,0xF4,0x7F,0x02,0x02,0xE9,0x3F,0x28,0x25,0x24,0x25,0xE6,0x3F},{0x05,0x00,0xF4,0x7F,0x04,0x02,0x04,0x24,0xA4,0x44,0xA4,0x50,0x94,0x10,0x04,0x1F},/*\"德\ {0x10,0x04,0x10,0x14,0xFE,0x24,0x10,0x04,0xFF,0x7F,0x08,0x04,0x08,0x24,0xFF,0x24},{0x04,0x24,0x12,0x14,0xFE,0x14,0x10,0x08,0xF0,0x48,0x1F,0x54,0x10,0x62,0x10,0x41},/*\"载\ 29 天津工业大学本科毕业论文 {0x08,0x01,0x08,0x01,0x0A,0x01,0x0A,0x3F,0xBE,0x2A,0x4A,0x2A,0x09,0x2A,0x08,0x29},{0x38,0x29,0x8F,0x24,0x4A,0x24,0x08,0x22,0x08,0x22,0x08,0x21,0x88,0x14,0x08,0x08}/*\"物\}; uchar code zimu2[20][16]= { {0x00,0x00,0xFE,0x3F,0x40,0x02,0x48,0x12,0x50,0x0A,0x40,0x02,0xFC,0x7F,0x04,0x00},{0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x02,0x00,0x02,0x00,0x01,0x00},/*\"严\ {0x80,0x08,0x82,0x08,0xF4,0x7F,0x84,0x08,0x80,0x0F,0x00,0x02,0xE7,0x3F,0x24,0x22},{0xE4,0x3F,0x04,0x02,0xF4,0x7F,0x04,0x02,0xF4,0x3F,0x0C,0x02,0xF4,0x7F,0x00,0x00},/*\"谨\ {0x00,0x00,0xFE,0x3F,0x40,0x02,0x48,0x12,0x50,0x0A,0x40,0x02,0xFC,0x7F,0x04,0x00},{0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x02,0x00,0x02,0x00,0x01,0x00},/*\"严\ {0x08,0x01,0x08,0x01,0x08,0x1F,0x88,0x10,0xDF,0x08,0x28,0x05,0x0C,0x02,0x1C,0x05},{0xAA,0x18,0x4A,0x60,0xA9,0x1F,0x88,0x10,0x88,0x10,0x88,0x10,0x88,0x1F,0x88,0x10},/*\"格\ {0x80,0x04,0x80,0x08,0x80,0x00,0xFE,0x3F,0x80,0x00,0x84,0x10,0x88,0x08,0x90,0x05},{0xC0,0x02,0xA0,0x04,0x90,0x08,0x88,0x10,0x86,0x60,0x80,0x00,0xA0,0x00,0x40,0x00},/*\"求\ {0x40,0x00,0x80,0x00,0xFE,0x7F,0x02,0x40,0x11,0x21,0x20,0x01,0x20,0x01,0x08,0x01},{0x10,0x01,0x10,0x01,0xFF,0x7F,0x80,0x02,0x40,0x04,0x20,0x08,0x18,0x10,0x06,0x20},/*\"实\ {0x80,0x04,0x80,0x08,0x80,0x00,0xFE,0x3F,0x80,0x00,0x84,0x10,0x88,0x08,0x90,0x05},{0xC0,0x02,0xA0,0x04,0x90,0x08,0x88,0x10,0x86,0x60,0x80,0x00,0xA0,0x00,0x40,0x00},/*\"求\ {0xF8,0x0F,0x08,0x08,0x08,0x08,0xF8,0x0F,0x08,0x08,0x08,0x08,0xF8,0x0F,0x00,0x00},{0xFF,0x7F,0x80,0x00,0x88,0x00,0x88,0x1F,0x88,0x00,0x94,0x00,0xA2,0x00,0xC1,0x7F}/*\"是\}; void RowScan(uchar num); void ColumnScan(uchar R,uchar G,uchar B); void RowEnable(uchar EnOrDis); void ColumEnable(uchar EnOrDis); void Delay(uint time); void Test(void); void StaticDisplay(void); //显示蓝色的“自强不息\" void StaticDisplay1(void); //显示红蓝混合色“厚德载物” void StaticDisplay2(void); //显示红色的\"自强不息\" void StaticDisplay3(void); //显示绿色的\"自强不息\" void shangyi(void); 30 天津工业大学本科毕业论文 void main(void) { int i; EN=0; STB=0; R_IN=0;G_IN=0;B_IN=0; Test(); while(1) { for(i=0;i<100;i++) { StaticDisplay2(); //红色 } for(i=0;i<100;i++) { StaticDisplay3(); //绿色 } for(i=0;i<100;i++) { StaticDisplay(); //蓝色 } for(i=0;i<100;i++) { StaticDisplay1(); //显示红蓝混合色“厚德载物” } for(i=0;i<10000;i++) { shangyi(); } } } /*************************************************************/ /*函数功能:静态显示 */ /*参数说明: */ /*************************************************************/ void StaticDisplay(void) //显示蓝色的“自强不息” { uchar k; for(k=0;k<8;k++) { ColumnScan(0x00,0x00,zimu[0][k*2]); //上半屏左8位数据 ColumnScan(0x00,0x00,zimu[1][k*2]); //下半屏左8位数据 ColumnScan(0x00,0x00,zimu[0][k*2+1]);//上半屏右8位数据 31 天津工业大学本科毕业论文 ColumnScan(0x00,0x00,zimu[1][k*2+1]);//下半屏右8位数据 ColumnScan(0x00,0x00,zimu[2][k*2]); //上半屏左8位数据 ColumnScan(0x00,0x00,zimu[3][k*2]); //下半屏左8位数据 ColumnScan(0x00,0x00,zimu[2][k*2+1]);//上半屏右8位数据 ColumnScan(0x00,0x00,zimu[3][k*2+1]);//下半屏右8位数据 ColumnScan(0x00,0x00,zimu[4][k*2]); //上半屏左8位数据 ColumnScan(0x00,0x00,zimu[5][k*2]); //下半屏左8位数据 ColumnScan(0x00,0x00,zimu[4][k*2+1]);//上半屏右8位数据 ColumnScan(0x00,0x00,zimu[5][k*2+1]);//下半屏右8位数据 ColumnScan(0x00,0x00,zimu[6][k*2]); //上半屏左8位数据 ColumnScan(0x00,0x00,zimu[7][k*2]); //下半屏左8位数据 ColumnScan(0x00,0x00,zimu[6][k*2+1]);//上半屏右8位数据 ColumnScan(0x00,0x00,zimu[7][k*2+1]);//下半屏右8位数据 //左16*16 /* ColumnScan(zimu[0][k*2],0x00,zimu[0][k*2]); //上半屏左8位数据 ColumnScan(zimu[1][k*2],0x00,zimu[1][k*2]); //下半屏左8位数据 ColumnScan(zimu[0][k*2+1],0x00,zimu[0][k*2+1]);//上半屏右8位数据 ColumnScan(zimu[1][k*2+1],0x00,zimu[1][k*2+1]);//下半屏右8位数据 ColumnScan(zimu[2][k*2],0x00,zimu[2][k*2]); //上半屏左8位数据 ColumnScan(zimu[3][k*2],0x00,zimu[3][k*2]); //下半屏左8位数据 ColumnScan(zimu[2][k*2+1],0x00,zimu[2][k*2+1]);//上半屏右8位数据 ColumnScan(zimu[3][k*2+1],0x00,zimu[3][k*2+1]);//下半屏右8位数据 ColumnScan(zimu[4][k*2],0x00,zimu[4][k*2]); //上半屏左8位数据 ColumnScan(zimu[5][k*2],0x00,zimu[5][k*2]); //下半屏左8位数据 ColumnScan(zimu[4][k*2+1],0x00,zimu[4][k*2+1]);//上半屏右8位数据 ColumnScan(zimu[5][k*2+1],0x00,zimu[5][k*2+1]);//下半屏右8位数据 ColumnScan(zimu[6][k*2],0x00,zimu[6][k*2]); //上半屏左8位数据 ColumnScan(zimu[7][k*2],0x00,zimu[7][k*2]); //下半屏左8位数据 ColumnScan(zimu[6][k*2+1],0x00,zimu[6][k*2+1]);//上半屏右8位数据 ColumnScan(zimu[7][k*2+1],0x00,zimu[7][k*2+1]);//下半屏右8位数据 /* ColumnScan(Font16[2][k*2],0x00,Font16[2][k*2]); //右16*16 ColumnScan(Font16[3][k*2],0x00,Font16[3][k*2]); ColumnScan(Font16[2][k*2+1],0x00,Font16[2][k*2+1]); ColumnScan(Font16[3][k*2+1],0x00,Font16[3][k*2+1]);*/ ColumEnable(Enable); RowScan(k); RowEnable(Enable); // Delay(2); RowEnable(Disable); 32 天津工业大学本科毕业论文 // Delay(3); } } void StaticDisplay1(void) //显示红蓝混合色“厚德载物” { uchar k; for(k=0;k<8;k++) { //左16*16 ColumnScan(zimu1[0][k*2],0x00,zimu1[0][k*2]); //上半屏左8位数据 ColumnScan(zimu1[1][k*2],0x00,zimu1[1][k*2]); //下半屏左8位数据 ColumnScan(zimu1[0][k*2+1],0x00,zimu1[0][k*2+1]);//上半屏右8位数据 ColumnScan(zimu1[1][k*2+1],0x00,zimu1[1][k*2+1]);//下半屏右8位数据 ColumnScan(zimu1[2][k*2],0x00,zimu1[2][k*2]); //上半屏左8位数据 ColumnScan(zimu1[3][k*2],0x00,zimu1[3][k*2]); //下半屏左8位数据 ColumnScan(zimu1[2][k*2+1],0x00,zimu1[2][k*2+1]);//上半屏右8位数据 ColumnScan(zimu1[3][k*2+1],0x00,zimu1[3][k*2+1]);//下半屏右8位数据 ColumnScan(zimu1[4][k*2],0x00,zimu1[4][k*2]); //上半屏左8位数据 ColumnScan(zimu1[5][k*2],0x00,zimu1[5][k*2]); //下半屏左8位数据 ColumnScan(zimu1[4][k*2+1],0x00,zimu1[4][k*2+1]);//上半屏右8位数据 ColumnScan(zimu1[5][k*2+1],0x00,zimu1[5][k*2+1]);//下半屏右8位数据 ColumnScan(zimu1[6][k*2],0x00,zimu1[6][k*2]); //上半屏左8位数据 ColumnScan(zimu1[7][k*2],0x00,zimu1[7][k*2]); //下半屏左8位数据 ColumnScan(zimu1[6][k*2+1],0x00,zimu1[6][k*2+1]);//上半屏右8位数据 ColumnScan(zimu1[7][k*2+1],0x00,zimu1[7][k*2+1]);//下半屏右8位数据 /* ColumnScan(Font16[2][k*2],0x00,Font16[2][k*2]); //右16*16 ColumnScan(Font16[3][k*2],0x00,Font16[3][k*2]); ColumnScan(Font16[2][k*2+1],0x00,Font16[2][k*2+1]); ColumnScan(Font16[3][k*2+1],0x00,Font16[3][k*2+1]);*/ ColumEnable(Enable); RowScan(k); RowEnable(Enable); // Delay(2); RowEnable(Disable); // Delay(3); } } 33 天津工业大学本科毕业论文 void StaticDisplay3(void) //显示绿色的“自强不息” { uchar k; for(k=0;k<8;k++) { ColumnScan(0x00,zimu[0][k*2],0x00); //上半屏左8位数据 ColumnScan(0x00,zimu[1][k*2],0x00); //下半屏左8位数据 ColumnScan(0x00,zimu[0][k*2+1],0x00);//上半屏右8位数据 ColumnScan(0x00,zimu[1][k*2+1],0x00);//下半屏右8位数据 ColumnScan(0x00,zimu[2][k*2],0x00); //上半屏左8位数据 ColumnScan(0x00,zimu[3][k*2],0x00); //下半屏左8位数据 ColumnScan(0x00,zimu[2][k*2+1],0x00);//上半屏右8位数据 ColumnScan(0x00,zimu[3][k*2+1],0x00);//下半屏右8位数据 ColumnScan(0x00,zimu[4][k*2],0x00); //上半屏左8位数据 ColumnScan(0x00,zimu[5][k*2],0x00); //下半屏左8位数据 ColumnScan(0x00,zimu[4][k*2+1],0x00);//上半屏右8位数据 ColumnScan(0x00,zimu[5][k*2+1],0x00);//下半屏右8位数据 ColumnScan(0x00,zimu[6][k*2],0x00); //上半屏左8位数据 ColumnScan(0x00,zimu[7][k*2],0x00); //下半屏左8位数据 ColumnScan(0x00,zimu[6][k*2+1],0x00);//上半屏右8位数据 ColumnScan(0x00,zimu[7][k*2+1],0x00);//下半屏右8位数据 ColumEnable(Enable); RowScan(k); RowEnable(Enable); // Delay(2); RowEnable(Disable); } } /*************************************************************/ /*函数功能:向上移动 */ /*************************************************************/ void shangyi(void) { uchar k; uchar speed,move; if(++speed>10) { speed=0; move++; if(move>=32) 34 天津工业大学本科毕业论文 { move=0; } } for(k=0;k<8;k++) { //左16*16 ColumnScan(0x00,zimu2[0][k*2+move*2],zimu2[0][k*2+move*2]); //上半屏左8位数据 ColumnScan(0x00,zimu2[1][k*2+move*2],zimu2[1][k*2+move*2]); //下半屏左8位数据 ColumnScan(0x00,zimu2[0][k*2+1+move*2],zimu2[0][k*2+1+move*2]);//上半屏右8位数据 ColumnScan(0x00,zimu2[1][k*2+1+move*2],zimu2[1][k*2+1+move*2]);//下半屏右8位数据 */ //右16*16 ColumnScan(0x00,0x00,0x00); ColumnScan(0x00,0x00,0x00); ColumnScan(0x00,0x00,0x00); ColumnScan(0x00,0x00,0x00); ColumEnable(Enable); RowScan(k); //行扫描 RowEnable(Enable); Delay(1); RowEnable(Disable); } } /*************************************************************/ /*函数功能:138行扫描 */ /*参数说明:num第几行 范围0-7 */ /*************************************************************/ void RowScan(uchar num) { switch(num) { case 0: A0=0;A1=0;A2=0; break; case 1: A0=1;A1=0;A2=0; break; 35 天津工业大学本科毕业论文 case 2: A0=0;A1=1;A2=0; break; case 3: A0=1;A1=1;A2=0; break; case 4: A0=0;A1=0;A2=1; break; case 5: A0=1;A1=0;A2=1; break; case 6: A0=0;A1=1;A2=1; break; case 7: A0=1;A1=1;A2=1; break; default:break; } } /*************************************************************/ /*函数功能:列扫描送数据 */ /*参数说明:R G B红绿蓝点阵数据 高位在前 */ /*************************************************************/ void ColumnScan(uchar R,uchar G,uchar B) { uchar i; for(i=0;i<8;i++) { CLK=0; R_IN=R&0x01; //最低位 G_IN=G&0x01; B_IN=B&0x01; R>>=1; G>>=1; 36 天津工业大学本科毕业论文 B>>=1; CLK=1; //上升沿移位数据 } } /*************************************************************/ /*函数功能:行使能 */ /*参数说明:EnOrDis Enable使能 Disable失能 */ /*************************************************************/ void RowEnable(uchar EnOrDis) { if(EnOrDis) { EN=1; //138使能 } else { EN=0; } } /*************************************************************/ /*函数功能:列使能 */ /*参数说明:EnOrDis Enable使能 Disable失能 /*************************************************************/ void ColumEnable(uchar EnOrDis) { if(EnOrDis) { STB=1; //将串行数据传入输出锁存器 STB=0; //将数据锁存 } else { STB=0; } } /*************************************************************/ /*函数功能:扫描测试函数 /*参数说明: */ /*************************************************************/ void Test(void) { uchar k,j; 37 */ */ 天津工业大学本科毕业论文 RowEnable(Disable); //红全行扫描 for(j=0;j<8;j++) { ColumnScan(0xff,0x00,0x00); } ColumEnable(Enable); for(k=0;k<8;k++) { RowScan(k); RowEnable(Enable); Delay(100); RowEnable(Disable); } ColumEnable(Disable); for(j=0;j<8;j++) //绿全行扫描 { ColumnScan(0x00,0xff,0x00); } ColumEnable(Enable); for(k=0;k<8;k++) { RowScan(k); RowEnable(Enable); Delay(100); RowEnable(Disable); } ColumEnable(Disable); for(j=0;j<8;j++) //蓝全行扫描 { ColumnScan(0x00,0x00,0xff); } ColumEnable(Enable); for(k=0;k<8;k++) { RowScan(k); RowEnable(Enable); Delay(100); RowEnable(Disable); } 38 天津工业大学本科毕业论文 ColumEnable(Disable); } /****************************************************************************** - 功能描述:延时 ******************************************************************************/ void Delay(uint time) { uint x,y; for(x=time;x>0;x--) for(y=100;y>0;y--); } 39 天津工业大学本科毕业论文 附件二:英文资料与中文翻译 英文资料: The Introduction of AT 89C51 Description The AT89C51 is a low-power, high-performance CMOS 8-bit microcomputer with 4K bytes of Flash programmable and erasable read only memory (PEROM). The device is manufactured using Atmel’s high-density nonvolatile memory technology and is compatible with the industry-standard MCS-51 instruction set and pinout. The on-chip Flash allows the program memory to be reprogrammed in-system or by a conventional nonvolatile memory programmer. By combining a versatile 8-bit CPU with Flash on a monolithic chip, the Atmel AT89C51 is a powerful microcomputer which provides a highly-flexible and cost-effective solution to many embedded control applications. Function characteristic The AT89C51 provides the following standard features: 4K bytes of Flash, 128 bytes of RAM, 32 I/O lines, two 16-bit timer/counters, a five vector two-level interrupt architecture, a full duplex serial port, on-chip oscillator and clock circuitry. In addition, the AT89C51 is designed with static logic for operation down to zero frequency and supports two software selectable power saving modes. The Idle Mode stops the CPU while allowing the RAM, timer/counters, serial port and interrupt system to continue functioning. The Power-down Mode saves the RAM contents but freezes the oscillator disabling all other chip functions until the next hardware reset. Pin Description VCC:Supply voltage. GND:Ground. 40 天津工业大学本科毕业论文 Port 0: Port 0 is an 8-bit open-drain bi-directional I/O port. As an output port, each pin can sink eight TTL inputs. When 1s are written to port 0 pins, the pins can be used as highimpedance inputs. Port 0 may also be configured to be the multiplexed loworder address/data bus during accesses to external program and data memory. In this mode P0 has internal pullups. Port 0 also receives the code bytes during Flash programming, and outputs the code bytes during program verification. External pullups are required during program verification. Port 1 Port 1 is an 8-bit bi-directional I/O port with internal pullups. The Port 1 output buffers can sink/source four TTL inputs. When 1s are written to Port 1 pins they are pulled high by the internal pullups and can be used as inputs. As inputs, Port 1 pins that are externally being pulled low will source current (IIL) because of the internal pullups. Port 1 also receives the low-order address bytes during Flash programming and verification. Port 2 Port 2 is an 8-bit bi-directional I/O port with internal pullups. The Port 2 output buffers can sink/source four TTL inputs. When 1s are written to Port 2 pins they are pulled high by the internal pullups and can be used as inputs. As inputs, Port 2 pins that are externally being pulled low will source current, because of the internal pullups. Port 2 emits the high-order address byte during fetches from external program memory and during accesses to external data memory that use 16-bit addresses. In this application, it uses strong internal pullupswhen emitting 1s. During accesses to external data memory that use 8-bit addresses, Port 2 emits the contents of the P2 Special Function Register. Port 2 also receives the high-order address bits and some control signals during Flash programming and verification. Port 3 Port 3 is an 8-bit bi-directional I/O port with internal pullups. The Port 3 output 41 天津工业大学本科毕业论文 buffers can sink/source four TTL inputs. When 1s are written to Port 3 pins they are pulled high by the internal pullups and can be used as inputs. As inputs, Port 3 pins that are externally being pulled low will source current (IIL) because of the pullups. Port 3 also serves the functions of various special features of the AT89C51 as listed below: Port 3 also receives some control signals for Flash programming and verification. RST Reset input. A high on this pin for two machine cycles while the oscillator is running resets the device. ALE/PROG Address Latch Enable output pulse for latching the low byte of the address during accesses to external memory. This pin is also the program pulse input (PROG) during Flash programming. In normal operation ALE is emitted at a constant rate of 1/6 the oscillator frequency, and may be used for external timing or clocking purposes. Note, however, that one ALE pulse is skipped during each access to external Data Memory. If desired, ALE operation can be disabled by setting bit 0 of SFR location 8EH. With the bit set, ALE is active only during a MOVX or MOVC instruction. Otherwise, the pin is weakly pulled high. Setting the ALE-disable bit has no effect if the microcontroller 42 天津工业大学本科毕业论文 is in external execution mode. PSEN Program Store Enable is the read strobe to external program memory. When the AT89C51 is executing code from external program memory, PSEN is activated twice each machine cycle, except that two PSEN activations are skipped during each access to external data memory. EA/VPP External Access Enable. EA must be strapped to GND in order to enable the device to fetch code from external program memory locations starting at 0000H up to FFFFH. Note, however, that if lock bit 1 is programmed, EA will be internally latched on reset.EA should be strapped to VCC for internal program executions. This pin also receives the 12-volt programming enable voltage(VPP) during Flash programming, for parts that require12-volt VPP. XTAL1 Input to the inverting oscillator amplifier and input to the internal clock operating circuit. XTAL2 Out put from the inverting oscillator amplifier. Oscillator Characteristics XTAL1 and XTAL2 are the input and output, respectively, of an inverting amplifier which can be configured for use as an on-chip oscillator, as shown in Figure 1.Either a quartz crystal or ceramic resonator may be used. To drive the device from an external clock source, XTAL2 should be left unconnected while XTAL1 is driven as shown in Figure 2.There are no requirements on the duty cycle of the external clock signal, since the input to the internal clocking circuitry is through a divide-by-two 43 天津工业大学本科毕业论文 flip-flop, but minimum and maximum voltage high and low time specifications must be observed. Idle Mode In idle mode, the CPU puts itself to sleep while all the onchip peripherals remain active. The mode is invoked by software. The content of the on-chip RAM and all the special functions registers remain unchanged during this mode. The idle mode can be terminated by any enabled interrupt or by a hardware reset. It should be noted that when idle is terminated by a hard ware reset, the device normally resumes program execution, from where it left off, up to two machine cycles before the internal reset algorithm takes control. On-chip hardware inhibits access to internal RAM in this event, but access to the port pins is not inhibited. To eliminate the possibility of an unexpected write to a port pin when Idle is terminated by reset, the instruction following the one that invokes Idle should not be one that writes to a port pin or to external memory. Power-down Mode In the power-down mode, the oscillator is stopped, and the instruction that invokes power-down is the last instruction executed. The on-chip RAM and Special Function Registers retain their values until the power-down mode is terminated. The only exit from power-down is a hardware reset. Reset redefines the SFRs but does not change the on-chip RAM. The reset should not be activated before VCC is restored to its normal operating level and must be held active long enough to allow the oscillator to restart and stabilize. 44 天津工业大学本科毕业论文 Program Memory Lock Bits On the chip are three lock bits which can be left unprogrammed (U) or can be programmed (P) to obtain the additional features listed in the table below. When lock bit 1 is programmed, the logic level at the EA pin is sampled and latched during reset. If the device is powered up without a reset, the latch initializes to a random value, and holds that value until reset is activated. It is necessary that the latched value of EA be in agreement with the current logic level at that pin in order for the device to function properly. Programming the Flash The AT89C51 is normally shipped with the on-chip Flash memory array in the erased state (that is, contents = FFH)and ready to be programmed. The programming interface accepts either a high-voltage (12-volt) or a low-voltage(VCC) program enable signal. The low-voltage programming mode provides a convenient way to program theAT89C51 inside the user’s system, while the high-voltage programming mode is compatible with conventional third party Flash or EPROM programmers. The AT89C51 is shipped with either the high-voltage or low-voltage programming mode enabled. The respective top-side marking and device signature codes are listed in the following table. The AT89C51 code memory array is programmed byte-bybyte in either programming mode. To program any nonblank byte in the on-chip Flash Memory, the entire memory must be erased using the Chip Erase Mode. 45 天津工业大学本科毕业论文 Programming Algorithm: Before programming theAT89C51, the address, data and control signals should beset up according to the Flash programming mode table. To program the AT89C51, take the following steps. 1. Input the desired memory location on the address lines. 2. Input the appropriate data byte on the data lines. 3. Activate the correct combination of control signals. 4. Raise EA/VPP to 12V for the high-voltage programming mode. 5. Pulse ALE/PROG once to program a byte in the Flash array or the lock bits. The byte-write cycle is self-timed and typically takes no more than 1.5 ms. Repeat steps 1 through 5, changing the address and data for the entire array or until the end of the object file is reached. Data Polling: The AT89C51 features Data Polling to indicate the end of a write cycle. During a write cycle, an attempted read of the last byte written will result in the complement of the written datum on PO.7. Once the write cycle has been completed, true data are valid on all outputs, and the next cycle may begin. Data Polling may begin any time after a write cycle has been initiated. Ready/Busy: The progress of byte programming can also be monitored by the RDY/BSY output signal. P3.4 is pulled low after ALE goes high during programming to indicate BUSY. P3.4 is pulled high again when programming is done to indicate READY. Program Verify: If lock bits LB1 and LB2 have not been programmed, the programmed code data can be read back via the address and data lines for verification. The lock bits cannot be verified directly. Verification of the lock bits is achieved by observing that their features are enabled. Chip Erase: The entire Flash array is erased electrically by using the proper combination of control signals and by holding ALE/PROG low for 10 ms. The code array is written with all “1”s. The chip erase operation must be executed before the 46 天津工业大学本科毕业论文 code memory can be re-programmed. Reading the Signature Bytes: The sign ature bytes are read by the same procedure as a normal verification of locations 030H, 031H, and 032H, except that P3.6 andP3.7 must be pulled to a logic low. The values returned are as follows. (030H) = 1EH indicates manufactured by Atmel (031H) = 51H indicates 89C51 (032H) = FFH indicates 12V programming (032H) = 05H indicates 5V programming Programming Interface Every code byte in the Flash array can be written and the entire array can be erased by using the appropriate combination of control signals. The write operation cycle is self timed and once initiated, will automatically time itself to completion. All major programming vendors offer worldwide support for the Atmel microcontroller series. Please contact your local programming vendor for the appropriate software revision. 47 天津工业大学本科毕业论文 中文翻译 AT89C51的介绍 描述 AT89C51是一个低电压,高性能CMOS8位单片机带有4K字节的可反复擦写的程序存储器(PENROM)。和128字节的存取数据存储器(RAM),这种器件采用ATMEL公司的高密度、不容易丢失存储技术生产,并且能够与MCS-51系列的单片机兼容。片内含有8位中央处理器和闪烁存储单元,有较强的功能的AT89C51单片机能够被应用到控制领域中。 功能特性 AT89C51提供以下的功能标准:4K字节闪烁存储器,128字节随机存取数据存储器,32个I/O口,2个16位定时/计数器,1个5向量两级中断结构,1个串行通信口,片内震荡器和时钟电路。另外,AT89C51还可以进行0HZ的静态逻辑操作,并支持两种软件的节电模式。闲散方式停止中央处理器的工作,能够允许随机存取数据存储器、定时/计数器、串行通信口及中断系统继续工作。掉电方式保存随机存取数据存储器中的内容,但震荡器停止工作并禁止其它所有部件的工作直到下一个复位。 引脚描述 VCC:电源电压 GND:地 P0口: P0口是一组8位漏极开路双向I/O口,即地址/数据总线复用口。作为输出口时,每一个管脚都能够驱动8个TTL电路。当“1”被写入P0口时,每个管脚都能够作为高阻抗输入端。P0口还能够在访问外部数据存储器或程序存储器时,转换地址和数据总线复用,并在这时激活内部的上拉电阻。P0口在闪烁编程时,P0口接收指令,在程序校验时,输出指令,需要接电阻。 P1口: P1口一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动4 48 天津工业大学本科毕业论文 个TTL电路。对端口写“1”,通过内部的电阻把端口拉到高电平,此时可作为输入口。因为内部有电阻,某个引脚被外部信号拉低时输出一个电流。闪烁编程时和程序校验时,P1口接收低8位地址。 P2口: P2口是一个内部带有上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动4个TTL电路。对端口写“1”,通过内部的电阻把端口拉到高电平,此时,可作为输入口。因为内部有电阻,某个引脚被外部信号拉低时会输出一个电流。在访问外部程序存储器或16位地址的外部数据存储器时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器时,P2口线上的内容在整个运行期间不变。闪烁编程或校验时,P2口接收高位地址和其它控制信号。 P3口: P3口是一组带有内部电阻的8位双向I/O口,P3口输出缓冲故可驱动4个TTL电路。对P3口写如“1”时,它们被内部电阻拉到高电平并可作为输入端时,被外部拉低的P3口将用电阻输出电流。 P3口除了作为一般的I/O口外,更重要的用途是它的第二功能,如下表所示: 端口引脚 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 第二功能 RXD TXD INT0 INT1 T0 T1 WR RD P3口还接收一些用于闪烁存储器编程和程序校验的控制信号。 RST: 复位输入。当震荡器工作时,RET引脚出现两个机器周期以上的高电平将使单片机复位。 ALE/: 49 天津工业大学本科毕业论文 当访问外部程序存储器或数据存储器时,ALE输出脉冲用于锁存地址的低8位字节。即使不访问外部存储器,ALE以时钟震荡频率的1/16输出固定的正脉冲信号,因此它可对输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲时,闪烁存储器编程时,这个引脚还用于输入编程脉冲。如果必要,可对特殊寄存器区中的8EH单元的D0位置禁止ALE操作。这个位置后只有一条MOVX和MOVC指令ALE才会被应用。此外,这个引脚会微弱拉高,单片机执行外部程序时,应设置ALE无效。 PSEN: 程序储存允许输出是外部程序存储器的读选通信号,当AT89C51由外部程序存储器读取指令时,每个机器周期两次PSEN 有效,即输出两个脉冲。在此期间,当访问外部数据存储器时,这两次有效的PSEN 信号不出现。 EA/VPP: 外部访问允许。欲使中央处理器仅访问外部程序存储器,EA端必须保持低电平。需要注意的是:如果加密位LBI被编程,复位时内部会锁存EA端状态。如EA端为高电平,CPU则执行内部程序存储器中的指令。闪烁存储器编程时,该引脚加上+12V的编程允许电压VPP,当然这必须是该器件是使用12V编程电压VPP。 XTAL1:震荡器反相放大器及内部时钟发生器的输入端。 XTAL2:震荡器反相放大器的输出端。 时钟震荡器 AT89C51中有一个用于构成内部震荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自然震荡器。 外接石英晶体及电容C1,C2接在放大器的反馈回路中构成并联震荡电路。对外接电容C1,C2虽然没有十分严格的要求,但电容容量的大小会轻微影响震荡频率的高低、震荡器工作的稳定性、起振的难易程序及温度稳定性。如果使用石英晶体,我们推荐电容使用30PF±10PF,而如果使用陶瓷振荡器建议选择40PF±10PF。用户也可以采用外部时钟。采用外部时钟的电路如图示。这种情况下,外部时钟脉冲接到XTAL1端,即内部 50 天津工业大学本科毕业论文 时钟发生器的输入端,XTAL2则悬空。由于外部时钟信号是通过一个2分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。 内部振荡电路 外部振荡电路 闲散节电模式 AT89C51有两种可用软件编程的省电模式,它们是闲散模式和掉电工作模式。这两种方式是控制专用寄存器PCON中的PD和IDL位来实现的。PD是掉电模式,当PD=1时,激活掉电工作模式,单片机进入掉电工作状态。IDL是闲散等待方式,当IDL=1,激活闲散工作状态,单片机进入睡眠状态。如需要同时进入两种工作模式,即PD和IDL同时为1,则先激活掉电模式。在闲散工作模式状态,中央处理器CPU保持睡眠状态,而所有片内的外设仍保持激活状态,这种方式由软件产生。此时,片内随机存取数据存储器和所有特殊功能寄存器的内容保持不变。闲散模式可由任何允许的中断请求或硬件复位终止。终止闲散工作模式的方法有两种,一是任何一条被允许中断的事件被激活,IDL被硬件清除,即刻终止闲散工作模式。程序会首先影响中断,进入中断服务程序,执行完中断服务程序,并紧随RETI指令后,下一条要执行的指令就是使单片机进入闲散工作模式,那条指令后面的一条指令。二是通过硬件复位也可将闲散工作模式终止。需要注意的是:当由硬件复位来终止闲散工作模式时,中央处理器CPU通常是从激活空闲模式那条指令的下一条开始继续执行程序的,要完成内部复位操作,硬件复位脉冲要保持两个机器周期有效,在这种情况下,内部禁止中央处理器CPU访问片内RAM,而允许访问其他端口,为了避免可能对端口产生的意外写入:激活闲散模式的那条指令后面的一条指令不应是一条对端口或外部存储器的写入指令。 掉电模式 在掉电模式下,振荡器停止工作,进入掉电模式的指令是最后一条被执行 51 天津工业大学本科毕业论文 的指令,片内RAM和特殊功能寄存器的内容在中指掉电模式前被冻结。退出掉电模式的唯一方法是硬件复位,复位后将从新定义全部特殊功能寄存器但不改变RAM中的内容,在VCC恢复到正常工作电平前,复位应无效切必须保持一定时间以使振荡器从新启动并稳定工作。 闲散和掉电模式外部引脚状态。 模式 程序存储器 ALE 内部 内部 外部 外部 1 1 0 0 1 1 0 0 P0 P1 P2 P3 数据 浮空 数据 数据 数据 数据 数据 数据 数据 地址 数据 数据 数据 数据 数据 数据 闲散模式 闲散模式 掉电模式 掉电模式 程序存储器的加密 AT89C51可使用对芯片上的三个加密位LB1,LB2,LB3进行编程(P)或不编程(U)得到如下表所示的功能: 程序加密位 保护类型 1 2 U U U 没有程序保护功能 P U U 禁止从外部程序存储器中执行MOVC指令读取内部程序存储器 的内容 3 4 P P P P U 除上表功能外,还禁止程序校验 P 除以上功能外,同时禁止外部执行 当LB1被编程时,在复位期间,EA端的电平被锁存,如果单片机上电后一直没有复位,锁存起来的初始值是一个不确定数,这个不确定数会一直保存到真正复位位置。为了使单片机正常工作,被锁存的EA电平与这个引脚当前辑电平一致。机密位只能通过整片擦除的方法清除。 编程的Flash 通常是在AT89C51的出货量与片上闪存内存阵列中删除状态(即内容=快跳频)并随时准备进行编程。编程接口可以接受一个高电压( 12伏)或低电压 52 天津工业大学本科毕业论文 (虚拟通道连接)计划使信号.在低电压编程模式提供了一个方便的方法的程序AT89C51单片机在用户的系统,而高电压 编程模式是符合常规的第三方Flash或可擦写可编程只读存储器程序员。该AT89C51单片机随同无论是高电压或低电压编程模式。AT89C51单片机代码的编程存储器阵列字节 在这两种编程模式。编程任何nonblank字节的片上闪存,整个记忆体必须清除使用芯片擦除模式。 规划算法:在编程AT89C51单片机,地址,数据和控制信号应设立根据Flash编程模式表。到程序的AT89C51单片机,采取下面的步骤。 1 。输入所需的内存位置的地址 线。 2 。输入相应的数据字节的数据线。 3 。激活的正确组合的控制信号。 4 。提高电子艺界/ VPP至12V的高电压编程模式。 5 。脉冲进修/孕酮一次计划中的一个字节闪存阵列或锁定位。字节写周期自我通常需要的时间和不超过1.5毫秒。重复步骤1到5 ,更改地址和数据为整个阵列或到年底,对象文件达成共识。 数据轮询:该AT89C51的数据轮询功能说明结束了写周期。在写周期,一个试图读取最后字节书面将导致补充书面资料上PO.7 。一旦写周期已经完成,真正的数据是有效的所有输出,下一个周期开始。数据轮询可以开始任何时候在写周期已经开始。 准备/忙:进展字节编程也可以被监测的RDY /天空电视台的输出信号。 P3.4被拉低后高进修不用编程期间说明忙碌的。 P3.4被拉高时再次编程这样做表明准备。 程序验证:如果锁定位LB1和LB2尚未编程,编程代码可以读取数据备份通过地址和数据线进行核查。锁定位无法验证直接。验证锁位是所取得的观测,其功能已启用。 芯片擦除:整个闪存阵列抹去电通过适当的组合和控制信号举办进修/孕酮低了10毫秒。数组的代码写入与所有“ 1 ”号该芯片擦除操作必须得到执行之前的 53 天津工业大学本科毕业论文 代码存储器可以重新编程。 读字节的签名:签名字节宣读了相同的程序作为一个正常的核查工作地点030H , 031H ,并032H ,但P3.6和P3.7必须退出一个逻辑低。返回的值是如下。 ( 030H ) = 1EH表明制造商 ( 031H ) = 51H表明基于89C51 ( 032H ) =快跳频表明12V的编程 ( 032H ) = 05H显示5V的编程编程接口 每一个字节的代码在闪存阵列可以书面和整个阵列可以被删除,使用适当的组合的控制信号。写入操作周期一旦启动,将自动时间本身完成。 54 天津工业大学本科毕业论文 谢辞 从论文选题、搜集资料到思路确定,都是在导师刘立峰老师的精心指导下完成的,导师认真负责的态度使我们每一个人从中受益,每当我们遇到问题时,导师都能耐心讲解,并且对我们的错误及时纠正,如果有必要,总会把大家召集在一块,互相讨论学习,这也让我们学到了很多,借此机会,向刘老师表示真挚的谢意。 55 因篇幅问题不能全部显示,请点此查看更多更全内容