久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
51單片機+TM1652 5位LED二鍵增減計數器
[打印本頁]
作者:
cjtdz
時間:
2025-3-8 22:24
標題:
51單片機+TM1652 5位LED二鍵增減計數器
用模塊廠家資料+豆包+自己修改生成的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();
}
}
作者:
joyb
時間:
2025-5-13 17:45
0x08
0x18
0xFE
命令與TM1652 datasheet相符
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
精品一区二区在线观看
|
羞羞视频在线观看免费观看
|
一区二区三区视频
|
国产一区二区美女
|
99久久久久国产精品免费
|
国产一区二区三区免费视频
|
欧美精品a∨在线观看不卡 欧美日韩中文字幕在线播放
|
日韩成人
|
久久蜜桃av
|
国产成人精品免费视频
|
国产精品成人一区二区三区夜夜夜
|
一级黄a视频
|
色综合久久久久
|
国产精品一区二区在线
|
亚洲精品在线播放
|
九九国产
|
亚洲一区中文字幕在线观看
|
午夜精品在线
|
中文欧美日韩
|
久草视频在线播放
|
中文字字幕一区二区三区四区五区
|
米奇狠狠鲁
|
久久久久一区
|
一级在线视频
|
日韩国产精品一区二区三区
|
久久伊人精品一区二区三区
|
日韩欧美二区
|
日本一道本
|
国产精品久久久久久久久久久久久
|
99热精品在线观看
|
超碰免费在线
|
亚洲精品久久久久久久久久久久久
|
国产91黄色
|
午夜日韩视频
|
91av视频在线观看
|
欧美一级小视频
|
亚洲成人在线免费
|
国产精品三级
|
国产精品久久久久av
|
精品亚洲一区二区
|
欧美久久久电影
|