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

📄 prog.c

📁 基于远程遥控的挂钟,ds12c877 基于远程遥控的挂钟,ds12c8
💻 C
字号:
 #include "reg51.h"
 #include "math.h"
 #include "string.h"
 #include "intrins.h"
 #define uchar unsigned char
 #define high  1/* 高电平 */
 #define low   0 /* 低电平 */
//sbit  Dat4094=P1^4;/* 4094A数据*/
// sbit  En=P1^5;     /* 使能 */
 sbit ESS=P1^6;//数据脚
 sbit clk=P1^3;//时钟
 sbit storge=P1^1;//锁存
 //uchar code LED_acess[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//LED段码0,1,2,3,4,5,6,7,8,9
 uchar code LED_acess[10]={0x04,0x1f,0x22,0x0a,0x19,0x48,0x40,0x1e,0x00,0x08};//LED段码0,1,2,3,4,5,6,7,8,9
 uchar idata a[6];
 uchar time_NUM;
 //uchar s ;
 long int time_con;
 long int time_T;
 bit flag;
 //函数申明
 void Clock(void);
// void Sclock(void);
 void Delay(uchar us);/*延时 us 微秒*/
 void SendDate(uchar  dat1);
 void Init(void);
 void show(void);
 void Delay(uchar us)/*延时函数*/
{
  uchar time;
  for(time=us;time>0;time--);
}

void Clock(void)   /*时钟上升沿函数*/
{
	clk=low;
        Delay(2);
	clk=high;
        Delay(2);
}
//void Sclock(void)	/*锁存时钟上升沿函数*/
//{
//  sclk=low;
 // Delay(2);
 // sclk=high;
//  Delay(2);
//}
void SendData(uchar  dat1)	 /*给74HC595发数据函数*/
{
    uchar numBIT;
   for(numBIT=0;numBIT<8;numBIT++)
    {
     if(dat1&0x80)
  	    ESS=low;

     else
  	    ESS=high;
     dat1= _crol_(dat1,1);
     Clock();
    }
 }


 void show(void)	  /*调LED显屏显示函数*/
 {
 	 uchar num;
 	 storge=low;
 	 for(num=0;num<6;num++)
 	 {
 	 	    if(flag)
           SendData(LED_acess[a[num]]|0x80);
        else
          SendData(LED_acess[a[num]]);
   }
       storge=high;
 }
void Time0(void) interrupt 1 using 0 /*定时器0中断*/
{
 EA=0;
 TH0=0x3c;/*五十毫秒*/
 TL0=0xb0;
 time_NUM++;
 EA=1;
 
 }


 void Init(void)	 /*初始化函数*/
{
   //  WDTRST=0x1e;
    IE=IE|0x82;
    TMOD=TMOD|0x01;
   TH0=0x3c;/*五十毫秒*/
   TL0=0xb0;
   TR0=1;
   time_con=57600;
   show();
   P0=0Xfe;

 /*  CHPENR=0x87;
   CHPENR=0x59;
   CHPCON=CHPCON|0x10;
   CHPENR=0X00;	片外存储器使能*/


}
void mul_time(void)
{
	time_con++;
  time_T=time_con;
  a[5]=time_T%10;
  time_T=time_T/10;
  a[4]=time_T%6;
  time_T=time_T/6;
  a[3]=time_T%10;
  time_T=time_T/10;
  a[2]=time_T%6;
  time_T=time_T/6;
  a[1]=time_T%10;
  a[0]=time_T/10;
}
void main(void)   /*主函数*/
{
	       Init();
         while(1)
        {
         if(time_NUM>=20)
           {
             time_NUM=0;
             mul_time();
             flag=!flag;
           }
          show();
     	  }
}





⌨️ 快捷键说明

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