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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 694|回復: 1
打印 上一主題 下一主題
收起左側

51單片機+TM1652 5位LED二鍵增減計數器

[復制鏈接]
跳轉到指定樓層
樓主
ID:33548 發表于 2025-3-8 22:24 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
用模塊廠家資料+豆包+自己修改生成的STC89C51單片機+TM1652 5位LED二鍵增減計數器,實際調試OK,獻給大家。
//51單片機+TM1652二按鍵增減計數5位LED顯示C代碼//
//普通顯示,無中斷,調試OK
#include "REG51.h"
unsigned char KEY_NUM = 0;
typedef unsigned char u8;
typedef unsigned int u16;
u16 count = 0;    //按鍵計數值
sbit up = P3^6;   //增加按鍵
sbit down = P3^7;     //減少按鍵

sbit D_out = P0^0;    //模擬UART數據輸出端,連接TM1652數據輸入端D_in
const u8 CODE[16] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71};  //共陰數碼管0~F字型碼

void Delay52us()  //@11.0592MHz
{
    unsigned char i;
    i = 21;
    while (--i);
}

void Delay5ms()  //@11.0592MHz
{
    unsigned char i, j;
    i = 9;
    j = 244;
    do
    {
        while (--j);
    } while (--i);
}

void Delay104us()  //@11.0592MHz
{
    unsigned char i;
    i = 45;
    while (--i);
}

void tm1652_send_data(u8 sdat)    //向TM1652發送數據
{
    unsigned char i = 0, sfalg = 0;
    //起始位
    D_out = 0;
    Delay52us();    //保持52us

    //發送8位數據
    for (i = 0; i < 8; i++)
    {
        if (sdat & 0x01)
        {
            D_out = 1;
            sfalg++;
        }
        else
        {
            D_out = 0;
        }
        Delay52us();
        sdat >>= 1;
    }

    //校驗位,按照發送數據中1的個數來判斷
    if (sfalg % 2 == 0)
    {
        D_out = 1;
    }
    else
    {
        D_out = 0;
    }
    Delay52us();
    //停止位
    D_out = 1;
    Delay104us();
}

void TM_Digtal_Display(u16 num)
{
    tm1652_send_data(0x08);
    // 確保能正確顯示五位數
    tm1652_send_data(CODE[num / 10000]);        
    tm1652_send_data(CODE[num % 10000 / 1000]);   
    tm1652_send_data(CODE[num % 1000 / 100]);     
    tm1652_send_data(CODE[num % 100 / 10]);      
    tm1652_send_data(CODE[num % 10]);           
    Delay5ms();
    tm1652_send_data(0x18);        //向TM1652發送顯示控制命令
    tm1652_send_data(0xFE);      //設置位占空比為 15/16,設置段驅動電流為 8/8,最大亮度。
}

// 延時函數,用于按鍵消抖
void delay(unsigned int time)
{
    unsigned int i, j;
    for (i = 0; i < time; i++)
        for (j = 0; j < 123; j++);
}

//主函數
void main()
{
    u16 delaytick = 0;
    // 開機顯示00000
    TM_Digtal_Display(0);
    while (1)
    {
        // 檢測上按鍵是否按下
        if (up == 0) {
            delay(20);  // 消抖
            if (up == 0)
            {
                if (count < 99999) {
                    count++;
                }
                while (up == 0) {
                    delay(10); // 持續檢測按鍵釋放,避免重復觸發
                }
                delay(20); // 釋放后再次消抖
            }
        }

        // 檢測下按鍵是否按下
        if (down == 0) {
            delay(20);  // 消抖
            if (down == 0) {
                if (count > 0) {
                    count--;
                }
                while (down == 0)
{
                    delay(10); // 持續檢測按鍵釋放,避免重復觸發
                }
                delay(20); // 釋放后再次消抖
            }
        }

        if (++delaytick == 50) // 提高顯示刷新頻率
        {
            delaytick = 0;
            TM_Digtal_Display(count);
        }
        Delay5ms();
    }
}

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:1064915 發表于 2025-5-13 17:45 | 只看該作者
0x08
0x18
0xFE
命令與TM1652 datasheet相符
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久av网站 | 亚洲国产精品一区二区第一页 | 91美女在线观看 | 亚洲第一视频网站 | 国产精品99久久久久久动医院 | 一级免费毛片 | 亚洲精品九九 | 久久精品国产免费高清 | 日本在线网址 | 久久久久久国产精品免费免费狐狸 | 中文字幕成人网 | 日韩在线观看一区二区三区 | 国产一级视频免费播放 | 午夜成人在线视频 | 国产成人免费观看 | 久久久不卡网国产精品一区 | 成人黄色在线 | 国产人成精品一区二区三 | 欧美淫 | 国产精品污污视频 | 在线视频第一页 | 国产精品日韩欧美一区二区三区 | 亚洲国产区 | 中国一级毛片免费 | 久久高清精品 | 精品久久香蕉国产线看观看亚洲 | 日韩电影a| 国产精品久久久乱弄 | www国产亚洲精品久久网站 | 国产成人一区二区三区久久久 | 97精品超碰一区二区三区 | 亚洲狠狠 | 欧美日韩精品综合 | 求个av网址| 久久久毛片 | 欧美日韩专区 | 成人在线不卡 | 国产欧美性成人精品午夜 | 日韩成人 | 99在线精品视频 | 天天舔天天 |