各位好:
我用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
我看了很久都发现不到什么问题
请教一下各位
|