找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 360|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

Arduino Uno 4位數(shù)碼管顯示不正常

[復(fù)制鏈接]
回帖獎(jiǎng)勵(lì) 10 黑幣 回復(fù)本帖可獲得 10 黑幣獎(jiǎng)勵(lì)! 每人限 1 次
跳轉(zhuǎn)到指定樓層
樓主
ID:860248 發(fā)表于 2025-3-1 22:59 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
各位好:
我用EB0037多功能板附送的例程學(xué)習(xí)一下Arduino 的shiftOut()函數(shù)程序如下:


int latchPin = 4;         // 定義74HC595的 LCHCLK接 4端口
int clockPin = 7;         // 定義74HC595的 SFICLK接 7端口
int dataPin = 8;          // 定義74HC595的 SDI接 8端口

unsigned char Display[] = {
  0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0X80,0X90,0x00};    // 共陽(yáng)數(shù)碼管0~9的顯示數(shù)值 0x00表示全亮 0xFF表示全熄
unsigned char SMGWei[] = {
  0xF1,0xF2,0xF4,0xF8};                                       // 四個(gè)數(shù)碼管的位數(shù)值, 1為顯示, 0為熄滅

void setup () {
  pinMode(latchPin,OUTPUT);       // 定義 4端口為輸出模式
  pinMode(clockPin,OUTPUT);       // 定義 7端口為輸出模式
  pinMode(dataPin,OUTPUT); }      // 定義 8端口為輸出模式

void loop() {
  for(unsigned char j=0; j<=9; j++){                     // 第1個(gè)循環(huán)是把 0~9數(shù)字顯示出來(lái)
    for(unsigned char k=0; k<=100; k++) {                 // 第2個(gè)循環(huán)是把 顯示的數(shù)字顯示一段時(shí)間才轉(zhuǎn)變
      for(unsigned char i=0; i<=3; i++) {                 // 第3個(gè)循環(huán)是 四個(gè)數(shù)碼管的4個(gè)位動(dòng)態(tài)顯示出來(lái)
        digitalWrite(latchPin, LOW);                      // 將ST_CP口上面加低電平讓芯片準(zhǔn)備好接收數(shù)據(jù)
        shiftOut(dataPin,clockPin,MSBFIRST,Display[j]);   // 發(fā)送顯示碼 0-9
        shiftOut(dataPin,clockPin,MSBFIRST,SMGWei);    // 發(fā)送數(shù)碼管位
        digitalWrite(latchPin,HIGH);                      // 將ST_CP這個(gè)針腳恢復(fù)到高電平
        delay(2); } }                                     // 動(dòng)態(tài)數(shù)碼管顯示的延時(shí)2ms
} }



完成後, 顯示的是 0000->1111->2222->3333->4444->9999->8888->7777->8888->9999
我看了很久都發(fā)現(xiàn)不到什么問(wèn)題
請(qǐng)教一下各位

原理圖.pdf

18.22 KB, 下載次數(shù): 0

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:844772 發(fā)表于 2025-3-3 17:17 | 只看該作者
我要是你,就把 shiftOut(dataPin,clockPin,MSBFIRST,SMGWei);    // 發(fā)送數(shù)碼管位
改成  shiftOut(dataPin,clockPin,MSBFIRST,SMGWei【i】);    // 發(fā)送數(shù)碼管位
另外,【】是提示用的,要半角才能編譯啊。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表