广告

原创 数字钟proteus仿真

2009-5-14 09:12 2454 1 1 分类: MCU/ 嵌入式

http://space.ednchina.com/Upload/2009/5/14/76e7a252-30fc-4b5f-b440-5e6e8f0fc30c.rar//程序功能:时钟显示


//s1按键功能,  秒加一


//s2按键功能, 分加一


//s3按键功能,小时加一


<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 


//*************************************************


#include<reg51.h>


#define K 2


#define x 50


#define M 240


code unsigned char seg7code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,


                               0x82,0xf8,0x80,0x90,0xff}; //共阳数码管段码


 


unsigned int cnt="0";   //由于底下的cnt用到了4000,所以这时不能定义成char类型(最大才255


unsigned char sec="0";


unsigned char min="0";


unsigned char hour="0";


 


 


void delay(int m)


{


 unsigned char i,j;


  for(i=0;i<m;i++)         


  for(j=0;j<100;j++);


}


 


void LED_display()             //显示


{


 


      P2=0x01;                  //选通第一位


      P0=seg7code[hour/10];     //显示小时十位


      delay(K);


      P0=0xff;                  //消隐


 


      P2=0x02;                  //选通第二位


      P0=seg7code[hour%10];     //显示小时个位


      delay(K);


      P0=0xff;                  //消隐


 


     P2=0x04;                  //选通第三位


      P0=0xbf;


     delay(K);   


      P0=0xff;


 


     P2=0x08;                  //选通第四位


      P0=seg7code[min/10];     //显示分十位


      delay(K);


      P0=0xff;                  //消隐


 


      P2=0x10;                  //选通第五位


      P0=seg7code[min%10];     //显示分个位


      delay(K);


      P0=0xff;                  //消隐


 


     P2=0x20;                  //选通第六位


      P0=0xbf;


     delay(K);   


      P0=0xff;


 


      P2=0x40;                   //选通第七位


      P0=seg7code[sec/10];       //显示秒十位


      delay(K);


      P0=0xff;                   //消隐


 


      P2=0x80;                   //选通第八位


      P0=seg7code[sec%10];       //显示秒个位


      delay(K);


      P0=0xff;                  //消隐


}


 


 


void timer0 (void) interrupt 1 using 0


{


 cnt++;             //每过250uscnt加一


 if(cnt==4000)      //250*4000=1s


 {


  cnt=0;


  sec++;          


  if(sec==60)       //60秒,重新计数,分钟加一


  { sec="0";


    min++;


    if(min==60)         //60分,重新计数,小时加一


     {


      min=0;


      hour++;


      if(hour==13)      //12个小时,重新计数


      {hour=1;}


     }


 


  }


 }


}


 


 


   void intserv0 (void) interrupt 0         // 外部中断0,秒加1


 {


      sec++;       


      if(sec==60)      


      sec=0; 


 


 }


 


 void intserv1 (void) interrupt 2    // 外部中断1.分加1


 {


    min++;       


      if(min==60)     


      min=0; 


 }


 


 void timer1 (void) interrupt 3      // T1改为外部中断,小时加1


{


      hour++;       


      if(hour==13)      


      hour=1; 


}


 


 


main()


{


     TMOD=0x62;          //T0,方式2


    


     EA=1;                 //开总中断


      EX0=1;


      EX1=1;


      IT0=1;


      IT1=1;


      ET0=1;                //开定时器T0中断


      ET1=1;                          //开定时器T1中断         


      TH1=0XFF;


      TL1=0XFF;


      TR1=1;


      TH0=0x06;              //<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />12.0M的定时中断


      TL0=0x06;


      TR0=1;


  while(1)


 {  


  LED_display();


 }


}

广告

文章评论 0条评论)

登录后参与讨论
相关推荐阅读
aas7502987 2012-04-07 11:48
51/STC最小系统板资料(更新中)
图片欣赏    淘宝网址:http://item.taobao.com/auction/item_detail.htm?item_num_id=9073446988  二   程...
aas7502987 2011-10-13 22:59
YL-3 资料
YL-3数码管模块资料:YL-3 串行数码管资料.zip...
aas7502987 2011-09-24 09:10
USB转TTL小板驱动
xp系统驱动:XP系统支持STC下载的PL-2303HX新版驱动.rar WIN7系统驱动:WIN7系统支持STC下载的PL2303HX驱动.rar...
aas7502987 2011-05-24 22:48
STM32F103RBT6最小系统原理图 PCB
STM32F103RBT6最小系统板原理图 PCB 附件:做好的成品板:淘宝链接网址:http://item.taobao.com/item.htm?id=8864376956...
aas7502987 2011-05-08 12:53
YL-16 STM32F103最小系统板资料(更新中)
二 数据手册:  USB协议中文版:attachment download  中文数据手册:attachment downloadSTM32选型手册:attachment downloadSTM32勘...
aas7502987 2011-03-20 13:27
DS18B20温度测量模块
DS18B20 数码管温度显示程序:...
我要评论
0
1
广告
关闭 热点推荐上一条 /2 下一条