好东东啊,楼主的主程序如下:
- //******************************************************//
- //****************若使用该代码请注明出处****************//
- //*******************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;
- }
-
-
- }
复制代码 |