找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 331|回复: 1
收起左侧

Arduino Uno 4位数码管显示不正常

[复制链接]
回帖奖励 10 黑币 回复本帖可获得 10 黑币奖励! 每人限 1 次
ID:860248 发表于 2025-3-1 22:59 | 显示全部楼层 |阅读模式
各位好:
我用EB0037多功能板附送的例程学习一下Arduino 的shiftOut()函数程序如下:


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};    // 共阳数码管0~9的显示数值 0x00表示全亮 0xFF表示全熄
unsigned char SMGWei[] = {
  0xF1,0xF2,0xF4,0xF8};                                       // 四个数码管的位数值, 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个循环是把 0~9数字显示出來
    for(unsigned char k=0; k<=100; k++) {                 // 第2个循环是把 显示的数字显示一段时間才转变
      for(unsigned char i=0; i<=3; i++) {                 // 第3个循环是 四个数码管的4个位动态显示出來
        digitalWrite(latchPin, LOW);                      // 将ST_CP口上面加低电平让芯片准备好接收数据
        shiftOut(dataPin,clockPin,MSBFIRST,Display[j]);   // 发送显示码 0-9
        shiftOut(dataPin,clockPin,MSBFIRST,SMGWei);    // 发送数码管位
        digitalWrite(latchPin,HIGH);                      // 将ST_CP这个针脚恢复到高电平
        delay(2); } }                                     // 动态数码管显示的延时2ms
} }



完成後, 显示的是 0000->1111->2222->3333->4444->9999->8888->7777->8888->9999
我看了很久都发现不到什么问题
请教一下各位

原理图.pdf

18.22 KB, 下载次数: 0

回复

使用道具 举报

ID:844772 发表于 2025-3-3 17:17 | 显示全部楼层
我要是你,就把 shiftOut(dataPin,clockPin,MSBFIRST,SMGWei);    // 发送数码管位
改成  shiftOut(dataPin,clockPin,MSBFIRST,SMGWei【i】);    // 发送数码管位
另外,【】是提示用的,要半角才能编译啊。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表