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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

TM1651數(shù)碼管顯示芯片的51單片機驅(qū)動

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:104287 發(fā)表于 2016-1-29 19:45 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

  /*****************************************************************************

*版權(quán)信息:深圳天微電子有限公司
*文 件 名:TM1651-V1.0
*當前版本:V1.0
*MCU 型號:STC12C5608AD
*開發(fā)環(huán)境:Keil uVision4
*晶震頻率:11.0592MHZ      
*完成日期:2013-07-19
*程序功能:數(shù)碼管驅(qū)動和按鍵:驅(qū)動7段4位LED共陽數(shù)碼管顯示,當對應(yīng)按鍵按下時顯示1~7,原理圖請參考TM1651規(guī)格書;         
*免責(zé)聲明:1.此程序為TM1651驅(qū)動共陽LED數(shù)碼管和按鍵演示程序,僅作參考之用。
            2.如有直接使用本例程程序造成經(jīng)濟損失的,本公司不承擔(dān)任何責(zé)任            
********************************************************************************/
#include <reg52.h>//頭文件
#include "intrins.h"//包含_nop_()指令頭文件

#define nop _nop_();_nop_();_nop_();_nop_();_nop_();//宏定義


/********************定義控制端口**********************/
sbit CLK=P3^3; //定義CLK
sbit DIO=P3^2; //定義DIO


/********************定義數(shù)據(jù)*************************/
unsigned char code CODE[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,};//共陽數(shù)碼管0~9字型碼
unsigned char code TAB[10]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,};//數(shù)碼管不顯示

/********************延時函數(shù),延時nms******************/
void delay_nms(unsigned int n)
{
unsigned int i;
while(n--)
   for(i=0;i<550;i++);
}

/********************Start函數(shù)*************************/
void I2CStart()
{
DIO=1;
CLK=1;
nop;
DIO=1;
nop;
DIO=0;
nop;
CLK=0;
}

/********************Stop函數(shù)*************************/
void I2CStop()
{
    CLK=0;
nop;
nop;
DIO=0;
nop;
nop;
CLK=1;
nop;
nop;
nop;
DIO=1;
nop;
CLK=0;
DIO=0;
}

/***************發(fā)送8bit數(shù)據(jù),從低位開始**************/
void I2CWritebyte(unsigned char oneByte)
{
  unsigned char i;
  for(i=0;i<8;i++)
  {
    CLK=0;
if(oneByte&0x01)
  DIO=1;
else
  DIO=0;
nop;
    CLK=1;
    oneByte=oneByte>>1;
  }
  //8位數(shù)據(jù)傳送完
CLK=0;//判斷芯片發(fā)過來的ACK應(yīng)答信號
nop;
while(DIO==1);
nop;
CLK=1;
nop;
}

/***************讀按鍵程序**************/
unsigned char read_key()
{
unsigned char rekey,i;
I2CStart();
I2CWritebyte(0x42); //寫讀鍵指令0x42
DIO=1;
for(i=0;i<8;i++)
{
CLK=0;
nop;
nop;
rekey=rekey>>1;   //先讀低位
nop;
nop;
CLK=1;
if(DIO)
  rekey=rekey|0x80;
else
  rekey=rekey|0x00;
nop;
}
CLK=0;  //判斷芯片發(fā)過來的ACK應(yīng)答信號
nop;
nop;
while(DIO==1);
nop;
nop;
CLK=1;
nop;
nop;
I2CStop();

return rekey;
}

/************顯示函數(shù),地址自加一************/
void disp0(unsigned char *p)                     
{
unsigned char i;
I2CStart();
I2CWritebyte(0x40);  //數(shù)據(jù)命令設(shè)置:地址自動加1,寫數(shù)據(jù)到顯示寄存器
I2CStop();

I2CStart();
I2CWritebyte(0xc0);  //地址命令設(shè)置:初始地址為00H
for(i=0;i<4;i++)  //發(fā)送4字節(jié)數(shù)據(jù)到顯存
{
I2CWritebyte(*p);
p++;
}
I2CStop();

I2CStart();
I2CWritebyte(0x8C); //顯示控制命令:開顯示,脈沖寬度為11/16.
I2CStop();

}

/************顯示函數(shù),固定地址寫數(shù)據(jù)************/
void disp(unsigned char add, unsigned char value)
{
I2CStart();
I2CWritebyte(0x44); //數(shù)據(jù)命令設(shè)置:固定地址,寫數(shù)據(jù)到顯示寄存器
I2CStop();

I2CStart();
I2CWritebyte(add);//地址命令設(shè)置:寫入add對應(yīng)地址

I2CWritebyte(CODE[value]);//給add地址寫數(shù)據(jù)
I2CStop();

I2CStart();
I2CWritebyte(0x8C);//顯示控制命令:開顯示,脈沖寬度為11/16.
I2CStop();

}

/************按鍵處理函數(shù),按鍵數(shù)據(jù)低位在前高位在后************/
void key_process()
{
unsigned char temp;
temp=read_key();  //讀取按鍵返回值
if(temp!=0xff)
{
  disp0(TAB);  //清屏
  switch(temp)
  {
    case 0xf7 : disp(0xc0,1);break;  //K1與SG1對應(yīng)按鍵按下,顯示1
case 0xf6 : disp(0xc1,2);break;  //K1與SG2對應(yīng)按鍵按下,顯示2
case 0xf5 : disp(0xc2,3);break;  //K1與SG3對應(yīng)按鍵按下,顯示3
case 0xf4 : disp(0xc3,4);break;  //K1與SG4對應(yīng)按鍵按下,顯示4
case 0xf3 : disp(0xc0,5);break;  //K1與SG5對應(yīng)按鍵按下,顯示5
case 0xf2 : disp(0xc1,6);break;  //K1與SG6對應(yīng)按鍵按下,顯示6
case 0xf1 : disp(0xc2,7);break;  //K1與SG7對應(yīng)按鍵按下,顯示7
default   : break;
  }
}
}

void main()
{

disp0(CODE);      //上電數(shù)碼管顯示0~3
delay_nms(1);
while(1)     //按鍵后顯示按鍵內(nèi)容
{
key_process();
delay_nms(100);
}
}



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

使用道具 舉報

沙發(fā)
ID:87000 發(fā)表于 2018-10-16 17:15 | 只看該作者
這個可以用嘛?
回復(fù)

使用道具 舉報

板凳
ID:383374 發(fā)表于 2019-7-29 14:53 | 只看該作者
代碼已經(jīng)測試可以使用
回復(fù)

使用道具 舉報

地板
ID:592135 發(fā)表于 2019-7-29 17:22 | 只看該作者
謝謝樓主的分享,點贊
回復(fù)

使用道具 舉報

5#
ID:68189 發(fā)表于 2020-10-18 16:27 | 只看該作者
代碼經(jīng)過實驗,正確驅(qū)動TM1651,感謝樓主分享.
回復(fù)

使用道具 舉報

6#
ID:934353 發(fā)表于 2021-6-28 13:51 | 只看該作者
這不是共陽數(shù)碼管吧,是共陰數(shù)碼管吧
回復(fù)

使用道具 舉報

7#
ID:562798 發(fā)表于 2022-5-31 01:18 | 只看該作者
開心就好hhhh 發(fā)表于 2021-6-28 13:51
這不是共陽數(shù)碼管吧,是共陰數(shù)碼管吧

只有用這個編碼才可以正常顯示的!
回復(fù)

使用道具 舉報

8#
ID:562798 發(fā)表于 2022-6-7 08:06 | 只看該作者
donny123800 發(fā)表于 2022-5-31 01:18
只有用這個編碼才可以正常顯示的!

嗯是的!
回復(fù)

使用道具 舉報

9#
ID:1001745 發(fā)表于 2022-6-7 09:58 | 只看該作者
tm1652的驅(qū)動程序有嗎?
回復(fù)

使用道具 舉報

10#
ID:562798 發(fā)表于 2022-6-7 20:03 | 只看該作者
mcuhui 發(fā)表于 2022-6-7 09:58
tm1652的驅(qū)動程序有嗎?

有!前兩天剛寫的!
回復(fù)

使用道具 舉報

11#
ID:1088395 發(fā)表于 2023-7-28 09:54 | 只看該作者

這個不是共陽數(shù)碼管,應(yīng)該是共陰數(shù)碼管吧
回復(fù)

使用道具 舉報

12#
ID:433219 發(fā)表于 2023-7-28 14:40 | 只看該作者
1651 不如 1650實用
回復(fù)

使用道具 舉報

13#
ID:224580 發(fā)表于 2023-8-17 14:17 | 只看該作者
邏輯很正確,要慢慢研究吸收好的代碼
回復(fù)

使用道具 舉報

14#
ID:1065749 發(fā)表于 2023-8-17 18:35 | 只看該作者
這個芯片驅(qū)動數(shù)碼管和按鍵,作用很大,如果把封裝做小一點就好了,對于一些小板子,這個就用不了。
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩精品在线看 | 91精品国产自产精品男人的天堂 | 久久久青草婷婷精品综合日韩 | 精品久久久久久久久久久久 | 国产做a爱片久久毛片 | 伊人久久一区二区 | 在线观看毛片网站 | 日韩在线不卡视频 | 午夜影院在线免费观看视频 | 中文字幕高清 | 美女黄网站视频免费 | 亚洲欧美中文日韩在线v日本 | 亚洲精品久久久久久国产精华液 | 成人av网站在线观看 | 毛片网站在线观看视频 | 久久99精品久久久久子伦 | 91久久| 精品综合 | 欧洲av一区 | av黄色免费在线观看 | 一级毛片免费 | 色男人的天堂 | 精品欧美一区二区三区久久久 | 亚洲精品视频久久 | 国产精品高清一区二区三区 | 国产在线一区二区三区 | 91国在线观看| 青娱乐自拍 | 国产四区| 国产免费一区二区 | 亚洲五码久久 | 在线观看视频h | 国产精品美女久久久av超清 | 久久成人激情 | 国产高清视频在线观看播放 | 久久久久亚洲 | 亚洲二区视频 | 521av网站 | 国产在线观看网站 | 欧美精品一区在线发布 | 日日操操|