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

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

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

3天內不再提示

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

CW32生態社區 ? 來源:CW32生態社區 ? 作者:CW32生態社區 ? 2024-05-31 15:21 ? 次閱讀

4.1.數碼管顯示原理

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

數碼管的顯示原理是由多個發光的二極管共陰極或者共陽極組成的成“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。

圖4-1 數碼管模型圖

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

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

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

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

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

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

圖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所示:

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

4.4.實驗效果

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

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

審核編輯 黃宇

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

    關注

    32

    文章

    1882

    瀏覽量

    91122
  • 電壓電流表
    +關注

    關注

    0

    文章

    25

    瀏覽量

    2078
  • 驅動顯示
    +關注

    關注

    1

    文章

    4

    瀏覽量

    3525
  • CW32
    +關注

    關注

    1

    文章

    203

    瀏覽量

    641
收藏 人收藏

    評論

    相關推薦

    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數字電壓電流表軟件教程):數碼管顯示數字

    數碼管顯示原理是由多個發光的二極共陰極或者共陽極組成的成“8”字形的顯示器件。數碼管通過不同的組合可用來
    的頭像 發表于 05-14 14:20 ?2.6w次閱讀
    <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>

    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>

    數字電壓表設計實驗(并行AD 數據采集與顯示

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

    LED數碼管顯示實驗

    LED數碼管顯示實驗 一.實驗目的1.掌握數字、字符轉換成顯示段碼的
    發表于 05-16 02:07 ?6517次閱讀
    LED<b class='flag-5'>數碼管</b><b class='flag-5'>顯示</b><b class='flag-5'>實驗</b>

    數碼管流動顯示數字3

    慧凈HL-1 配套C實驗例程100例【實驗18】數碼管流動顯示數字3),很好的C51學習資料程序。
    發表于 03-21 16:47 ?8次下載

    數碼管閃爍顯示數字

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

    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>動態<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>-<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 ?515次閱讀

    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>產品方案
    主站蜘蛛池模板: 欧美日韩一区二区不卡| 国产欧美日韩综合精品一区二区| 国产床戏无遮掩视频播放| 欧美午夜视频一区二区| 亚洲一区毛片| 国产亚洲精品久久久久久久软件| 日本视频一区在线观看免费| 欧美一级视频免费观看| 天天综合色天天综合色sb| 亚洲国产一区二区三区在线观看| 岛国毛片在线观看| 欧美zooz人禽交免费| 日日摸夜夜添免费毛片小说| 美女视频一区二区| 手机在线小视频| 97在线精品| 国产大片91精品免费观看不卡| 亚洲综合色一区| 国产玖玖| 国产男人搡女人免费视频| 三级黄色短视频| 午夜国产福利| 免费黄色大片视频| 日韩欧美高清一区| 丁香六月 久久久| 狼色网| 欧美综合成人网| 欧美黄色影院| 亚洲欧美婷婷| 最近观看免费高清视频| 午夜视频在线观看免费观看在线观看| 女人张开腿让男人桶视频免费大全| 男女午夜免费视频| 亚洲成人网在线| 亚洲第一免费网站| 99久久精品费精品国产一区二| 国产精品美女在线| 69xxxx女人| 手机看片a永久免费看大片| 天天干天天爽| 日本a级特黄三级三级三级|