用单片机p1口控制8个发光二极管,采用共阳极链接方式,先编程实现下列功能:1从右至左逐步点亮

用五一单片机c语言编程,p1口控制八个发光二极管,实现每隔一秒,两两点亮,并循环。~

一、#include
void delay(unsigned char Xms)//延时Xms
{
int i,j;
for(X = i; X>0; X--)
for(j=110;j>0;j--);
}
void main()
{
P0 = 0x00; //P0.0~P0.7分别接八个发光二极管,刚开始全灭
while(1)
{
delay(1000);
P0 = 0xc0;//点亮前两个发光二极管P0.0和P0.1;
delay(1000);//延时1秒
P0 = 0x30;//点亮第三个和第四个LED
delay(1000);
P0 = 0x0c;
delay(1000);
P0 = 0x03;
}
}
二、
#include
#include
#define uchar unsigned char
#define uint unsigned int
uchar temp, t0, t1;
bit t2;
sbit P10 = P1^0;
void main()
{
P10 = 1;
temp = 0xfe;
P0 = temp;
P2 = 0xff;
TMOD = 0x01;
TH0 = (65536 - 50000) / 256;
TL0 = (65536 - 50000) % 256;
ET0 = 1;
EA = 1;
TR0 = 1;
while(1);
}
void timer0() interrupt 1
{
TH0 = (65536 - 50000) / 256;
TL0 = (65536 - 50000) % 256;
t0++;
if(t0 == 10) {
t0 = 0;
t1++;
if(t1 == 8) {t1 = 0; t2 = ~t2; P10 = t2;}
temp = _crol_(temp, 1);
if(t2) {P0 = temp; P2 = 255;}
else {P2 = temp; P0 = 255;}
}
}

扩展资料:
例如:a = 3,b = 5,现交换a,b的值,这个问题就好像交换两个杯子里面的水,这当然要用到第三个杯子,假如第三个杯子是c,那么正确的程序为:c = a; a = b; b = c;执行结果是a = 5,b = c = 3如果改变其顺序,写成:a = b; c = a; b =c;则执行结果就变成a = b = c = 5,不能达到预期的目的,初学者最容易犯这种错误。
顺序结构可以独立使用构成一个简单的完整程序,常见的输入、计算、输出三步曲的程序就是顺序结构,例如计算圆的面积,其程序的语句顺序就是输入圆的半径r,计算s = 3.14159*r*r,输出圆的面积s。
参考资料来源:百度百科-c语言

//prj1 流水灯实验,LED灯是共阳极,给0亮。J1跳线帽
//用的是移位的方法

//头文件定义
#include
#include

//延时函数定义
void delay(void)
{
unsigned int i;
unsigned int j;
for(i=200;i>0;i--)
{
for(j=200;j>0;j--);
}
}

void main()
{
P0 = 0xfe; //1111 1110
delay();
while(1)
{
P0 = _crol_(P0,1) ; // 将P0端口循环左移  
delay();
if(P0 == 0x7f)
{
P0 = _cror_(P0,1);
delay();
P0 = _cror_(P0,1);
delay();
P0 = _cror_(P0,1);
delay();
P0 = _cror_(P0,1);
delay();
P0 = _cror_(P0,1);
delay();
P0 = _cror_(P0,1);
delay();
P0 = _cror_(P0,1);
delay();
}
}
}

ORG 0000H
LJMP MAIN

MAIN:
MOV p1,#0FEH
MOV R7,#0FEH
LCALL DELAY
MOV A,R7
RL A
MOV R7,A
MOV 80h,A
JMP MAIN_LP

;===========================================================
DELAY:
MOV R0,#0FFH
MOV R1,#0FFH
DLY_LP:
NOP
NOP
DJNZ R0,DLY_LP
MOV R0,#0FFH
DJNZ R1,DLY_LP
RET

END

还发你邮箱里。
这应该是单片机里的最简单的程序,都说给你你印象不深,我给你个思路。
MOV A #0FEH
LOOP:
MOV P1,A;点亮一只
ACALL 延时0.5s子程序
JNB P1,7,KQ;判断是否到最高位
DEC A;减一
ACALL LOOP
延时0.5s子程序;自己找吧
KQ
END

P1口接有8个发光二极管,要求编程使八个发光二极管从左到右轮流点亮,每...
答:ET0 =1; //所需计数值=(131072-100000)/2=15536,转换为16进制即为0x3cb0 EA =1;TR0 =1;} void t0_int() interrupt 1 //定时器0的中断处理函数 { TH0 =0x3c;TL0 =0xb0;i = i-1;if (i!=0){ P1 >>= 1;} else { ET0 =0; //8个灯已点亮,关中断,关...

急急急:“让8只发光二极管第一次亮1只,第二次亮2只,直至8只全亮,从右...
答:假设8个发光二极管分别连P1口的P1.0-P1.7,如果用普通8位单片机假设89C52等作为控制芯片,则可以这样写:先寄存器定义 ORG 0000H JMP MAIN ORG 000BH JMP INTRTIME 。。。MAIN:MOV SP,#60H(可以不用)MOV P1,#00H 。。。MOV TMOD,#00H ;timer0设为方式0定时 mov th0,#18H...

试编写程序实现:利用89C51单片机的P1口控制8个发光二极管,相临的4个...
答:用定时器,每隔0.5秒中断一次,在中断服务程序中用P1和0xff异或再赋值给P1,可实现两组交替亮灭

单片机中断实验,主程序P1口做输出口,接8只发光二极管,并使其循环点亮...
答://实例4:使用P3口流水点亮8位LED include<reg51.h> //包含单片机寄存器的头文件 / 函数功能:延时一段时间 / void delay(void){ unsigned char i,j;for(i=0;i<250;i++)for(j=0;j<250;j++);} / 函数功能:主函数 / void main(void){ while(1){ P3=0xfe; //第一个灯亮...

51单片机编程题 单片机P1口接八个发光二极管(共阳极接法),试编写流水...
答://prj1 流水灯实验,LED灯是共阳极,给0亮。J1跳线帽 //用的是移位的方法 //头文件定义 include<reg52.h> include <intrins.h> //延时函数定义 void delay(void){ unsigned int i;unsigned int j;for(i=200;i>0;i--){ for(j=200;j>0;j--);} } void main(){ P0 = 0xfe; ...

在开发板上完成用P1口控制发光二极管以不同的形式循环点亮的功能.使...
答://如果要别的效果,只须把 P1=P1<<1;中的1改成2,4,6,8 include<reg52.h> void delay(unsigned int z);void main(void){ char k;P1 =0x01; //灯的初始值,P1口最低位为高,其它位为低 delay(100);//延时,while(1){ for(k=0;k<7;k++)//循环左移 { P1=P1<<1; ...

跪求单片机c51用汇编语言写的程序,功能为:8只发光二极管依次点亮,从...
答:MAIN: MOV P1, #11111110B ; P1 口 点亮一个发光二极管 ACALL DELAY ; 调用延时子程序 MOV P1, #11111101B ; 从左向右移动 一位 ACALL DELAY MOV P1, #11111011B ACALL DELAY MOV P1, #11110111B ACALL DELAY MOV P1, #11101111B ACALL DEL...

编程题 硬件电路中由8051单片机P1口控制8个放光二极管,编程实现依次...
答:void delay(uint time_out){ uint i,j;for(i=0;i<time_out;i++){ for(j=0;j<110;j++){;} } } void main(){ while(1){ P1=0xfe; //第1个管亮 delay(500);P1=0xfd; //第2个管亮 delay(500);P1=0xfb; //依次类推 delay(500);P1=0xf7;delay(500);P1=0xe...

利用单片机控制8个发光二极管,实现8个灯同时闪烁的控制程序
答:以51位例,使用P1的八个IO口控制。先定义:sbit LED0=P1^0;sbit LED1=P1^1;...以此类推,定义八个。然后在主循环中:LED0=0;延时一段时间;LED0=1;就可以看到闪烁了。

利用定时/计数器T1产生定时时钟, 由P1口控制8个发光二极管, 使8个指示...
答:EA=1;TR1=1;} 2.中断程序:void Timer1() interrupt 3 { TH1=(65536-10000)/256;TL1=(65536-10000)%256;if(++count>10) //没次中断count计数一次,当计数到10,说明100ms到 { count=0;P1=_corl_(num,1);} } 希望我的回答能帮助到你。

IT评价网,数码产品家用电器电子设备等点评来自于网友使用感受交流,不对其内容作任何保证

联系反馈
Copyright© IT评价网