• 利用51单片机制作的电子时钟


    最近研究起来了单片机,用的是国产STC98C52芯片。

    STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。

    买了很长时间了可是一直在那里放着,今天重新拿出来写了一段电子时钟的C++程序,利用充电宝供电,当作电子时钟挺不错的。

    功能:

        4个七段数码管作为时钟显示的主体两个显示小时,两个显示分钟,8个LED灯作为秒数的闪烁,4个独立按键分别为hour+1,hour+10,minute+1,minute+10。

         查询LED电路,接入端为P1^0到P1^7。

                                          数码管采用了驱动芯片,接入端为P2^0到P2^3。

                                                                                 按键的接入端如图所示。


    有了各种电路的接入端,我们利用keil进行编程。

    /* 
    * Copyright (c) 2015,烟台大学计算机学院 
    * All right reserved. 
    * 作者:邵帅 
    * 文件:temp.c
    * 完成时间:2015年05月29日 
    */  
    #include <reg52.h>
    #define uchar unsigned char 
    sbit P2_0 = P2^0;
    sbit P2_1 = P2^1;
    sbit P2_2 = P2^2;
    sbit P2_3 = P2^3;
    sbit key1=P3^5;//按键
    sbit key2=P3^4;
    sbit key3=P3^3;
    sbit key4=P3^2;
    static unsigned char second,minute,hour;
    unsigned int tcount;
    unsigned char m;
    uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,
                            0xf8,0x80,0x90};
    
    void delay(uchar i)
    {
      uchar j,k; 
      for(j=i;j>0;j--)
        for(k=125;k>0;k--);
    }
    
    void display()
    {
    
       P0=table[hour/10];
       P2_0 = 0;
       delay(5);
       P2_0 = 1;
    
       P0=(table[hour%10]& 0x7f);
       P2_1 = 0;
       delay(5);
       P2_1 = 1;
    
       P0=table[minute/10];
       P2_2 = 0;
       delay(5);
       P2_2 = 1;
    
       P0=table[minute%10];
       P2_3 = 0;
       delay(5);
       P2_3 = 1;
       
    }
    
    void main(void)
    {
        unsigned int  a;
    	TMOD=0x02;
        TH0=0x06;
        TL0=0x06;
        TR0=1;
        ET0=1;
        EA=1;
       
     while(1)
     {
       	if(key1==0)
    		{
    			if(key1==0)	  //确认按键被按下
    			{
    				while(!key1);//松手检测
    			     hour++;
    			}
    	   
    		}
    		if(key2==0)
    		{
    			if(key2==0)	 
    			{
    				while(!key2);
    			    hour=hour+10;
    			}
    		}
    		if(key3==0)
    		{
    			if(key3==0)	
    			{
    				while(!key3);
    				minute++;
    			}
    		}
    		if(key4==0)
    		{
    			if(key4==0)	  
    			{
    				while(!key4);
    				minute=minute+10;
    			}
    		}	
       for(a=100;a>0;a--)
       {
         display();
       }
     
     }
    }
    
     void t0(void) interrupt 1 using 0 
      {	
      tcount++;
        if(tcount==4000)
    	  {tcount=0;
    	    second++;
    		 if(second==60)
    		  {second=0;
    		   minute++;
    		    if(minute==60)
    			 {minute=0;
    			  hour++;
    
    			  if(hour==24)
    			   {hour=0;
    			   }
    			 }
    		  }
    		P1=~P1;
    	  }
    	}
    


    打包成hex文件,进行烧录。


    运行单片机!


    本来计划使用小米的盒子当外壳的,后来发现盒子有点小,就先裸机了,反正5V电不着~


    @ Mayuko

  • 相关阅读:
    J2那几个E和Web基础
    PHP开发人员对JAVA的WEB开发入门(初版-基础知识)
    一个处理大数据的后台服务(已废弃)
    一个请求过来都经过了什么
    请一定记得升级java虚拟机
    面向对象之 结构体和类的区别
    Swift 结构体的使用
    iOS 波浪效果的实现
    iOS 常用三方(持续更新)
    Xshell 链接 Could not connect to '192.168.80.129' (port 22): Connection failed
  • 原文地址:https://www.cnblogs.com/mayuko/p/4567484.html
Copyright © 2020-2023  润新知