标题:
郭天祥单片机开发板上面编写一个LED灯控制程序 求思路
[打印本页]
作者:
1679153346
时间:
2021-3-23 20:18
标题:
郭天祥单片机开发板上面编写一个LED灯控制程序 求思路
由于本论坛禁止直接求程序,禁止伸手党,所以向大家请教一下大致的实现方法与思路,理清头绪后我自己来写程序去实现
利用S2~S5 四个按键以及D1~D8 八颗LED灯编程实现以下功能。 按下S1按键,流水灯开始执行; 按下S2按键,D1灯闪烁(使用位取反的方式,D1 = ~D1); 按下S3按键全部功能停止。
IMG_20210323_201816.jpg
(1.55 MB, 下载次数: 57)
下载附件
2021-3-23 20:18 上传
作者:
天ノ忆
时间:
2021-3-24 09:36
看电路图找出按键和LED的IO口,然后就是LED控制和键盘读取的问题了,easy!
作者:
ANT1987
时间:
2021-3-24 13:47
while(1)
{
if(key==S1)
{P1.0=1;dealy();P1.1=1;dealy();..............P1.7=1;dealy();P1=0X00;dealy();}
if(key==S2)
{P1=0x00;dealy();P1=0xFF;dealy();}
if(key==S3)
{P1=0x00;}
}
作者:
wulin
时间:
2021-3-24 16:51
楼主先用这个代码测试,然后再慢慢读懂,就算一只脚入门了。
#include <reg51.H>
#define uint unsigned int
#define uchar unsigned char
sbit S2=P3^4;
sbit S3=P3^5;
sbit S4=P3^6;
sbit D1=P1^0;
uint t;
uchar num;
uchar count;
bit sign;
void delayms(uint k)
{
uint i,j;
for(i=k;i>0;i--)
for(j=110;j>0;j--);
}
void main()
{
while(1)
{
if(!S2||!S3||!S4)//任意键按下
{
if(++count>=10 && sign==0)//消抖/
{
sign=1;//锁定
if(!S2)
{
num=1;
P1=0xfe;//亮一个灯
}
if(!S3)
{
num=2;
P1=0xff;//关闭所有输出
}
if(!S4)
{
num=0;
P1=0xff;//关闭所有输出
}
}
}
else//松手
{
count=0;//清0
sign=0;//清0
}
if(num==1)
{
if(++t%500==0)//0.5秒周期
{
P1=(P1<<1)+1;//左移一位,最低位补1
if(P1==0xff)
P1=0xfe;//重新开始
}
}
if(num==2)
{
if(++t%500==0)//0.5秒周期
{
D1=~D1;//取反
}
}
delayms(1);//控制主循环周期1ms
}
}
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1