百度空间 | 百度首页 
               
 
查看文章
 
单片机24小时电子计时器DIY
2007-12-26 09:49
作品:(挺粗糙的


程序代码 程序代码
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int//方便调用
uchar code d_Code[]={0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE0,0xFE,0xF6};//定义段码!
uchar code w_Code[]={0x0e,0x0d,0x0b,0x07};//定义位码!
uchar count005=0;//这是定义的一个计数器,每次中断,也就是0,05S加1
uint Wei[4];
uint year=0;
uchar mouth=1,date=1,hour=0,minute=0,sec=0;//定义时间变量
void main(void){
     uchar i,n,m;
     TMOD=0x01;//计数器模式控制器,这里表示,使用定时器0,采用16位计数器,定时器工作,只由软件控制
     TR0=1;//启动定时器
     ET0=1;//定时器0允许中断
     EA=1;//系统中断开放
     TL0=0xB0;//定时器初值高位
     TH0=0x3c;//定时器初值低位,初值计算:2的16次方-50000,即每50000个机器周期中断一次,
     while(1){
         for (i= 0;i<4;i++){//动态扫描显示时间
             if(count005<11&&i==2){
                 P1=d_Code[Wei[i]]+1;
             }else{
                 P1=d_Code[Wei[i]];
             }
             P2=w_Code[i];
             for(n=0;n<3;n++){
             for(m=0;m<255;m++);
             }
         }

     }
}

timer0() interrupt 1{//中断后执行的过程
     TL0=0xB0;
     TH0=0x3c;
     if (++count005==20){
         Wei[1]=minute/10;
         Wei[0]=minute-Wei[1]*10;
         Wei[3]=hour/10;
         Wei[2]=hour-Wei[3]*10;
         if(++sec==60){
             if(++minute==60){
                 if(++hour==24){
                 hour=0;
                 }
                 minute=0;
             }
             sec=0;            
         }
         count005=0;
     }
}

本站提供相关配件,并提供完整的电子表程序!
详情请见:我的淘宝店:http://auction1.taobao.com/auction/0/item_detail-0db1-001633ddd8289cd44cef3a841ccc7c21.jhtml
也可以QQ联系:280345346!

类别:单片机学习 | 添加到搜藏 | 浏览() | 评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu