找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1389|回复: 7
收起左侧

请问这个单片机一键切换多功能程序应该如何写?可以给个思路吗

[复制链接]
ID:969664 发表于 2021-10-3 17:06 | 显示全部楼层 |阅读模式
完成一键切换多功能系统设计1 个按键 K,由 P3.0 控制,8 个 LED发光二极管,由 P1 口控制。(1)系统上电时 8 个 LED 全灭(2)第一次按下开关 K 的时候,8 个LED 全亮;第二次按下开关 K 的时候,高四位 LED亮;第三次按下开关 K 的时候,交叉亮灭;第四次按下开关 K 的时候,低四位 LED亮。再按开关 K 的时候,又从第一次开始。
回复

使用道具 举报

ID:796531 发表于 2021-10-3 21:50 | 显示全部楼层
设定一个变量 Key_count 每按一次按键Key_count计数加一,如果Key_count>=5,则置Key_count=1;根据Key_count值用个switch语句实现不同输出状态
回复

使用道具 举报

ID:25058 发表于 2021-10-3 22:08 | 显示全部楼层
楼上正解
回复

使用道具 举报

ID:332444 发表于 2021-10-4 08:07 | 显示全部楼层
回复

使用道具 举报

ID:969664 发表于 2021-10-4 09:53 | 显示全部楼层
paladina 发表于 2021-10-3 21:50
设定一个变量 Key_count 每按一次按键Key_count计数加一,如果Key_count>=5,则置Key_count=1;根据Key_coun ...

谢谢,请问如何让他刚开始全灭呀
捕获.PNG
回复

使用道具 举报

ID:969664 发表于 2021-10-4 10:20 | 显示全部楼层
本帖最后由 jerry1203 于 2021-10-4 11:28 编辑
#include <reg51.h>
void delay(unsigned char i)
{
        unsigned char j,k;
        for(k=0;k<i;k++)
        for(j=0;j<255;j++);
}
void lsd1()
{
        P1=0xff;
        }
        void lsd2()
        {
P1=0x00;
                }
void lsd3()
{
P1=0x01;
}
        void main()
        {
                unsigned char key_count,l;
                P3=0xff;
                for(l=0;l<5;l++)
                        key_count=l
                while(1)
                {
                        if(key_count=0)lsd1();
                                if(key_count=1)lsd2();
                                if(key_count=2)lsd3();
                                if(key_count=3)0x0f;
                                if(key_count=4)0xf0;
                        }
        }
请问这个思路对吗

捕获.PNG
回复

使用道具 举报

ID:810196 发表于 2021-10-4 12:19 来自手机 | 显示全部楼层
初始化时拉高p1口
回复

使用道具 举报

ID:796531 发表于 2021-10-4 20:44 | 显示全部楼层
jerry1203 发表于 2021-10-4 09:53
谢谢,请问如何让他刚开始全灭呀

开始赋值 Key_count=0 啊,switch语句里 Key_count=0 P1=OXFF 啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表