好東東啊,樓主的主程序如下:
- //******************************************************//
- //****************若使用該代碼請注明出處****************//
- //*******************Designed by HHL ******************//
- //*****************************************************//
- #include <stc15.h>
- #include "ds3231.h"
- #include "myiic.h"
- #include "delay.h"
- //*************************************//
- #define FOSC 12000000L
- #define T1MS (65536-FOSC/1000)
- #define uchar unsigned char
- #define uint unsigned int
- //************************************//iv-11顯示595
- sbit STCP=P1^4;
- sbit SHCP=P1^5; //時鐘線
- sbit OE =P1^3; //鎖存線
- sbit DS =P1^2; //數據線
- //***********************************//RGB燈顯示595
- sbit STCPl=P1^0;
- sbit SHCPl=P1^1;
- sbit OE1=P3^7;
- sbit DSl=P3^6;
- //************************************//
- uchar code SMG[]={0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92,0x82, 0xf8, 0x80, 0x90};
- uchar code RGB[]={0x88,0xcc,0x99,0xaa,0xee,0xdd,0xbb}; //RGB,RG,GB,RG,R,G,B
- uint aaa,bbb,kaiqi;
- //***********************************//
- void HC595(unsigned char DA)//熒光管 595驅動程序
- {unsigned char i;
- STCP=0;
- for(i=0;i<8;i++)
- {
- SHCP=0;
- DS=DA&0x01;
- DA>>=1;
- SHCP=1;
- }
- STCP=1;
- delayus(20);
- STCP=0;
- }
- //************************************************//
- void HC595RGB(unsigned char DA1)//led 595驅動程序
- {unsigned char i;
- STCPl=0;
- for(i=0;i<8;i++)
- {
- SHCPl=0;
- DSl=DA1&0x01;
- DA1>>=1;
- SHCPl=1;
- }
- STCPl=1;
- delayus(20);
- STCPl=0;
- }
- //***********************************************//
- void display(unsigned char a,unsigned char b,unsigned char c,unsigned char d,unsigned char e,unsigned char f)//顯示熒光管
- {
- HC595(SMG[a]);//顯示第1個74HC595
- HC595(SMG[b]);//顯示第2個74HC595
- HC595(SMG[c]);//顯示第3個74HC595
- HC595(SMG[d]);//顯示第4個74HC595
- HC595(SMG[e]);//顯示第5個74HC595
- HC595(SMG[f]);//顯示第6個74HC595
- }
- //************************************************//
- void displayRGB(unsigned char a1,unsigned char b1,unsigned char c1)//led彩燈
- {
- HC595RGB(RGB[a1]);//顯示第1個74HC595
- HC595RGB(RGB[b1]);//顯示第2個74HC595
- HC595RGB(RGB[c1]);//顯示第3個74HC595
- }
- //*********************************************************//
- void show () //讀取時間,并顯示
- {
- unsigned char Htemp1,Htemp2,Mtemp1,Mtemp2,Stemp1,Stemp2;
- unsigned char shi1,shi2,fen1,fen2,miao1,miao2;
- //*********************************//
- Htemp1=read_random(DS3231_HOUR); //時 24小時制
- Htemp1&=0x3f;
- Htemp2=BCD2HEX(Htemp1);
- Mtemp1=read_random(DS3231_MINUTE); //分
- Mtemp2=BCD2HEX(Mtemp1);
- Stemp1=read_random(DS3231_SECOND); //秒
- Stemp2=BCD2HEX(Stemp1);
- //********************************//
- shi1=Htemp2/10;
- shi2=Htemp2%10;
- fen1=Mtemp2/10;
- fen2=Mtemp2%10;
- miao1=Stemp2/10;
- miao2=Stemp2%10;
- //********************************//
-
- display(shi1,shi2,fen1,fen2,miao1,miao2);//顯示時間
- }
- //***************************************************//
- //void showRGB()
- //{
- //
- //
- // displayRGB(3,3,3);
- // displayRGB(4,4,4);
- // displayRGB(5,5,5);
- // displayRGB(6,6,6);
- // displayRGB(7,7,7);
- //}
- //**********************************************//
- void Timer0Init(void) //定時器初始化函數
- {
- AUXR = 0x80;
- TMOD &= 0xFc;
- TL0 = (65536-T1MS);
- TH0 = (65536-T1MS) >> 8;
- TR0 = 1;
- ET0=1;
- EA=1;
- }
- //*********************************************//
- void main(void)
- {
- OE=1; //時鐘開啟開關 1為關閉,0為打開
- OE1=1; //led開啟開關 1為關閉,0為打開
- // ModifyTime(19,5,6,21,49,30); //初始化時鐘,設定時間
- // 修改時間 19年6月21日21時49分30秒
- // 接除屏蔽代碼下載至單片機后,斷電屏蔽該行代碼再重新下載至單片機再上電即可
- Timer0Init();
- while(1);
- }
- //********************************************//
- void shuaxin () interrupt 1 //定時器中斷函數
- {
- aaa++;
- bbb++;
- kaiqi++;
- if(kaiqi==300)
- {
- OE=0;
- OE1=0;
- }
- if(aaa==10)
- {
- show(); //定時器中斷刷新顯示時間
- aaa=0;
- }
- if(bbb==200)
- {displayRGB(0,0,0); //顯示led顏色
- }
- if(bbb==400)
- { displayRGB(1,1,1);
- }
- if(bbb==600)
- {displayRGB(2,2,2);
- }
- if(bbb==800)
- { displayRGB(3,3,3);
- }
- if(bbb==1000)
- { displayRGB(4,4,4);
- }
- if(bbb==1200)
- {displayRGB(5,5,5);
- }
- if(bbb==1400)
- {displayRGB(6,6,6);
- bbb=0;
- }
-
-
- }
復制代碼 |