日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ESP8266-SDK编写的TM1668程序驱动数码管

發(fā)布時間:2025/3/21 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ESP8266-SDK编写的TM1668程序驱动数码管 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、配置GPIO及宏定義

PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDI_U, FUNC_GPIO12);
PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTCK_U, FUNC_GPIO13);
PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTMS_U, FUNC_GPIO14);

#define Set_TM1668_SCLK_1() GPIO_OUTPUT_SET(GPIO_ID_PIN(12), 1)
#define Set_TM1668_SLCK_0() GPIO_OUTPUT_SET(GPIO_ID_PIN(12), 0)
定義
TM1668的時鐘輸入 CLK ?在時鐘的上升沿輸入數(shù)據(jù)


#define Set_TM1668_STB_1() ?GPIO_OUTPUT_SET(GPIO_ID_PIN(13), 1)
#define Set_TM1668_STB_0() ?GPIO_OUTPUT_SET(GPIO_ID_PIN(13), 0)

定義stb片選 stb為低后的第一個字節(jié)作為指令 ?stb為高時 clk被忽略 這句很重呀 我就是在這里被坑了


#define Set_TM1668_DIO_1() ?GPIO_OUTPUT_SET(GPIO_ID_PIN(14), 1)
#define Set_TM1668_DIO_0() ?GPIO_OUTPUT_SET(GPIO_ID_PIN(14), 0)

定義TM1668的數(shù)據(jù)輸入DIO?在時鐘的上升沿輸入數(shù)據(jù),從低位開始

二、編寫一個寫數(shù)據(jù)的函數(shù)

void ICACHE_FLASH_ATTR TM1668_Write_Data(uint8_t data)
{
uint8_t i = 0;
Set_TM1668_STB_0();//開始設置stb為低
for(i = 0;i < 8;i++)
{
Set_TM1668_SLCK_0();
os_delay_us(20);
if(data & 0x01)//低位先開始
{
Set_TM1668_DIO_1();
}
else
{
Set_TM1668_DIO_0();
}
os_delay_us(20);
Set_TM1668_SCLK_1();//時鐘的上升沿輸入數(shù)據(jù)
os_delay_us(20);
data = data >> 1;
os_delay_us(20);
}
Set_TM1668_DIO_1();
}

三、顯示數(shù)據(jù)的函數(shù)


void ICACHE_FLASH_ATTR TM1668_Display1(uint8_t address,uint8_t *data,uint8_t num)
{
uint8_t i = 0;
//Write_74HC595_Data(Write_HC595_Data | Set_SCLK_EN_1);
TM1668_Write_Data(dissetmode);//傳顯示模式設置命令,設置為7個“GRID”方式
Set_TM1668_STB_1();
TM1668_Write_Data(writedatamode_g);//傳數(shù)據(jù)設置命令,設置采用地址固定
Set_TM1668_STB_1();


for(i = 0;i < num;i++)
{
TM1668_Write_Data(address+2*i);//設置顯示地址

//地址后面不要把stb設置為1 因為stb為低后的第一個字節(jié)為指令 ?第二個就是數(shù)據(jù)了 所以地址后面的stb不要設置為高
TM1668_Write_Data(ch[data[i]]);//設置顯示的數(shù)據(jù)
Set_TM1668_STB_1();
}
TM1668_Write_Data(disconmode);//設置顯示控制開
Set_TM1668_STB_1();
//Write_74HC595_Data(Write_HC595_Data & Set_SCLK_EN_0);
}

注意........................上面的紅色字體一定要注意 ,否則容易被坑,我就坑在這里一下午

四、顯示程序

void ICACHE_FLASH_ATTR callback(void)
{
static uint16_t flag=1234;
uint8_t ch[8] = {1,2,3,4,5,6,7,8};
flag++;
ch[0] = flag / 1000;
ch[2] = flag / 100 %10;
ch[3] = flag /10%10;
ch[3] = flag %10;
TM1668_Display1(0xc0,ch,4);
os_timer_arm(&timer,1000,0);
}


這里用了一個軟定時器的回調函數(shù)來顯示數(shù)據(jù)




讀按鍵

/****************************************************************
?* 函數(shù)名:TM1668_Write_Data
?* 函數(shù)功能:寫數(shù)據(jù)
?* 形參:data -- 要寫入的數(shù)據(jù)
?* 返回值:無
?*/
void ICACHE_FLASH_ATTR TM1668_Write_Data(uint8_t data)
{
uint8_t i = 0;
//ETS_INTR_LOCK();
Set_TM1668_STB_0();
for(i = 0;i < 8;i++)
{
Set_TM1668_SLCK_0();
os_delay_us(1);
if(data & 0x01)//低位在前
{
Set_TM1668_DIO_1();
}
else
{
Set_TM1668_DIO_0();
}
os_delay_us(1);
Set_TM1668_SCLK_1();//上升沿采集數(shù)據(jù)
os_delay_us(1);
data = data >> 1;
os_delay_us(1);
}
Set_TM1668_DIO_1();
//ETS_INTR_UNLOCK();
}


uint8_t ICACHE_FLASH_ATTR TM1668_Read_data(void)
{
uint8_t temp = 0;
uint8_t i = 0;




for(i = 0;i < 8;i++)
{
temp = temp >> 1;
Set_TM1668_SLCK_0();
if(Read_TM1668_DIO())
{
temp = temp | 0x80;
}
Set_TM1668_SCLK_1();
}
return temp;
}


uint8_t ICACHE_FLASH_ATTR ?Read_Tm1668_key(void)
{
uint8_t temp;
uint8_t i = 0;
uint8_t key = 0;
Set_TM1668_STB_0();
TM1668_Write_Data(readkeymode);


//Set_TM1668_DIO_InPut();
for(i = 0;i < 4;i++)
{
temp = TM1668_Read_data();
switch(i)
{
case 0:
if(temp == 0x01)
{
key = 0x01;
}
else if(temp == 0x10)
{
key = 0x10;
}
break;
case 1:
if(temp == 0x01)
{
key = 0x02;
}
else if(temp == 0x10)
{
key = 0x20;
}
break;
case 2:
if(temp == 0x01)
{
key = 0x04;
}
else if(temp == 0x10)
{
key = 0x40;
}
break;
case 3:
if(temp == 0x01)
{
key = 0x08;
}
else if(temp == 0x10)
{
key = 0x80;
}
break;
default:
os_printf("按鍵出錯.........\r\n");
break;
}
}


Set_TM1668_STB_1();
return key;
}

總結

以上是生活随笔為你收集整理的ESP8266-SDK编写的TM1668程序驱动数码管的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: a级片黄色 | 两根大肉大捧一进一出好爽视频 | 欧美成人片在线 | 成熟人妻av无码专区 | 国产精品探花视频 | 四虎网址大全 | 日韩av手机在线观看 | 免费黄色a| 9l视频自拍蝌蚪9l视频 | 漂亮人妻被中出中文字幕 | avav亚洲| 日韩国产第一页 | 深夜福利视频网站 | 在线免费黄网 | 日韩欧美二区 | xxxx69视频| 久热草| 蜜桃香蕉视频 | h亚洲| 69re视频 | 先锋影音av中文字幕 | 久久99久久久久久 | 麻豆视频在线观看免费 | 色戒av | 老子影院午夜伦不卡大全 | 亚洲是色 | 亚洲午夜激情视频 | 蜜桃91丨九色丨蝌蚪91桃色 | 好吊操妞| 日韩精品欧美 | 国产女人18毛片水真多1 | 操久久| 日韩不卡在线观看 | 亚洲欧洲日本一区二区三区 | 亚洲乱码国产乱码精品精软件 | 香蕉久久一区二区三区 | 天天干天天摸天天操 | 中文字幕在线视频第一页 | 都市激情一区 | 国产理论视频 | 国产一级久久久 | 在线看不卡av | 国产老头和老头xxxx× | 日韩欧洲亚洲 | 淫五月天 | 日韩精品视频播放 | 日日干天天操 | 欧美成人精品一区二区三区 | 国产偷亚洲偷欧美偷精品 | 夜夜操操| 在线免费观看视频 | 成人妇女淫片aaaa视频 | 男操女视频在线观看 | 欧美一区二区三区爽爽爽 | 日p视频在线观看 | 成人免费av | 日韩影视一区二区三区 | 中文字幕精品久久久久人妻红杏1 | 国产精选第一页 | 黄页网站免费观看 | 嫩草私人影院 | 国产成人毛片 | 日本免费一区二区三区四区五六区 | 欧美精品在欧美一区二区少妇 | 亚洲国产不卡 | 美女校花脱精光 | 三级黄色在线播放 | 中出白浆 | 射在线| 亚洲无吗视频 | 北条麻妃一区二区三区在线观看 | 亚洲网av| 超碰在线最新 | 校园春色中文字幕 | 日本高潮网站 | 亚色图 | 91丝袜在线观看 | 男女裸体无遮挡做爰 | 狠狠干免费视频 | 国产视频一区二区三区四区 | 日日做夜夜爽毛片麻豆 | 国产一区二区视频免费在线观看 | 亚洲免费观看高清完整版在线 | 成人免费va视频 | 奇米影视久久久 | 国产freexxxx性播放麻豆 | 色婷婷精品国产一区二区三区 | 美日韩精品视频 | 肉色超薄丝袜脚交69xx | 超碰在线资源 | 中文字幕天堂在线 | xxxxxhd亚洲人hd | eeuss鲁丝片一区二区三区 | 成人四色| 亚洲电影在线观看 | 女同动漫免费观看高清完整版在线观看 | 欧美视频一区二区三区 | 成 人片 黄 色 大 片 | 亚洲欧洲日产av |