zdly.net
当前位置:首页 >> 51单片机开关控制lED >>

51单片机开关控制lED

#include<reg51.h>#define uchar unsigned char uchar led[5]={0x7e,0x3c,0x18,0x00,0xff}; uchar num; sbit key=P1^0; main() { P0=0xff; num=0; while(1) { if(key==0) { while(key==0); P0=led[num]; num++; num%=5; } } }

假设led连在p0口,高电平点亮,按键在p3.0口,低电平有效,则 main: mov p0,#00 mov r0,#00 loop: mov a,r0 mov p0,a jb p3.0,loop ;按键 lkey1: jb p3.0,l2;;等待弹起 mov a,r0 mov p0,a ajmp lkey1 l2: mov a,r0 cjne a,#0ffh,l3 mov a,#0 ajmp l4 l3: mov a,r0 setb c rlc a ;循环左移1位,逐位点亮 l4: mov r0,a mov p0,a ajmp loop

首先要查看电路的连接,看看输入连接到单片机的哪个引脚(比如p1.0),led灯连接到哪个引脚(比如p2.0).然后看是高电平有效还是低电平有效(也就是高电平时led灯亮,还是低电平时led灯亮).如果是高电平灯亮的话,程序如下:p2.0=p1.0;

1. 51单片机有很多种,请指定型号;2. 一个开关控制个LED灯,请指定具体的线路连接3. 中断控制函数,不同的51单片机有多种中断源,请指定

买来的单片机里本身有程序,你烧录程序时通讯可能不好,用的烧录软件和系统部匹配.

很简单.定时,按时闪烁.每闪烁一次,就检查一下外部中断,即可.

十六进制0xfe,对应二进制 1111_1110 这个二进制,对应引脚为 p1.7 p1.6 p1.5 p1.4 p1.3 p1.2 p1.1 p1.0 p1 = 0xfe,则对应p1.0为0,其他引脚输出1.你的led,必然是共阳极.所以p1.0对应的灯亮.(如果是共阴极,那么p1.7~p1.1共7个led亮,p1.0上的led不亮)

if(!KEY2)//假设按键低电平有效 { DelayMs(5);//延时2~10ms,按键消抖 if(!KEY2);//按键仍被按下,说明不是抖动 { LED=~LED;//自己定义一下LED到对应IO BUZZER=~BUZZER;//定义蜂鸣器到对应IO } }

简单编了一下程序,,,#include<reg52.h> sbit led1=P1^1; //led灯,按实际再改 sbit led2=P1^2; //led灯,按实际再改 sbit led3=P1^3; //led灯,按实际再改 sbit led4=P1^4; //led灯,按实际再改 sbit key1=P2^1; //按键,按实际再改 sbit key2=P2^2

假如 开关在P1.0, 灯在P1.1 sbit sw= P1^0; sbit led = P1^1;#include "reg52.h" void main(void ) { if(sw==0) { led =0; } else { led =1; } }

网站首页 | 网站地图
All rights reserved Powered by www.zdly.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com