标题: 三个按键,三个LED,KEY1按一下LED1开,KEY1再按一下LED1关,KEY2、3类似 [打印本页]
作者: dragon19790000 时间: 2017-4-13 13:26
标题: 三个按键,三个LED,KEY1按一下LED1开,KEY1再按一下LED1关,KEY2、3类似
#include <STC15F104E.H>
#define uchar unsigned char
#define uint unsigned int
#define LED1=P3^3 //定义LED端口
#define LED2=P3^4 //定义LED端口
#define LED3=P3^5 //定义LED端口
sbit key1=P3^0; //按键接口定义
sbit key2=P3^1; //按键接口定义
sbit key3=P3^2; //按键接口定义
//ms延时函数
void Delay_xms(uint x)
{
uint i,j;
for(i=0;i<x;i++)
for(j=0;j<122;j++);
}
//主函数
void main(void)
{
Delay_xms(50);//等待系统稳定
while(1)
{
if(key1 == 0)
{LED1 = 0;
}else{
LED1 = 1;}
if(key2 == 0)
{LED2 = 0;
}else{
LED2 = 1;}
if(key3 == 0)
{LED3 = 0;
}else{
LED3 = 1;}
Delay_xms(20);//延时去抖动
return 0;
}
}
总是报错,望大神指点!!!
-
捕获.JPG
(42.16 KB, 下载次数: 134)
报错
作者: 别无所求 时间: 2017-4-13 14:36
if(key1==0)delay(10)if(key1==0)led~led
作者: 砜骜 时间: 2017-4-13 14:57
#define LED1=P3^3 错误在这里
改成 sbit LED1=P3^3。
还有这程序并不能实现你想要的功能,你试试看
作者: dragon19790000 时间: 2017-4-13 15:24
根据您的提示,修改为:
#include <STC12C2052AD.H>
#define uchar unsigned char
#define uint unsigned int
sbit key=P3^0;
sbit LED=P1^0;
//ms延时函数
void Delay_xms(uint x)
{
uint i,j;
for(i=0;i<x;i++)
for(j=0;j<50;j++);
}
//主函数
void main(void)
{
Delay_xms(10);//等待系统稳定
while(1)
{
if(key == 0)
LED=~LED;
}
}
去抖还是有问题
作者: woaidpj 时间: 2017-4-13 16:16
试试这个
#include <STC15F104E.H>
#define uchar unsigned char
#define uint unsigned int
sbit LED1=P3^3; //定义LED端口
sbit LED2=P3^4; //定义LED端口
sbit LED3=P3^5; //定义LED端口
sbit key1=P3^0; //按键接口定义
sbit key2=P3^1; //按键接口定义
sbit key3=P3^2; //按键接口定义
//ms延时函数
void Delay_xms(uint x)
{
uint i,j;
for(i=0;i<x;i++)
for(j=0;j<122;j++);
}
//主函数
void main(void)
{
while(1)
{
if(key1 == 0)
{
Delay_xms(10);
if(key1 == 0)
LED1 = ~LED1;
while(!key1);
}
if(key2 == 0)
{
Delay_xms(10);
if(key2 == 0)
LED2 = ~LED2;
while(!key2);
}
if(key3 == 0)
{
Delay_xms(10);
if(key3 == 0)
LED3 = ~LED3;
while(!key3);
}
}
}
作者: 你像风儿来了 时间: 2017-4-14 08:02
/*********************************************************************************
* 【程序功能】: 生活中常见一个按键随着按下次数不同对应不同功能
* 【使用说明】: 本程序以QX-MCS51 学习板中的S3键为例,模拟其具有2种功能,
一是点亮一个发光二极管,二是蜂鸣器发声
* 说明:免费开源,不提供源代码分析.
**********************************************************************************/
#include<reg52.h>
#define uchar unsigned char
uchar num;
sbit beep=P2^3;
sbit led=P1^0;
sbit S3=P3^1;
void delay(uchar i)
{
uchar j,k;
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
void main()
{
while(1)
{
if(S3==0)
{
delay(20); //消抖
if(S3==0)
{
while(!S3); //等待按键松开
num++;
}
switch(num)
{
case 1: led=0; beep=1; break;
case 2: beep=0; led=1; num=0; break;
}
}
}
}
给你一个例子作为参考
作者: zl2168 时间: 2017-4-14 21:11
本帖最后由 zl2168 于 2017-4-14 21:12 编辑
实例5 4种不同方式键控信号灯
先Proteus仿真一下,确认有效。
以上摘自张志良编著《80C51单片机仿真设计实例教程——基于Keil C和Proteus》清华大学出版社ISBN 978-7-302-41682-1.书中电路和程序设计有详细说明,程序语句条条有注解。
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |