久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1520|回復(fù): 7
收起左側(cè)

一個單片機(jī)i/o口驅(qū)動發(fā)光二極管并掃描按鍵

[復(fù)制鏈接]
ID:47445 發(fā)表于 2024-4-16 19:40 | 顯示全部樓層 |閱讀模式
小弟學(xué)習(xí)51單片機(jī),根據(jù)網(wǎng)上資料試驗了用STC15W204S做 一個i/o口驅(qū)動發(fā)光二極管并掃描按鍵的電路,程序燒入后按鍵沒反應(yīng),請各位大俠不吝賜教程序有何問題,謝謝。

無標(biāo)題ss.png


#include <STC15.H>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int

sbit LED1 = P1^0;        //LED端口聲明
sbit LED2 = P1^1;
sbit LED3 = P1^2;
sbit LED4 = P1^3;

uchar KeySec=0;//鍵值變量

/**********************************
  1ms延時程序(僅限于STC15W 1T MCU)
**********************************/
void Delay1ms()                //@12.000MHz
{
        unsigned char i, j;
        i = 12;
        j = 169;
        do
        {
                while (--j);
        } while (--i);
}  



/**********************************
        按鍵掃描程序
**********************************/
void key_scan()
{
        static uchar count=0;//靜態(tài)計數(shù)變量
        static bit sign_key=0;                        //靜態(tài)標(biāo)志位
       uchar time_key,time_LED;//臨時變量

    //    P1M0=0x00;//P1.0~3設(shè)置弱上拉
     //   P1M1=0x00;//P1.0~3設(shè)置弱上拉

        time_LED=P1&0x0f;//保存4個LED狀態(tài)

        P1M0=0x00;//P1.0~3設(shè)置弱上拉
        P1M1=0x00;//P1.0~3設(shè)置弱上拉
        P1|=0x0f; //P1.0~3置高電平      
        if(P1&0x0f!=0x0f)//有鍵按下
        {
                if(++count>=10 && sign_key==0)//消抖
                {
                        sign_key=1;//自鎖
                        time_key=P1&0x0f;//保存P1.0~3狀態(tài)
                        switch(time_key)
                        {
                                case 0x0e: KeySec=1; break;//輸出鍵值
                                case 0x0d: KeySec=2; break;
                                case 0x0b: KeySec=3; break;
                                case 0x07: KeySec=4; break;
                        }
                }
        }
        else //抬起
        {
                count=0;//計數(shù)變量清0
                sign_key=0;//鍵態(tài)標(biāo)志清0
        }
        P1&=0xf0;    //P1.0~3清0
        P1|=time_LED;//還原4個LED狀態(tài)
        P1M0=0x0f;   //還原P1.0~3推挽設(shè)置
        P1M1=0x00;   //還原P1.0~3推挽設(shè)置
}
/*********************************
        按鍵服務(wù)程序
*********************************/
void key_service()
{
        switch(KeySec)
        {
                case 1:        LED1=~LED1;KeySec=0;break;
                case 2:        LED2=~LED2;KeySec=0;break;
                case 3:        LED3=~LED3;KeySec=0;break;
                case 4:        LED4=~LED4;KeySec=0;break;
        }                  
}
/********************************
        主程序
********************************/
void main()
{        
        P1M0=0x0f;//P1.0~3設(shè)置推挽
        P1M1=0x00;//P1.0~0設(shè)置推挽

                LED1=0;
                LED2=0;
                LED3=0;
                LED4=0;
        while(1)
        {
                key_scan();
                key_service();
                Delay1ms();//控制主循環(huán)周期約1ms
        }
}




回復(fù)

使用道具 舉報

ID:1109793 發(fā)表于 2024-4-16 21:00 | 顯示全部樓層
按鍵是輸入,LED是輸出,怎樣用一個腳完成?原理說說唄。按鍵按下去時燈會滅還是不會?LED完全熄滅時還能讀按鍵嗎?
回復(fù)

使用道具 舉報

ID:47445 發(fā)表于 2024-4-16 21:28 | 顯示全部樓層
xiaobendan001 發(fā)表于 2024-4-16 21:00
按鍵是輸入,LED是輸出,怎樣用一個腳完成?原理說說唄。按鍵按下去時燈會滅還是不會?LED完全熄滅時還能讀 ...

ddfghj.png STC15 PDF資料有這種電路
回復(fù)

使用道具 舉報

ID:1109793 發(fā)表于 2024-4-17 08:41 | 顯示全部樓層
jl48q 發(fā)表于 2024-4-16 21:28
STC15 PDF資料有這種電路

即使弱上拉,也有電流會流過LED,一樣會亮,雖然比較弱。況且電路中還有一個10K的上拉電阻。即使你的弱上拉時間非常短,也有亮度的。而且要保證LED的限流電阻在弱上拉時能夠為IO扣提供至少電源電壓一半以上的電壓。我是覺得研究這個沒啥用。要擴(kuò)展不如直接使用比如1638這樣的芯片更有效。這STC的人也是腦洞比較大
回復(fù)

使用道具 舉報

ID:879348 發(fā)表于 2024-4-17 09:23 | 顯示全部樓層
分時復(fù)用,在極短時間內(nèi),把輸出口變?yōu)檩斎耄x取后馬上變?yōu)檩敵觯驗檫@個時間是us級別,LED失控亮起時間極短,亮度幾乎沒有

評分

參與人數(shù) 1黑幣 +5 收起 理由
橙子不灑脫 + 5 說的很對!跟我想的一樣

查看全部評分

回復(fù)

使用道具 舉報

ID:1110945 發(fā)表于 2024-4-17 10:00 | 顯示全部樓層
如果我做這樣的電路,不會畫成這個樣子。
Vcc接限流電阻接發(fā)光管接按鍵到地(串起來),IO口接按鍵就好了。
設(shè)置成準(zhǔn)雙向口模式弱上拉。
如果用adc功能讀按鍵,則一個IO口可以掛10個甚至30個按鍵。
回復(fù)

使用道具 舉報

ID:1109793 發(fā)表于 2024-4-17 10:57 | 顯示全部樓層
wufa1986 發(fā)表于 2024-4-17 09:23
分時復(fù)用,在極短時間內(nèi),把輸出口變?yōu)檩斎耄x取后馬上變?yōu)檩敵,因為這個時間是us級別,LED失控亮起時間 ...

是不是可以嘗試在LED上并一個電容,這樣就完全沒有亮度了,有空試試效果咋樣
回復(fù)

使用道具 舉報

ID:47445 發(fā)表于 2024-4-18 11:32 | 顯示全部樓層
程序修改了2天,弄好了
bae0e19c4568bf74cebc36b1e39ed1a.jpg

回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美一区二区三区国产精品 | 亚洲一区二区精品视频 | 久久91精品国产 | 久久免费国产视频 | 亚洲 精品 综合 精品 自拍 | 欧美日韩一区二区在线观看 | 国产欧美精品一区二区三区 | 高清国产午夜精品久久久久久 | 日韩免费高清视频 | 成人黄色三级毛片 | 国产一区二区精品自拍 | 国产69精品久久99不卡免费版 | 人操人人干人 | 毛片网在线观看 | 免费电影av| 一级黄色毛片子 | 自拍视频国产 | 欧美一级欧美三级在线观看 | 乱一性一乱一交一视频a∨ 色爱av | 一区二区三区视频免费观看 | 综合色播 | www.五月天婷婷.com | 成人片免费看 | 中文字幕国 | 日日操日日干 | 在线观看国产三级 | 人成久久| 国产成人精品久久二区二区91 | 国产美女久久 | 日韩和的一区二区 | 啪啪毛片| 欧美日韩在线观看一区 | 91美女在线 | 欧美视频在线播放 | 国产精品久久久久久久久久久免费看 | 精品一区二区三区av | 亚洲欧美日韩电影 | 夜夜骑首页 | 久久久久久国产精品 | 日本特黄a级高清免费大片 国产精品久久性 | 国产人成精品一区二区三 |