第一篇:单片机 实习日记
实习日记
2012年12月26日:资料查询
为了完成实习任务,在实习第一天我们为理论知识方面做准备,查阅了相关资料,对于单片机有了更深刻的认识。此次实习我们采用了STC89C52单片机,STC89C52是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。芯片中集成了CPU、RAM、ROM、振荡器及时钟电路、定时器/计数器和多种功能。对于键盘显示电路、数字温度计和串口串行通信电路原理及其所需芯片也做了相应了解。以及参考了一下各个模块的设计思路,感觉要完成这项实习任务还是有一定难度的,这个过程就需要我有很大的耐心和探索求知欲才行,一整天下来有点疲惫也有点好奇,不知道接下来的实习过程中我会遇到哪些问题又会创造哪些成就,拭目以待吧!2012年12月27日:方案设计
经过昨天一整天的资料查询,我们今天的主要任务是方案设计。键盘显示电路用单片机最小系统进行按键识别和数码管现实的控制,利用P2口进行按键的扫描和状态读取,利用p0口控制数码管的段选,利用p1口控制数码管位选。数字温度计采用 DS18B20 芯片。测温度电路是由按键S12来控制的。按下S12键即可显示温度。串口通信实现了主机和辅机之间的串口通信,分别将两个AT89C52芯片上的P3.0(RXD),P3.1(TXD)交错相连,实现一个发送数据,一个接收数据。方案初步定下来了,心里踏实了不少。希望明天的硬件设计能够很顺利完成。
2012年12月28日: 硬件设计
利用PROTEL等软件进行硬件设计。PROTEL是PORTEL公司在80年代末推出的软件,它具有原理图设计、印刷电路板(PCB)、设计层次原理图设计、报表制作、电路仿真以及逻辑器件设计等功能。其采用了*.DDB数据库格式保存文件,所有同一工程相关的SCH、PCB等文件都可以在同一*.DDB数据库中并存。Protel绘制原理图的步骤:首先启动Protel软件; 在File>New中新建一个名为a38.ddb的数据库文件,并将其设置合适的保存位置;双击Documents文件夹,再次选择File>New菜单,打开New Document对话框。双击Schematic Document图标,新建一个分别为Sheet1.Sch的原理图文件。双击原理图子文档,启动原理图编辑器。选择Design>Options菜单,打开Document Options对话框。选择图纸的规格,然后单击OK就可以按照原理图绘制了。今天主要完成了键盘显示电路和测温电路,串口串行通信电路设计。设计过程中遇到了一些问题,由于还没有程序驱动,故还算不上硬件设计成功。
2012年12月29日: 软件设计
此次实习,我们利用Keil uV2软件完成应用系统软件设计。Keil C51 uVision2集成开发环境是德国知名软件公司 Keil开发的基于 80C51内核的微处理器软件开发平台,内嵌多种符合当前工业标准的开发工具,可完成从工程建立到管理、编译、链接、目标代码的生成、软件仿真及硬件仿真等完整的开发流程。由于本人编程能力有限,于是我请教了同学,在他的帮助下我才基本完成了程序代码的编写,在这次编程过程中我清晰的认识到了自己的不足,在软件设计和编程方
面我还要下功夫,但是这次实习的编程任务我还是顺利完成了。2012年12月30日: 电路板焊接
仿真成功后,我们很据原理图列出原件清单,并根据清单买了元器件。准备了万用表、电烙铁、焊锡、松香等物品,然后在实验室进行电路板的焊接。今天我们焊接了键盘显示电路和数字时钟部分的电路。焊接过程很漫长,我从下午两点一直焊到了晚上10点才基本完工,刚焊完后调试没有现象,检查之后发现电源开关焊错了,于是我又改动之后有了现象,但数码管不亮,最后发现是有些接电源和接地漏掉了,我又改动了一下,一直到晚上十二点我才顺利调试出来了,虽然过程很漫长很曲折,但是结果是令人满意的,当我按到自己的设计在实物上反映出来的那一刻我的心情特别激动。
2012年12月31日 :写实习报告
经过了这几天的努力,基本任务已经完成了,我把我的仿真图,实物调试图以及程序代码进行了整理,然后结合我网上查到的一些基本资料,我整合了一下,然后开始完成实习报告。虽然主要设计任务完成了,但是很重要的一步就是写实习报告,把自己的成果反映到报告上是一件很费时有需要耐心和整体布局思想的一个过程,其实,这次实习成不成功,很大程度上也取决于实习报告的编写,显然今天一天实在是完成不了这个重大的任务,今天我只是把基本的几个模块划分出来了,基本的内容和图片整理出来了,希望经过明天的努力能出来一份标准化的实习报告。
2013年1月1日: 写实习报告
经过昨天一天的努力,实习报告的基本雏形已经出来了,今天我把各个模版进行了整合和衔接。把基本格式字体,目录都调整了一下,各个模块的说明更加详细完备了,到了下午三点多报告已经完成了,我又从头到位进行了浏览检查,查漏补缺,然后一份完整的报告出炉了。写完报告我又把整个实习做了一个总结以迎接第二天的答辩。实习完整结束了,感觉很有成就感,在这个过程中要感谢的人很多,尤其是在程序编写这块,真的是得到了同学很大的帮助。总之,感谢这次单片机实习给了我很多方面的感触。
第二篇:单片机实习日记
实
习
日
记
2014
年
月
16日
单片机的题目早就下来了,不过一直都是在准备期末考试,没时间弄这个东西,我想了想,不能拖了,几天必须开个头。
听从学长的意见,我决定先从最基本的开始,所以今天的主要任务就是查找资料,安装软件,做好充分的准备工作。
安装软件也是一件很棘手的事情,例如将软件汉化就不是件轻松的事情儿。在装好需要用的proteus
professional,Keil
uVIision,STC等软件以后,我又从从图书馆借来的参考书籍熟悉并了解了了这些软件的基础用法,并且巩固了以前所学的模电知识和刚刚结束的数电单片机知识。这也确实是个说起来容易做起来难的事情。最终,经过不断努力,安装好了这些软件。利
用休息的时间,我对接下来十三天的实习期做了一个初步的规划,满怀期待的憧
憬着十三天后可以做出成果的日子。
实
习
日
记
2014
年
6月
17日
实习的第二天,我确定了今天的主要任务就是确定好这次课程设计的方案。为了设计出方案,我对网上查到的资料和借阅的图书馆书籍进行了大致阅读。通过对课设要求里各个模块的基本原理的研究,选出一些可以实现并且能满足课程设计要求的多种方案,并且要在这多种方案的基础上,优中选优,选出一个更适合实际的方案。
之后,还有一个挺麻烦的问题,那就是对于芯片的选择。要选择出合适的芯片,这要求对各种芯片的功能性能要熟悉,还要对它们的拓展有一定的了解。这些都加大了对方案选择的难度,好在通过网络进行搜索,搜索各种芯片的资料并不是很难,这样就为挑选出合适的方案留下了一定的时间。在选择好最为合适的方案之后,我决定明天就可以开始进行对这次实习硬件的设计了。
实
习
日
记
2014年
月
18日
由于昨天的不断查阅资料,今天基本上可以进行硬件设计了。由于方案只是理论上的一个东西,所以在硬件设计中要不断的结合实际进行一些细节上的修改。在方案流程图实行之后,进行了更多的细节上的讨论。
通过器件的性能,得到了一些理论数据,同时由于实际中会出现一些误差,所以需要增加一些旁路电路来提高电路的稳定性。今天设计的事最小系统,包括晶振模块和复位模块。
实
习
日
记
2014年
6月
19日
昨天完成了最小系统的设计,今天开始进行外部扩展电路的设计。今天设计通信接口部分和矩阵键盘以及数码管显示部分。通过找到的通信接口的资料和引脚图,比较顺利的设计出了这部分的硬件。典型地串口用于ASCII码字符的传输。通信使用3根线完成1地线2发送3接收。由于串口通信是异步的端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手但是不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。
实
习
日
记
2014
年
月
20日
今天是硬件电路设计的最后一天,就是设计矩阵键盘电路以及数码管显示部分。看了原理图,发现基本上还比较简单。但是比较麻烦的问题就是对于输入矩阵键盘的设计,所以对于方案的选择有了重新的审视。重新选择了方案之后,参照了查到的资料,从而设计好了硬件电路。同时在布线这个问题上也花了好久的时间。此外,今天干的另一件事情就是将这几天的设计融合在一起,汇成了总设计图,感觉今天收获最大就是,完成了整个的硬件部分设计。
实
习
日
记
2014
年
月
由于我对编程这一块的知识掌握的实在太差,所以我必须抽出时间来专门将以前学的那些编程知识再看一看,再进行更深层次的学习,要不的话,我的软件部分将没法进行下去。因此,我找出了以前的C语言的教材,以及网上的一些教学视频,对C语言进行了学习。经过了一天辛苦的学习,大致上懂了C语言这一块的知识。接下来做了一下后边的软件部分设计的安排。
实
习
日
记
2014
年
月
22日
今天终于要弄软件部分了,其实还是满忐忑的,因为一直以来,我对程序这一块的东西不大懂。设计程序对我来说并不是一件容易的事情,编程一向是我并不在行的,所以我今天花了不少时间,把我自己的单片机上面所附带的例程找出来,找出了与键盘显示串口通信等相关的一些例程,并对这些例程进行了学习。然后尝试写好软件流程图,并依据软件流程图和例程的程序,进行修改和改进,重新编写了自己程序。不过进度特别慢,总是会出现一些错误,使
Keil
uVIision4
没有办法进行编译。
实
习
日
记
2014
年
月
23日
前边写好了软件流程图之后,由于前两天编程的复习。我借助一些以往的与键盘显示串口通信相关的例程,自己尝试编写了这些程序。相比较前两天,现在我的编程的速度快的多,而且每个分块的程序已经顺利完成了。
好不容易编译成功,在一番心中小小的激动之后,却面临更大的困境,就是该如何把已经写好的是三个分块程序融合为一个程序呢?想开始我以为把所有的程序贴在一起就可以了,但最终编译还是失败了,不过今天至少完成了各个模块的编写。
实
习
日
记
2014年
月
24日
今天又是很苦的一天,融合程序实在是件不容易的事情,至少通过编译就
是件不容易的事情。不过不经意间,已经实习了一周多了,时间真是无声无息的溜
走了,不知道是时间过的太快还是过的太慢,这一周紧凑的安排和大工作量,让
我毫无感觉的过了上个周末。可是,在各种求助和纠结的编程之后,终于通过了编译,一阵窃喜,虽然不知道是不是可以仿真成功,但是心情却好了一大截,希望明天的仿真一切顺利。
实
习
日
记
2014
年
月
25日
完成前边的设计,接下来就是进行仿真的时候了。我决定开始进行电路的仿真,于是便开始用
proteus
来画电路仿真图。经过边学习边仿真后,不断辛苦的找元器件、制图,用了比我想象中更久的时间画好了仿真电路图并设置好了各种连接端口。然后将好不容易编译好后生成的hex文件放入主机和从机,发现不能通过仿真,真是六神无主了。经过大神的指点后,修改了自己的电路图上的一些问题,终于比较顺利的做出了仿真。
实
习
日
记
2014年
6月
27日
接下来就是电路焊接部分了。整理好元件清单表,去了趟广埠屯,买回了需要的元器件。在实验室里呆了一天。
从硬件电路上来看,需要附加焊接的电路并不复杂,只不过该如何布局的合理一些,并且正确无误的将电路焊出来,也不是一件容易的事情。经过一天按部就班的焊接,虽说元件焊的不够精美,但是比较顺利的完成了最小系统和外部扩展电路的焊接。在初步检查之后,硬件电路的焊接基本没有什么问题。电路焊接部分完成了。
实
习
日
记
2014
年
月
28日
昨天焊接好了电路板,现在感觉整个人压力小了好多,轻松了很多。接下来,就是硬件调试了,将程序下在单片机里面,不过又出现了意想不到的插曲了,由于出现了虚焊,所以一直没法下载。经过了不断地排查,最终解决了这个问题。最后调试好了单片机,能够通过按键来实现所有模块的结果。
调试之后,我领悟到调试的重要性。只有调试成功,才能说明单片机功能的实现。在调试过程中遇到那些意外的事情才知道程序的不足性和要改进的方向。今天将主机和从机的相接,以使各个部分不相冲突。不过将按键一一按下后,数码管显示都一一实现了功能。对于后边的答辩,有了充足的信心。
实
习
日
记
2014
年
6月
29日
看着自己焊的实物电路,紧张的又熟悉了一遍原理,并进行了最后一次的单片机实物调试,最后整理了一遍报告,也并未太大的失误。
这两周的单片机实习让我学到了太多的东西。这两周很辛苦,整天都是在搞单片机,晚上睡觉的时候眼前都是单片机。我深深的觉得要有过硬的硬件软件知识,才可以在未来的学习和工作中迎接一次又一次的任务和挑战,这样才能让自己变得更加有底气,才能提高自己的能力,才能为未来做好准备。
希望答辩的时候也能一切顺利。
第三篇:单片机实习心得体会
单片机实习心得体会
随着电子技术的发展,特别是随着大规模集成电路的产生,给人们的生活带来了根本性的变化,如果说微型计算机的出现使现代的科学研究得到了质的飞跃,那么可编程控制器的出现则是给现代工业控制测控领域带来了一次新的革命。在现代社会中,温度控制不仅应用在工厂生产方面,其作用也体现到了各个方面。本学期我们就学习了单片机这门课程,感觉是有点难呢。也不知道整个学习过程是怎么过来得,可是时间不等人。
时光飞逝,一转眼,一个学期又进尾声了,本学期的单片机实习课题也在一周内完成了。俗话说“好的开始是成功的一半”。说这次实习,我认为最重要的就是做好程序调试,认真的研究老师给的题目。其次,老师对实验的讲解要一丝不苟的去听去想,因为只有都明白了,做起产品就会事半功倍,如果没弄明白,就迷迷糊糊的去做,到头来一点收获也没有。最后,要重视程序的模块化,修改的方便,也要注重程序的调试,掌握其方法。
虽然这次的实习算起来在实验室的时间只有几天,不过因为我们都有自己的实验板,所以在宿舍里做实验的时间一定不止三天。硬件的设计跟焊接都要我们自己动手去焊,软件的编程也要我们不断的调试,最终一个能完成课程设计的劳动成果出来了,很高兴它能按着设计的思想与要求运动起来。
当然,这其中也有很多问题,第一、不够细心比如由于粗心大意焊错了线,由于对课本理论的不熟悉导致编程出现错误。第二,是在学习态度上,这次课设是对我的学习态度的一次检验。对于这次单片机综合课程实习,我的第一大心得体会就是作为一名工程技术人员,要求具备的首要素质绝对应该是严谨。我们这次实习所遇到的多半问题多数都是由于我们不够严谨。第三,在做人上,我认识到,无论做什么事情,只要你足够坚强,有足够的毅力与决心,有足够的挑战困难的勇气,就没有什么办不到的。
通过这次单片机实习,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。创新可以是在原有的基础上进行改进,使之功能不断完善,成为真己的东西。这个设计过程中,我们通过在原有的计数器系统进行了改进,使之增添了暂停、计数、清零等的三个控制功能,使之成为一个更加适用,功能更加完备的属于自己的一个系统。设计结果能够符合题意,成功完成了此次实习要求,我们不只在乎这一结果,更加在乎的,是这个过程。这个过程中,我们花费了大量的时间和精力,更重要的是,我们在学会创新的基础上,同时还懂得合作精神的重要性,学会了与他人合作。作为一名自动化专业的快大三学生,我觉得做单片机实习是十分必要的。在已度过的大学时间里,我们大多数接触的是专业课。我们在课堂上掌握的仅仅是专业课的理论知识,如何去锻炼我们的实践能力?如何把我们所学的专业基础课理论知识运用到实践中去呢?我想做类似实习就为我们提供了良好的实践平台。
首先在做本次实习的过程中,我感触最深的当属查阅大量的设计资料了。为了让自己的设计更加完善,查阅这方面的设计资料是十分必要的,同时也是必不可少的。我们是在做单片机实习,但我们不是艺术家,他们可以抛开实际尽情在幻想的世界里翱翔,而我们一切都要有据可依,有理可寻,不切实际的构想永远只能是构想,永远无法升级为设计。
其次,在这次课程设计中,我们运用到了以前所学的专业课知识,如:C语言、模拟和数字电路知识等。虽然过去从未独立应用过它们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的又一收获。
最后,在实习之前,我们要对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在实习过程中遇到问题是很正常的,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题。但是从中学到的知识会让我受益终身。发现、提出、分析、解决问题和实践能力提高都会受益于我在以后的学习、工作和生活中
通过这几天的单片机的实训,我在理论的基础上更深刻的掌握了单片机的深层内容及实际生活中的应用,实训锻炼了自己动手能力和思维能力,还有在软件方面的编程能力,让我受益匪浅,同时也暴露出一些平时学习上的问题,让我深刻反思。这些问题的发现将为我以后的学习和工作找明道路,查漏补缺为进一步学习作好准备。
第四篇:单片机实习总结
单片机实习总结
为期四周的单片机实习结束了,回忆起这次实习的经历,自己感到受益匪浅,收获颇丰。通过对单片机小系统的设计、焊接、装配,掌握电路原理图及电子线路的基本焊接装配工艺、规范及注意事项;系统板的测试,了解系统板的工作原理及性能,掌握元器件及系统故障的排除方法;掌握程序编制及调试方法,完成系统初始化、存储器操作、端口操作、模拟量采集、模拟量输出、串口通讯、IIC、日历时钟芯片、键盘显示等程序的编制及调试;了解和掌握了 Keil 软件使用。
系里的老师为了做好这次实习,准备了一个假期,费了很大的心血,通过实习确实进一步巩固自己的专业知识,为日后的工作打下坚实的基础。通过这段时间的实习,自己有了很大的提高,解决了许多以前在课堂上不懂的问题,对知识了解的更透彻,清楚了。这次实习借助计算机上的软件进行模拟,通过在计算机模拟,感觉上很直观、方便设计。
以下是这次实习老师为我们安排的具体内容:
一.实验仿真板1
1)半字节led交换显示;
2)单向循环流水led显示;
3)双向循环流水led显示;
4)以上三种led显示形式各运行五周期后轮流显示;
5)可控流水灯设计,P3.2键为开始键,按此键则灯开始流动(由上而下);P3.3键为停止键,按此键则停止流动,所有灯暗;按P3.4为单向循环流水led显示;接P3.5为双向循环流水led显示。
6)自由设计。
二.实验仿真板2
7)数码显示年、月、日“**-**-**”和时、分、秒“**-**-**”;
8)按键对应置数显示“0~F”;
9)8位2~16进制计数器;
10)数值计算、筛选、排列显示
11)用软件延时实现电子钟数码显示时、分、秒“**-**-**”;
12)用定时器T0实现电子钟数码显示时、分、秒“**-**-**”;
13)可用键盘调整初值(校准)的电子钟数码显示时、分、秒“**-**-**”;
14)自由设计。
三.实验硬件电路板
具体项目
1.led显示模块:单向循环流水led显示,双向循环流水led显示。要求掌握使用查表方法编制任意点亮历程的实现,使用软件延时;
2.数码管显示模块:显示分、秒“****”。要求练习软件延时实现电子钟数码显示,用定时器实现电子钟数码显示,分别使用串行静态显示和动态扫描显示两种方式;
3.键盘模块:按键对应置数显示“0~F”;可用键盘调整初值(校准)的电子钟数码显示分、秒“****”,设置相应功能键,控制各功能模块的运行。要求练习键盘的中断方式和行列扫描方式;
4.定时器、计数器模块:利用555定时器实现计数并显示;检测脉冲频率,测量脉冲周期并显示等;
5.A/D转换器数值采集、计算、显示、程序设计;
6.D/A转换器输出数据,或用示波器观察波形;
7.中断嵌套的实现,注意理解断点保护和现场保护的异同。要求使用键盘的中断方式实时响应以上编制的2个以上的功能模块。如:在运行计数器的任意时刻利用键盘调用流水灯模块,流水灯模块运行完之后回到主程序继续运行计数器模块;
8.液晶显示模块:用液晶显示汉字和代码如“河北科技师范学院”“时间**-**-**(年月日)”如(时间08-02-25);
9.利于温度传感器和液晶显示模块,作温度仪表,显示采集路数及温度值和变化曲线;
10.I2C总线模块:实现对AT24c02的读写操作,并配合液晶显示读写内容;
11.时钟日历芯片模块:利用时钟芯片DS1302实现日历的编制,利用液晶显示包括时间、日期、星期几的内容;
12.实现单机和多机通讯程序设计;
13.自由设计(附加档)。
在这次实习的过程中,时间安排的很合理,内容上也很充实。经过此次的实习,我从中学到了很多东西,这其中既有对已有知识和技能的巩固,又有对新知识的理解和掌握。总结这次实习的整个过程,我觉得深受教益,主要有以下几点:
1.因为有老师精心准备的实习方案,在实习的过程中,我们每一步要做什么,每一步要完成什么任务,都有一个很清楚的思路,而且每天都有老师细心指导,帮助我们解决不懂的问题,而且我学到了许多新知识,尤其是单片机方面知识量的扩充。
2.在本次实习中,我将过去所学的知识和技能应用到设计中去,使实习的内容很充实,这对我来说不仅是对知识的再理解、再巩固、再加深,而且增加了我们运用所学知识解决实际问题的能力,在此次实习中,采用理论与实际相结合的方法,使所学知识掌握的更加牢固。
3.通过这次单片机实习,使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从实践中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。对我们学生来说,实践与理论同样重要,这是我们以后在工作中说明自己能力的一个重要标准。在实习的过程中遇到问题,可以说得是困难重重,但在老师的帮助下,最后都一一解决了。这次实习虽然很累,但当我获得成果时,心中也不免产生兴奋。
4.通过本次实习,使我加强了团结协作的意识以及锲而不舍的精神。在设计过程中,得到同学们的极大帮助。其中我要特别感谢设计指导老师的不倦教诲,在设计过程中,经常在繁重的教学任务中抽出时间来指导我们的实习设计,做到有问题及时发现,及时改进,省了一些不必要麻烦。
5.通过这次实习使我进一步弄懂所学到的课本知识,巩固和深化对单片机的结构、指令系统、中断系统、键盘/显示系统、接口技术、系统扩展、定时/控制、程序设计、应用开发、等基本理论知识的理解,提高单片机应用于技术的实践操作技能,掌握单片机应用系统设计、研制的方法,培养利用单片机进行科技革新、开发和创新的基本能力,为毕业后从事与单片机相关的工作打下一定的基础。
对我而言,知识上的收获重要,精神上的丰收更加可喜。挫折是一份财富,经历是一份拥有。实习结束了,但这次实习学习到的知识将会终身受益!
第五篇:单片机实习报告
1602液晶显示设计
一、实验简介:
通过学习本门课程,能够掌握利用51单片机完成简单项目的应用系统设计和调试,掌握单片机应用程序的编写和调试过程。本次实习,我的题目是用51单片机控制1602液晶显示指定字符的设计,需要分别设计系统的硬件电路及调试软件程序,并能够正确演示调试结果。
二、实验要求:
1、查找资料学习单片机的LCD点阵显示原理;
2、理解KST-51的LCD点阵显示电路图;
3、编制程序在点阵LCD上实现字母:我爱单片机绘制原理图;
4、完成实验报告的撰写。
三、硬件电路:
(一)89C52系列单片机
89C52是INTEL公司MCS-51系列单片机中基本的产品,它内置8位中央处理单元、512字节内部数据存储器RAM、8k片内程序存储器(ROM)32个双向输入/输出(I/O)口、3个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。此外,89C52还可工作于低功耗模式,可通过两种软件选择空闲和掉电模式。在空闲模式下冻结CPU而RAM定时器、串行口和中断系统维持其功能。掉电模式下,保存RAM数据,时钟振荡停止,同时停止芯片内其它功能。89C52有PDIP(40pin)和PLCC(44pin)两种封装形式。
1、单片机最小系统
KST-51单片机开发板
最小系统是指单片机正常工作的最基本的外围配置,主要包括时钟电路、复位电路等。
51单片机最小系统是利用XTAL1和XTAL2两个引脚外接晶体振荡器的内部时钟方式,C1和C2的作用是稳定频率和快速起振,典型值为30pf,晶体振荡器的振荡频率典型值为6 MHZ、12 MHZ或者11.0592 MHZ,系统与PC通信时常采用11.0592MHZ。
复位电路设计形式包括:上电复位、按键复位、和利用专业的复位芯片进行管理,本次设计采用按键复位方式。
51单片机最小系统
2、单片机引脚功能
51系列单片机有40个引脚,包括2个 电源引脚,2个外界晶振引脚,4个控制或 其他电源复用引脚,32个I/O引脚。1)主电源引脚(2根)VCC(Pin40):电源输入,接+5V电源 GND(Pin20):接地线 2)外接晶振引脚(2根)
XTAL1(Pin19)、XTAL2(Pin18)主要用来构成单片机的时钟电路。时钟电路用来产生单片机工作所需的时钟信号。时钟信号分为内部时钟方式和外部时钟方式。3)控制引脚(4根)
RST/VPP(Pin9):复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。
ALE/PROG(Pin30):地址锁存允许信号 PSEN(Pin29):外部存储器读选通信号
EA/VPP(Pin31):程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。4)输入/输出引脚(32根)
P0口是一个双功能的8位并行口,可以用做地址/数据总线,另外P0口还可以作为通用I/O口使用,此时为准双向口,且内部无上拉电阻。
P1口是单功能的I/O口,只能作为通用的I/O口使用,为准双向口,但内部有上拉电阻。
P2口是一个双功能口,为准双向口,但内部有上拉电阻,P2口功能主要有一下两个方面:一是作为高8位地址输出线使用时,P2口可以输出外部存储器的高8位地址,与P0口输出的低8位地址一起构成16位地址,可以寻址64位的地址空间;二是作为通用I/O口使用时,与P1口使用方法一样。
P3口作为通用I/O口时使用方法与P1一样。另外,P3口主要作为第二功能使用。
(二)1602字符液晶
P3口第二功能表
字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,1602是指显示的内容为16*2,即可以显示两行,每行16个字符。字符液晶绝大多数是基于HD44780液晶芯片的。
1602实物图 1、1602LCD的特性
+5V电压,对比度可调 内含复位电路
提供各种控制命令,如:清屏、字符闪烁、光标闪烁、显示移位等多种功能
有80字节显示数据存储器DDRAM 内建有160个5X7点阵的字型的字符发生器CGROM 8个可由用户自定义的5X7的字符发生器CGRAM
2、字符型LCD1602接口 引脚2、1为1602的电源和地,引脚15、16 为背光电源,引脚4、5、6为控制端口,引脚7-14为 数据端口,以下为各个端口的详细介绍。3、1602存储器
HD44780内置了DDRAM(显示数据存储RAM)、CGROM(字符存储ROM)和CGRAM(用户自定义RAM)。
DDRAM就是显示数据RAM,用来寄存待显示的字符代码。共80个字节,其地址和屏幕的对应关系如下表:
在DDRAM的00H地址处显示数据,则必须将00H加上80H,即0X80+0x00,若要在DDRAM的01H处显示数据,则必须将01H加上80H即 0X80+0x01。以此类推。
字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如下表所示,这些字符有:阿拉伯数字、英文字母的大小写、常 用的符号、和日文假名等,每一个字符都有一个固定的代码。4、1602指令表
对DDRAM的内容和地址操作,HD44780的指令集及其设置说明,共有11条指令: 1)清屏指令
功能:<1> 清除液晶显示器,即将DDRAM的内容全部填入“空白”的字符码20H;<2> 光标归位,即将光标撤回液晶显示屏的左上方;<3> 将地址计数器(AC)的值设为0。
2)光标归位指令
功能:<1> 把光标撤回到显示器的左上方;<2> 把地址计数器(AC)的值设置为0;<3> 保持DDRAM的内容不变 3)输入模式设置指令
功能:设定每次写入1位数据后光标的移位方向,并且设定每次写入的一个字符是否移动。参数设定的情况如下所示: 位名 设置
I/D 0=写入新数据后光标左移 1=写入新数据后光标右移
S 0=写入新数据后显示屏不移动 1=写入新数据后显示屏整体右移1个字 4)显示开关控制指令
功能:控制显示器开/关、光标显示/关闭以及光标是否闪烁。参数设定的情况如下:
位名 设置 D 0=显示功能关 1=显示功能开 C 0=无光标 1=有光标 B 0=光标不闪烁 1=光标闪烁 5)设定显示屏或光标移动方向指令
功能:使光标移位或使整个显示屏幕移位。参数设定的情况如下: S/C R/L 设定情况
0 0 光标左移1格,且AC值减1 0 1 光标右移1格,且AC值加1 1 0 显示器上字符全部左移一格,但光标不动 1 1 显示器上字符全部右移一格,但光标不动 6)功能设定指令
功能:设定数据总线位数、显示的行数及字型。参数设定的情况如下: 位名 设置
DL 0=数据总线为4位 1=数据总线为8位 N 0=显示1行 1=显示2行 F 0=5×7点阵/每字符 1=5×10点阵/每字符 7)设定CGRAM地址指令
功能:设定下一个要存入数据的CGRAM的地址。8)设定DDRAM地址指令
功能:设定下一个要存入数据的CGRAM的地址。9)读取忙信号或AC地址指令
功能:<1> 读取忙碌信号BF的内容,BF=1表示液晶显示器忙,暂时无法接收单片机送来的数据或指令;当BF=0时,液晶显示器可以接收单片机送来的数据或指令;<2> 读取地址计数器(AC)的内容。10)数据写入DDRAM或CGRAM指令
功能:<1> 将字符码写入DDRAM,以使液晶显示屏显示出相对应的字符;<2> 将用户自己设计的图形存入CGRAM。11)从CGRAM或DDRAM读出数据的指令
功能:读取DDRAM或CGRAM中的内容。
5、时序图
(1)读状态 输入:RS=0,RW=1,E=1 读数据 输入:RS=1,RW=1,E=1(2)写指令 输入:RS=0,RW=0,E=下降沿脉冲,DB0~DB7=指令码 写数据 输入:RS=1,RW=0,E=下降沿脉冲,DB0~DB7=数据
四、实习结果与讨论:
通过程序的编辑在1602型LCD上实现了显示英文字符,通过本次实验的学习进一步熟悉了1602型LCD,对其操作有了更多的心得体会,在本次实验中获益匪浅。
五、实验程序: #include
sbit LCD_RS = P2^0;sbit LCD_RW = P2^1;sbit LCD_EN = P2^2;
uchar code dis1[] = {“woai danpianji”};uchar code dis2[] = {“huizhi yuanlitu”};uchar code dis3[] = {“chen jian”};uchar code dis4[] = {“ dianzihua 1101 ”};
void delay(int ms){ int i;while(ms--){ for(i = 0;i< 250;i++){ _nop_();_nop_();_nop_();_nop_();} } }
bit lcd_busy(){ bit result;LCD_RS = 0;LCD_RW = 1;LCD_EN = 1;_nop_();_nop_();_nop_();_nop_();result =(bit)(P0&0x80);LCD_EN = 0;return result;} void lcd_wcmd(uchar cmd){ while(lcd_busy());LCD_RS = 0;LCD_RW = 0;LCD_EN = 0;_nop_();_nop_();P0 = cmd;_nop_();_nop_();_nop_();_nop_();LCD_EN = 1;_nop_();_nop_();_nop_();_nop_();LCD_EN = 0;}
void lcd_wdat(uchar dat){ while(lcd_busy());LCD_RS = 1;LCD_RW = 0;LCD_EN = 0;P0 = dat;_nop_();_nop_();_nop_();_nop_();LCD_EN = 1;_nop_();_nop_();_nop_();_nop_();LCD_EN = 0;}
void lcd_pos(uchar pos){ lcd_wcmd(pos|0x80);//数据指针=80+地址变量 }
void lcd_init(){ lcd_wcmd(0x38);//16*2显示,5*7点阵,8位数据 delay(5);lcd_wcmd(0x38);delay(5);lcd_wcmd(0x38);delay(5);lcd_wcmd(0x0c);//显示开,关光标 delay(5);lcd_wcmd(0x06);//移动光标 delay(5);lcd_wcmd(0x01);//清除LCD的显示内容 delay(5);}
void flash(){ delay(600);//控制停留时间 lcd_wcmd(0x08);//关闭显示 delay(200);//延时 lcd_wcmd(0x0c);//开显示 delay(200);//延时 lcd_wcmd(0x08);//关闭显示 delay(200);//延时 lcd_wcmd(0x0c);//开显示 delay(200);} main(){ uchar i;delay(10);lcd_init();// 初始化LCD
while(1){ lcd_wcmd(0x06);//向右移动光标
lcd_pos(0);//设置显示位置为第一行的第1个字符 i = 0;while(dis1[i]!= ' '){ //显示字符“ woai danpianji” lcd_wdat(dis1[i]);i++;delay(30);//控制两字之间显示速度 }
lcd_pos(0x40);//设置显示位置为第二行第1个字符 i = 0;
while(dis2[i]!= ' '){ lcd_wdat(dis2[i]);//显示字符“ huizhi yuanlitu ” i++;delay(30);//控制两字之间显示速度 }
flash();//闪动二次
lcd_wcmd(0x01);//清除LCD的显示内容 delay(200);//控制转换时间 lcd_wcmd(0x04);//向左移动光标
lcd_pos(15);//设置显示位置为第一行的第16个字符 i = 0;while(dis3[i]!= ' '){ //显示字符“ chen jian ” lcd_wdat(dis3[i]);i++;delay(30);//控制两字之间显示速度 } lcd_pos(0x4F);//设置显示位置为第二行的第16个字符 i = 0;while(dis4[i]!= ' '){ lcd_wdat(dis4[i]);//显示字符“ dianzihua1101 ” i++;delay(30);//控制两字之间显示速度 }
flash();//闪动二次
lcd_wcmd(0x01);//清除LCD的显示内容 delay(200);//控制转换时间 } }