单片机翻译完成.docx

上传人:b****0 文档编号:10085752 上传时间:2023-05-23 格式:DOCX 页数:12 大小:51.21KB
下载 相关 举报
单片机翻译完成.docx_第1页
第1页 / 共12页
单片机翻译完成.docx_第2页
第2页 / 共12页
单片机翻译完成.docx_第3页
第3页 / 共12页
单片机翻译完成.docx_第4页
第4页 / 共12页
单片机翻译完成.docx_第5页
第5页 / 共12页
单片机翻译完成.docx_第6页
第6页 / 共12页
单片机翻译完成.docx_第7页
第7页 / 共12页
单片机翻译完成.docx_第8页
第8页 / 共12页
单片机翻译完成.docx_第9页
第9页 / 共12页
单片机翻译完成.docx_第10页
第10页 / 共12页
单片机翻译完成.docx_第11页
第11页 / 共12页
单片机翻译完成.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

单片机翻译完成.docx

《单片机翻译完成.docx》由会员分享,可在线阅读,更多相关《单片机翻译完成.docx(12页珍藏版)》请在冰点文库上搜索。

单片机翻译完成.docx

单片机翻译完成

第2章微控制器

微控制器是一个可编程集成电路(IC),当你开启微控制器时就会看到一系列的命令,这些命令是你事先植入芯片中的。

你可以通过改变这些命令做不同的事情(通常称为编程)。

为了修改你的命令你需要一个PG320这样的装置,你可以通过PG320从计算机上下载程序到微控制器上。

这一章将为你展示一些简单的程序和如何下载。

2.0.1555定时器

如何产生脉冲

555定时器是由简单的晶体管组成,作用和触发器一样,它们本身不能定时,当你接上电源它们开始产生脉冲,当你撤掉电源它们就不能产生脉冲,所以对于555定时器本身来说不能产生脉冲。

产生脉冲的方法就是用一些元件把555连接在一个电路中(如下面的电路)。

这个电路是由一个电容器和一个电阻器构成的。

我们可以交换触发器和启动充电电容。

电阻器用来控制电容充电的快慢。

电阻越大,电容充电时间越长。

电路中的电压可以用作输入的另一个触发器,因为起始电压为0时,在第二个开关处不会有任何的反应,但最终由于电容器充电到一定值激活第二个触发器。

555工作的原理是当你交换第一个触发器,输出引脚为Vcc(由阳极供应电压),电容器开始充电。

当电容器电压达到2/3的Vcc(也就是Vcc*2/3),第二个触发器闭合使输出电压为0伏。

555定时器的引出线如下:

 详细资料

引脚2(触发器)是脉冲的启动开关。

触发器的字符线路告诉我们电压与我们通常所期望的相反。

当引脚2接0伏电压,对这个相反行为的专业术语称为“低态有效”。

对于IC输入模块看到低态有效行为很平常,因为晶体管电路的转换实质就像我们在LED和晶体管指南看到的一样。

引脚6是脉冲的关闭开关。

我们把电容器的阳极连接到这个引脚上,电容器的阴极接地。

当引脚2(触发器)是Vcc,555定时器电压处于0伏控制引脚7(注意反转电压),当引脚2电压为0伏时555停止控制引脚7,然后电容器开始充电。

电容器通过连接在Vcc上的电阻充电,电流开始流入电容器,电容器的电压开始升高。

引脚3是输出(在这里输出实际的脉冲)端。

引脚3上起始电压为0,当触发器(引脚2)上电压为0时,555通过Vcc控制引脚3直到引脚6电压达到Vcc的2/3(也就是Vcc*2/3)。

然后将引脚3的电压接地,这样你就可以看到一个脉冲(此外注意翻转作用).引脚7上的电压同样也要接地,连接电容器进行地面放电。

观看脉冲

为了看到脉冲我们用一个LED接在555输出端(引脚3)。

当输出端电压为0伏时LED将不工作,当输出端是Vcc时LED将工作。

构建电路

因为555的放置要穿过电路实验板的中间线路所以一边4个引脚。

(为了使它们放在孔中你可能需要把引脚弯曲一点)。

直到完成电路后才可以通电。

上面的图表指导你怎样将555上面的引脚编号。

你可以通过寻找在芯片末端的半个循环发现以脚1。

有时候不是半个循环,而是一个点或是很浅的洞。

在你开始构建电路之前,用跳线连接红或绿动力行和在电路板另一边的红或绿动力行。

然后你会很容易的将电路板两边的Vcc和地线连接在一起(如果电线太短,对于阳极(Vcc)用两个电线接在一起成一排,对于地线用两根电线接在一起成不同的排)。

将引脚1接地.

将引脚8接到Vcc上.

将引脚4接到Vcc上.

将LED的阳极接到330欧姆的电阻器上,LED的阴极接地。

将330欧姆电阻器的其它接头连接输出端引脚3.

将引脚7用一个10K的电阻接到Vcc上(R

=10K)。

引脚7和6用跨接线连接。

引脚6接220μF的电容器阳极(C=220μF)。

(为了使阴极能插进电路实验板你可能需要将阳极(长腿的)弯进或弯出一点。

电容器的阴极接地。

引脚2用线接出作为触发器。

开始把引脚2和Vcc连接起来。

现在接电源。

LED将被激活停留大约2秒。

从Vcc上拔掉连接引脚2的电线,你可以通过用你手指接触连接引脚2的电线或将电线接地或是移开来再一次激活555。

(它应该产生大约2秒钟的脉冲)

振荡

接下来我们将使LED不断的反射而不必触发它。

我们将钩住555以便它自己本身可以触发。

工作原理就是我们在电容器和放电引脚,引脚7之间加一个电阻。

现在,电容器将充电(通过

)当电压达到2/3Vcc时,把引脚3和引脚7接地。

但由于RB电容器不能立即放电,电容器通过RB从充电到放电需要一定的时间,RB的电阻越大时间越长。

电容器开始放电的时间也就是LED工作中断的时间。

为再一次触发555,我们将引脚6和触发器(引脚2)连接起来。

当电容器充电时电容器内的电压越来越低。

当电压降到1/3Vcc时触发器引脚2使引脚3变为Vcc并且通过LED激活555。

将引脚7从地面上断开,电容器开始通过RA和RB再次充电。

从以前的电路上构建这个电路,做法如下:

断开电源。

去掉引脚6和引脚7之间的跨接线,用2.2K的电阻来代替(RB=2.2K)

用引脚2处的跨接线连接引脚2和引脚6。

现在重新连接电源并且LED应该始终闪烁(只要电源是开着的)。

用不同阻值的RA和RB做实验看一下LRD闪烁时间长短的变化(你可以改变电容器充放电时间的长短)。

公式

这些是我们控制555脉冲时间长短用到的公式。

t1=充电时间(LED工作时间的长短)=0.693*(RA+RB)*C

t2=放电时间(LED不工作时间的长短)=0.693*RB*C

T=周期=t1+t2=0.693*(RA+2*RB)*C

频率=1/T=1.44/((RA+2*RB)*C)

t1和t2的单位是秒。

C是电容单位是法拉,220uF=0.000220F。

所以对于我们的电路:

t1=0.693*(10000+2200)*0.000220=1.86秒

t2=0.693*2200*0.000220=0.335秒

T=1.86+0.335=2.195秒

频率=0.456(每秒循环的周期)

2.0.2PG302安装

软件CD有安装程序。

PG302的文件夹里有可执行程序的文档。

双击打开这个文档并按照安装指示进行(双击我们的网址来下载这个软件)。

在将来如果你想改变某些地方这里有两种安装方法。

第一种是自动删除。

在大多数情况下你想留着芯片以便在用新编码编程之前再删除。

第二种方法是自动修正。

选择自动修正就是正确编程。

如果芯片在编程前没有删除,这种选择将会发现错误。

通过这章的介绍在工作的时候想着怎样选择方法。

当芯片编程时,把它插进绿色的插座上以便芯片上的引脚1和插座的手柄在同一个区域。

绿色插座的手柄应该在上位(开位)。

然后通过将手柄拉到闭合位置把芯片锁在插座上。

2.0.3AY片软件安装

对于微控制器AY片是我们用来观看和编辑命令(程序)的软件。

它是给文本文件着色的一种很好的文字编辑器。

寻找在CD工具箱中/AY片文件夹中setup.exe 文档(或双击这里)。

双击setup.exe文档。

开始安装AY。

为了运行AY片,到开始->程序->AY软件->AY片

2.0.4TASM软件安装

在C盘上新建一个文件夹命名为tasm,你可以用它来保存你的这些程序。

寻找CD工具箱文件夹中叫tasminst.exe的文档(或双击这里)。

复制这个文档并把它粘贴在C盘新建的文件夹tasm中。

现在双击这个文档,对于这个项目我们可以摘选所有我们需要的文件。

我们用到的主要文件是TASM,称为编译器或汇编程序。

它将微控制器命令从文字版本(我们可以理解的)转换成数字版本(微控制器可以识别的)。

2.0.5第二章摘要

按照图2.1提供一个5伏的电源。

根据2.3介绍你现在应该准备工作了-做一个闪烁的LED,2.4介绍的是一个简单的微控制器系统。

向我们展示了编译程序和下载程序到2051微控制器的基本步骤。

做完这两个项目后你应该能学习到汇编语言编码和更改它通过LED做各种事情。

2.1做一个5伏的电源

大多数的计算机逻辑电路和处理器要求5伏的电源。

为了使用这部分设立一个电源调节器。

通常开始的是未稳压电源,电压范围从9伏到24伏。

为了得到5伏的电源,我们用一个LM7802的电压调节器IC(集成电路)。

IC如下所示:

LM7805用起来很方便,可以很简单简单的调节DC电源(从9VDC到24VDC的任何电源)的阳极连接到输入引脚,将阴极连接到接地引脚,然后当你开启电源后,你就可以从输出引脚那里得到5伏的电源。

在下一项这个5伏的输出引脚将作为Vcc.

将电源适配器上的红线连接到7805的输入端,将黑线连接到接地线的那一行(蓝线在旁边)。

将7805的地线和接地线那一行用黑色的跨接线连接起来。

然后用黄色的跨接线把5伏的输出端连接到旁边带有红色条纹的那一排洞里。

试验板电路如下。

有时输入补给线(上面的12VDC)可能有噪音。

为了消除噪音和得到5伏的电压输出,通常在电路中的输入和地线间加一个电容器(GND)。

连接220uF电容器并且将长脚(阳极的)插在120VDC的那一排将短脚(阴极)接地(靠近蓝线的那一排)。

2.22051微控制器

2051微控制器是一种复杂的可编程的集成电路。

你可以给它一组命令去执行,它将执行这些命令,并且正确的执行你想要它做的事情。

这章将简单的介绍一下2051的引脚,然后2.3将介绍如何编程。

2051如下图所示。

引脚1是一个重置开关。

这个引脚将用来驱使2051在程序开始是启动。

引脚2和引脚3可以用来与计算机或其他装置交流(RXD是接受装置,TXD是传送装置)。

引脚2和引脚3也是端口3的一部分。

端口3包括P3.0,P3.1,P3.2,P3.3,P3.4,P3.5和P3.7(没有P3.6)。

这些引脚通常被用做一般的输入/输出引脚。

它们连接在LEDs上用来开启和关闭LED(将被用作输出)。

或是它们可能连接在电源上如果用户打开或合上电源则2051(将被用作输入)可以被看到。

引脚4和5连接到11.0592MHZ的晶体。

2051用这个晶体来定时。

晶体的运行速度决定2051的运行速度。

你可以用一个运行速度更快的晶体例如24MHZ来使程序运行的更快。

引脚10是2051的地线接头。

引脚12到引脚19构成了端口1。

这是另一套可以用作一般的输入和输出口的引脚。

引脚6,7,8,9,12和13也有其他的用途,但我们还没有深入到那里。

你可以在2.3.1最后所列的资料中对它们有更多的了解。

 

2.3做闪烁的LED

步骤1)组装电路.

第一步组装电路。

通过这一点你应该熟悉用到的部件(2个电阻器,3个电容器,1个LED).2051芯片应被放置在电路试验板的中间部分(象555IC一样),所以每一个脚都有其自己的位置。

你可能需要将脚弯曲一点使芯片能够插到洞里。

将芯片的一边固定在硬表面上也就是芯片的一侧上的10个引脚固定在平面上。

然后轻轻的压一下芯片使所有的引脚弯曲。

这一项需要你将2051从板上移开进行编程。

从板上移开2051时要注意。

通常用芯片拔出器将芯片从板上拔出。

移出芯片时不要弄弯芯片(脚)。

Vcc=5V(用我们初期建立的5V电源)

对于这一项我们能做的就是做一个闪烁的LED。

通过做这个你将能学到编译一个程序基本的过程然后把最终文档下载到微控制器上。

第一步假设我们的程序已经编好。

文件ledtest.asm是我们将要用到的程序(它应该在c:

\tasmTASM的文件夹中)。

在这部分的最后把这个程序打印出来。

做完LED后我们将好好的看一下这个程序。

步骤2)编码

开启MS-DOS窗口.(在窗口的开始菜单下的程序目录下找到MS-DOS命令提示符)改变TASM文件的地址(cdc:

\tasm),并且把用到命令中的编码进行编译。

tasm-51ledtest.asmledtest.hex

产生的新文件命名为ledtest.hex

步骤3)把编码下载到微控制器上

确定电线和电源都连接到PG302程序设计装置上。

把2051放到PG302程序设计装置(看2.0.1部分怎样把芯片放入程序设计装置的图表)。

打开PG302软件

从安装菜单选择你要的微控制器,AT89C2051

从安装菜单选择你用的普通的端口(串行端口),(如果你不知道哪个是哪个那只有猜了)

植入编程装置

植入浏览装置

找到ledtest.hex并双击它(单击)。

(这个文件应该在C:

\tasm\ledtest.hex)

键入OK选择此文件

键入OK在微控制器上编译这个文件。

这个软件应称为‘安装设备驱动程序相当于把文件归档。

如果你看到不同的信息,在

现在这个程序应该在微控制器上

将电源从你建好的电路上撤掉

将微控制器放回你建好的电路上

将电源插头插进电源的适配器(应该连接在电路板上)。

如果LED开始闪烁,那么你已经成功地完成了建立第一个微控制器的项目。

汇编语言编程如下所示。

所有绿色的部分都有注释。

注释是蓝颜色的。

黑色用来编号也用来命名。

红色也用来编号。

如果号码是实际开始的号码那就是红色的,反之则是黑色的。

微控制器上的编号存储在寄存器里。

寄存器的名字是紫色的。

在这个项目中我们用寄存器A(主要的寄存器),R5,R6,和R7。

我们也用R0,R1,R2,R3,和R4。

看一下程序是否行得通。

以第一个开始命令AJMP开始编程可以告诉2051跳到指定的START:

跳到最后的位置。

接下来,ACALL初始化命令跳到INITIALIZE。

我们只是在移动(MOV)错误的编码0到控制寄存器中然后用ACALL初始化命令返回(RET)到下一个命令(你可以把不同的值移到这些控制寄存器中来改变2051的运行方式,不用担心什么)。

下一个命令CPLP1.0控制LED的开或是关(使其与原来的状态相反)。

然后我们到延迟程序在我们重新开启或关闭LED之前作一个延迟(没有这个延迟,LED将开启或关闭的很快以至于我们只是看它好象一直开着一样)。

最后我们用AJMP循环命令跳回到指定的循环点:

开或关LED.微控制器通过循环一直工作直到你关掉电源为止。

我们用到的最多的命令在2.3.1部分已经列出。

你可以在MBKit文件夹中的ProgrammersGuideandInstructionSet.pdf有完整的命令清单和说明,你可以通过按照下面绿色的指导命令编程。

开始AY软件。

打开ledtest.asm文档并试着将命令MOVR6,#00H(在DELAYHS循环中)改成MOVR6,#70H。

保存文件然后返回做步骤2和3看怎么样编程。

;***************************************************************************

;*LEDBlinker*

;*IguanaLabs*

;*4/1/97*

;***************************************************************************

#INCLUDE"8051EQU.INC";包括预先设定的常数

;**************************************************************************

;RESET;重置日期

.ORG0H;在00H输入日期

AJMPSTART;跳到开始命令

;**************************************************************************

;INTERRUPTS(不用);将中断命令放在适当的时候

;存储单元

.ORG03H;外部中断0

RETI

.ORG0BH;定时器0中断

RETI

.ORG13H;外部中断1

RETI

.ORG1BH;定时器1中断

RETI

.ORG23H;串行端口中断

RETI

.ORG25H;设定开始程序休眠时间

;**************************************************************************

INITIALIZE:

;安装控制计数器

MOVTCON,#00H

MOVTMOD,#00H

MOVPSW,#00H

MOVIE,#00H;禁止中断

RET

;**************************************************************************

;下面编码开始启动.首先两个程序延迟这样我们就能减慢闪烁而看到

;(没有延迟,将闪烁的很快就好象它一直在一样)

;**************************************************************************

DELAYMS:

;毫秒延迟程序

MOVR7,#00H;将0赋予计数器R7

LOOPA:

INCR7;R7增加1(R7=R7+1)

MOVA,R7;将R7里的值移到累加器(也就是A)

CJNEA,#0FFH,LOOPA;将A与FFhex比较(255).如果不能等同于LOOPA

RET;返回到程序调入的位置

;**************************************************************************

DELAYHS:

;半秒延迟超过毫秒延迟

MOVR6,#00H;将0赋予计数器R6(R6=0)

MOVR5,#002H将2赋予计数器R5(R5=2)

LOOPB:

INCR6;R6增加1(R6=R6+1)

ACALLDELAYMS;激活上面的程序.它将运行并返回到这里.

MOVA,R6;将R6里的值移到A

JNZLOOPB;如果A不是0,返回到LOOPB

DECR5;R5的值减1.(R5=R5-1)

MOVA,R5;将R5的值移到A

JNZLOOPB;如果A不是0返回到LOOPB.

RET

;**************************************************************************

START:

;主要程序(打开电源,程序从这个位置开始启动)

ACALLINITIALIZE;安装控制计数器

LOOP:

CPLP1.0;补充(转化)P1.0(使LED改变)

ACALLDELAYHS;回到上面的程序产生一个延迟

AJMPLOOP;循环(也就是返回到指定的循环点)

.END;结束(从来不可能到这一个点)

 

2.3.12051微控制器的部分指令系统

 

在ProgrammersGuideandInstructionSet.pdf文件你可以看到完整的命令和描述清单。

你可能也想看一下8051mem.pdf文档以获得8051的存储器结构更多的信息(存储的数据)。

8051arch.pdf文档包含更多的芯片体系结构的信息。

8051hardware.pdf文档包含更多的关于硬件(计数器,端口结构等等)的信息。

上述的文档也包含8051微控制器的 Atmelfamily通用信息。

关于2051的具体信息看一下AT89C2051.pdf文档。

2.4简单的微控制器系统

接下来我们将增加更多的LEDs并且编一个稍微复杂一点的程序。

根据下面的图表添加LEDs和计数器。

Vcc=5V

这一个程序与前面的一个程序相似只是更换了一个闪烁的LED,用端口1。

此程序是ledproj2.asm.(在TASM文件夹)一旦你编程完毕就把它下载到2051。

确定建好的电路电源已经关掉,然后将微控制器接到电路上。

打开电路电源.LEDs应该全部被激活。

然后它们应该象计算器的开关那样从0到255(全开或全关)开始闪烁。

这些数字在数字化(二进位)的磁盘中。

想要看到更多的关于数字的信息请点击下面的网址:

http:

//webster.cs.ucr.edu/Page_asm/ArtofAssembly/CH01/CH01-1.html

使用AY片来看这个程序并且看它与ledtest.hex有何不同。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2