八只LED灯做流水灯实验报告_第1页
八只LED灯做流水灯实验报告_第2页
八只LED灯做流水灯实验报告_第3页
八只LED灯做流水灯实验报告_第4页
八只LED灯做流水灯实验报告_第5页
已阅读5页,还剩7页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

51LED灯做流水灯试验第一节:P1.0口的LED1亮,那么我们只要P1.0口的电平变为低电平就可以了。想让LED1灭,LED0P1.0上升,P1.1变低,LED1LED28LED变会一亮一暗的做流水灯了。本试验在“SP-51试验板”学习套件上的相关图纸:P1.0低、P1.0高、P1.1低、P1.1高、P1.2低、P1.2高、P1.3低、P1.3高、P1.4低、P1.4高、P1.5低、P1.5高、P1.6低、P1.6高、P1.7低、P1.7高、返回到开头、程序完毕。我们不能说P1.1你变低,它就变低了。由于单片机听不懂我们的汉语的,只能承受二进制的“1、0. ”代码。我们又怎样来用二进制语谈论使单片机按我们的意思去工作呢?为了让单片机工作,只能将程序写为我们不必用烦人的二进制去编写程序,完全可以将我们简洁理解的“程序语言”通过“翻译”软件“翻译”成单片机所需的二进制代码,然后交给单片机去执行。这里的“程序语言”C两种;在这里我们所说的“翻译”软件,同行们都叫它为“编译器”,将“程序语言”通过编译器产生单片机的二进制代码的过程叫LED1变亮,只需将对应的单片机引脚电平变为低电平就可以了。现在让我们将8LED流水灯试验写为汇编语言程序。语言开头:P1.0低P1.0高P1.1低P1.1高

汇编语言star:clrp1.0p1.0clrp1.1p1.1P1.2P1.2低P1.2高P1.3低P1.3高P1.4低P1.4高P1.5低P1.5高P1.6低clrp1.2p1.2clrp1.3p1.3clrp1.4p1.4clrp1.5p1.5clrp1.6P1.6高setbp1.6P1.7低clrp1.7P1.7高setbp1.7返回到开头ljmpstar完毕end这里用到了四条汇编指令:clr、setb、ljmp、end;clr:是将其后面指定的位清为0;setb1;ljmp:是无条件跳转指令,意思是:跳转到指定的标号处连续运行。end:是一条告知编译器:程序到此完毕的伪指令。伪指令只告知编译器此程序到此有何要求或条件,它不参与和影响程序的执行。这里需要说明的是,按汇编语法要求,所编制的程序〔下称源程序〕之格式和书写要求必需依以下原则:1Windows“附件”中的“记事本”编写的文本文件;2、源程序的扩展40个汉字〕4、每行的格式应为:标号:命令参数;注释即一行由四部份组成,各部份的挨次不能搞错,依实际要求可以缺省其中的一部份或几部份,甚至全部省去,即空白行。需要使用标号时标号后面必需有“:”〔冒号〕,而命令语句和参数之间必需用空格分开,逗号〕分号“;”后面的语句可以写任何字符,包括汉字用于解释前面的汇编语句,它将不参与汇编,不生成代码。由于汇编程序对我们还不直观,所以在编写源程序时,应当养成多写注释的习惯,这样有助于今后源程序的阅读和维护。ASM51中标号的长度不受限制,但标号中不能包含‘:’或其它的一些特别符号,也不能用汉字,可以用数字作标号,但必需用字母开头。当标号作参数用〔如标号作转移地址〕,‘:’〔如上面程LJMPSTARSTAR是不能再有:〕。号的长度没有限制,可以用有意义的英文或汉语拼音来说明行,使源程序读起来更便利。源程序中的字母不区分大小写,也就是说star和STAR是一样的,请不要用大小写方式去区分不同的标编写源程序:先将编译软件安装好〔c51eval软件的安装〕。软件安装好我们就可以编写程序了。第一步:双击Uvw51图标,消灭如图一所示的主界面其次步:建文件单击菜单栏内的“文件----建”或者单击 在上图所示的灰色区域内消灭一个白色的编辑区,这时我们就中以在这里编辑程序了。如图二所示。图二第三步:编程程序程序吧。!如图三所示:第四步:保存文件序保存起来:单击“文件----保存”或者单击图标 ,消灭如图四所示的对话框:图四这时参照图五所示将对话框的内容设置好:c51eval保存文件时默认的文件扩展是名*.C,请按图五所示转变为为*.a51:图五我们这里就先将文件保存在D/DDW文件夹中,文件名你可以任凭取,这里先叫他为LED.a51;需强调的D/DDW/LED.a51固然,保存的文件夹名DDW、编写的程序的文件名LED,你都可以随便的取一个,可以是D/ABC/000.a51。这就取决于你的兴趣了。错误的保存路径:D/源程序/DDW/LED.a51,或者是D/DDW流水灯程序.a51。总之在源程序的保存路径下不能有中文的消灭,同时文件名不能取的太长。第五步:建立工程hex文件。建工程的步骤如下:首先先翻开建工程的对话框文件,如图六所示:图六点击建工程后消灭如图七所示的对话框,我们将对话框的参数设定好。将文件名设置成与刚刚源程序的文件名一样,即设为LED.prjD/DDW上。现在就可以把刚刚建立的工程文件LED.prjLED.A51源程序上了,留意它们都在同一个根名目下。图七按图七所示操作后,会消灭如图八所示的对话框:图八点击“〔A〕加”消灭如图九所示画面:图九按图九所示完成操作后,软件会自动翻开一个对话框,如图十所示:图十*创立全部并消灭如图十一所示的状态显示画面:

图标*图十一OK就大功告成了。翻开我们文件的保存路径:我的电脑/D/DDW我们可以看到包含hex文件在内的全部相关程序文件了。我们上LED.hex文件。好啦,到此我们已将第一个流水灯程序编写、编译、烧写进展完啦,再下来就是将烧写好的AT89C51从编程器上取下,放到“SP-51试验板”学习套件的LED1~LED8“流水”12MHz,8LED发光与熄灭的时“流水”灯效果呢?请连续学习下节课流水灯试验详解二上一节的试验最终没有得到“流水”显示的效果,主要是单片机执行每条指令的时间很短,我们肉眼无法看到LED的熄灭与点亮。单片机内部能按部就班的自开工作,正是在系统时钟的作用下,内部各规律硬件产生各种所需脉冲信号而实现的。这个时钟信号〔既晶体振荡信号〕的周期称“振荡周期”。我们这个试验12〔既晶振振荡周期〕组成的,这个叫“机器周期”。8051〔既单周期〕,也有双周期和四周期的指令。本试验中用到的SETBP.xCLRP.x均属于单周期指令,也就是说,执行一句P.x1uS(微秒),CLRP.x1uSLEDLED面的程序:DDW:;程序开头CLRP1.0;LED1ACALLDELAY;调用延时子程序SETBP1.0;LED1CLRP1.1;换灯,同上ACALLDELAY?SETBP1.1?CLRP1.2?ACALLDELAY?SETBP1.2?CLRP1.3?ACALLDELAY?SETBP1.3?CLRP1.4?ACALLDELAY?SETBP1.4?CLRP1.5?ACALLDELAY?SETBP1.5?CLRP1.6?ACALLDELAY?SETBP1.6?CLRP1.7?ACALLDELAY?SETBP1.7?LJMPDDW;返回到开头循环DELAY:?;延时子程序MOVR1,#50?AD10:?MOVR2,#100?AD11:?MOVR3,#100?DJNZR3,$?DJNZR2,AD11?DJNZR1,AD10?RET;延时子程序完毕,返回到调用处的下一句END?AT89S5189S51插座上试验,这回显示的就是“流水灯”的效果了!?回过头,让我们看看延时子程序是怎样工作的:单片机内部有不少存放器,这些存放器在单片机通电时,你可以给他写入数据〔是单片机按你程序要求写的数据,而不是编程器写的〕,当其次次给他写入数据时,前次的数据就被数据掩盖;固然也可以从存放RAM,而用ROMRAMAT89C51器?我们现在不必关心,现在只须知道单片机内部知名叫R0~R788811111111FF255MOVR1,#50,MOV50两句意思同前。第四句中DJNZR3,$R31R30R30,程序返R310,程序完毕本句,连续执行下面的语句。延时程序的最终一句是RET,意思是退出本子程序,返回到调用本子程序处的下一句。依据上面的解释,一进入延时子程序首先为R1,R2,R3存放器装入我们需要的数据,然后先对R31,R3减完后减R2,减R2时就费事啦,由于R2每减1后不为0需要跳转到AD11R3再次装入数据100,并且还要再次对R3R2减完后减R1,减R1指R0~R7,rel指转移地址〕22uS〔指本试验〕,RET;延时子程序完毕,返回到调用处的下一句END?=1秒!假设加上装数等语句的耗时,延时时间大于1秒。到此,我们做的流水灯已成功,原理大致也明白啦,假设你自认为这一课你完全明白了,那请你将“流水灯”的流向转变一下,也可以改为两边向内流,内部向外流 些功能。可能有些高手说,前面的编程方法是最那么还有更好的编程思路吗?有!请连续学习下节课做流水灯试验详解三在上节课中让LED流水是去逐个掌握P1P1口送一个数,这个数本身就让P1.0先低,其他位为高,然后让这个数据向高位移动不就实现“流水”效果啦?确实如此!惋惜,8051没有让P1ACC中数据左移或右移的指令,ACC是8051单片机内部算术规律单元中的一个“存放器”〔这里叫他存放器是不正确的,但你可以先这样理解,ACCA〕,他在数据传输和数据处理过程中作用格外重要,ACC8位。他可与片内全部单P1和其他端口在单片机中也是一个存放器。这样我们可以将需移动的数据ACCACCP1口,这样同样可以实现“流水”效果。DDW:?DDW:?;开头MOVACC,#0FEH;ACCLED1〔即二进制的11111110〕MOVP1,ACCACCP1;因上句送到?p1MOV R0,#778LOOP:?;数据移动循环RlAACCMOVP1,AACC移动过的数据送p1ACALLDELAY;调用延时DJNZR0,LOOP7LJMPDDW;移动完7次后跳到开头重来,以到达循环流淌效果DELAY:?;延时子程序,就是上节课中的延时子程序MOVR1,#50?ADl0:?MOVR2,#100?ADl1:MOV?R3,#100?DJNZR3,$?DJNZR2,AD11?DJNZR1,AD10?RET?;延时子程序完毕

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论