捕獲sd.PNG (218.17 KB, 下載次數(shù): 66)
下載附件
2018-11-30 20:57 上傳
通過按鈕可以調(diào)整正常時間和鬧鐘時間
下面是部分代碼
// SCK接P32 DIO接 P33 RCK接P34 上電后數(shù)碼管會顯示時鐘
#include <AT89X51.H>
#define DISP_WEI P2
typedef unsigned char U8;
typedef unsigned int U16;
sbit KEY1 =P2^4;
sbit KEY2 =P2^5;
sbit KEY3 =P2^6;
sbit KEY4 =P2^7;
U16 tcount;
U8 m;
U8 TIME_HOU_C,TIME_MIN_C,TIME_SEC_C;
U8 TIMER_TEMP,DISP_NUM;
static U8 second,minute,hour;
bit CLOCK_BUFF,CLOCK_FLAG;
bit ADJUST_TIME_FLAG,ADJUST_CLOCK_FLAG;
int bing ;
sbit BEEP = P1^5;
//int mode;//鬧鐘模式,時間模式 0鬧鐘 1 時間模式 //2正常模式
U8 code segbit[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01}; //位選
U8 disbuf[8]={0,0,0,0,0,0,0,0};
U8 ADJUST_TIME[8]={0,0,0,0,0,0,0,0};
U8 code fseg[]={
0xc0, //0
0xf9, //1
0xa4, //2
0xb0, //3
0x99, //4
0x92, //5
0x82, //6
0xf8, //7
0x80, //8
0x90, //9
0x88, //10 A
0x83, //11 B
0xc6, //12 C
0xa1, //13 D
0x86, //14 E
0x8e, //15 F
0x8b, //16 h
0x89, //17 H
0xa3, //18 o
0xc1, //19 u
0xaa, //20 M
0xcf, //21 I
0xc8, //22 N
0xbf , //23 -
0xff , // 24 滅
0x00 // 25 全亮
};
void Buzzer();
void CLOCK_CALC();
void display();
void init();
void IN_KEY();
void hour_time();
void min();
void sec();
void hour_c();
void min_c();
void sec_c();
void sdata_c();
void DISP_ADJUST_TIME();
//數(shù)據(jù)傳輸//
void sdata(void)
{
unsigned char b,c,num;
if(b==0)
{
b++;
num=segbit[m];
for(c=0;c<8;c++)
{
P3_2=0;
P3_3=num&0x80;
num<<=1;
P3_2=1;
}
}
if(b==1)
{
b--;
if((m==2||m==5))
{num=0xbf;}
else
{
num=fseg[disbuf[m]];
}
for(c=0;c<8;c++)
{ P3_2=0;
P3_3=num&0x80;
num<<=1;
P3_2=1;
}
}
m++;
if(m==8)
{m=0;
}
}
//數(shù)據(jù)傳輸//
void sdata_c(void)
{
unsigned char b,c,num;
if(b==0)
{
b++;
num=segbit[m];
for(c=0;c<8;c++)
{
P3_2=0;
P3_3=num&0x80;
num<<=1;
P3_2=1;
}
}
if(b==1)
{
b--;
num = fseg[ADJUST_TIME[m]];
for(c=0;c<8;c++)
{ P3_2=0;
P3_3=num&0x80;
num<<=1;
P3_2=1;
}
}
m++;
if(m==8)
{m=0;
}
}
//延時0.1ms個單位//
void delay (unsigned char h)
{ while(h--);
}
//延時0.1ms個單位//
//數(shù)據(jù)輸出//
void out(void)
{
P3_4=0;
delay(50);
P3_4=1;
}
//數(shù)據(jù)輸出//
void bcon(void)
{
disbuf[0]=second%10;
disbuf[1]=second/10;
disbuf[3]=minute%10;
disbuf[4]=minute/10;
disbuf[6]=hour%10;
disbuf[7]=hour/10;
}
void DISP_ADJUST_TIME(){
sdata_c();
out();
}
void display(){
bcon();
sdata();
out();
}
//主函數(shù)//
void main(void)
{
init();
while(1)
{
display(); //顯示時間
IN_KEY(); //按鍵
Buzzer(); //鬧鐘
}
while(1);
}
//主函數(shù)//
0.png (14.86 KB, 下載次數(shù): 67)
下載附件
2018-11-30 22:48 上傳
全部資料51hei下載地址:
時鐘-鬧鐘代碼.rar
(109.94 KB, 下載次數(shù): 89)
2018-11-30 21:08 上傳
點擊文件名下載附件
代碼和仿真圖都在,isis是7.8 下載積分: 黑幣 -5
|