实验一、根本I/O口实验:点亮二极管
1、 实验现象:
8个二极管距离发光。
2、 实验意图:
了解最简略的单片机程序的编写办法;
了解单片机I/O口驱动二极管的办法
3、 实验使命剖析:
要想让二极管依照咱们的要求发光,首先要搞清楚电路的衔接方法,咱们先只看和这部分内容有关的电路。当JMP0跳线接在12方位时(选通二极管显现),电路如下图所示:
下面,我分别把单片机各管脚功用作一简略解说:
XTAL1和XTAL2端:
因为单片机是一种时序电路,作业的时分有必要外加时钟周期,没有时钟周期,就不能履行程序代码,单片机就不能作业。
XTAL1和XTAL2即为外接时钟引脚。时钟的发生有两种方法,内部方法发生和外部方法发生。该电路是内部方法发生时钟的典型电路,内部时钟的晶振频率一般是4M~12M之间,学习板上用的是12M的晶振,外接两个谐振电容。该电容的典型值是30pf。
RST端:
RST是复位端,简略的说,单片机的复位和计算机的重启动是相同的概念。怎么进行复位呢?只需在RST端加上高电平就能够了。
图示电路也是一个典型的复位电路,加电瞬间,电容两头相当于短路,RST端发生一个高电平,使得单片机复位。然后跟着电容充电,RST电压渐渐下降,当降低到低电平时,单片机开端正常作业。相同,在按下按键时,RST也发生一个高电平,单片机也被复位。下载程序的时分,应该拔下RST跳线,即可断开复位电路,防止串入搅扰信号。
EA/VPP:
EA端是内部程序存储器和外部程序存储器的挑选端,当EA=1时,拜访片内程序存储器,当EA=0时,拜访片外程序存储器。关于咱们的学习板来说,因为AT89S52自带8k的程序存储器,没有扩展外部程序存储器,所以应该接高电平。
VPP是引脚的第二功用,暂且不介绍了。
ALE
地址锁存答应信号。在扩展了外部程序存储器的情况下,当单片机拜访外部程序存储器时,ALE输出低8位地址的锁存信号。在本学习板上没有用到这个端子.
PROG为引脚的第二功用,暂且不介绍了,有爱好的同学能够查询相关教材。
PSEN
外部程序存储器读选通讯号,因为在学习板上没有扩展外部程序存储器,所以这个脚也不必。
P1口:
P1口可作为通用的I/O口运用。在本电路中,P1.5口外接蜂鸣器(其他几个和本实验无关,暂不介绍)。上图可知,当P1.5输出高电平时,对应的三极管导通,蜂鸣器发声。(同学可能会问,这个功用如同和咱们的实验使命没有什么关系啊,我一会在给咱们解说)。
P3口:
P3口是双功用口,第一种功用和咱们P1口相似,也能够作通用的I/O口运用。第二种功用和单片机的串行通讯,中止等功用有关,咱们暂且不介绍。今后用到相应功用在给咱们介绍。
P2口:
P2也能够作为输进口或许输出口来用,在实验板上,P2口的效果在于选通数码管显现。在本例中咱们不必。
P0口:
P0口在咱们这个实验中扮演着重要的人物,从图上可知,发光二极管是由P0口驱动的。且慢,咱们可能会发现,P0口是经过74AS244驱动发光二极管的,这是为什么呢?在这儿,74AS244是个缓冲器,它的效果在于阻隔单片机和外围电路,这样能够维护单片机,而且能够增强单片机的输出驱动才干。在该电路中,假如咱们去掉74AS244,而直接把二极管接在P0输出口上,也是能够的,这是因为电源经过上拉电阻能够供给较大的驱动电流。
一起咱们要注意,当P0口作为输出口运用的时分,它的输出级是漏级开路的方法,所以它应该外接上拉电阻,这时才干有高电平输出。(咱们的板子上面用了一个排阻。漏级开路的输出级相似于ttl电路中集电极开路的输出级,咱们能够参阅随意一本数电教材,关于oc门的原理介绍,上面说得十分清楚。)
下面咱们来看看怎样才干使得P0口驱动的8个二极管依照要求发光。咱们发现,只需P0口相应的一个引脚输出低电平的时分,则对应的二极管发光。例如:欲LED1发光,只需求P0.0引脚输出相应的低电平就能够啦!
因而,假如咱们需求8个二极管距离发光,在板子上,从左至右依次为亮灭,则P0口的输出值应该是:01010101,即为55H。
好啦,剖析清楚之后,咱们能够开端写程序啦!
4、实验程序如下:
org 0000h ;(1)
clr p1.5 ;(2)
loop: mov p0,#55h ;(3)
ajmp loop ;(4)
end ;(5)
注释
(1)、org是个伪指令,也就是说它在汇编时不发生方针代码。(咱们能够在medwin环境里翻开反汇编窗口看看就理解啦。)它一般呈现在每段源程序或许数据块的开端,指明此句子后边的程序或许数据块的开端地址。咱们编写好的程序是寄存在单片机的程序存储器中的,它的可寻址空间是64k,即0000h~0ffffh。这个句子表明咱们的程序从程序存储器地址为0000h单元开端寄存。
(2)、从电路图上面能够看到P1.5衔接蜂鸣器,所以这个句子的意思是,把P1.5置零,不让蜂鸣器响。因为单片机复位今后,P1口的内容为FFH,这样蜂鸣器就会一向响。所以要把该端子置零。当然,假如你不怕吵,这句话也能够不写。
(3)、给P0口赋值55H,使得8个二极管距离发光。
(4)、跳转回标记为loop的指令。(注ljmp指令也具有相同的功用,两者区别是:ajmp只能在2k字节内搬运,而ljmp能够在64k字节内搬运。本程序用ajmp就足够了。)
(5)、这相同也是一条伪指令,告知咱们程序到这儿就完毕啦。
好啦,然后把这个程序进行编译,下载,你就会看到学习板上的发光二极管乖乖的依照你的指令作业了。
5、 课后练习
(1)、学习该程序中呈现的知识点涉及到的理论知识,包含I/O口,程序存储器,数据存储器,和运用到的指令。
(2)、编写程序,使得发光二极管从左到右四个亮,四个不亮