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

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

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

CW32數(shù)字電壓電流表軟件教程-實(shí)驗(yàn)三:數(shù)碼管顯示數(shù)字

CW32生態(tài)社區(qū) ? 來源:CW32生態(tài)社區(qū) ? 作者:CW32生態(tài)社區(qū) ? 2024-05-31 15:21 ? 次閱讀

4.1.數(shù)碼管顯示原理

(來源:CSDN,原文鏈接:[https://blog.csdn.net/qq_42189951/article/details/133347707]

數(shù)碼管的顯示原理是由多個(gè)發(fā)光的二極管共陰極或者共陽極組成的成“8”字形的顯示器件。數(shù)碼管通過不同的組合可用來顯示數(shù)字0~9、字符A ~ F及小數(shù)點(diǎn)“.”。數(shù)碼管的工作原理是通過控制外部的I/O端口進(jìn)行驅(qū)動(dòng)數(shù)碼管的各個(gè)段碼,使用不同的段碼從而形成字符顯示出我們要的數(shù)字。數(shù)碼管實(shí)際上是由七個(gè)發(fā)光管組成8字形構(gòu)成的,加上小數(shù)點(diǎn)就是8個(gè)。這些段分別由字母A、B、C、D、E、F、G、DP來表示。

當(dāng)數(shù)碼管特定的引腳加上高電平后,這些特定的發(fā)光二極管就會(huì)發(fā)亮,以形成我們眼睛看到的字樣了。如:在一個(gè)共陰極數(shù)碼管上顯示一個(gè)“8”字,那么就對(duì)A、B、C、D、E、F、G對(duì)應(yīng)的引腳置高電平。發(fā)光二極管的陽極共同連接至電源的正極稱為共陽極數(shù)碼管,這種類型的數(shù)碼管點(diǎn)亮需要對(duì)引腳置低電平;發(fā)光二極管的陰極共同連接到電源的負(fù)極稱為共陰極數(shù)碼管,點(diǎn)亮共陰極數(shù)碼管需要對(duì)相應(yīng)的引腳置高電平。常用LED數(shù)碼管顯示的數(shù)字和字符是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。

圖4-1 數(shù)碼管模型圖

共陽極數(shù)碼管的8個(gè)發(fā)光二極管的陽極(二極管正端)連接在一起。通常,公共陽極接高電平(一般接電源),其它管腳接段驅(qū)動(dòng)電路輸出端。當(dāng)某段驅(qū)動(dòng)電路的輸出端為低電平時(shí),則該端所連接的字段導(dǎo)通并點(diǎn)亮。根據(jù)發(fā)光字段的不同組合可顯示出各種數(shù)字或字符。此時(shí),要求段驅(qū)動(dòng)電路能吸收額定的段導(dǎo)通電流,還需根據(jù)外接電源及額定段導(dǎo)通電流來確定相應(yīng)的限流電阻。

共陰極數(shù)碼管的8個(gè)發(fā)光二極管的陰極(二極管負(fù)端)連接在一起。通常,公共陰極接低電平(一般接地),其它管腳接段驅(qū)動(dòng)電路輸出端。當(dāng)某段驅(qū)動(dòng)電路的輸出端為高電平時(shí),則該端所連接的字段導(dǎo)通并點(diǎn)亮,根據(jù)發(fā)光字段的不同組合可顯示出各種數(shù)字或字符。此時(shí),要求段驅(qū)動(dòng)電路能提供額定的段導(dǎo)通電流,還需根據(jù)外接電源及額定段導(dǎo)通電流來確定相應(yīng)的限流電阻。

4.2.數(shù)碼管原理圖與實(shí)物圖

如果數(shù)碼管可以顯示多位數(shù)字,如我們的電壓電流表所示。那么除了控制段碼來選擇要顯示的內(nèi)容,還要選擇位碼來控制某一個(gè)數(shù)碼管的亮滅。

圖4-2 電壓電流表三位數(shù)碼管

數(shù)碼管的原理圖如下,可以看出除了上述的段碼引腳之外,還有COM1、COM2、COM3的位碼引腳,三個(gè)位碼引腳分別控制三個(gè)數(shù)碼管的亮滅情況,且低電平有效。

圖4-3 三位數(shù)碼管原理圖

4.3.數(shù)碼管驅(qū)動(dòng)顯示

驅(qū)動(dòng)顯示數(shù)碼管的思路是:先將A、B、C、D、E、F、G所代表的引腳從低到高編號(hào),列出數(shù)碼要顯示數(shù)字的段碼值。比如要顯示數(shù)字5,則段碼值為0x6d,二進(jìn)制表示為01101101,這說明G置1,F(xiàn)置1,E置0,D置1,C置1,B置0,A置1,最高位則是DP的值。將要顯示的數(shù)字以段碼值的方式儲(chǔ)存在數(shù)組里以供調(diào)用,可以簡化程序。接著以循環(huán)的方式結(jié)合switch語句對(duì)A、B、C、D、E、F、G的亮滅情況進(jìn)行單獨(dú)計(jì)算,先將段碼值確定后再進(jìn)行位碼的選擇,可以避免因單片機(jī)執(zhí)行程序的時(shí)間而造成顯示效果的不足。

具體程序如下,將所有與數(shù)碼管顯示相關(guān)的函數(shù)保存在新建的 Seg_Reg.c 文件

/*  共陰數(shù)碼管編碼表:
 0x3f   0x06   0x5b  0x4f  0x66  0x6d  0x7d  0x07  0x7f  0x6f 
  0      1      2     3     4     5     6     7     8     9 
 0xbf   0x86   0xdb  0xcf  0xe6  0xed  0xfd  0x87  0xff  0xef           
  0.     1.     2.    3.    4.    5.    6.    7.    8.    9. */
 
             
uint8_t Seg_Table[20] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f,
                         0xbf, 0x86, 0xdb, 0xcf, 0xe6, 0xed, 0xfd, 0x87, 0xff, 0xef};
/*對(duì)段碼值進(jìn)行存儲(chǔ)*/

void Seg_Init(void)      //查找原理圖對(duì)數(shù)碼管相關(guān)引腳進(jìn)行初始化
{
  __RCC_GPIOA_CLK_ENABLE();//打開GPIOA的時(shí)鐘
  __RCC_GPIOB_CLK_ENABLE();//打開GPIOB的時(shí)鐘
  __RCC_GPIOC_CLK_ENABLE();//打開GPIOC的時(shí)鐘
        
  GPIO_InitTypeDef GPIO_InitStruct; 
                
  GPIO_InitStruct.Pins = GPIO_PIN_0 | GPIO_PIN_4; //PA00,E;PA04,G
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.IT = GPIO_IT_NONE;
  GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
  GPIO_Init(CW_GPIOA, &GPIO_InitStruct);
        
  GPIO_InitStruct.Pins = GPIO_PIN_6 | GPIO_PIN_4 | GPIO_PIN_2 | GPIO_PIN_0 | GPIO_PIN_3 | GPIO_PIN_7; //PB06,B;PB04,C;PB02,D;PB00,F;PB03,DP  //PB07,COM1
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.IT = GPIO_IT_NONE;
  GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
  GPIO_Init(CW_GPIOB, &GPIO_InitStruct);
        
  GPIO_InitStruct.Pins = GPIO_PIN_4 | GPIO_PIN_3 | GPIO_PIN_2; //PC04,A; //PC03,COM2;PC02,COM3
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.IT = GPIO_IT_NONE;
  GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
  GPIO_Init(CW_GPIOC, &GPIO_InitStruct);
}
void Seg_Dis(uint8_t Pos,uint8_t Num)   //Pos表示指定哪一個(gè)數(shù)碼管亮,Num表示要顯示的數(shù)字
{
  int i;
  uint8_t Dis_Value,Location;
  Location = Pos;
  Dis_Value = Seg_Table[Num];
        
  for(i = 0; i < 8; i++)      //通過循環(huán)確定每一個(gè)段碼引腳的亮滅情況
  {
    switch(i)
      {
/*將Dis_Value右移i位,再和0x01(00000001)相與消除其他位的影響,可以確定該位的寫入值,
  學(xué)員可以自己用一個(gè)實(shí)例比如0x6d(01101101)進(jìn)行分析*/
        case 0:
          GPIO_WritePin(CW_GPIOC,GPIO_PIN_4,(Dis_Value > > i) & 0x01);    //PC04,A
          break;
        case 1:
          GPIO_WritePin(CW_GPIOB,GPIO_PIN_6,(Dis_Value > > i) & 0x01);    //PB06,B
          break;
        case 2:
          GPIO_WritePin(CW_GPIOB,GPIO_PIN_4,(Dis_Value > > i) & 0x01);    //PB04,C
          break;
        case 3:
          GPIO_WritePin(CW_GPIOB,GPIO_PIN_2,(Dis_Value > > i) & 0x01);    //PB02,D
          break;
        case 4:
          GPIO_WritePin(CW_GPIOA,GPIO_PIN_0,(Dis_Value > > i) & 0x01);    //PA00,E
          break;
        case 5:
          GPIO_WritePin(CW_GPIOB,GPIO_PIN_0,(Dis_Value > > i) & 0x01);    //PB00,F
          break;
        case 6:
          GPIO_WritePin(CW_GPIOA,GPIO_PIN_4,(Dis_Value > > i) & 0x01);    //PA04,G
          break;
        case 7:
          GPIO_WritePin(CW_GPIOB,GPIO_PIN_3,(Dis_Value > > i) & 0x01);    //PB03,DP
          break;
        default:
          break;
      }
  }
        
  switch(Location)    //確定段碼后再選擇位碼
  {
    case 0:
      GPIO_WritePin(CW_GPIOB,GPIO_PIN_7,GPIO_Pin_RESET);  //PB07,COM1
      GPIO_WritePin(CW_GPIOC,GPIO_PIN_3,GPIO_Pin_SET);    //PC03,COM2
      GPIO_WritePin(CW_GPIOC,GPIO_PIN_2,GPIO_Pin_SET);    //PC02,COM3
      break;
    case 1:
      GPIO_WritePin(CW_GPIOB,GPIO_PIN_7,GPIO_Pin_SET);    //PB07,COM1
      GPIO_WritePin(CW_GPIOC,GPIO_PIN_3,GPIO_Pin_RESET);  //PC03,COM2
      GPIO_WritePin(CW_GPIOC,GPIO_PIN_2,GPIO_Pin_SET);    //PC02,COM3
      break;
    case 2:
      GPIO_WritePin(CW_GPIOB,GPIO_PIN_7,GPIO_Pin_SET);    //PB07,COM1
      GPIO_WritePin(CW_GPIOC,GPIO_PIN_3,GPIO_Pin_SET);    //PC03,COM2
      GPIO_WritePin(CW_GPIOC,GPIO_PIN_2,GPIO_Pin_RESET);  //PC02,COM3
      break;
    default:
      break;
  }
}

在主函數(shù)里調(diào)用Seg_Dis函數(shù)即可在對(duì)應(yīng)位置顯示相應(yīng)數(shù)字(別忘了初始化),各位學(xué)員熟練之后可以通過define定義每個(gè)引腳的寫入,使代碼更加簡潔美觀。程序下載接線如圖4-4所示:

圖4-4 電壓電流表程序下載接線

4.4.實(shí)驗(yàn)效果

最終的實(shí)驗(yàn)效果如下圖所示:

圖4-5 數(shù)碼管顯示實(shí)驗(yàn)效果

審核編輯 黃宇

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

    關(guān)注

    32

    文章

    1883

    瀏覽量

    91364
  • 電壓電流表
    +關(guān)注

    關(guān)注

    0

    文章

    25

    瀏覽量

    2095
  • 驅(qū)動(dòng)顯示
    +關(guān)注

    關(guān)注

    1

    文章

    4

    瀏覽量

    3535
  • CW32
    +關(guān)注

    關(guān)注

    1

    文章

    218

    瀏覽量

    722
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    CW32數(shù)字電壓電流表-產(chǎn)品硬件設(shè)計(jì)要點(diǎn)

    主要功能: 1、對(duì)5-99V的電壓與0.1-3A的電流進(jìn)行測量與顯示 2、通過藍(lán)牙發(fā)送測得的數(shù)據(jù) 3、作為一款CW32+數(shù)碼管的迷你開發(fā)板
    的頭像 發(fā)表于 04-25 15:20 ?2015次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>數(shù)字</b><b class='flag-5'>電壓電流表</b>-產(chǎn)品硬件設(shè)計(jì)要點(diǎn)

    CW32數(shù)字電壓電流表軟件教程):數(shù)碼管顯示數(shù)字

    數(shù)碼管顯示原理是由多個(gè)發(fā)光的二極共陰極或者共陽極組成的成“8”字形的顯示器件。數(shù)碼管通過不同的組合可用來
    的頭像 發(fā)表于 05-14 14:20 ?3w次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>數(shù)字</b><b class='flag-5'>電壓電流表</b><b class='flag-5'>軟件教程</b>(<b class='flag-5'>三</b>):<b class='flag-5'>數(shù)碼管</b><b class='flag-5'>顯示</b><b class='flag-5'>數(shù)字</b>

    CW32數(shù)字電壓電流表軟件教程(五):ADC采樣及顯示

    模擬數(shù)字轉(zhuǎn)換器即A/D轉(zhuǎn)換器,或簡稱ADC,通常是指一個(gè)將模擬信號(hào)轉(zhuǎn)變?yōu)?b class='flag-5'>數(shù)字信號(hào)的電子元件。通
    的頭像 發(fā)表于 05-21 10:34 ?1239次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>數(shù)字</b><b class='flag-5'>電壓電流表</b><b class='flag-5'>軟件教程</b>(五):ADC采樣及<b class='flag-5'>顯示</b>

    數(shù)字電壓表設(shè)計(jì)實(shí)驗(yàn)(并行AD 數(shù)據(jù)采集與顯示

    數(shù)字電壓表設(shè)計(jì)實(shí)驗(yàn)(并行AD 數(shù)據(jù)采集與顯示) 一、設(shè)計(jì)要求:設(shè)計(jì)一個(gè)測量范圍為0~5V 的電壓表。用
    發(fā)表于 09-24 10:40 ?7212次閱讀
    <b class='flag-5'>數(shù)字</b><b class='flag-5'>電壓表</b>設(shè)計(jì)<b class='flag-5'>實(shí)驗(yàn)</b>(并行AD 數(shù)據(jù)采集與<b class='flag-5'>顯示</b>)

    LED數(shù)碼管顯示實(shí)驗(yàn)

    LED數(shù)碼管顯示實(shí)驗(yàn) 一.實(shí)驗(yàn)目的1.掌握數(shù)字、字符轉(zhuǎn)換成顯示段碼的
    發(fā)表于 05-16 02:07 ?6569次閱讀
    LED<b class='flag-5'>數(shù)碼管</b><b class='flag-5'>顯示</b><b class='flag-5'>實(shí)驗(yàn)</b>

    數(shù)碼管流動(dòng)顯示數(shù)字3

    慧凈HL-1 配套C實(shí)驗(yàn)例程100例【實(shí)驗(yàn)18】數(shù)碼管流動(dòng)顯示數(shù)字3),很好的C51學(xué)習(xí)資料程序。
    發(fā)表于 03-21 16:47 ?8次下載

    數(shù)碼管閃爍顯示數(shù)字

    慧凈HL-1 配套C實(shí)驗(yàn)例程100例【實(shí)驗(yàn)22】數(shù)碼管閃爍顯示數(shù)字),很好的C51學(xué)習(xí)資料程序。
    發(fā)表于 03-21 16:43 ?35次下載

    CW32數(shù)字電壓電流表-產(chǎn)品制作注意事項(xiàng)

    焊接排針再焊接數(shù)碼管,且需要像上圖一樣確保排針底部不要凸出PCB,否則會(huì)與數(shù)碼管發(fā)生干涉 2、外殼安裝 如果您計(jì)劃使用淘寶或其他渠道購買的公版外殼,在焊接數(shù)碼管前請(qǐng)先仔細(xì)閱讀下方內(nèi)容 注:建議先焊接
    的頭像 發(fā)表于 04-24 17:29 ?482次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>數(shù)字</b><b class='flag-5'>電壓電流表</b>-產(chǎn)品制作注意事項(xiàng)

    CW32數(shù)字電壓電流表軟件教程-實(shí)驗(yàn)四:數(shù)碼管動(dòng)態(tài)顯示

    5.1.數(shù)碼管動(dòng)態(tài)顯示原理 所謂動(dòng)態(tài)掃描顯示即輪流向各位數(shù)碼管送出段碼和位碼,利用發(fā)光的余輝和人眼視覺暫留作用,使人眼的感覺好像各位
    的頭像 發(fā)表于 05-31 15:23 ?591次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>數(shù)字</b><b class='flag-5'>電壓電流表</b><b class='flag-5'>軟件教程</b>-<b class='flag-5'>實(shí)驗(yàn)</b>四:<b class='flag-5'>數(shù)碼管</b>動(dòng)態(tài)<b class='flag-5'>顯示</b>

    CW32數(shù)字電壓電流表軟件教程-實(shí)驗(yàn)五:ADC采樣及顯示

    數(shù)字信號(hào)。由于數(shù)字信號(hào)本身不具有實(shí)際意義,僅僅表示一個(gè)相對(duì)大小。故任何一個(gè)模數(shù)轉(zhuǎn)換器都需要一個(gè)參考模擬量作為轉(zhuǎn)換的標(biāo)準(zhǔn),比較常見的參考標(biāo)準(zhǔn)為最大的可轉(zhuǎn)換信號(hào)大小。而輸出的數(shù)字量則表示輸入信號(hào)相對(duì)于參考信號(hào)的大小。 6.1.2.
    的頭像 發(fā)表于 05-31 15:28 ?636次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>數(shù)字</b><b class='flag-5'>電壓電流表</b><b class='flag-5'>軟件教程</b>-<b class='flag-5'>實(shí)驗(yàn)</b>五:ADC采樣及<b class='flag-5'>顯示</b>

    CW32數(shù)字電壓電流表軟件教程-實(shí)驗(yàn)七:基本數(shù)據(jù)處理算法(均值濾波)

    有像素的均值,再把該均值賦予當(dāng)前像素點(diǎn)(x,y),作為處理后圖像在該點(diǎn)上的灰度g(x,y),即g(x,y)=∑f(x,y)/m,m為該模板中包含當(dāng)前像素在內(nèi)的像素總個(gè)數(shù)。這本是數(shù)字圖像處理的一種方法,但也可以用在我們數(shù)字電壓電流表
    的頭像 發(fā)表于 05-31 15:47 ?425次閱讀

    CW32數(shù)字電壓電流表軟件進(jìn)階教程-1.電壓電流同時(shí)顯示

    基于[CW32數(shù)字電壓電流表軟件教程-實(shí)驗(yàn)七:基本數(shù)據(jù)處理算法(均值濾波)],可以對(duì)電壓電流進(jìn)行
    的頭像 發(fā)表于 05-31 15:50 ?884次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>數(shù)字</b><b class='flag-5'>電壓電流表</b><b class='flag-5'>軟件</b>進(jìn)階教程-1.<b class='flag-5'>電壓電流</b>同時(shí)<b class='flag-5'>顯示</b>

    CW32數(shù)字電壓電流表軟件進(jìn)階教程-2.電壓電流值做均值濾波

    實(shí)驗(yàn)運(yùn)行7.1章節(jié)例程時(shí) [CW32數(shù)字電壓電流表軟件進(jìn)階教程-1.電壓電流同時(shí)
    的頭像 發(fā)表于 05-31 15:57 ?567次閱讀

    CW32數(shù)字電壓電流表軟件進(jìn)階教程-3.電壓電流標(biāo)定

    標(biāo)定是通過測量標(biāo)準(zhǔn)器的偏差來補(bǔ)償儀器系統(tǒng)誤差,從而改善儀器或系統(tǒng)準(zhǔn)確度、精度的操作。為了提高電壓電流表在測量時(shí)的測量精度和準(zhǔn)確度,需要對(duì)電壓電流進(jìn)行標(biāo)定校準(zhǔn)。 常見的標(biāo)定原理如下:假設(shè)一個(gè)采樣系統(tǒng)
    的頭像 發(fā)表于 05-31 16:20 ?833次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>數(shù)字</b><b class='flag-5'>電壓電流表</b><b class='flag-5'>軟件</b>進(jìn)階教程-3.<b class='flag-5'>電壓電流</b>標(biāo)定

    基于CW32F003E4P7的數(shù)字電壓電流表產(chǎn)品方案

    產(chǎn)品實(shí)物: 一、產(chǎn)品概述 數(shù)字電壓電流表,又稱為數(shù)顯電流電壓表,是以數(shù)字形式顯示,能夠同時(shí)檢測電流
    的頭像 發(fā)表于 06-25 11:55 ?1011次閱讀
    基于<b class='flag-5'>CW</b>32F003E4P7的<b class='flag-5'>數(shù)字</b><b class='flag-5'>電壓電流表</b>產(chǎn)品方案