搜索
bottom↓
回复: 3

这个星期学51做的一个闹钟

[复制链接]

出0入0汤圆

发表于 2012-6-15 23:38:12 | 显示全部楼层 |阅读模式
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit wei=P2^7;
sbit duan=P2^6;
sbit x0=P3^4;
sbit x1=P3^5;
sbit x2=P3^6;
sbit x3=P3^7;
sbit bz=P2^3;
sbit led=P1^0;

uchar hs,h,ms,m,ss,s,hour,min,sec,t1,t2,tt;
uint t0;
void smgxs(uchar,uchar,uchar,uchar,uchar,uchar);
uchar code table[]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,
0x79,0x71
};
void keyscan();
void xsxz();
void init ();
void delay2();
void laozhong ();
void delay(uchar);
void main()
{
  
     x0=1;
     tt=1;
     init();
     while(1)
{  
        xsxz();//显示选择
        delay2();
        smgxs(hs,h,ms,m,ss,s);   
        keyscan();
        laozhong();
}
}
void init ()
{
         EA=1;
         ET0=1;
         TMOD=0X02;
         TR0=1;
         TH0=0xa3;
}
void smgxs(uchar hs,uchar h,uchar ms,uchar m,uchar ss,uchar s)
{
      
      
       duan=1;
       P0=table[hs];
       duan=0;
       P0=0xff;
       wei=1;
       P0=0xfe;
       wei=0;
       delay(10);  

       duan=1;
       P0=table[h];
       duan=0;
       P0=0xff;
       wei=1;
       P0=0xfd;
       wei=0;
       delay(10);

       duan=1;
       P0=table[ms];
       duan=0;
       P0=0xff;
       wei=1;
       P0=0xfb;
       wei=0;
       delay(10);

       duan=1;
       P0=table[m];
       duan=0;
       P0=0xff;
       wei=1;
       P0=0xf7;
       wei=0;
       delay(10);

       duan=1;
       P0=table[ss];
       duan=0;
       P0=0xff;
       wei=1;
       P0=0xef;
       wei=0;
       delay(10);

       duan=1;
       P0=table[s];
       duan=0;
       P0=0xff;
       wei=1;
       P0=0xdf;
       wei=0;
       delay(10);      
}
void delay2 ()
{
    if(sec==60)
{
         sec=0;
         min++;
         if(min==60)
                {
                 min=0;
                 hour++;
                  if(hour==24)
                          {
                           hour=0;
}
}
}
}
void delay(uchar z)
     {
         uchar x,y;
         for(x=z;x>0;x--)
            for(y=110;y>0;y--);  

}
void xsxz()//显示选择
{

       if(tt==0)
{   
       hs=t1/10;
       h=t1%10;
       ms=t2/10;
       m=t2%10;
       ss=0;
       s=0;
      
}
         

        else
{      
       hs=hour/10;
       h=hour%10;
       ms=min/10;
       m=min%10;
       ss=sec/10;
       s=sec%10;
}
}
void keyscan()
{
       if(x0==0)
{   
        delay(10);
        if(x0==0)
{
        tt=!tt;
}
        while(!x0);
}
       if(tt==0)
        {
         if(x1==0)
          {
           delay(20);
           if(x1==0)
           {
            
            t1++;
             if(t1==24)
{
              t1=0;
}
              while(!x1);
}
}
}
          if(x2==0&tt==0)
          {
           delay(20);
           if(x2==0)
           {
            t2++;
             if(t2==60)
             {
              t2=0;
}
}
              while(!x2);
}
      if(tt==1)
        {
         if(x1==0)
          {
           delay(10);
           if(x1==0)
           {
            
            hour++;
             if(hour==24)
{
              hour=0;
}
              while(!x1);
}
}

          if(x2==0&tt==1)
          {
           delay(20);
           if(x2==0)
           {
             min++;
             if(min==60)
             {
              min=0;
}
             while(!x2);
}
}
}
  
}
void laozhong ()
{
        if(x3==0)
        {
           delay(10);
           if(x3==0)
        {
         
          led=!led;
        
}
}
         while(!x3);
    if(hour==t1&min==t2)
    {
           if(led==0)
{
           bz=0;
}
          else
{
          bz=1;
}        
}
}
void timer0() interrupt 1
{

  t0++;
  if(t0==10000)
      {
        t0=0;
        sec++;
}
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2012-6-15 23:45:19 | 显示全部楼层
鼓励分享!~
谢谢楼主!

出0入0汤圆

发表于 2012-6-16 06:16:24 | 显示全部楼层
擦 光给个代码什么用啊

出0入0汤圆

发表于 2012-6-16 13:06:00 | 显示全部楼层
就一两句注视,这个习惯不好,LZ来点图啊
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 02:18

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表