找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7563|回复: 14
打印 上一主题 下一主题
收起左侧

单片机初学者问问题,怎么通过按键来控制小灯亮灭

  [复制链接]
跳转到指定楼层
楼主
ID:332185 发表于 2018-5-17 15:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
可能说的笼统,但应该也差不多理解,最好有电路图和程序段
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

来自 7#
ID:101345 发表于 2018-5-17 16:51 | 只看该作者
这个不太方便画电路图,键盘可以分为单个按键,和键盘,单个按键就好比是单片机I\O都可以接一个按键,但是就拿51单片机说它可用的I\o就32个,所以就只能接32个按键,当然通过扩展除外了,通常看你做项目所使用的按键个数来选择用单个按键还是编码键盘(键盘,或者矩阵键盘叫法不一样)百度上有大把的例子,随便一个就能懂了。按键的按下和断开有不同的信号产生,单片机通过这不同的信号可以检测到是否有按键按下,然后就是swit。。。。。case了每个按键的信号都会不一样才行。

评分

参与人数 1黑币 +80 收起 理由
admin + 80 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

沙发
ID:332242 发表于 2018-5-17 16:13 | 只看该作者
透過按鈕觸發輸入事件,再做小燈輸出邏輯(可以是 PWM 或是單純的 High/Low)。
回复

使用道具 举报

板凳
ID:330198 发表于 2018-5-17 16:27 | 只看该作者
回复

使用道具 举报

地板
ID:269211 发表于 2018-5-17 16:46 | 只看该作者
sbit key = P1_0; sbit led = P1_1; #define led_on 0 main() {     while( key )     {         led = ! led_on;     }     while(!key)     {         led = led_on;         delay( 100 );         led = ! led_on;         delay( 100 );     } }
回复

使用道具 举报

5#
ID:101345 发表于 2018-5-17 16:46 | 只看该作者
这个怎么给你画电路图呢?
回复

使用道具 举报

6#
ID:332281 发表于 2018-5-17 16:51 | 只看该作者
可以通过中断来控制
回复

使用道具 举报

8#
ID:332296 发表于 2018-5-17 17:05 | 只看该作者
可以先买本郭天祥的51单片机教程  前几章就有讲  网上也可以下载到  还有视频
回复

使用道具 举报

9#
ID:332327 发表于 2018-5-17 17:23 | 只看该作者
单片机最小系统电路绘制
回复

使用道具 举报

10#
ID:332316 发表于 2018-5-17 17:28 | 只看该作者
要在程序中控制
回复

使用道具 举报

11#
ID:332316 发表于 2018-5-17 17:29 | 只看该作者
要在程序中修改
回复

使用道具 举报

12#
ID:149389 发表于 2018-5-17 18:03 | 只看该作者
玩proteus吧。
回复

使用道具 举报

13#
ID:332386 发表于 2018-5-17 18:22 | 只看该作者
{         led = led_on;         delay( 100 );         led = ! led_on;         delay( 100 );     } }
回复

使用道具 举报

14#
ID:332416 发表于 2018-5-18 15:15 | 只看该作者
按键1控制亮,按键2控制灭
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit K1=P3^4;
sbit K2=P3^5;

void delay(uint z)
{
        uint x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}

void key()
{
        if(K1==0)
        {
                delay(5);
                if(K1==0)
                {
                        P1=0xff;
                        while(!K1);
                }
        }

        if(K2==0)
        {
                delay(5);
                if(K2==0)
                {
                        P1=0xfe;
                        while(!K2);
                }
        }
}


void main()
{
        while(1)
        {
                key();
        }
}
回复

使用道具 举报

15#
ID:333076 发表于 2018-5-18 16:05 | 只看该作者
2L说法可以
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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