在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

jf_qE49KoVBr8 ? 來源:CW32生態社區 ? 2024-05-14 14:20 ? 次閱讀

4.1.數碼管顯示原理

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

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

52982f4a-11a8-11ef-a297-92fbcf53809c.png

圖4-1 數碼管模型圖

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

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

4.2.數碼管原理圖與實物圖

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

52b6c46e-11a8-11ef-a297-92fbcf53809c.png

圖4-2 電壓電流表三位數碼管

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

52dcbf0c-11a8-11ef-a297-92fbcf53809c.png

圖4-3 三位數碼管原理圖

4.3.數碼管驅動顯示

驅動顯示數碼管的思路是:先將A、B、C、D、E、F、G所代表的引腳從低到高編號,列出數碼要顯示數字的段碼值。比如要顯示數字5,則段碼值為0x6d,二進制表示為01101101,這說明G置1,F置1,E置0,D置1,C置1,B置0,A置1,最高位則是DP的值。將要顯示的數字以段碼值的方式儲存在數組里以供調用,可以簡化程序。

接著以循環的方式結合switch語句對A、B、C、D、E、F、G的亮滅情況進行單獨計算,先將段碼值確定后再進行位碼的選擇,可以避免因單片機執行程序的時間而造成顯示效果的不足。

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

/*  共陰數碼管編碼表:
 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};
/*對段碼值進行存儲*/


void Seg_Init(void)      //查找原理圖對數碼管相關引腳進行初始化
{
  __RCC_GPIOA_CLK_ENABLE();//打開GPIOA的時鐘
  __RCC_GPIOB_CLK_ENABLE();//打開GPIOB的時鐘
  __RCC_GPIOC_CLK_ENABLE();//打開GPIOC的時鐘
        
  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表示指定哪一個數碼管亮,Num表示要顯示的數字
{
  int i;
  uint8_t Dis_Value,Location;
  Location = Pos;
  Dis_Value = Seg_Table[Num];
        
  for(i = 0; i < 8; i++)      //通過循環確定每一個段碼引腳的亮滅情況
  {
    switch(i)
      {
/*將Dis_Value右移i位,再和0x01(00000001)相與消除其他位的影響,可以確定該位的寫入值,
  學員可以自己用一個實例比如0x6d(01101101)進行分析*/
        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;
  }
}
在主函數里調用Seg_Dis函數即可在對應位置顯示相應數字(別忘了初始化),各位學員熟練之后可以通過define定義每個引腳的寫入,使代碼更加簡潔美觀。 程序下載接線如圖4-4所示:

5308ea28-11a8-11ef-a297-92fbcf53809c.png

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

4.4.實驗效果

最終的實驗效果如下圖所示:

53299930-11a8-11ef-a297-92fbcf53809c.png

5359d12c-11a8-11ef-a297-92fbcf53809c.png

53856918-11a8-11ef-a297-92fbcf53809c.png

圖4-5 數碼管顯示實驗效果



審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 發光二極管
    +關注

    關注

    13

    文章

    1199

    瀏覽量

    66323
  • 數碼管
    +關注

    關注

    32

    文章

    1882

    瀏覽量

    91122
  • 驅動電路
    +關注

    關注

    153

    文章

    1530

    瀏覽量

    108525
  • 限流電阻
    +關注

    關注

    2

    文章

    85

    瀏覽量

    17209
  • 電壓電流表
    +關注

    關注

    0

    文章

    25

    瀏覽量

    2078
  • CW32
    +關注

    關注

    1

    文章

    203

    瀏覽量

    641

原文標題:CW32數字電壓電流表軟件教程-實驗三:數碼管顯示數字

文章出處:【微信號:武漢芯源半導體,微信公眾號:武漢芯源半導體】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    CW32數字電壓電流表-產品硬件設計要點

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

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

    模擬數字轉換器即A/D轉換器,或簡稱ADC,通常是指一個將模擬信號轉變為數字信號的電子元件。通
    的頭像 發表于 05-21 10:34 ?1149次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>數字</b><b class='flag-5'>電壓電流表</b><b class='flag-5'>軟件教程</b>(五):ADC采樣及<b class='flag-5'>顯示</b>

    CW32數字電壓電流表軟件教程-實驗數碼管顯示數字

    原理是由多個發光的二極共陰極或者共陽極組成的成“8”字形的顯示器件。數碼管通過不同的組合可用來顯示數字0~9、字符A ~ F及小數點“.”
    的頭像 發表于 05-31 15:21 ?959次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>數字</b><b class='flag-5'>電壓電流表</b><b class='flag-5'>軟件教程</b>-實驗<b class='flag-5'>三</b>:<b class='flag-5'>數碼管</b><b class='flag-5'>顯示</b><b class='flag-5'>數字</b>

    數字電流表的設計

    1 應用背景1.1設計意義數字電流表的誕生打破了傳統電子測量儀器的模式和格局。它顯示清晰直觀、讀數準確,采用了先進的數顯技術,大大地減少了因人為因素所造成的測量誤差事件。數字
    發表于 08-06 06:22

    數碼管顯示電壓電路圖大全(六款數碼管顯示電壓電路原理圖詳解)

    本文主要介紹了數碼管顯示電壓電路圖大全(六款數碼管顯示電壓電路原理圖詳解)。測得的
    發表于 03-26 13:53 ?19.3w次閱讀
    <b class='flag-5'>數碼管</b><b class='flag-5'>顯示</b><b class='flag-5'>電壓電</b>路圖大全(六款<b class='flag-5'>數碼管</b><b class='flag-5'>顯示</b><b class='flag-5'>電壓電</b>路原理圖詳解)

    用JLCPCB制造數字電壓表/電流表

    用JLCPCB制造數字電壓表/電流表教程。
    發表于 04-11 14:45 ?0次下載

    CW32數字電壓電流表-產品制作注意事項

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

    CW32數字電壓電流表軟件教程-實驗四:數碼管動態顯示

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

    CW32數字電壓電流表軟件教程-實驗五:ADC采樣及顯示

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

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

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

    CW32數字電壓電流表軟件進階教程-1.電壓電流同時顯示

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

    CW32數字電壓電流表軟件進階教程-2.電壓電流值做均值濾波

    在實驗運行7.1章節例程時 [CW32數字電壓電流表軟件進階教程-1.電壓電流同時顯示] ,會發
    的頭像 發表于 05-31 15:57 ?514次閱讀

    CW32數字電壓電流表軟件進階教程-3.電壓電流標定

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

    基于CW32F003E4P7的數字電壓電流表產品方案

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

    8位數碼管怎么不顯示數字

    8位數碼管是一種常見的電子顯示設備,用于顯示數字或字符。然而,有時8位數碼管可能無法正常顯示
    的頭像 發表于 08-28 16:34 ?903次閱讀
    主站蜘蛛池模板: 国产精品久久久久久久久久免费| 97精品伊人久久大香线蕉| 色综合啪啪| 亚洲合集综合久久性色| 免费鲁丝片一级观看| 亚洲资源在线观看| 色免费在线观看| www.丁香.com| 欧美区在线| 五色网| 草色网| 日韩高清在线日韩大片观看网址| 性色小视频| sihu永久在线播放地址| 欧美性猛交xxxx| 色视网站| 偷操| jizz免费一区二区三区| 久久精品亚洲一级毛片 | 欧美精品区| 十三以下岁女子毛片免费播放| 爱爱小视频免费| 亚洲专区一路线二| 免费欧美黄色网址| 国产视频分类| 天天色综合久久| 亚洲色图激情| 精品国产免费久久久久久婷婷| 美女三级网站| 俺去鲁婷婷六月色综合| 日本女人啪啪| 欧美午夜视频在线| 美女鲜嫩bbbb| 午夜精品在线免费观看| 久久久鲁| 97人摸人人澡人人人超一碰| 日本午夜片| 精品国产第一国产综合精品gif| 无遮挡一级毛片视频| 新版天堂中文在线8官网| 国卡一卡二卡三免费网站|