广告灯的左移右移.doc

上传人:仙人指路1688 文档编号:4149046 上传时间:2023-04-07 格式:DOC 页数:6 大小:103KB
返回 下载 相关 举报
广告灯的左移右移.doc_第1页
第1页 / 共6页
广告灯的左移右移.doc_第2页
第2页 / 共6页
广告灯的左移右移.doc_第3页
第3页 / 共6页
广告灯的左移右移.doc_第4页
第4页 / 共6页
广告灯的左移右移.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《广告灯的左移右移.doc》由会员分享,可在线阅读,更多相关《广告灯的左移右移.doc(6页珍藏版)》请在三一办公上搜索。

1、 实验及实践课题:广告灯的左移右移1 实验任务 做单一灯的左移右移,硬件电路如图4.4.1所示,八个发光二极管L1L8分别接在单片机的P1.0P1.7接口上,输出“0”时,发光二极管亮,开始时P1.0P1.1P1.2P1.3P1.7P1.6P1.0亮,重复循环。 2 电路原理图 图4.4.1 3 系统板上硬件连线 把“单片机系统”区域中的P1.0P1.7用8芯排线连接到“八路发光二极管指示模块”区域中的L1L8端口上,要求:P1.0对应着L1,P1.1对应着L2,P1.7对应着L8。4 程序设计内容 我们可以运用输出端口指令MOVP1,A或MOVP1,DATA,只要给累加器值或常数值,然后执行

2、上述的指令,即可达到输出控制的动作。每次送出的数据是不同,具体的数据如下表1所示P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 说明 L8 L7 L6 L5 L4 L3 L2 L1 11111110 L1亮1111110 1L2亮111110 11L3亮11110 111L4亮1110 1111L5亮110 11111L6亮10 111111L7亮0 1111111L8亮表15 程序框图 图4.4.26汇编源程序 (1)单向ORG 0000H START:MOV P1,#01111111B ;最下面的LED点亮 LCALL DELAY MOV P1,#10111

3、111B ;最下面第二个的LED点亮 LCALL DELAY MOV P1,#11011111B ;最下面第三个的LED点亮 (以下省略) LCALL DELAY MOV P1,#11101111B LCALL DELAY MOV P1,#11110111B LCALL DELAY MOV P1,#11111011B LCALL DELAY MOV P1,#11111101B LCALL DELAY MOV P1,#11111110B LCALL DELAY MOV P1,#11111111B ;完成第一次循环点亮,延时约0.25秒 AJMP START ;反复循环 。ajmp 2KB范围内绝

4、对转移;延时子程序,12M晶振延时约250毫秒DELAY: MOV R4,#2 L3: MOV R2 ,#250 L1: MOV R3 ,#250 L2: DJNZ R3 ,L2 DJNZ R2 ,L1 DJNZ R4 ,L3 RET END7汇编源程序 (2)单向org0000hajmpmainorg0030hmain:movp1,#00h;全亮lcalldelay;lcalldelay;lcalldelay;延时一段时间mova,#0feh;每次只亮一个灯。loop:movp1,a;lcalldelay;lcalldelay;lcalldelay;rla ;循环左移。ajmploop; a

5、jmp 2KB范围内绝对转移delay:movr7,#00h;延时子程序tt:movr6,#00hdjnz r6,$djnz r7,ttretend8 汇编源程序 (3)来回ORG 0 START:MOV R2,#8 MOV A,#0FEH ;给A赋值成11111110SETB C ;将C状态位置1。去掉此句变成相临的两个灯一起左移右移。!不明白LOOP:MOV P1,A ;将A送到P1口,发光二极管低电平点亮LCALL DELAY RLC A ;累加器连进位标志左循环移位,即A为11111101DJNZ R2,LOOP MOV R2,#8 LOOP1:MOV P1,A LCALL DELAY

6、RRC A ;累加器连进位标志右循环移位DJNZ R2,LOOP1 LJMP START ; LJMP 2KB范围内长转移DELAY:MOV R5,#20;延时子程序,延时0.2秒 D1:MOV R6,#20 D2:MOV R7,#248 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RET END 9 C语言源程序 来回#include unsigned char i; unsigned char temp; unsigned char a,b; void delay(void) unsigned char m,n,s; for(m=20;m0;m-) for(n=20;n0;n-) for(s=248;s0;s-); void main(void) while(1) temp=0xfe; P1=temp; delay(); for(i=1;i8;i+) a=temp(8-i); P1=a|b; delay(); for(i=1;ii; /*如temp为11111110 右移1位后 变为01111111*/ b=temp(8-i); /* 11111110 左移7位后 变为01111111*/ P1=a|b; /*P1为01111111*/ delay();

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

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号