找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4556|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

STC15W404S單片機(jī)驅(qū)動(dòng)TM1650芯片的4位共陰數(shù)碼管代碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:396502 發(fā)表于 2018-9-11 14:26 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint  unsigned int
sbit CLK = P3^2;
sbit DIO = P3^3;

#define CLK_H  CLK = 1
#define CLK_L  CLK = 0

#define DIO_H  DIO = 1
#define DIO_L  DIO = 0

void TM1650_Set(uchar add,uchar dat);
uchar Scan_Key(void);

uchar CODE[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //0~9顯示代碼

void main()
{
uchar key;
TM1650_Set(0x48,0x51);//為5級亮度,開顯示八段顯示方式,后一個(gè)字節(jié)中高位用于亮度,低位用于七段或八段顯示方式和開關(guān)顯示
                                   //如:0x71為七級亮度,八段顯示方式,開顯示;0x79為為七級亮度,七段顯示方式,開顯示
TM1650_Set(0x68,CODE[0]);
TM1650_Set(0x6A,CODE[5]);
TM1650_Set(0x6C,CODE[1]);
TM1650_Set(0x6E,CODE[4]);
while(1) ;
{
key = Scan_Key();
//第一個(gè)按鍵按下
if(key == 0x44)  //此鍵值和數(shù)據(jù)手冊上對應(yīng)
{
TM1650_Set(0x6E,CODE[1]);//顯示1
}
//第二個(gè)按鍵按下
if(key == 0x4c)
{
TM1650_Set(0x6E,CODE[2]);
}
//第三個(gè)按鍵按下

//TM1650_Set(0x6E,CODE[3]);

}
}
void Delay_us(uint i) //us延時(shí)
{
for(;i>0;i--)
{
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
}
void I2CStart(void)//開始信號
{
CLK_H;
DIO_H;
Delay_us(5);
DIO_L;

}

void I2Cask(void) //ACK信號
{
uchar timeout = 1;
CLK_H;
Delay_us(5);
CLK_L;
while((DIO)&&(timeout<=100))
{
  timeout++;
}
Delay_us(5);
CLK_L;
}

void I2CStop(void) //停止信號
{
CLK_H;
DIO_L;
Delay_us(5);
DIO_H;
}

void I2CWrByte(uchar oneByte) //寫一個(gè)字節(jié)高位在前,低位在后
{
uchar i;
CLK_L;
Delay_us(1);
for(i=0;i<8;i++)
{
oneByte = oneByte<<1;
DIO = CY;
CLK_L;
Delay_us(5);
CLK_H;
Delay_us(5);
CLK_L;
}
}

uchar Scan_Key(void)  // 按鍵掃描
{
uchar i;
uchar rekey;
I2CStart();
I2CWrByte(0x49);//讀按鍵命令
I2Cask();
//DIO_H;
for(i=0;i<8;i++)
{
   CLK_H;
   rekey = rekey<<1;
   if(DIO)
   {
   rekey++;
   }
   Delay_us(5);
   CLK_L;
}
I2Cask();
I2CStop();
return(rekey);
}


void TM1650_Set(uchar add,uchar dat) //數(shù)碼管顯示
{
//寫顯存必須從高地址開始寫
I2CStart();
I2CWrByte(add); //第一個(gè)顯存地址
I2Cask();
I2CWrByte(dat);
I2Cask();
I2CStop();
}



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

使用道具 舉報(bào)

沙發(fā)
ID:1 發(fā)表于 2018-9-11 18:26 | 只看該作者
補(bǔ)全原理圖或者詳細(xì)說明一下電路連接即可獲得100+黑幣
回復(fù)

使用道具 舉報(bào)

板凳
ID:1121972 發(fā)表于 2024-5-26 22:39 | 只看該作者
厲害,而且你這個(gè)可移植性很高
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表