chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

硬件模塊---數(shù)碼管基本原理與實現(xiàn)方法

嵌入式開發(fā)星球 ? 2024-05-11 09:20 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

嵌入式中,數(shù)碼管的使用方法。

第一:數(shù)碼管基本介紹

wKgZomY-NmSAOkMRAAVCZBHXK88205.png

1、單個數(shù)碼管

wKgaomY-NnKAejy5AACMoczR768826.png

一個數(shù)碼管是由a、b、c、d、e、f、g、dp八個二極管組成,八個LED一端接在一起,另一端引腳引出來。二極管如果陽極連在一起,就是共陽極數(shù)碼管,陰極連在一起,就是共陰極數(shù)碼管。

如上圖,是一個共陰極數(shù)碼管,要使數(shù)碼管顯示不同的數(shù)字,只需點亮對應(yīng)LED即可。如:數(shù)碼管顯示“0”,則a、b、c、d、e、f六個LED亮,g、dp這倆個LED滅,即可顯示“0”。

2、多個數(shù)碼管

wKgaomY-No2APN9BAAENwPqHFuI590.png

上圖所示的六個數(shù)碼管,在使用時,需要程序選定使用哪幾個數(shù)碼管,這就是“位選”,選定數(shù)碼管后再對選定的數(shù)碼管進(jìn)行操作,其操作與單個數(shù)碼管的操作一致(接下來還會進(jìn)一步詳解),這就是“段選”。

3、數(shù)碼管與芯片的連接

3.1 為什么要使用鎖存器?

二極管正常工作時需要5mA以上的電流,若數(shù)碼管引腳和芯片引腳直接相連,芯片的I/O口無法輸出這么大的電流,對于共陰極的數(shù)碼管,可以在陽極處接上拉電阻,對于共陽極的數(shù)碼管,可以在陰極處接下拉電阻,但是也使得“位選”需做另外的處理。

引入鎖存器,利用其輸出電流大的特點,有效的解決了LED工作電流問題,而且還可以利用鎖存器進(jìn)行“位選”、“段選”。

3.2 鎖存器的電路連接

wKgZomY-Np2ASm66AAG3mPbz1ig948.png

上圖所示,連接倆塊鎖存器,U1控制段選,U2控制位選,鎖存器現(xiàn)再回顧一下

wKgaomY-NquAE-HUAAAmkjT5ico387.png

根據(jù)電路圖,OE始終接地,所以鎖存器工作狀態(tài)只有前三種,當(dāng)LE軟件置1時,鎖存器的輸入端D與輸出端Q同高電平,同低電平,當(dāng)LE軟件置0時,鎖存器輸出為Q0。

由電路圖可得,電路連接為:

單片機(jī)的芯片引腳P00—>P07分別接U1鎖存器的D0——>D7,單片機(jī)的芯片引腳P00—>P07分別接U2鎖存器的D0——>D7,也就是說U1、U2倆鎖存器都與P0相連,所以在數(shù)碼管工作狀態(tài)下,倆個鎖存器不能同時處于打開狀態(tài),即倆個鎖存器的LE不能同時為高電平。鎖存器U1的輸出接數(shù)碼管的LED陽極,鎖存器U2的輸出接數(shù)碼管的WE,控制“數(shù)碼管選擇”。

鎖存器U2控制位選,U2打開時,U1關(guān)閉,此時U2的輸入和輸出同高、同低電平。如下圖,若使用數(shù)碼管1,則只需D0置0,其他引腳置1,即芯片P00輸出為0,P01——>P07輸出為1,即P0寄存器的狀態(tài)值為0xfe(上面低位,從下往上讀)

wKgaomY-NsqAHrLdAAHyJD-IYCo575.png

鎖存器U1控制段選,如剛剛位選了數(shù)碼管1,則接下來段選是對數(shù)碼管1的操作。此時關(guān)閉U2,打開U1,即U2的LE軟件置0,U1的LE軟件置1,而U2的LE與芯片的P27相連,U1的LE與芯片的P26相連(下圖所示),所以只需使芯片的P27輸出低電平來關(guān)閉U2鎖存器,P26輸出高電平來打開U1鎖存器。

wKgZomY-Nt6AFQabAAIDi-A37qE915.png

打開U1鎖存器后,使數(shù)碼管顯示某個數(shù)字,我們在第一節(jié)中總結(jié)過了,比如顯示一個數(shù)字“6”,需要a、c、d、e、f、g六個LED亮,所以鎖存器輸出01111101(共陰極數(shù)碼管。輸出1時點亮),即P0寄存器輸出01111101,P0寄存器的狀態(tài)值為0x7d。

wKgaomY-NvaAAcYYAACIidtSd2M599.png

wKgaomY-NweATNS7AAHmCLEyeYM486.png

第二:數(shù)碼管具體實現(xiàn)

第一個數(shù)碼管顯示數(shù)字“6”的程序如下:

#include
sbit dula=P2^6;
sbit wela=P2^7;
void main()
{
  wela=1;
  P0=0xfe;//位選第一個數(shù)碼管
  wela=0;

  dula=1;
  P0=0x7d;
  dula=0;
  while(1);
}

分析上面程序:

首先對連接U1、U2鎖存器LE的芯片引腳P26與P27進(jìn)行位操作,重命名為“dula”與“wela”,表示“段選”和“位選”。主函數(shù)里,先打開位選:wela=1,選擇第一個數(shù)碼管,則U2鎖存器輸入和輸出均為11111110(從下往上),P0的輸出也為11111110,即0xfe,位選結(jié)束后關(guān)閉位選:wela=0。

接下來打開段選:dula=1,對第一個數(shù)碼管操作,顯示數(shù)字“6”,U1鎖存器輸入輸出均為01111101,即P0輸出為01111101,即P0的狀態(tài)值為0x7d。最后關(guān)閉段選。

注:

正因為鎖存器U1與U2同時接在芯片的P0引腳上,所以倆個鎖存器不能同時打開,否則芯片引腳P0輸出的狀態(tài)值會在U1和U2上同時發(fā)生響應(yīng),造成紊亂。

第三:數(shù)碼管顯示數(shù)字時芯片引腳的狀態(tài)值

wKgaomY-N1yAHtIlAAF3jHwxJ8g660.png

顯示數(shù)字“0”,abcdef亮,狀態(tài)值00111111——>0x3f

顯示數(shù)字“1”,bc亮,狀態(tài)值00000110——>0x06

顯示數(shù)字“2”,abdeg亮,狀態(tài)值01011011——>0x5b

顯示數(shù)字“3”,abcdg亮,狀態(tài)值01001111——>0x4f

顯示數(shù)字“4”,bcfg亮,狀態(tài)值01100110——>0x66

顯示數(shù)字“5”,acdfg亮,狀態(tài)值01101101——>0x6d

顯示數(shù)字“6”,acdefg亮,狀態(tài)值01111101——>0x7d

顯示數(shù)字“7”,abc亮,狀態(tài)值00000111——>0x07

顯示數(shù)字“8”,abcdefg亮,狀態(tài)值01111111——>0x7f

顯示數(shù)字“9”,abcdfg亮,狀態(tài)值01101111——>0x6f

顯示字母“A”,abcefg亮,狀態(tài)值01110111——>0x77

顯示字母“B”,cdefg亮,狀態(tài)值01111100——>0x7c

顯示字母“C”,adef亮,狀態(tài)值00111001——>0x39

顯示字母“D”,bcdeg亮,狀態(tài)值01011110——>0x5e

顯示字母“E”,adefg亮,狀態(tài)值01111001——>0x79

顯示字母“F”,aefg亮,狀態(tài)值01110001——>0x71

在編寫程序時將上述狀態(tài)值放入數(shù)組中,通過數(shù)組來實現(xiàn)數(shù)碼管的動態(tài)顯示。

放在如下數(shù)組中:

#define uchar unsigned char
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71
}

在table數(shù)組名前加了code,表示編碼的意思,單片機(jī)程序把不需要更改的東西通過code關(guān)鍵字定義為編碼,單片機(jī)執(zhí)行程序時,table只占用程序存儲空間,可以理解為占用flash,而不占用RAM。

第四:數(shù)碼管實現(xiàn)動態(tài)顯示

一個數(shù)碼管從0到F動態(tài)顯示

#include 
#define uint unsigned int
#define uchar unsigned char
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71
};
uchar num;
sbit dula=P2^6;
sbit wela=P2^7;
void delay_ms(uint );
void main()
{
  wela=1;
  P0=0xfe;
  wela=0;

  while(1)
  {  
    for(num=0;num0;i--)
  for(j=110;j>0;j--);
}

此時第一個數(shù)碼管從0變化到F,之后停止不動。

若使數(shù)碼管從0到F反復(fù)變化,只需在while()語句里添加如下代碼:

  if(num==16)
    num=0; 

完整程序:


#include 
#define uint unsigned int
#define uchar unsigned char
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71
};
uchar num;
sbit dula=P2^6;
sbit wela=P2^7;
void delay_ms(uint );
void main()
{
  wela=1;
  P0=0xfe;
  wela=0;

  while(1)
  {  
    for(num=0;num0;i--)
  for(j=110;j>0;j--);
}

第五:數(shù)碼管經(jīng)典實例

六個數(shù)碼管,第一個數(shù)碼管顯示數(shù)字“1”,間隔1秒后再在第二個數(shù)碼管上顯示數(shù)字“2”,間隔1s后在第三個數(shù)碼管上顯示數(shù)字“3”,以此類推…在第六個數(shù)碼管上顯示數(shù)字“6”

分析:

六個數(shù)碼管輪流顯示,所以位選時依次選擇數(shù)碼管1、2…6,每次位選后,再段選輸出需要顯示的數(shù)字。

第一個數(shù)碼管位選:


  wela=1;
  P0=0xfe;//第一個數(shù)碼管
  wela=0;

第一個數(shù)碼管段選輸出數(shù)字“1”:


  dula=1;
  P0=table[1];
  dula=0;
  delay_ms(1000);

位選時P0的輸出之前已經(jīng)總結(jié)過了,再回憶一下,如下圖,從左到右分別為數(shù)碼管1、2、3、4…從下往上讀,得到8位二進(jìn)制碼,變?yōu)?6進(jìn)制即可。

wKgZomY-N-WAa2gNAAE5xJGLqxQ288.png

完整程序:


#include 
#define uint unsigned int
#define uchar unsigned char
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71
};
uchar num;
sbit dula=P2^6;
sbit wela=P2^7;
void delay_ms(uint );
void main()
{
  while(1)
  {
    wela=1;
    P0=0xfe;//第一個數(shù)碼管
    wela=0;

    dula=1;
    P0=table[1];
    dula=0;
    delay_ms(1000);

    wela=1;
    P0=0xfd;//第二個數(shù)碼管
    wela=0;

    dula=1;
    P0=table[2];
    dula=0;
    delay_ms(1000);

    wela=1;
    P0=0xfb;//第三個數(shù)碼管
    wela=0;

    dula=1;
    P0=table[3];
    dula=0;
    delay_ms(1000);

    wela=1;
    P0=0xf7;//第四個數(shù)碼管
    wela=0;

    dula=1;
    P0=table[4];
    dula=0;
    delay_ms(1000);

    wela=1;
    P0=0xef;//第五個數(shù)碼管
    wela=0;

    dula=1;
    P0=table[5];
    dula=0;
    delay_ms(1000);

    wela=1;
    P0=0xdf;//第六個數(shù)碼管
    wela=0;

    dula=1;
    P0=table[6];
    dula=0;
    delay_ms(1000);
  }
}

void delay_ms(uint ms)
{
  uint i,j;
  for(i=ms;i>0;i--)
  for(j=110;j>0;j--);
}

總結(jié):數(shù)碼管是常用器件,掌握其中的控制方法,才能走的更遠(yuǎn)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5188

    文章

    20180

    瀏覽量

    329271
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    數(shù)碼管驅(qū)動芯片的使用方法

    數(shù)碼管驅(qū)動芯片(也稱為LED驅(qū)動芯片)是一種用于控制數(shù)碼管顯示的集成電路。它可以將微控制器產(chǎn)生的數(shù)字信號轉(zhuǎn)換為適合數(shù)碼管顯示的電流和電壓。本文將詳細(xì)介紹數(shù)碼管驅(qū)動芯片的使用
    的頭像 發(fā)表于 12-08 16:24 ?2.5w次閱讀

    怎樣通過并行接口芯片去控制多個數(shù)碼管顯示呢

    實驗八、數(shù)碼管顯示實驗1、實驗?zāi)康膶W(xué)習(xí)“七段共陰極數(shù)碼管”顯示的基本原理;掌握通過并行接口芯片控制多個數(shù)碼管顯示的方法。2、實驗內(nèi)容用一片8
    發(fā)表于 12-10 08:24

    嵌入式擴(kuò)展板模塊數(shù)碼管硬件電路介紹Seg

    藍(lán)橋杯嵌入式擴(kuò)展板模塊數(shù)碼管硬件電路介紹Seg.cSeg.c函數(shù)實現(xiàn)的講解Seg.h總結(jié)硬件電路介紹從
    發(fā)表于 12-20 08:19

    數(shù)碼管動態(tài)顯示的基本原理實現(xiàn)思路

    一、模塊題目二、原理簡述動態(tài)顯示的基本原理實現(xiàn)思路(轉(zhuǎn)載)動態(tài)顯示實質(zhì)上就是輪流點亮單個數(shù)碼管實現(xiàn)多位
    發(fā)表于 01-11 06:32

    動態(tài)數(shù)碼管的使用方法

    歷年的藍(lán)橋杯單片機(jī)組比賽都會考到數(shù)碼管模塊;對于省賽以及國賽來說,動態(tài)數(shù)碼管都是必考模塊!現(xiàn)在來給大家介紹動態(tài)數(shù)碼管的使用
    發(fā)表于 01-12 06:19

    掌握通過并行接口芯片對鍵盤進(jìn)行掃描并在多位數(shù)碼管顯示數(shù)字的方法

    實驗九、鍵盤掃描及數(shù)碼管顯示實驗1、實驗?zāi)康膶W(xué)習(xí)了解鍵盤掃描的基本原理。掌握通過并行接口芯片對鍵盤進(jìn)行掃描并在多位數(shù)碼管顯示數(shù)字的方法。2、實驗內(nèi)容編寫程序,
    發(fā)表于 01-13 08:22

    數(shù)碼管靜態(tài)顯示和動態(tài)顯示的實現(xiàn)方法

    數(shù)碼管靜態(tài)顯示和動態(tài)顯示數(shù)碼管共陽和共陰段選和位選數(shù)碼管靜態(tài)顯示原理代碼實現(xiàn)數(shù)碼管動態(tài)顯示方法
    發(fā)表于 03-01 07:34

    數(shù)碼管的型號命名方法

    數(shù)碼管的型號命名方法
    發(fā)表于 12-11 10:53 ?108次下載

    學(xué)51單片機(jī)之數(shù)碼管部分

    帶您從零學(xué)51單片機(jī)之數(shù)碼管部分 目錄1 數(shù)碼管應(yīng)用2 數(shù)碼管內(nèi)部結(jié)構(gòu)及硬件原理圖3 數(shù)碼管硬件
    發(fā)表于 02-10 14:36 ?155次下載

    數(shù)碼管型號命名方法

    數(shù)碼管型號命名方法
    發(fā)表于 12-11 10:51 ?1.5w次閱讀
    <b class='flag-5'>數(shù)碼管</b>型號命名<b class='flag-5'>方法</b>

    led數(shù)碼管的結(jié)構(gòu)及檢測方法

    led數(shù)碼管的結(jié)構(gòu)及檢測方法 LED數(shù)碼管是由發(fā)光二極構(gòu)成的,亦稱半導(dǎo)體數(shù)碼管. 將條狀發(fā)光二極
    發(fā)表于 01-03 11:51 ?5449次閱讀
    led<b class='flag-5'>數(shù)碼管</b>的結(jié)構(gòu)及檢測<b class='flag-5'>方法</b>

    數(shù)碼管的分類及基于AVR單片機(jī)595驅(qū)動8位數(shù)碼管顯示電路的實現(xiàn)

    發(fā)光二極單元(多一個小數(shù)點顯示),其基本原理是:將所有LED的一端(正極、負(fù)極均可)連在一起作為一個公共端,然后通過分別控制這組LED的另一個端口來使部分LED點亮,從而達(dá)到顯示一定字形的目的。 數(shù)碼管的分類:按能顯示多少
    發(fā)表于 11-30 11:03 ?17次下載
    <b class='flag-5'>數(shù)碼管</b>的分類及基于AVR單片機(jī)595驅(qū)動8位<b class='flag-5'>數(shù)碼管</b>顯示電路的<b class='flag-5'>實現(xiàn)</b>

    led數(shù)碼管怎么接線_LED數(shù)碼管的測試

    本文主要介紹了LED數(shù)碼管的安裝接線方式及LED數(shù)碼管的測試方法。
    發(fā)表于 10-09 10:44 ?2.9w次閱讀

    數(shù)碼管的工作原理和使用方法解析

    數(shù)碼管是嵌入式開發(fā)中比較常用的一個模塊,本篇文章根據(jù)查閱的資料以及學(xué)習(xí)筆記整理成文,盡可能詳盡的講解常用數(shù)碼管原理和使用方法
    發(fā)表于 02-29 13:10 ?10.7w次閱讀

    基于單片機(jī)的數(shù)碼管實驗 八段數(shù)碼管簡介

    在我們生活中隨處可見數(shù)碼管的應(yīng)用,數(shù)碼管的應(yīng)用形式多種多樣,拋開事物表象,深入到它的本質(zhì),正所謂萬變不離其中,數(shù)碼管應(yīng)用的原理都是基本相通的。本章我們將詳細(xì)介紹數(shù)碼管
    的頭像 發(fā)表于 07-26 16:37 ?6114次閱讀
    基于單片機(jī)的<b class='flag-5'>數(shù)碼管</b>實驗 八段<b class='flag-5'>數(shù)碼管</b>簡介