单片机入门之串口通讯

上传人:人*** 文档编号:507682394 上传时间:2023-06-26 格式:DOC 页数:40 大小:369.50KB
返回 下载 相关 举报
单片机入门之串口通讯_第1页
第1页 / 共40页
单片机入门之串口通讯_第2页
第2页 / 共40页
单片机入门之串口通讯_第3页
第3页 / 共40页
单片机入门之串口通讯_第4页
第4页 / 共40页
单片机入门之串口通讯_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《单片机入门之串口通讯》由会员分享,可在线阅读,更多相关《单片机入门之串口通讯(40页珍藏版)》请在金锄头文库上搜索。

1、AT89C51串口编程 前言本文档是为单片机初学者写的有关串口通讯编程的说明文档。使用的单片机硬件是最通用的AT89C51单片机,编程语言为c语言。本文档不是系统的介绍单片机知识的教程,而是为了使您尽快掌握串口编程方法的技术说明。 本文档前几部分大量内容摘自平凡老师的单片机教程,此教程是单片机入门的良好教材,但由于那本教程是由汇编语言描述的,对于时间不充足的同学来说,学习汇编会浪费一些时间,所以我还是整理了我们要了解的内容写到了本文档中。对于时间比较充分,也有兴趣学习汇编语言的同学可以先阅读平凡老师的“单片机教程”,然后从本文档第六部分看起。该教程网址:http:/ 单片机的基本认识一台能够工

2、作的计算机要有这样几个部份构成:CPU(进行运算、控制)、RAM(数据存储)、ROM(程序存储)、输入/输出设备(例如:串行口、并行输出口等)。在个人计算机上这些部份被分成若干块芯片,安装一个称之为主板的印刷线路板上。而在单片机中,这些部份,全部被做到一块集成电路芯片中了,所以就称为单片(单芯片)机,而且有一些单片机中除了上述部份外,还集成了其它部份如A/D,D/A等。 天!电脑中的CPU一块就要卖上千块钱,这么多东西做在一起,还不得买个天价!再说这块芯片也得非常大了。 不,价格并不高,从几元人民币到几十元人民币,体积也不大,一般用40脚封装,当然功能多一些单片机也有引脚比较多的,如68引脚,

3、功能少的只有10多个或20多个引脚,有的甚至只8只引脚。为什么会这样呢? 功能有强弱,另外这种芯片的生产量很大,技术也很成熟,51系列的单片机已经做了十几年,所以价格就低了。 既然如此,单片机的功能肯定不强,干吗要学它呢? 话不能这样说,实际工作中并不是任何需要计算机的场合都要求计算机有很高的性能,一个控制电冰箱温度的计算机难道要用P4?应用的关键是看是否够用,是否有很好的性能价格比。实现一个发光二极管的闪烁体会对单片机的c语言编程买回来一块c51单片机,要想使用它 首先要做必要的连线。我们实验室通常会给我们提供已经接好线的板子,所以我们不必自己去连线,这里需要说明的一点是,一块单片机要工作起

4、来首先需要复位,所谓复位就是在单片机的RST引脚持续的加上两个机器周期的高电平,使单片机回到工作的状态。(机器周期在串口波特率的计算中介绍)我做实验时使用的板子是一块较复杂的板子的一部分,那块板子的复位方式是其他器件的程序给单片机复位,可是我做实验时那个器件不需要工作,所以,单片机一直不能复位。如果你遇到这种情况,请按任何一本书上介绍的加电复位选择合适的电容和电阻,按书上的连线图焊接好,如果你用的是我以前用过的板子,这块板子已经接好了复位电路,无须多考虑。请打开一本单片机的书,找到单片机的引脚图。我们用的板子在p1.0脚接有一个发光二极管,当p1.0为高电压时,二极管点亮,为低电压时,二极管熄

5、灭。我们现在想让小灯每隔0.5s闪烁一次,实际上就是要灯亮0.5s,再灭0.5s,也就是说要P10不断地输出高和低电平。怎样实现这个要求呢?我们首先给出程序,然后对照程序分析。实验1/程序开始#includec51单片机编程特有的头文件#define uint unsigned int#define uchar unsigned charsbit P10=P10; /sbit是单片机c程序新的关键字,用于定义位变量void Delay(uint i)/延时程序,i是时间参数 uint j;for(;i0;i-)for(j=0;j125;j+);void main()for(;) P10=0;

6、/单片机内部给p10脚加低电平,关闭小灯Delay(500);/延时0.5sP10=1; /单片机内部给p10脚加高电平,点亮小灯Delay(500); /延时 0.5S在以上程序中,我们可以看出,p101这条语句的含义就是p10加高电压,这个高电压不是1v,而是5v。p100则是p10加低电压。为什么是p101是给p10加5v电压而不是1v,我们不用管。现在从主函数看起,主函数内部是个for循环,此循环是让程序不停的在循环体内部转圈。循环体中,首先让灯暗,然后调用延时函数delay,此函数的作用是延时0.5s,然后点亮小灯,然后又是延时,延时完了进入下一次的循环这样,程序就每隔0.5s就给p

7、10加一次电压,加的电压高低更替,并且永远循环下去。其结果是让小灯不停的闪烁。Delay函数纯粹是用软件的运行来消耗时间以达到延时的目的,至于为什么参数是500时,延时为0.5s,以后再谈。写好了程序,下一步我们的任务是把程序烧写到单片机的存储器中去,但是单片机是不认识c语言的,所以需要我们预先编译成单片机认识的.hex格式文件,此步骤,用keil c软件。然后将.hex文件用编程器写到单片机里,把单片机插回板子,加上电,就可以看到小灯在闪烁了。Keil c和编程器的用法语言描述不太直观,如果您没有用过,建议您现场请教实验室其他同学。三、几个基本概念1、位的含义通过上面的实验我们已经知道:一盏

8、灯亮或者说一根线的电平的高低,可以代表两种状态:0和1。实际上这就是一个二进制位,因此我们就把一根线称之为一“位”,用BIT表示。上面程序中的语句sbit P10=P10中,sbit就是定义位变量的新的关键字。2、字节的含义一根线可以表于0和1,两根线可以表达00,01,10,11四种状态,也就是可以表于0到3,而三根可以表达0-7,计算机中通常用8根线放在一起,同时计数,就可以表过到0-255一共256种状态。这8根线或者8位就称之为一个字节(BYTE)。为什么一个字节是8位数而不是其它数,这只是人为地规定。3、存储器简介存储器就是用来存放数据的地方。它是利用电平的高低来存放数据的,也就是说

9、,它存放的实际上是电平的高、低,而不是我们所习惯认为的1234这样的数字。 存储器按功能可以分为只读和随机存取存储器两大类。所谓只读,从字面上理解就是只可以从里面读,不能写进去,它类似于我们的书本,发到我们手回之后,我们只能读里面的内容,不可以随意更改书本上的内容。只读存储器的英文缩写为ROM(READ ONLY MEMORY)我们只有用编程器对之进行编程。所谓随机存取存储器,即随时可以改写,也可以读出里面的数据,它类似于我们的黑板,我可以随时写东西上去,也可以用黑板擦擦掉重写。随机存储器的英文缩写为RAM(READ RANDOM MEMORY)这两种存储器的英文缩写一定要记牢。4、寄存器的认

10、识单片机中的寄存器多数是八位的,也就是每个寄存器可以放8个二进制数,每个二进制数就是一位了。下面的文档中会直接用到几个单片机中的特殊寄存器,这些寄存器都有自己的名字,如TMOD,SCON,IP,PSW,ACC等,他们都有自己特定的功能,我想等到用到那一个在说哪一个,如果你不习惯可以去查单片机的书。5、晶振频率、机器周期,指令周期 单片机是时序电路,必然会有产生时序脉冲的装置,这个任务交给了晶振。本实验用的晶振是11.0592MH的,也就是每秒钟产生11.0592M个脉冲。单片机的机器周期是晶振振动周期的十二倍,也就是十二分频。一个机器周期也就是1211.0592us大概是1us。指令周期是一条

11、指令的执行时间,单片机中的指令周期按指令不同有单周期,双周期,和四周期指令等,这些一般不用记,用到了查单片机公司给的手册就可以了。四、 记数器与定时器介绍鉴于初进实验室的同学可能尚未接触数字电路中计数器的概念,15条对记述和定时作详细介绍,如已学习过数字电路,可快速浏览以下15条。1、计数概念的引入从选票的统计谈起:画“正”。这就是计数,生活中计数的例子处处可见。例:录音机上的计数器、家里面用的电度表、汽车上的里程表等等,再举一个工业生产中的例子,线缆行业在电线生产出来之后要计米,也就是测量长度,怎么测法呢?用尺量?不现实,太长不说,要一边做一边量呢,怎么办呢?行业中有很巧妙的方法,用一个周长

12、是1米的轮子,将电缆绕在上面一周,由线带轮转,这样轮转一周不就是线长1米嘛,所以只要记下轮转了多少圈,就可以知道走过的线有多长了。2、计数器的容量从一个生活中的例子看起:一个水盆在水龙头下,水龙没关紧,水一滴滴地滴入盆中。水滴不断落下,盆的容量是有限的,过一段时间之后,水就会逐渐变满。录音机上的计数器最多只计到999.那么单片机中的计数器有多大的容量呢?89c51单片机中有两个计数器,分别称之为T0和T1,这两个计数器分别是由两个8位的RAM单元组成的,即每个计数器都是16位的计数器,最大的计数量是65536。3、定时 89c51中的计数器除了可以作为计数之用外,还可以用作时钟,时钟的用途当然

13、很大,如打铃器,电视机定时关机,空调定时开关等等,那么计数器是如何作为定时器来用的呢?一个闹钟,我将它定时在1个小时后闹响,换言之,也可以说是秒针走了(3600)次,所以时间就转化为秒针走的次数的,也就是计数的次数了,可见,计数的次数和时间之间的确十分相关。那么它们的关系是什么呢?那就是秒针每一次走动的时间正好是1秒。结论:只要计数脉冲的间隔相等,则计数值就代表了时间的流逝。 由此,单片机中的定时器和计数器是一个东西,只不过计数器是记录的外界发生的事情,而定时器则是由单片机提供一个非常稳定的计数源。 提供给定时器的计数源是由单片机的晶振经过12分频后获得的一个脉冲源(12分频是指晶振频率的12

14、分之一)。晶振的频率当然很准,所以这个计数脉冲的时间间隔也很准。例如,一个12M的晶振,它提供给计数器的脉冲时间间隔是12M/12等于1M,也就是记数周期为1个微秒。结论:计数脉冲的间隔与晶振有关,12M的晶振,计数脉冲的间隔是1微秒。4、溢出 让我们再来看水滴的例子,当水不断落下,盆中的水不断变满,最终有一滴水使得盆中的水满了。这时如果再有一滴水落下,就会发生什么现象?水会漫出来,用个术语来讲就是“溢出”。 水溢出是流到地上,而计数器溢出后将使得TF0变为“1”。至于TF0是什么我们稍后再谈。一旦TF0由0变成1,就是产生了变化,产生了变化就会引发事件,就象定时的时间一到,闹钟就会响一样。至

15、于会引发什么事件,我们下次再介绍,现在我们来研究另一个问题:要有多少个计数脉冲才会使TF0由0变为1。5、任意定时及计数的方法刚才已研究过,计数器的容量是16位,也就是最大的计数值到65536,因此计数计到65536就会产生溢出。这个没有问题,问题是我们现实生活中,经常会有少于65536个计数值的要求,如包装线上,一打为100瓶,一瓶药片为100粒,怎么样来满足这个要求呢? 我们采用预置数的方法,我要计100,那我就先放进65436,再来100个脉冲,不就到了65536了吗。 定时也是如此,每个脉冲是1微秒,则计满65536个脉冲需时65.536毫秒,但现在我只要10毫秒就可以了,怎么办?10个毫秒为10000个微秒,所以,只要在计数器里面放进55536就可以了。6、计数定时器的方式控制字我们上面说过,c51中有两个计数定时器T1 和T0;每个计数器都有两个八位寄存器,即是十六位的寄存器。TH1、TL1分别是计数器T1的高八位和低八位存储区,TH0、TL0分别是计数器0的高八位和低八位存储区。在单片机中有两个特殊功能寄存器与定时/计数有关,这就是TMOD和TCON。TMOD和TCON是寄存器的名称,我们在写程序时就

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 营销创新

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号