91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

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

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

3天內不再提示

Arduino篇—點陣屏動態顯示

冬至子 ? 來源:X的創客課堂 ? 作者:MRXY ? 2023-11-01 15:25 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

學習目標

  • 字庫的創建與應用
  • 位移操作
  • 動態顯示的應用

電路搭建

所需材料

ArduinoUNO * 1
8 * 8點陣屏 * 1
杜邦線若干

電路連接

圖片

程序編寫:

練習:點陣屏動態顯示數字

通過編寫程序,實現點陣屏動態顯示數字0~9。本節課內容主要通過代碼的方式來進行講解,圖形化由于在后續使用點陣屏模塊的時候會非常容易,所以不在這里贅述。

代碼方式:

/* 項目名稱:動態顯示數字
 * 項目時間:2022.03.04
 * 項目作者:MRX
 */
int leds[8] = {9, 14, 8, 12, 1, 7, 2, 5}; //點陣屏正極引腳
int gnds[8] = {13, 3, 4, 10, 6, 11, 15, 16}; //點陣屏負極引腳
char nums[] = {
  0x00, 0x7C, 0x8A, 0x92, 0xA2, 0x7C, 0x00, 0x00, // -0-
  0x00, 0x00, 0x42, 0xFE, 0x02, 0x00, 0x00, 0x00, // -1-
  0x00, 0x46, 0x8A, 0x92, 0x92, 0x62, 0x00, 0x00, // -2-
  0x00, 0x84, 0x82, 0x92, 0xB2, 0xCC, 0x00, 0x00, // -3-
  0x00, 0x18, 0x28, 0x48, 0xFE, 0x08, 0x00, 0x00, // -4-
  0x00, 0xE4, 0xA2, 0xA2, 0xA2, 0x9C, 0x00, 0x00, // -5-
  0x00, 0x3C, 0x52, 0x92, 0x92, 0x8C, 0x00, 0x00, // -6-
  0x00, 0x80, 0x8E, 0x90, 0xA0, 0xC0, 0x00, 0x00, // -7-
  0x00, 0x6C, 0x92, 0x92, 0x92, 0x6C, 0x00, 0x00, // -8-
  0x00, 0x62, 0x92, 0x92, 0x94, 0x78, 0x00, 0x00, // -9-
  0x00, 0x3E, 0x48, 0x88, 0x48, 0x3E, 0x00, 0x00, // -A-
  0x00, 0xFE, 0x92, 0x92, 0x92, 0x6C, 0x00, 0x00, // -B-
  0x00, 0x7C, 0x82, 0x82, 0x82, 0x44, 0x00, 0x00, // -C-
  0x00, 0xFE, 0x82, 0x82, 0x82, 0x7C, 0x00, 0x00, // -D-
  0x00, 0xFE, 0x92, 0x92, 0x92, 0x82, 0x00, 0x00, // -E-
  0x00, 0xFE, 0x90, 0x90, 0x90, 0x80, 0x00, 0x00, // -F-
};
void ledclean()
{
  for (int i = 0; i < 8; i++)//將點陣屏正極拉低,負極拉高,關斷顯示
  {
    digitalWrite(leds[i], LOW); 
    digitalWrite(gnds[i], HIGH);
  }
}
//字符顯示
void ledShow(char num, char dat)
{
  digitalWrite(gnds[num], LOW);
  for (int i = 0; i < 8; i++)
  {
    digitalWrite(leds[i], dat & 0x80); // 1 0 0 0 0 0 0 0
    dat < <= 1;
  }
  delayMicroseconds(100);
  digitalWrite(gnds[num], HIGH);
  ledclean();
}
void setup() {
  for (int i = 0; i < 8; i++)
  {
    pinMode(leds[i], OUTPUT);
    pinMode(gnds[i], OUTPUT);
    digitalWrite(gnds[i], HIGH); //負極引腳拉高,熄滅所有LED
  }
}
void loop() {
  for (int a = 0; a < 10; a++) //控制流動顯示內容
  {
    for (int i = 0 ; i < 200 ; i++)//循環顯示達到延時效果
    {
      for (int c = 0; c < 8; c++) //8列循環掃描,達到點陣屏驅動效果
      {
        ledShow(c, nums[c + a*8]);
      }
    }
  }
  }

程序分析:

上面這段程序實現了在點陣屏上翻頁顯示數字09,雖然我們字庫按照十六進制進行了定義,但是這里根據要求,只需要09就可以了。

定義一個數組用于存儲需要顯示的字庫,每8個表示一個字符。

char nums[] = {
  0x00, 0x7C, 0x8A, 0x92, 0xA2, 0x7C, 0x00, 0x00, // -0-
  0x00, 0x00, 0x42, 0xFE, 0x02, 0x00, 0x00, 0x00, // -1-
  0x00, 0x46, 0x8A, 0x92, 0x92, 0x62, 0x00, 0x00, // -2-
  0x00, 0x84, 0x82, 0x92, 0xB2, 0xCC, 0x00, 0x00, // -3-
  0x00, 0x18, 0x28, 0x48, 0xFE, 0x08, 0x00, 0x00, // -4-
  0x00, 0xE4, 0xA2, 0xA2, 0xA2, 0x9C, 0x00, 0x00, // -5-
  0x00, 0x3C, 0x52, 0x92, 0x92, 0x8C, 0x00, 0x00, // -6-
  0x00, 0x80, 0x8E, 0x90, 0xA0, 0xC0, 0x00, 0x00, // -7-
  0x00, 0x6C, 0x92, 0x92, 0x92, 0x6C, 0x00, 0x00, // -8-
  0x00, 0x62, 0x92, 0x92, 0x94, 0x78, 0x00, 0x00, // -9-
  0x00, 0x3E, 0x48, 0x88, 0x48, 0x3E, 0x00, 0x00, // -A-
  0x00, 0xFE, 0x92, 0x92, 0x92, 0x6C, 0x00, 0x00, // -B-
  0x00, 0x7C, 0x82, 0x82, 0x82, 0x44, 0x00, 0x00, // -C-
  0x00, 0xFE, 0x82, 0x82, 0x82, 0x7C, 0x00, 0x00, // -D-
  0x00, 0xFE, 0x92, 0x92, 0x92, 0x82, 0x00, 0x00, // -E-
  0x00, 0xFE, 0x90, 0x90, 0x90, 0x80, 0x00, 0x00, // -F-
};

這個數組,表示的是數字的字模。以數字3對應的數據nums[0]{ 0x00, 0x7C, 0x8A, 0x92, 0xA2, 0x7C, 0x00, 0x00, },//0為例,包括有8個十六進制的數,每行一個十六進制數,并且換成二進制的表示,會是什么樣的呢?

00000000 //0x00
01111100 //0x7C
10001010 //0x8A
10010010 //0x92
10100010 //0xA2
01111100 //0x7C
00000000 //0x00
00000000 //0x00

請看1出現的地方,可以借著鼠標按1出現的軌跡跟著劃一劃,不就是一個橫著的數字0字型的輪廓么。

loop()中的三重for循環: 最里面控制8列掃描顯示,中間for循環用于控制顯示時間,最外層for循環用于控制流動位置。

流動效果: 依次移動需要顯示的字符數據,就達到了流動顯示效果。可以控制每次移動的間距,當每次移動8列就會實現整屏覆蓋的效果。

字符指針數據類型char: 指向了一個char類型的內存單元,指針是編程語言中的一個對象,利用地址,它的值直接指向存在電腦存儲器中另一個地方的值。

dat<<=1: 即dat=dat<<1;,將dat變量左移1位后的值賦給dat,結果會改變dat變量的值。

dat & 0x80: 就是dat和10000000位相與,即把dat最高位置1,其它位不變。(這里的“&”是位邏輯運算(一位一位的運算)。)

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

    關注

    22

    文章

    1596

    瀏覽量

    109726
  • 十六進制
    +關注

    關注

    2

    文章

    32

    瀏覽量

    38404
  • Arduino
    +關注

    關注

    190

    文章

    6498

    瀏覽量

    192100
  • 點陣屏
    +關注

    關注

    4

    文章

    71

    瀏覽量

    32246
  • for循環
    +關注

    關注

    0

    文章

    61

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    LED顯示屏動態顯示和遠程監控的實現

    由于普通LED點陣顯示屏動態顯示通常采用硬件掃描驅動,這在一些需要特殊顯示的場合顯得不夠靈活。文中提出了一種利用PC機和單片機的通訊來實現顯示屏
    發表于 03-07 14:35

    protues 仿真***點陣 動態顯示

    protues 仿真***點陣 動態顯示
    發表于 03-19 16:09

    關于單片機點陣動態顯示仿真

    我在proteus仿真,我把點陣的陰極全部接地,采用列選通的方式,也就是如果16列都同時給高電平時,整個都亮。現在想要用74hc154實現動態顯示,即每個時刻只有一列亮。我把延時調大,可以看到
    發表于 07-02 13:02

    如何去實現LED顯示屏動態顯示和控制?

    本文介紹一種實現LED點陣顯示屏動態顯示和控制的解決方案。
    發表于 05-31 06:58

    LED顯示屏動態顯示及程序

    實現動態顯示效果的方法和以上幾種基本類
    發表于 07-11 10:28 ?181次下載

    LED點陣顯示牌的設計與動態顯示控制

    LED點陣顯示牌的設計與動態顯示控制
    發表于 10-27 16:29 ?75次下載
    LED<b class='flag-5'>點陣</b><b class='flag-5'>顯示</b>牌的設計與<b class='flag-5'>動態顯示</b>控制

    MIN數碼管動態顯示

    數碼管動態顯示,MIN數碼管動態顯示,MIN。
    發表于 05-03 10:48 ?11次下載

    LED點陣電路及其動態顯示系統的設計

    LED 電子顯示屏具有投影儀器、液晶顯示屏無法比擬的優點:高亮度、功耗小、工作電壓低、壽命長、穩定和耐沖擊等優點。 本文所提出的即為一種基于 AT89C51 系列單片機的88 LED 點陣動態
    發表于 11-30 11:23 ?18次下載
    LED<b class='flag-5'>點陣</b>電路及其<b class='flag-5'>動態顯示</b>系統的設計

    如何實現LED點陣顯示屏動態顯示和控制

    LED 點陣電子顯示屏是集微電子技術、計算機技術、信息處理技術于一體的大型顯示屏系統。它以其色彩鮮艷,動態范圍廣,亮度高,壽命長,工作穩定可靠等優點而成為眾多
    的頭像 發表于 12-19 09:51 ?3w次閱讀
    如何實現LED<b class='flag-5'>點陣</b><b class='flag-5'>顯示屏</b>的<b class='flag-5'>動態顯示</b>和控制

    如何實現LED顯示屏動態顯示和遠程監控的詳細資料說明

    由于普通LED 點陣顯示屏動態顯示通常采用硬件掃描驅動,這在一些需要特殊顯示的場合顯得不夠靈活。文中提出了一種利用PC 機和單片機的通訊來實現顯示屏
    發表于 03-14 15:22 ?11次下載
    如何實現LED<b class='flag-5'>顯示屏</b><b class='flag-5'>動態顯示</b>和遠程監控的詳細資料說明

    數碼管的靜態與動態顯示和74HC138及點陣動態顯示詳細資料說明

    本文檔的主要內容詳細介紹的是數碼管的靜態與動態顯示和74HC138及點陣動態顯示詳細資料說明。
    發表于 04-12 18:27 ?5次下載
    數碼管的靜態與<b class='flag-5'>動態顯示</b>和74HC138及<b class='flag-5'>點陣</b>的<b class='flag-5'>動態顯示</b>詳細資料說明

    LED顯示屏動態顯示和遠程監控的實現資料

    由于普通LED點陣顯示屏動態顯示通常采用硬件掃描驅動,這在一些需要特殊顯示的場合顯得不夠靈活。文中提出了一種利用PC機和單片機的通訊來實現顯示屏
    發表于 08-30 08:00 ?6次下載
    LED<b class='flag-5'>顯示屏</b><b class='flag-5'>動態顯示</b>和遠程監控的實現資料

    如何使用單片機實現LED顯示屏動態顯示和遠程監控詳細方法說明

    由于普通LED點陣顯示屏動態顯示通常采用硬件掃描驅動,這在一些需要特殊顯示的場合顯得不夠靈活。文中提出了一種利用PC機和單片機的通訊來實現顯示屏
    發表于 11-20 16:56 ?13次下載
    如何使用單片機實現LED<b class='flag-5'>顯示屏</b><b class='flag-5'>動態顯示</b>和遠程監控詳細方法說明

    Micro LED AR顯示屏是全球最小最密集的動態顯示屏

    2019年6月,美國初創公司Mojo Vision推出具備14000 PPI的Micro LED顯示屏,并聲稱是全球最小最密集的動態顯示屏
    發表于 02-04 10:24 ?1893次閱讀

    基于Proteus與匯編語言的漢字點陣動態顯示

    電子發燒友網站提供《基于Proteus與匯編語言的漢字點陣動態顯示.pdf》資料免費下載
    發表于 10-30 11:31 ?2次下載
    基于Proteus與匯編語言的漢字<b class='flag-5'>點陣</b><b class='flag-5'>動態顯示</b>
    主站蜘蛛池模板: 亚久久 | 色播欧美 | 亚洲第八页 | 亚洲天堂电影在线观看 | 草草影院ccyy国产日本欧美 | 色综合激情网 | 精品新一区二区三区四区 | 成 人色 网 站 欧美大片在线观看 | 国产小视频在线免费观看 | 三级黄a| 字幕网中文aⅴ资源站 | 狠狠轮 | 爱啪网站| 五月天婷婷久久 | 国产美女主播在线 | 天天色成人网 | 日韩xx00| 久久精品综合网 | 午夜视频在线观看国产 | 美女又黄又免费 | 日韩色爱| 久青草久青草高清在线播放 | 黄色天天影视 | 欧美成人免费高清网站 | 日日爱夜夜爱 | 天天操天天干天天射 | 亚洲天堂成人在线 | 天天做天天爱天天干 | 日韩中文字幕电影 | 久久精品国产99精品国产2021 | aaa一级 | 天天射天天射天天干 | 亚洲欧美视频二区 | 天天草天天操 | 全部免费特黄特色大片农村 | 69国产成人精品午夜福中文 | 男人的天堂在线精品视频 | 久久精品99 | 黄色a毛片 | 亚洲 欧洲 另类 综合 自拍 | 1000部啪啪未满十八勿入 |