日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Ardino基础教程 16_一位数码管

發布時間:2025/4/5 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Ardino基础教程 16_一位数码管 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

實驗十六:一位數碼管

數碼管是一種常見的普遍的顯示數字的顯示器件,日常生活中例如:電磁爐,全自動洗衣機,太陽能水溫顯示,電子鐘……等等數不甚數。說以掌握數碼管的顯示原理,是很有必要的。

數碼管是一種半導體發光器件,其基本單元是發光二極管。數
碼管按段數分為七段數碼管和八段數碼管,八段數碼管比七段數碼管多一個發光二極管單元(多一個小數點顯示),本實驗所使用的是八段數碼管。按發光二極管單元連接方式分為共陽極數碼管和共陰極數碼管。共陽數碼管是指將所有發光二極管的陽極接到一起形成公共陽極(COM)的數碼管。共陽數碼管在應用時應將公共極COM 接到+5V,當某一字段發光二極管的陰極為低電平時,相應字段就點亮。當某一字段的陰極為高電平時,相應字段就不亮。共陰數碼管是指將所有發光二極管的陰極接到一起形成公共陰極(COM)的數碼管。共陰數碼管在應用時應將公共極COM 接到地線GND 上,當某一字段發光二極管的陽極為高電平時,相應字段就點亮。當某一字段的陽極為低電平時,相應字段就不亮。

數碼管的每一段是由發光二極管組成,所以在使用時跟發光二極管一樣,也要連接限流電阻,否則電流過大會燒毀發光二極管的。本實驗用的是共陰極的數碼管,共陰數碼管在應用時應將公共極接到GND,當某一字段發光二極管的陽極為低電平時,相應字段就點熄滅。當某一字段的陽極為高電平時,相應字段就點亮。

實驗器材清單

介紹完原理,我們開始準備實驗用元器件。

  • 一位八段數碼管 1個
  • 220歐姆直插電阻 8個
  • 面包板 1個
  • 面包板跳線 1扎
  • 實驗原理圖



    數碼管共有七段顯示數字的段,還有一個顯示小數點的段。當讓數碼管顯示數字時,只要將相應的段點亮即可。例如:讓數碼管顯示數字1,則將b、c 段點亮即可。將每個數字寫成一個子程序。在主程中每隔2s 顯示一個數字,讓數碼管循環顯示1~8 數字。每一個數字顯示的時間由延時時間來決定,時間設置的大些,顯示的時間就長些,時間設置的小些,顯示的時間就短。


    參考程序源代碼:
    //設置控制各段的數字IO 腳
    int a=7;//定義數字接口7 連接a 段數碼管
    int b=6;// 定義數字接口6 連接b 段數碼管
    int c=5;// 定義數字接口5 連接c 段數碼管
    int d=10;// 定義數字接口10 連接d 段數碼管
    int e=11;// 定義數字接口11 連接e 段數碼管
    int f=8;// 定義數字接口8 連接f 段數碼管
    int g=9;// 定義數字接口9 連接g 段數碼管
    int dp=4;// 定義數字接口4 連接dp 段數碼管
    void digital_0(void) //顯示數字5
    {
    unsigned char j;
    digitalWrite(a,HIGH);
    digitalWrite(b,HIGH);
    digitalWrite(c,HIGH);
    digitalWrite(d,HIGH);
    digitalWrite(e,HIGH);
    digitalWrite(f,HIGH);
    digitalWrite(g,LOW);
    digitalWrite(dp,LOW);
    }
    void digital_1(void) //顯示數字1
    {
    unsigned char j;
    digitalWrite(c,HIGH);//給數字接口5 引腳高電平,點亮c 段
    digitalWrite(b,HIGH);//點亮b 段
    for(j=7;j<=11;j++)//熄滅其余段
    digitalWrite(j,LOW);
    digitalWrite(dp,LOW);//熄滅小數點DP 段
    }
    void digital_2(void) //顯示數字2
    {
    unsigned char j;
    digitalWrite(b,HIGH);
    digitalWrite(a,HIGH);
    for(j=9;j<=11;j++)
    digitalWrite(j,HIGH);
    digitalWrite(dp,LOW);
    digitalWrite(c,LOW);
    digitalWrite(f,LOW);
    }
    void digital_3(void) //顯示數字3
    {
    digitalWrite(g,HIGH);
    digitalWrite(a,HIGH);
    digitalWrite(b,HIGH);
    digitalWrite(c,HIGH);
    digitalWrite(d,HIGH);
    digitalWrite(dp,LOW);
    digitalWrite(f,LOW);
    digitalWrite(e,LOW);
    }
    void digital_4(void) //顯示數字4
    {
    digitalWrite(c,HIGH);
    digitalWrite(b,HIGH);
    digitalWrite(f,HIGH);
    digitalWrite(g,HIGH);
    digitalWrite(dp,LOW);
    digitalWrite(a,LOW);
    digitalWrite(e,LOW);
    digitalWrite(d,LOW);
    }
    void digital_5(void) //顯示數字5
    {
    unsigned char j;
    digitalWrite(a,HIGH);
    digitalWrite(b, LOW);
    digitalWrite(c,HIGH);
    digitalWrite(d,HIGH);
    digitalWrite(e, LOW);
    digitalWrite(f,HIGH);
    digitalWrite(g,HIGH);
    digitalWrite(dp,LOW);
    }
    void digital_6(void) //顯示數字6
    {
    unsigned char j;
    for(j=7;j<=11;j++)
    digitalWrite(j,HIGH);
    digitalWrite(c,HIGH);
    digitalWrite(dp,LOW);
    digitalWrite(b,LOW);
    }
    void digital_7(void) //顯示數字7
    {
    unsigned char j;
    for(j=5;j<=7;j++)
    digitalWrite(j,HIGH);
    digitalWrite(dp,LOW);
    for(j=8;j<=11;j++)
    digitalWrite(j,LOW);
    }
    void digital_8(void) //顯示數字8
    {
    unsigned char j;
    for(j=5;j<=11;j++)
    digitalWrite(j,HIGH);
    digitalWrite(dp,LOW);
    }
    void digital_9(void) //顯示數字5
    {
    unsigned char j;
    digitalWrite(a,HIGH);
    digitalWrite(b,HIGH);
    digitalWrite(c,HIGH);
    digitalWrite(d,HIGH);
    digitalWrite(e, LOW);
    digitalWrite(f,HIGH);
    digitalWrite(g,HIGH);
    digitalWrite(dp,LOW);
    }
    void setup()
    {
    int i;//定義變量
    for(i=4;i<=11;i++)
    pinMode(i,OUTPUT);//設置4~11 引腳為輸出模式
    }
    void loop()
    {
    while(1)
    {
    digital_0();//顯示數字1
    delay(1000);//延時1s
    digital_1();//顯示數字1
    delay(1000);//延時1s
    digital_2();//顯示數字2
    delay(1000); //延時1s
    digital_3();//顯示數字3
    delay(1000); //延時1s
    digital_4();//顯示數字4
    delay(1000); //延時1s
    digital_5();//顯示數字5
    delay(1000); //延時1s
    digital_6();//顯示數字6
    delay(1000); //延時1s
    digital_7();//顯示數字7
    delay(1000); //延時1s
    digital_8();//顯示數字8
    delay(1000); //延時1s
    digital_9();//顯示數字8
    delay(1000); //延時1s
    }
    }


    實驗現象

    數碼管顯示0-9 循環顯示。

    程序代碼

    int a=7;//定義數字接口7 連接a 段數碼管 int b=6;// 定義數字接口6 連接b 段數碼管 int c=5;// 定義數字接口5 連接c 段數碼管 int d=10;// 定義數字接口10 連接d 段數碼管 int e=11;// 定義數字接口11 連接e 段數碼管 int f=8;// 定義數字接口8 連接f 段數碼管 int g=9;// 定義數字接口9 連接g 段數碼管 int dp=4;// 定義數字接口4 連接dp 段數碼管 void digital_0(void) //顯示數字5 { unsigned char j; digitalWrite(a,HIGH); digitalWrite(b,HIGH); digitalWrite(c,HIGH); digitalWrite(d,HIGH); digitalWrite(e,HIGH); digitalWrite(f,HIGH); digitalWrite(g,LOW); digitalWrite(dp,LOW); } void digital_1(void) //顯示數字1 { unsigned char j; digitalWrite(c,HIGH);//給數字接口5 引腳高電平,點亮c 段 digitalWrite(b,HIGH);//點亮b 段 for(j=7;j<=11;j++)//熄滅其余段 digitalWrite(j,LOW); digitalWrite(dp,LOW);//熄滅小數點DP 段 } void digital_2(void) //顯示數字2 { unsigned char j; digitalWrite(b,HIGH); digitalWrite(a,HIGH); for(j=9;j<=11;j++) digitalWrite(j,HIGH); digitalWrite(dp,LOW); digitalWrite(c,LOW); digitalWrite(f,LOW); } void digital_3(void) //顯示數字3 { digitalWrite(g,HIGH); digitalWrite(a,HIGH); digitalWrite(b,HIGH); digitalWrite(c,HIGH); digitalWrite(d,HIGH); digitalWrite(dp,LOW); digitalWrite(f,LOW); digitalWrite(e,LOW); } void digital_4(void) //顯示數字4 { digitalWrite(c,HIGH); digitalWrite(b,HIGH); digitalWrite(f,HIGH); digitalWrite(g,HIGH); digitalWrite(dp,LOW); digitalWrite(a,LOW); digitalWrite(e,LOW); digitalWrite(d,LOW); } void digital_5(void) //顯示數字5 { unsigned char j; digitalWrite(a,HIGH); digitalWrite(b, LOW); digitalWrite(c,HIGH); digitalWrite(d,HIGH); digitalWrite(e, LOW); digitalWrite(f,HIGH); digitalWrite(g,HIGH); digitalWrite(dp,LOW); } void digital_6(void) //顯示數字6 { unsigned char j; for(j=7;j<=11;j++) digitalWrite(j,HIGH); digitalWrite(c,HIGH); digitalWrite(dp,LOW); digitalWrite(b,LOW); } void digital_7(void) //顯示數字7 { unsigned char j; for(j=5;j<=7;j++) digitalWrite(j,HIGH); digitalWrite(dp,LOW); for(j=8;j<=11;j++) digitalWrite(j,LOW); } void digital_8(void) //顯示數字8 { unsigned char j; for(j=5;j<=11;j++) digitalWrite(j,HIGH); digitalWrite(dp,LOW); } void digital_9(void) //顯示數字5 { unsigned char j; digitalWrite(a,HIGH); digitalWrite(b,HIGH); digitalWrite(c,HIGH); digitalWrite(d,HIGH); digitalWrite(e, LOW); digitalWrite(f,HIGH); digitalWrite(g,HIGH); digitalWrite(dp,LOW); } void setup() { int i;//定義變量 for(i=4;i<=11;i++) pinMode(i,OUTPUT);//設置4~11 引腳為輸出模式 } void loop() { while(1) { digital_0();//顯示數字1 delay(1000);//延時1s digital_1();//顯示數字1 delay(1000);//延時1s digital_2();//顯示數字2 delay(1000); //延時1s digital_3();//顯示數字3 delay(1000); //延時1s digital_4();//顯示數字4 delay(1000); //延時1s digital_5();//顯示數字5 delay(1000); //延時1s digital_6();//顯示數字6 delay(1000); //延時1s digital_7();//顯示數字7 delay(1000); //延時1s digital_8();//顯示數字8 delay(1000); //延時1s digital_9();//顯示數字8 delay(1000); //延時1s } }

    總結

    以上是生活随笔為你收集整理的Ardino基础教程 16_一位数码管的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。