|
|
本帖最后由 tompush 于 2013-4-4 11:39 编辑
第一次接触 单片机和电子电路,第一个小作品,求改进建议....... 正在研究怎么设置时间.....
如果电路或者程序有什么不足之处,希望指出 ,谢谢
程序如下:- #include <stdio.h>
- #include <string.h>
- #include <DS1302.h>
- //74HC595 数码管的A-G
- int latchPin = 2;
- int clockPin = 3;
- int dataPin = 1;
- //数字,d1,d2,d3,d4
- int d1 = 13;
- int d2 = 12;
- int d3 = 11;
- int d4 = 10;
- //DS1302
- uint8_t CE_PIN = 5;
- uint8_t IO_PIN = 6;
- uint8_t SCLK_PIN = 7;
- DS1302 rtc(CE_PIN, IO_PIN, SCLK_PIN);
- void setup()
- {
- pinMode(d1, OUTPUT);
- pinMode(d2, OUTPUT);
- pinMode(d3, OUTPUT);
- pinMode(d4, OUTPUT);
- pinMode(latchPin, OUTPUT);
- pinMode(clockPin, OUTPUT);
- pinMode(dataPin, OUTPUT);
- rtc.write_protect(false);
- rtc.halt(false);
- }
- void loop()
- {
- Time t = rtc.time();
- //显示第一位数字
- cls();
- dig(1);
- num(t.hr/10);
- //显示第二位数字
- cls();
- dig(2);
- num(t.hr%10);
-
- //显示第三位数字
- cls();
- dig(3);
- num(t.min/10);
-
- //显示第四位数字
- cls();
- dig(4);
- num(t.min%10);
- }
- void dig(int x) //dig(x),开启d(x)端口
- {
- digitalWrite(d1, 0);
- digitalWrite(d2, 0);
- digitalWrite(d3, 0);
- digitalWrite(d4, 0);
-
- switch(x)
- {
- case 1:
- digitalWrite(d1, 1);
- break;
- case 2:
- digitalWrite(d2, 1);
- break;
- case 3:
- digitalWrite(d3, 1);
- break;
- default:
- digitalWrite(d4, 1);
- break;
- }
- }
-
- void num(int x) //num(x),显示数字x
- {
- switch(x)
- {
- default: //0
- digitalWrite(latchPin,0);
- shiftOut(dataPin,clockPin,MSBFIRST,3);
- digitalWrite(latchPin,1);
- break;
- case 1: //1
- digitalWrite(latchPin,0);
- shiftOut(dataPin,clockPin,MSBFIRST,159);
- digitalWrite(latchPin,1);
- break;
- case 2: //2
- digitalWrite(latchPin,0);
- shiftOut(dataPin,clockPin,MSBFIRST,37);
- digitalWrite(latchPin,1);
- break;
- case 3: //3
- digitalWrite(latchPin,0);
- shiftOut(dataPin,clockPin,MSBFIRST,13);
- digitalWrite(latchPin,1);
- break;
- case 4: //4
- digitalWrite(latchPin,0);
- shiftOut(dataPin,clockPin,MSBFIRST,153);
- digitalWrite(latchPin,1);
- break;
- case 5: //5
- digitalWrite(latchPin,0);
- shiftOut(dataPin,clockPin,MSBFIRST,73);
- digitalWrite(latchPin,1);
- break;
- case 6: //6
- digitalWrite(latchPin,0);
- shiftOut(dataPin,clockPin,MSBFIRST,65);
- digitalWrite(latchPin,1);
- break;
- case 7: //7
- digitalWrite(latchPin,0);
- shiftOut(dataPin,clockPin,MSBFIRST,27);
- digitalWrite(latchPin,1);
- break;
- case 8: //8
- digitalWrite(latchPin,0);
- shiftOut(dataPin,clockPin,MSBFIRST,1);
- digitalWrite(latchPin,1);
- break;
- case 9: //9
- digitalWrite(latchPin,0);
- shiftOut(dataPin,clockPin,MSBFIRST,9);
- digitalWrite(latchPin,1);
- break;
- }
- }
-
- void cls() //清屏
- {
- digitalWrite(latchPin,LOW);
- shiftOut(dataPin,clockPin,MSBFIRST,255);
- digitalWrite(latchPin,HIGH);
- }
复制代码
有不足之处希望大家指正,谢谢! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|