資源簡介
基于51單片機的課程設計,電子時鐘設計,希望對同學們有幫助.

代碼片段和文件信息
#include
#include“lcd1602.h“
#include“ds1302.h“
#include“ds18b20.h“
#define?uint?unsigned?int
#define?uchar?unsigned?char
uint?b[6];
//年月日時分秒
uchar?code?row1[]={“2009-01-01“};
uchar?code?row2[]={“00:00:00“};
uchar?year1[12]={312831303130313130313031};//平年
uchar?year2[12]={312931303130313130313031};//潤年
uchar?j[6]={0x850x880x8b0x84+0x400x87+0x400x8a+0x40};//LCD地址
uchar?ikjj=0wclock=0bigclock=0c=0num;
//i循環數??k溫度緩存?jj地址位
uint?temp;
sbit?b1=P3^0;//設置
sbit?b2=P3^1;//上調
sbit?b3=P3^2;//下調
sbit?b4=P3^3;//轉換
sbit?b5=P3^4;//鬧鐘
sbit?speaker=P3^5;
lcdscan()
{
for(i=0;i<6;i++)
{
lcdwrite(j[i]);
lcdshuju(a[11-i*2]+0x30);
lcdwrite(j[i]+0x01);
lcdshuju(a[10-i*2]+0x30);
}
}
void?key()
{
if(b1==0)
{
dsaddshuju(0x80(a[1]<<4)+a[0]+0x80);
while(b1==0)
{
for(i=0;i<6;i++)
{
b[i]=a[11-i*2+clock]*10+a[10-i*2+clock];
}
if(b4==0)
{
delay(3);
jj++;
if(jj==6)
{
jj=0;
}
}
if(b2==0)
{
delay(3);
b[jj]++;
if(b[5]==60)b[5]=0;
if(b[4]==60)b[4]=0;
if(b[3]==24)b[3]=0;
if((b[0]%4==0?&&?b[0]%100!=0)?||?b[0]%400==0){if(b[2]>year2[b[1]-1])b[2]=1;}
else?{if(b[2]>year1[b[1]-1])b[2]=1;}
if(b[1]==13)b[1]=1;
if(b[0]==100)b[0]=0;
}
if(b3==0)
{
delay(3);
b[jj]--;
if(b[5]==-1)b[5]=59;
if(b[4]==-1)b[4]=59;
if(b[3]==-1)b[3]=23;
if((b[0]%4==0?&&?b[0]%100!=0)?||?b[0]%400==0){if(b[2]<=0)b[2]=year2[b[1]-1];}
else?{if(b[2]<=0)b[2]=year1[b[1]-1];}
if(b[1]==0)b[1]=12;
if(b[0]==-1)b[0]=99;
}
for(i=0;i<6;i++)
{
a[11-i*2+clock]=b[i]/10;
a[10-i*2+clock]=b[i]%10;
}
lcdwrite(j[jj]);
lcdshuju(0);
lcdwrite(j[jj]+1);
lcdshuju(0);
delay(200);
lcdwrite(j[jj]);
lcdshuju(a[11-2*jj+clock]+0x30);
lcdwrite(j[jj]+1);
lcdshuju(a[10-2*jj+clock]+0x30);
delay(200);
if(b1==1)
{
dsaddshuju(0x80(a[1]<<4)+a[0]);
dson();
}
if(b5==0)clock=12;
}
}
}
void?main()
{
speaker=0;
lcdrw=0;
dson();
lcdon();
lcdwrite(0x83);
for(i=0;i<10;i++)
{
lcdshuju(row1[i]);
delay(1);
}
lcdwrite(0x84+0x40);
for(i=0;i<8;i++)
{
lcdshuju(row2[i]);
delay(1);
}
dsrst=0;
dssclk=0;
while(1)
{
for(i=0;i<5;i++)
{
dsrst=1;
dswrite(0x81+i*2);
k=dsread();
dsrst=0;
a[i*2]=k&0x0f;
a[i*2+1]=(k>>4)&0x0f;
}
dsrst=1;
dswrite(0x8d);
k=dsread();
dsrst=0;
a[10]=k&0x0f;
a[11]=(k>>4)&0x0f;
delay(100);
lcdscan();
key();
if(b5==0)
{
for(i=0;i<12;i++)
{
if(a[i+12]==a[i])num++;
}
if(num==12)bigclock=1;
else?num=0;
lcdwrite(0x8e);
lcdshuju(‘&‘);
}
else?
{
lcdwrite(0x8e);
lcdshuju(0x00);
}
if(bigclock==1)
{
speaker=1;
c++;
if(c==100){bigclock=0;speaker=0;}
}
temp=readtemperature();//temp是
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2017-02-14?23:20??電子時鐘?lcd?ds1302?ds18b20?鬧鐘\
?????文件????????1138??2009-08-05?22:20??電子時鐘?lcd?ds1302?ds18b20?鬧鐘\ds1302.h
?????文件?????????946??2009-08-05?22:20??電子時鐘?lcd?ds1302?ds18b20?鬧鐘\ds18b20.h
?????文件???????98292??2009-03-16?13:38??電子時鐘?lcd?ds1302?ds18b20?鬧鐘\Last?Loaded?電子時鐘擴展.DBK
?????文件?????????672??2009-08-05?22:21??電子時鐘?lcd?ds1302?ds18b20?鬧鐘\lcd1602.h
?????文件????????3222??2009-08-05?22:23??電子時鐘?lcd?ds1302?ds18b20?鬧鐘\電子時鐘擴展.c
?????文件????????7703??2009-03-16?13:49??電子時鐘?lcd?ds1302?ds18b20?鬧鐘\電子時鐘擴展.hex
?????文件??????????56??2009-03-16?13:49??電子時鐘?lcd?ds1302?ds18b20?鬧鐘\電子時鐘擴展.lnp
?????文件???????28453??2009-08-05?22:24??電子時鐘?lcd?ds1302?ds18b20?鬧鐘\電子時鐘擴展.LST
?????文件???????23370??2009-03-16?13:49??電子時鐘?lcd?ds1302?ds18b20?鬧鐘\電子時鐘擴展.M51
?????文件????????1921??2013-11-22?17:23??電子時鐘?lcd?ds1302?ds18b20?鬧鐘\電子時鐘擴展.Opt
?????文件?????????280??2013-11-22?17:23??電子時鐘?lcd?ds1302?ds18b20?鬧鐘\電子時鐘擴展.plg
?????文件????????1221??2009-03-16?14:09??電子時鐘?lcd?ds1302?ds18b20?鬧鐘\電子時鐘擴展.PWI
?????文件?????????196??2009-03-16?14:08??電子時鐘?lcd?ds1302?ds18b20?鬧鐘\說明.txt
評論
共有 條評論