单片机的设计,用C语言

单片机的设计,用C语言,第1张

我有个表的程序先给你吧
#include<reg51h>
#include<intrinsh>
#define uchar unsigned char
#define uint unsigned int
uchar isLeapYear(uint y);
sbit K1=P3^5;
sbit K2=P3^6;
sbit K3=P3^7;
sbit SDA=P1^0;
sbit CLK=P1^1;
sbit RST=P1^2;
sbit P2_0=P2^0;
sbit P2_1=P2^1;
//一年中每个月的天数,2月的天数由年份决定
uchar monthsdays[]={0,31,0,31,30,31,30,31,31,30,31,30,31};
uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar Display_Buffer[]={0x00,0x00,0xbf,0x00,0x00,0xbf,0x00,0x00};
uchar Bit_Code[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
uchar Current_Time[7];
char Adjust_Flag=0;
uchar K1num=0,K2num=0,K3num=0,flag=0,K3flag;
void delay(uint x)
{
uchar i;
while(x--)for(i=0;i<120;i++);
}
void Write_A_Byte_TO_DS1302(uchar x)
{
uchar i;
for(i=0;i<8;i++)
{
SDA=x&1;CLK=1;CLK=0;x>>=1;
}
}
uchar Get_A_Byte_From_DS1302()
{
uchar i,b,t;
for(i=0;i<8;i++)
{
b>>=1;t=SDA;b|=t<<7;CLK=1;CLK=0;
}
return b/1610+b%16;
}
uchar Read_Data(uchar addr)
{
uchar dat;
RST=0;CLK=0;RST=1;
Write_A_Byte_TO_DS1302(addr);
dat=Get_A_Byte_From_DS1302();
CLK=1;RST=0;
return dat;
}
void Write_DS1302(uchar addr,uchar dat)
{
CLK=0;RST=1;
Write_A_Byte_TO_DS1302(addr);
Write_A_Byte_TO_DS1302(dat);
CLK=0;RST=0;
}
void SET_DS1302()
{
uchar i;
Write_DS1302(0x8e,0x00);
for(i=1;i<7;i++)
{
Write_DS1302(0x80+2i,(Current_Time[i]/10<<4)|(Current_Time[i]%10));
Write_DS1302(0x8e,0x80);
}
}
void GetTime()
{
uchar i;
for(i=0;i<7;i++)
{
Current_Time[i]=Read_Data(0x81+2i);
}
}
void EX_INT0()interrupt 0
{
if(K1==0)
{
K1num++;
if(K1num==4)K1num=0;
}
if(K1num==3)
{
SET_DS1302();
Adjust_Flag=0;
K1num=0;
}
if((K1num!=0)||(K3num!=0))
{
if(K2==0)
{
Adjust_Flag=1;
if(flag==0)
{
if(K1num==1)
{
Current_Time[2]=(Current_Time[2]+1)%24;
}
if(K1num==2)
{
Current_Time[1]=(Current_Time[1]+1)%60;
}
}
if(K3num==2)Current_Time[6]=(Current_Time[6]+1)%99;
if(K3num==3)
{
Current_Time[4]++;
if(Current_Time[4]==13)
Current_Time[4]=1;
}
if(K3num==4)
{
monthsdays[2]=isLeapYear(2000+Current_Time[6])29:28;
Current_Time[3]++;
if(Current_Time[3]==monthsdays[Current_Time[4]]+1)
{
Current_Time[3]=1;
}
}
}
}

if(K3==0)
{
delay(5);
if(K3==0)
{
K3num++;
if(K3num==6)K3num=0;
}
}
if(K3num==1)
{
flag=1;
}
if(K3num==5)
{
flag=0;
K3num=0;
SET_DS1302();
Adjust_Flag=0;
}
}
void Timer0()interrupt 1
{
uchar temp;
TH0=(-50000)/256;
TL0=(-50000)%256;
temp++;
if(K3num==1)
{
if(temp==5)
{temp=0;flag=0;K3num=0;}
}
/ if(K1num==0&&(K3num==0||K3num==1))
{
if(temp==40)
{
// temp=0;
flag=1;
}
if(temp==80)
{
temp=0;
flag=0;
}
}/
}
uchar isLeapYear(uint y)
{
return(y%4==0&&y%100!=0)||(y%400==0);
}
void main()
{
uchar i,a,b;
TMOD=0X01;
TH0=(-50000)/256;
TL0=(-50000)%256;
EX0=1;
ET0=1;
TR0=1;
EA=1;
IT0=0X01;
while(1)
{
if(Adjust_Flag==0)GetTime();
a++;
if(a==20)
{ a=0;
b=!b;}

if(flag==1)
{
Display_Buffer[0]=DSY_CODE[Current_Time[6]/10];
Display_Buffer[1]=DSY_CODE[Current_Time[6]%10];
Display_Buffer[3]=DSY_CODE[Current_Time[4]/10];
Display_Buffer[4]=DSY_CODE[Current_Time[4]%10];
Display_Buffer[6]=DSY_CODE[Current_Time[3]/10];
Display_Buffer[7]=DSY_CODE[Current_Time[3]%10];
for (i=0; i<8;i++)
{
if(((i==0)||(i==1))&&((K3==0)||(K3num==2 )))
P2 = bBit_Code[i];//P2位码
else if(((i==3)||(i==4))&&((K3==0)||(K3num==3)))
P2 = bBit_Code[i];//P2位码
else if(((i==6)||(i==7))&&((K3==0)||(K3num==4 )))
P2 = bBit_Code[i];
else P2 = Bit_Code[i];
P0 = Display_Buffer[i];//P0段码
delay(2);
}
if(K1num==1)flag=0;
}
if(flag==0)
{

Display_Buffer[0]=DSY_CODE[Current_Time[2]/10];
Display_Buffer[1]=DSY_CODE[Current_Time[2]%10];
Display_Buffer[3]=DSY_CODE[Current_Time[1]/10];
Display_Buffer[4]=DSY_CODE[Current_Time[1]%10];
Display_Buffer[6]=DSY_CODE[Current_Time[0]/10];
Display_Buffer[7]=DSY_CODE[Current_Time[0]%10];
for (i=0; i<8;i++)
{
if(((i==0)||(i==1))&&((K1==0)||(K1num==1 )))
P2 = bBit_Code[i];//P2位码
else if(((i==3)||(i==4))&&((K1==0)||(K1num==2)))
P2 = bBit_Code[i];//P2位码
else if(((i==6)||(i==7))&&((K1==0)||(K1num==3 )))
P2 = bBit_Code[i];
else P2 = Bit_Code[i];
P0 = Display_Buffer[i];//P0段码
delay(2);
}
}

}
}

以上就是关于单片机的设计,用C语言全部的内容,包括:单片机的设计,用C语言、、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9433328.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存