 |
单片机设计实例 |
 |
|
单片机广告灯左右移动的方法 |
| 作者:89s51 来源:不详 点击数: 更新时间:2007年05月18日 |
| |
1. 实验任务 做单一广告灯的左移右移,硬件电路如图4.4.1所示,八个发光二极管L1-L8分别接在单片机的P1.0-P1.7接口上,输出“0”时,发光二极管亮,开始时P1.0→P1.1→P1.2→P1.3→┅→P1.7→P1.6→┅→P1.0亮,重复循环左右移动。 2. 电路原理图
图4.4.1 3. 系统板上硬件连线 把“单片机系统”区域中的P1.0-P1.7用8芯排线连接到“八路发光二极管指示模块”区域中的L1-L8端口上,要求:P1.0对应着L1,P1.1对应着L2,……,P1.7对应着L8。 4. 程序设计内容 我们可以运用输出端口指令MOV P1,A或MOV P1,#DATA,只要给累加器值或常数值,然后执行上述的指令,即可达到输出控制的动作。 每次送出的数据是不同,具体的数据如下表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 | | | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | L1亮 | | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | L2亮 | | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | L3亮 | | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | L4亮 | | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | L5亮 | | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | L6亮 | | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | L7亮 | | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | L8亮 | 表1 5. 程序框图 图4.4.2 6. 汇编源程序 ORG 0 START: MOV R2,#8 MOV A,#0FEH SETB C LOOP: MOV P1,A LCALL DELAY RLC A DJNZ R2,LOOP MOV R2,#8 LOOP1: MOV P1,A LCALL DELAY RRC A DJNZ R2,LOOP1 LJMP START DELAY: MOV R5,#20 ; D1: MOV R6,#20 D2: MOV R7,#248 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RET END 7. C语言源程序 #include unsigned char i; unsigned char temp; unsigned char a,b; void delay(void) { unsigned char m,n,s; for(m=20;m>0;m--) for(n=20;n>0;n--) for(s=248;s>0;s--); } void main(void) { while(1) { temp=0xfe; P1=temp; delay(); for(i=1;i<8;i++) { a=temp< b=temp>>(8-i); P1=a|b; delay(); } for(i=1;i<8;i++) { a=temp>>i; b=temp<<(8-i); P1=a|b; delay(); } } } 单片机广告灯左右移动的全部代码完毕,转载请保留版权http://www.51hei.com
|
| |
| 【发表评论】【告诉好友】【打印此文】【收藏此文】【关闭窗口】 |
|
|
| 网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!) |
|
|
|
|
|
|
|