导航:首页 > 操作系统 > 单片机里发光二极管代码

单片机里发光二极管代码

发布时间:2022-06-24 05:53:42

A. 单片机编程实现2个发光二极管交替闪烁,时间间隔为0.5秒

#include<reg52.h>

#define FOSC 11520000 // 晶振11.0592

//
unsigned int SysTick;

/*
*
*/
int main(void)
{
//
TMOD = 0x01;
TL0 = (65536 - (FOSC / 12 / 1000));
TH0 = (65536 - (FOSC / 12 / 1000)) >> 8;
ET0 = 1;
TR0 = 1;
EA = 1;
while(1)
{
//
if((SysTick % 1000) < 500)
P1 = 0xAA;
else
P1 = 0x55;
//
}
//
}

/*
*
*/
void Timer0_IRQ() interrupt 1
{
//
TL0 = (65536 - (FOSC / 12 / 1000));
TH0 = (65536 - (FOSC / 12 / 1000)) >> 8;
//
SysTick++;
//
}
可以参考一下我给的代码

B. 单片机程序,想在p1.1处连一个发光二极管,有电压时二极管亮,代码对吗#include<reg51

你好!

这个和你电路的接法有关系,因为51单片机初始化后,端口默认是高电平;

这样你的二极管的负极接地,二极管的正极接P1.1;

最后,程序要加一个死循环,不然,单片机会一直重新启动;

include<reg51.h>
sbitinput=P1^1;
voidmain()
{
input=1;
while(1);//加上死循环,让程序继续执行

C. 请编写c51单片机控制一个发光二极管闪烁的程序,端口p1∧0接发光二极管

程序:
ORG0
CPLP1.0
DJNZR7,$
DJNZR6,$-2
DJNZR5,$-4
SJMP0
END
这些,已经足够了。
别忘了采纳。

D. 51单片机控制两个发光二极管的电路图 和程序

你好!很高兴能为你回答!如有疑问可以联系!如图所示:在P1.0、P1.1端口上各接一个发光二极管L1、L2,使L1、L2在不停地一亮一灭,一亮一灭的时间间隔为0.2秒。
如图所示的石英晶体为12MHz,因此,1个机器周期为1微秒
机器周期
微秒
MOV
R6,#20
2个机器周期
2
D1:
MOV
R7,#248
2个机器周期
22+2×248=49820×
DJNZ
R7,$
2个机器周期
2×248
498
DJNZ
R6,D1
2个机器周期2×20=4010002
因此,上面的延时程序时间为10.002ms。
由以上可知,当R6=10、R7=248时,延时5ms,R6=20、R7=248时,延时10ms,以此为基本的计时单位。如本实验要求0.2秒=200ms,10ms×R5=200ms,则R5=20,延时子程序如下:
DELAY:
MOV
R5,#20
D1:
MOV
R6,#20
D2:
MOV
R7,#248
DJNZ
R7,$
DJNZ
R6,D2
DJNZ
R5,D1
RET
(2).
输出控制
如图所示,当P1.0端口输出高电平,即P1.0=1时,根据发光二极管的单向导电性可知,这时发光二极管L1熄灭;当P1.0端口输出低电平,即P1.0=0时,发光二极管L1亮;我们可以使用SETBP1.0指令使P1.0端口输出高电平,使用CLRP1.0指令使P1.0端口输出低电平。P1.1同理;
5.
程序框图

如图4.1.2所示
图4.1.2
6.
汇编源程序
ORG
0
START:
CLR
P1.0SETB
P1.1
LCALL
DELAY
SETB
P1.0CLR
P1.1
LCALL
DELAY
LJMP
START
DELAY:
MOV
R5,#20
;延时子程序,延时0.2秒
D1:
MOV
R6,#20
D2:
MOV
R7,#248
DJNZ
R7,$
DJNZ
R6,D2
DJNZ
R5,D1
RET
END
7.
C语言源程序
#include
<AT89X51.H>
sbit
L1=P1^0;sbit
L2=p1^1;
void
delay02s(void)
//延时0.2秒子程序
{
unsigned
char
i,j,k;
for(i=20;i>0;i--)
for(j=20;j>0;j--)
for(k=248;k>0;k--);
}
void
main(void)
{
while(1)
{
L1=0;L2=1;
delay02s();
L1=1;L2=0;
delay02s();
}
}

E. 单片机 发光二极管循环点亮的程序

程序:
ORG
0000H
LJMP
MAIN
ORG
4000H
MAIN:MOV
R5,#04H
LOOP:MOV
R1,#00H
MOV
A,#0FEH
L1:MOV
P1,A
LCALL
DELAY
RL
A
INC
R1
CJNE
R1,07H,L1
MOV
R2,#00H
MOV
A,#01H
L2:MOV
P1,A
LCALL
DELAY
RR
A
INC
R2
CJNE
R2,07H,L2
DJNE
R5,LOOP
DELAY:MOV
R6,#02H
D1:MOV
R7,#0FFH
D2:DJNZ
R7,D2
DJNE
R6,D1
RET
END
电路:
连接灯的阴极至P1口上即可,复位和震荡电路不需要我说了吧
说明一下,延时时间不准确,不过基本接近1ms的
t=(256*2+1)*2+1+2=1028
如果想做到精确延时的话建议在DELAY中使用NOP指令调理,自己试一下吧
最好是用Keil仿真一下确定延时时间。
很久没有汇编了,仔细检查一下,估计有Bug也不一定。

F. 用51单片机控制八个发光二极管

// 51单片机控制八个发光二极管 左右循环。

#include<reg52.h>

#define uchar unsigned char

#define uint unsigned int

unsigned char TAB[]= {0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xff}; // 改变这里 LED 各种花样

uchar t,i;

void main()

{

TMOD=0x10;

TH1=(65535-50000)/256; // 50ms一次

TL1=(65535-50000)%256;

EA=1;

ET1=1;//开定时器1中断

TR1=1;//启动定时器1

t=0;

i=0;

while(1)

{

}

}

void timer1() interrupt 3

{

TH1=(65535-50000)/256; // 50ms一次

TL1=(65535-50000)%256;

t++;

if(t==20)

{

t=0;

P2=TAB[i];

i++;

if(i==18) { i=0;}

}

}

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

一、#include<reg51.h>

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 <reg52.h>

#include <intrins.h>

#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;}

}

}

(7)单片机里发光二极管代码扩展阅读:

例如: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。

H. 51单片机点亮发光二极管的c语言程序

#include
<reg51.h>
//此文件中定义了51的一些特殊功能寄存器void
delay(unsigned
int
i);
//声明延时函数main()
{

P2
=
0x00;
//置P0口为低电平
点亮P2口8个LED灯

delay(600);
//
调用延时程序
等待一段时间后熄灭
P2
=
0xff;
//置P0口为高电平
熄灭P2口8个LED灯

delay(600);
//
调用延时程序
}/*******延时函数*************/
void
delay(unsigned
int
i)
{

unsigned
char
j;

for(i;
i
>
0;
i--)
//循环600*255次
机器在这里执行需要一段时间
也就达到了延时效果

for(j
=
255;
j
>
0;
j--);
}希望对你有帮助,如有问题,加微信xunuo_xx,留言

I. 用c语言编写单片机流水灯程序,(8个发光二极管从左至右循环点亮)

#include<reg51.h>

voiddelay(void)

{

unsignedinti,j;

for(i=0;i<200;i++)

for(j=0;j<1000;j++)

;

}

voidmain(void)

{

while(1)

{

P3=0xfe;//第一个灯亮

delay();//延时

P3=0xfd;//第二个灯亮

delay();

P3=0xfb;//第三个灯亮

delay();

P3=0xf7;//第四个灯亮

delay();

P3=0xef;//第五个灯亮

delay();

P3=0xdf;//第六个灯亮

delay();

P3=0xbf;//第七个灯亮

delay();

P3=0x7f;//第八个灯亮

delay();

}

}

(9)单片机里发光二极管代码扩展阅读

单片机C语言16种方式流水灯

voidmain()

{

while(1)

{

P1=0xfe;//点亮第一个发光管

Delay(5000);

P1=0xfd;//点亮第二个发光管

Delay(5000);

P1=0xfb;

Delay(5000);

P1=0xf7;

Delay(5000);

P1=0xef;

Delay(5000);

P1=0xdf;

Delay(5000);

P1=0xbf;

Delay(5000);

P1=0x7f;//点亮第八个发光管

}

}

J. 用51单片机点亮一个发光二极管的程序。 并对程序解释一下。

若单片机与发光二极管如下图所示,只要用命令给单片机的管脚送一低电平就可点亮此二极管

假设管脚为P1.0,具体可用 MOV P1,#0FEH

阅读全文

与单片机里发光二极管代码相关的资料

热点内容
网页源码做app 浏览:155
卡券回收源码兑现 浏览:82
安卓为什么蓝牙耳机只连接到一个 浏览:368
加密市场跌宕起伏的开年 浏览:314
php自毁程序 浏览:71
如何教婴儿学英语app 浏览:462
服务器IP地址可变 浏览:679
s4空白加密狗写入 浏览:30
app账户注销怎么办 浏览:448
怎么把域名根服务器绑定 浏览:661
关于python网络通信的文章 浏览:746
迷你世界云服务器炸了 浏览:821
php写的网站有哪些 浏览:558
计算机执行过程程序员可以更改吗 浏览:958
海南鲲鹏系列服务器怎么选择 浏览:678
为什么荒野乱斗连接不上服务器 浏览:134
mc服务器浮空字插件怎么使用 浏览:147
stc系列的单片机有哪些 浏览:454
java常用命令 浏览:419
植物大战僵尸qt源码 浏览:114