<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>

您好,歡迎來電子發燒友網! ,新用戶?[免費注冊]

您的位置:電子發燒友網>電子元器件>數碼管>

74hc164驅動控制16個數碼管程序案例

2018年01月30日 09:31 網絡整理 作者:佚名 用戶評論(0

  一、什么是數碼管

  數碼管,也稱作輝光管,是一種可以顯示數字和其他信息電子設備。玻璃管中包括一個金屬絲網制成的陽極和多個陰極。大部分數碼管陰極的形狀為數字。管中充以低壓氣體,通常大部分為氖加上一些汞和/或氬。給某一個陰極充電,數碼管就會發出顏色光,視乎管內的氣體而定,一般都是橙色或綠色。

  盡管在外觀上和真空管相似,其原理并非為加熱陰極放射電子。因而它被稱為冷陰極管或霓虹燈的一個變種。在室溫下,即使處于極端的室內工作條件下,這種管子的溫度很少超過40℃。

  數碼管的最常見形式有10個陰極,形狀為數字0到9,某些數碼管還有一個或兩個小數點。然而也有其他類型的數碼管顯示字母、標記和符號。如一種“數碼管”,其陰極為一個模板制成的面具,上面有數字形狀的孔。一些俄羅斯的數碼管,如IN-14,使用倒立的數字2代表5,大概是為了節約生產成本,而沒有明顯的技術或美學方面的原因。俄羅斯的數碼管大部分都使用了倒立的2作為5。

  將170伏的直流電壓加在陰極和陽極之間,每一個陰極可以發出氖的的紅橙色光。由于混合氣體的不同,不同類型的數碼管之間的顏色有所區別。壽命較長的數碼管在制造中加入了汞,減少了濺射,結果發出的光的顏色為藍色或紫色調。在某些情況下,這些顏色被玻璃上的紅色或橙色過濾涂層過濾。

  74hc164驅動控制16個數碼管程序

  數碼管分類

  數碼管也稱LED數碼管,不同行業人士對數碼管的稱呼不一樣,其實都是同樣的產品。

  按發光二極管單元連接方式可分為共陽極數碼管和共陰極數碼管。共陽數碼管是指將所有發光二極管的陽極接到一起形成公共陽極(COM)的數碼管,共陽數碼管在應用時應將公共極COM接到+5V,當某一字段發光二極管的陰極為低電平時,相應字段就點亮,當某一字段的陰極為高電平時,相應字段就不亮。共陰數碼管是指將所有發光二極管的陰極接到一起形成公共陰極(COM)的數碼管,共陰數碼管在應用時應將公共極COM接到地線GND上,當某一字段發光二極管的陽極為高電平時,相應字段就點亮,當某一字段的陽極為低電平時,相應字段就不亮。

  驅動方式

  概述

  數碼管要正常顯示,就要用驅動電路來驅動數碼管的各個段碼,從而顯示出我們要的數字,因此根據數碼管的驅動方式的不同,可以分為靜態式和動態式兩類。

  靜態顯示驅動

  靜態驅動也稱直流驅動。靜態驅動是指每個數碼管的每一個段碼都由一個單片機的I/O端口進行驅動,或者使用如BCD碼二-十進制譯碼器譯碼進行驅動。靜態驅動的優點是編程簡單,顯示亮度高,缺點是占用I/O端口多,如驅動5個數碼管靜態顯示則需要5×8=40根I/O端口來驅動,要知道一個89S51單片機可用的I/O端口才32個,實際應用時必須增加譯碼驅動器進行驅動,增加了硬件電路的復雜性。

  動態顯示驅動

  數碼管動態顯示接口是單片機中應用最為廣泛的一種顯示方式之一,動態驅動是將所有數碼管的8個顯示筆劃“a,b,c,d,e,f,g,dp”的同名端連在一起,另外為每個數碼管的公共極COM增加位選通控制電路,位選通由各自獨立的I/O線控制,當單片機輸出字形碼時,所有數碼管都接收到相同的字形碼,但究竟是哪個數碼管會顯示出字形,取決于單片機對位選通COM端電路的控制,所以我們只要將需要顯示的數碼管的選通控制打開,該位就顯示出字形,沒有選通的數碼管就不會亮。

  通過分時輪流控制各個數碼管的的COM端,就使各個數碼管輪流受控顯示,這就是動態驅動。在輪流顯示過程中,每位數碼管的點亮時間為1~2ms,由于人的視覺暫留現象及發光二極管的余輝效應,盡管實際上各位數碼管并非同時點亮,但只要掃描的速度足夠快,給人的印象就是一組穩定的顯示數據,不會有閃爍感,動態顯示的效果和靜態顯示是一樣的,能夠節省大量的I/O端口,而且功耗更低。

  74hc164驅動控制16個數碼管程序

  二、74hc164簡介

  74HC164、74HCT164 是高速硅門 CMOS 器件,與低功耗肖特基型 TTL (LSTTL) 器件的引腳兼容。74HC164、74HCT164 是 8 位邊沿觸發式移位寄存器,串行輸入數據,然后并行輸出。數據通過兩個輸入端(DSA 或 DSB)之一串行輸入;任一輸入端可以用作高電平使能端,控制另一輸入端的數據輸入。

  74HC164設備特性

  門控串行數據輸入 異步中央復位 符合 JEDEC 標準no. 7A 靜電放電(ESD)保護

  ·HBM EIA/JESD22-A114-B 超過2000

  V·MM EIA/JESD22-A115-A 超過 200 V 。多種封裝形式額定從 -40 °C 至 +85 °C 和 -40 °C 至 +125 °C

  74HC164引腳說明

  74hc164驅動控制16個數碼管程序

  74HC164引腳圖

  74hc164驅動控制16個數碼管程序

  74hc595引腳說明

  74HC164極限參數

  直流電壓 VDD:l-0.5V——7V

  輸入鉗位電流 :-20MA—20MA

  輸出鉗位電流 :-20MA—20MA

  連續輸出電流:-25MA—25MA

  通過VCC 或GND的電流:-50MA—50MA

  引腳焊接溫度:+265度

  三、74hc164驅動控制16個數碼管程序

  #include 《stc.h》

  #include “intrins.h” //_nop_();延時函數用

  #define uchar unsigned char

  #define uint unsigned int

  //================18b20數據口定義===============

  uint temp; // 定義一個16位變量用于COPY數據

  sbit DQ = P2^6;

  char flash,presence;

  uint temp1,temp2; //讀出溫度暫放

  uchar s1,s2,s3,s4; //顯示單元數據,共6個數據和一個運算暫用

  //=======164端口定義==========

  sbit ge=P2^5; //個位

  sbit shi=P2^4; //十位

  sbit bai=P2^3; //百位

  sbit qian=P2^2; //千位

  sbit clk=P2^1; //164時鐘

  sbit data1=P2^0; //164數據線

  sbit a0=ACC^0; //累加器

  uchar code LED[10]={ //不帶小數點的代碼表

  0xC0,0xF9,0xA4,0xB0,0x99,

  0x92,0x82,0xF8,0x80,0x90,};

  uchar code led1[10]={ //帶小數點的代碼表

  0x40,0x79,0x24,0x30,0x19,

  0x12,0x2,0x78,0x0,0x10,};

  //======164數據轉換程序=======

  void chuanshu164(uchar data_buf)

  {

  uchar i;

  ACC=data_buf; //數據送累加器

  for(i=8;i》0;i--)

  {

  clk=0;

  data1=a0;

  clk=1;

  ACC=ACC》》1;

  }

  clk=0;

  }

  /*****************延時函數*************************/

  void delay(uint t)

  {

  for (;t》0;t--);

  _nop_();

  }

  //========顯示4位數碼管函數===========

  void xianshi(uint shu)

  {

  uchar ss;

  for(ss=10;ss》0;ss--)

  {

  uint wei1,wei2,wei3,wei4;

  wei1=shu/1000; //將千位分離

  wei2=shu%1000/100; //將百位分離

  wei3=shu%100/10; //將十位分離

  wei4=shu%10; //將個位分離

  chuanshu164(led[wei1]); //顯示第一位數碼管

  qian=0;

  delay(200);

  qian=1;

  chuanshu164(led[wei2]); //顯示第二位數碼管

  bai=0;

  delay(200);

  bai=1;

  chuanshu164(led1[wei3]); //顯示第三位數碼管

  shi=0;

  delay(200);

  shi=1;

  chuanshu164(led[wei4]); //顯示第四位數碼管

  ge=0;

  delay(200);

  ge=1;

  //}

  }

  }

  //=================18b20相關函數開始==============

  /****************DS18B20復位函數************************/

  ow_reset(void)

  {

  char presence=1;

  while(presence)

  {

  while(presence)

  {

  DQ=1;_nop_();_nop_(); //從高拉倒低

  DQ=0;

  delay(550); //550 us

  DQ=1;

  delay(66); //66 us

  presence=DQ; //presence=0 復位成功,繼續下一步

  }

  delay(500); //延時500 us

  presence=~DQ;

  }

  DQ=1; //拉高電平

  }

  /****************DS18B20寫命令函數************************/

  void write_byte(uchar val) //向1-WIRE 總線上寫1個字節

  {

  uchar i;

  for(i=8;i》0;i--)

  {

  DQ=1;_nop_();_nop_(); //從高拉倒低

  DQ=0;_nop_();_nop_();_nop_();_nop_(); //5 us

  DQ=val&0x01; //最低位移出

  delay(66); //66 us

  val=val/2; //右移1位

  }

  DQ=1;

  delay(10);

  }

  //

  /****************DS18B20讀1字節函數************************/

  uchar read_byte(void) //從總線上取1個字節

  {

  uchar i;

  uchar value=0;

  for(i=8;i》0;i--)

  {

  DQ=1;_nop_();_nop_();

  value》》=1;

  DQ=0;_nop_();_nop_();_nop_();_nop_(); //4 us

  DQ=1;_nop_();_nop_();_nop_();_nop_(); //4 us

  if(DQ)value|=0x80;

  delay(66); //66 us

  }

  DQ=1;

  return(value);

  }

  /****************讀出溫度函數************************/

  read_temp()

  {

  ow_reset(); //總線復位

  write_byte(0xcc); //發命令

  write_byte(0x44); //發轉換命令

  ow_reset();

  delay(1);

  write_byte(0xcc); //發命令

  write_byte(0xbe);

  temp1=read_byte(); //讀溫度值的低字節

  temp2=read_byte(); //讀溫度值的高字節

  temp=(temp2*256+temp1)*0.625;

  return temp; //返回溫度值

  }

  //=================18b20相關函數結束==============

  //=================主函數=========================

  void main(void)

  {

  ow_reset(); //開機先轉換一次

  write_byte(0xcc); //Skip ROM

  write_byte(0x44); //發轉換命令

  while(1)

  {

  xianshi(read_temp());

  //xianshi(read_temp());

  //xianshi(read_temp());

  //delay(500);

  }

  }

非常好我支持^.^

(16) 59.3%

不好我反對

(11) 40.7%

( 發表人:陳翠 )

      發表評論

      用戶評論
      評價:好評中評差評

      發表評論,獲取積分! 請遵守相關規定!

      ?
      亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
      <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
      <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
      <acronym id="s8ci2"></acronym>
      <acronym id="s8ci2"><center id="s8ci2"></center></acronym>