欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
使用STC15單片機驅動的OLED DS1302時鐘
[打印本頁]
作者:
天藍色的Toto
時間:
2021-2-13 02:14
標題:
使用STC15單片機驅動的OLED DS1302時鐘
以前搞的一個項目,現在拿出來分享一下代碼(實物很久以前就損壞了)
單片機源程序如下:
#include<stc15f2k60s2.h>
#include<LQ12864.h>
#include<ds1302.h>
#include<ds18b20.h>
sbit SetMode=P5^4;
sbit SetTimes=P5^5;
void delayk(unsigned int MS) //誤差 0us
{
while(MS--)
{
unsigned char a,b;
for(b=129;b>0;b--)
for(a=45;a>0;a--);
}
}
unsigned int tem;
unsigned char GK;//水平測
unsigned char model=0;
unsigned char code Shuzi[]="0123456789:-";
unsigned char TimeMode[9];
unsigned char DateMode[11];
unsigned char TempMode[6];
unsigned char GKMode[3];
unsigned char InitTime[7]={0,0,14,4,4,4,19};//秒分時日月周年
unsigned int Celsius;
void KeysCan()
{
if(!SetMode)
{
delayk(50);
model++;
if(model==7){model=0;}
while(!SetMode);
}
}
unsigned char Gaokao()
{
unsigned char temp;
switch(InitTime[4])
{
case 4:temp=70-InitTime[3];break;
case 5:temp=40-InitTime[3];break;
case 6:temp=9-InitTime[3];break;
}
return(temp);
}
void TMPdisplay()
{
TempMode[0]=Shuzi[tem%1000/100];
TempMode[1]=Shuzi[tem%100/10];
TempMode[2]='.';
TempMode[3]=Shuzi[tem%10];
TempMode[4]='^';
TempMode[5]='C';
TempMode[6]='\0';
OLED_P8x16Str(64,0,TempMode);
}
void SMG()
{
unsigned char a;
a=read1302(Read_hour);
InitTime[2]=((a>>4)*10+(a&0x0f));
TimeMode[0]=Shuzi[a>>4];
TimeMode[1]=Shuzi[a&0x0f];
TimeMode[2]=Shuzi[10];
a=read1302(Read_minute);
InitTime[1]=((a>>4)*10+(a&0x0f));
TimeMode[3]=Shuzi[a>>4];
TimeMode[4]=Shuzi[a&0x0f];
TimeMode[5]=Shuzi[10];
a=read1302(Read_second);
InitTime[0]=((a>>4)*10+(a&0x0f));
TimeMode[6]=Shuzi[a>>4];
TimeMode[7]=Shuzi[a&0x0f];
TimeMode[8]='\0';
a=read1302(Read_year);
InitTime[6]=((a>>4)*10+(a&0x0f));
DateMode[0]=Shuzi[2];
DateMode[1]=Shuzi[0];
DateMode[2]=Shuzi[a>>4];
DateMode[3]=Shuzi[a&0x0f];
DateMode[4]=Shuzi[11];
a=read1302(Read_month);
InitTime[4]=((a>>4)*10+(a&0x0f));
DateMode[5]=Shuzi[a>>4];
DateMode[6]=Shuzi[a&0x0f];
DateMode[7]=Shuzi[11];
a=read1302(Read_day);
InitTime[3]=((a>>4)*10+(a&0x0f));
DateMode[8]=Shuzi[a>>4];
DateMode[9]=Shuzi[a&0x0f];
DateMode[10]='\0';
GK=Gaokao();
GKMode[0]=Shuzi[GK/10];
GKMode[1]=Shuzi[GK%10];
GKMode[2]='\0';
}
void main()
{
OLED_Init();
Draw_BMP(0,0,128,8,Zhangtianlan);
delayk(300);
OLED_CLS();
OLED_P8x16Str(4,4,"Time:");
for(model=0;model<8;model++)
{
OLED_P16x16Ch(16*model,6,model,CNY);
}
model=0;
init_ds1302_io();
while(1)
{
unsigned char b,c;
TMPchange();
for(c=0;c<15;c++)
{
KeysCan();
if(!SetTimes)
{
delayk(20);
switch(model)
{
case 0:InitTime[model]=0;SetTime(InitTime);break;
case 1:InitTime[model]++; if(InitTime[model]==60){InitTime[model]=0;} SetTime(InitTime);break;
case 2:InitTime[model]++; if(InitTime[model]==24){InitTime[model]=0;} SetTime(InitTime);break;
case 3:InitTime[model]++;
switch(InitTime[model+1])
{
case 2:if(InitTime[model]==29){InitTime[model]=1;}break;
case 4:if(InitTime[model]==31){InitTime[model]=1;}break;
case 6:if(InitTime[model]==31){InitTime[model]=1;}break;
case 9:if(InitTime[model]==31){InitTime[model]=1;}break;
case 11:if(InitTime[model]==31){InitTime[model]=1;}break;
default:if(InitTime[model]==32){InitTime[model]=1;}break;
}
SetTime(InitTime);
break;
case 4:InitTime[model]++; if(InitTime[model]==13){InitTime[model]=1;} SetTime(InitTime);break;
case 5:InitTime[model]++; if(InitTime[model]==8){InitTime[model]=1;} SetTime(InitTime);break;
case 6:InitTime[model]++; if(InitTime[model]==100){InitTime[model]=0;} SetTime(InitTime);break;
}
while(!SetTimes);
}
SMG();
b=read1302(Read_week);
InitTime[5]=((b>>4)*10+(b&0x0f));
switch(b)
{
case 1:OLED_P8x16Str(96,2,"Mon");break;
case 2:OLED_P8x16Str(96,2,"Tue");break;
case 3:OLED_P8x16Str(96,2,"Wed");break;
case 4:OLED_P8x16Str(96,2,"Thu");break;
case 5:OLED_P8x16Str(96,2,"Fri");break;
case 6:OLED_P8x16Str(96,2,"Sat");break;
case 7:OLED_P8x16Str(96,2,"Sun");break;
}
OLED_P8x16Str(52,4,TimeMode);
OLED_P8x16Str(5,2,DateMode);
switch(model+1)
{
case 1:OLED_P8x16Str(4,0,"SetSec\0");break;
case 2:OLED_P8x16Str(4,0,"SetMin\0");break;
case 3:OLED_P8x16Str(4,0,"SetHou\0");break;
case 4:OLED_P8x16Str(4,0,"SetDay\0");break;
case 5:OLED_P8x16Str(4,0,"SetMon\0");break;
case 6:OLED_P8x16Str(4,0,"SetWek\0");break;
case 7:OLED_P8x16Str(4,0,"SetYea\0");break;//break;
}
TMPdisplay();
OLED_P8x16Str(96,6,GKMode);
}
tem=TMPget();
}
}
復制代碼
所有程序51hei提供下載:
OLED-DS1302時鐘 STC15版.zip
(83.98 KB, 下載次數: 49)
2021-2-13 02:14 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
yuzhihang123
時間:
2021-3-11 23:43
學習一下,為啥不用注釋呀
作者:
天藍色的Toto
時間:
2021-3-16 23:31
yuzhihang123 發表于 2021-3-11 23:43
學習一下,為啥不用注釋呀
很久以前的代碼,當時寫的時候沒注釋
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1