区别与上两个驱动的方法,用bitRead()读取位数,代码简介一点。
//设置阴极接口 int d1 = 1; int d2 = 2; int d3 = 3; int d4 = 4; int d5 = 5; int d6 = 6; int d7 = 7; //设置阳极接口 int a = 8; int b = 9; int c = 10; int d = 11; int e = 12; int f = 13; int g = A0; int h = A1; const unsigned char Yang[] = { a, b, c, d, e, f, g, h }; const unsigned char YangCode[]={ 0x03, // 0 = 缺水 0x0C, // 1 = 低水位 0x70, // 2 = 定时关机 0x3F, // 3 = 0 0x06, // 4 = 1 0x5B, // 5 = 2 0x4F, // 6 = 3 0x66, // 7 = 4 0x6D, // 8 = 5 0x7D, // 9 = 6 0x07, // 10 = 7 0x7F, // 11 = 8 0x6F, // 12 = 9 0x80, // 13 = 摄氏度符号、睡眠符号 }; byte gyin[7] = { d1, d2, d3, d4, d5, d6, d7 }; byte gong_yin[5][7] = { { 1,1,1,1,1,1,0 }, // 0 = 缺水、低水位、定时关机 { 0,1,1,1,1,1,1 }, // 1 = 温度十位、摄氏度符号 { 1,0,1,1,1,1,1 }, // 2 = 温度个位、睡眠符号 { 0,0,1,1,1,1,1 }, // 3 = 温度个和十位 { 1,1,0,0,0,0,1 }, // 4 = 时钟个、十位和两点 }; void setup() { pinMode(A0, OUTPUT); pinMode(A1, OUTPUT); for(int i=1; i<14;i++) { pinMode(i,OUTPUT); } } void loop() { GongYin(3); GongYin(4); for (int a=3;a<13;a++) { digitalWrite(h, HIGH);//显示时钟的冒号 delay(300); YangShow(a); delay(300); } } void GongYin(int y) { for (int i = 0; i < 7; i++) { digitalWrite(gyin[i], gong_yin[y][i]); } } void YangShow(char data) { char i; char j; char hc; if(0<=data<14) { hc = YangCode[data]; for(i=0;i<8;i++) { j = bitRead(hc,i); digitalWrite(Yang[i], j); } } }
Arduino 数码管LED驱动 读位法 16进制
时间: 2024-10-10 05:24:51