⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 shizhong.c

📁 利用ds1302芯片实现proteus的led1602的时间显示
💻 C
字号:
#include<reg52.h> 
#define uchar unsigned char 
#define uint unsigned int
uchar code table[]=" 2008-08-20 MON";
uchar code table1[]="   10-10-10";
uchar code table2[]="  LIU TIAN WEI";

uchar ci,miao=10 ,fen=10 ,shi=10,jianci  ,gao,di,zen,jian;
sbit RS=P2^0;
sbit RW=P2^1;
sbit E=P2^2;
sbit AA=P2^6;
sbit BB=P2^7;
sbit CC=P3^0;
void delay(uint x)          /*延时函数*/
{
    uint i,j;
    for(i=x;i>0;i--)
        for(j=110;j>0;j--);
}
void write_cod(uchar cod)   /*写指令函数*/
{
    E=0;
    RS=0;
    RW=0;
    P0=cod;
    delay(5);
    E=1;
    delay(5);
    E=0;
    	
}
void write_date(uchar date)  /*写数据函数*/
{
    E=0;
    RS=1;
    RW=0;
    P0=date;
    delay(5);
    E=1;
    delay(5);
    E=0;
    	
}
void init()                  /*初始化函数*/
{
    uchar num;
    write_cod(0x38);        /*液晶工作状态定义*/
    write_cod(0x0c);
    write_cod(0x06);
    write_cod(0x01);
    write_cod(0x80+0x16);   /*第一行*/ 
    for(num=0;num<14;num++)
    {
        write_date(table2[num]);	
        delay(5);
    }
    write_cod(0x80+0x56);    /*第二行*/ 
 
    for(num=0;num<20;num++)
    {
        write_cod(0x1c);
        delay(100);
    }
    delay(1000);
    write_cod(0x01);
    write_cod(0x06);
    write_cod(0x80);
    for(num=0;num<15;num++)
    {
        write_date(table[num]);	
        delay(80);
    }
    write_cod(0x80+0x40);
    for(num=0;num<12;num++)
    {
        write_date(table1[num]);	
        delay(80);
    }
    TMOD=0x01;
    TH0=(65536-50000)/256;
    TL0=(65536-50000)%256;
    EA=1;	
    ET0=1;
    TR0=1;
}
void xianshi(uchar add,uchar shu)
{
    gao=shu/10;
    di=shu%10;
    write_cod(0x80+0x40+add);
    write_date(0x30+gao);
    write_date(0x30+di);
}
zenjian(uchar xx)
{
            zen=xx;
            if(BB==0)
            delay(15);
            if(BB==0)
    	{ 
            while(!BB);
            zen++;
            if(zen==60)
            zen=0;
            //miao=zen;
    		
    	}
            if(CC==0)
            delay(15);
            if(CC==0)
    	{ 
            while(!CC);
            zen--;
            if(zen==0)
            zen=59;
            //miao=zen;
    		
        }  

return zen;
}
void  key()
{
    if(AA==0)
    delay(15);
    if(AA==0)
    { while(!AA);
     TR0=0;
     jianci++;
    }
    if(jianci==1)
    {
    
        write_cod(0x80+0x40+9);
        write_cod(0x0e);
        miao=zenjian( miao);
        xianshi(9,miao);
    
    	
    	 
    	
    }
    if(jianci==2)
    {
        write_cod(0x80+0x40+6);
        write_cod(0x0e);
        fen=zenjian(fen);
    
        xianshi(6,fen);
    	 
    }
    if(jianci==3)
    {
        write_cod(0x80+0x40+3);
        write_cod(0x0e);
        shi=zenjian(shi);
        xianshi(3,shi);
    	 
    }
    if(jianci==4)
    {
        jianci=0;
      //write_cod(0x80+0x40+7);
        write_cod(0x0c);
        TR0=1;
    }

}

void main()
{
    init();
    while(1)
    {
        key();
        if(ci==20)
    	{
            ci=0;
            miao++;
            if(miao==60)
    		{
            	miao=0;
            	fen++;
                if(fen==60)
        		{
                	  fen=0;
                	  shi++;
                	if(shi==24)
                	  shi=0;
                    xianshi(3,shi);
        			
        	   	}
                xianshi(6,fen);
    		}
            xianshi(9,miao);	
        }
 
    }
 
}
void timer0() interrupt 1
{
    EA=0;
    ET0=0;
    TR0=0;
    ci++;
    TH0=(65536-50000)/256;
    TL0=(65536-50000)%256;
    EA=1;
    ET0=1;
    TR0=1;
    
    
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -