标题: 单片机程序里能设个到期锁定功能吗? [打印本页]

作者: w3158    时间: 2016-7-26 22:51
标题: 单片机程序里能设个到期锁定功能吗?
就是单片机程序里设好一个时间后(比如一个月或三个月)单片机程序就不能正常用了,到期锁定后要用的话只能从新输入一次之前的程序如可以的话请帮忙加进下面的程序里。
#include<reg52.h>
sbit k1 =P3^4;        //按键
sbit led1 =P1^0;        //1
sbit led2 =P1^1;        //2
sbit led3 =P1^2;        //3
unsigned char n=0;
voiddelay(unsigned int t)     //延时子程序
{ while(t--);   }                //延时子程序
void main(void)        //主程序
{
           while(1)  //扫描按键
      {
                if(k1==0)        //按键按下
        {     
                       if(n==0)
                 {
                        led1 = 0;     //1
                   delay(60000);       //延时
         
                          led2 = 0;           //2
                    
                      delay(60000);      //延时
                            led1 = 1;            //1
                                   n=1;
                     }   
         }      
               
                if(k1==1)        //按键弹起
           {
                       if(n==1)
              {
                          led2 = 1; //2
                                                  
                    led3 = 0; //3               
               delay(60000);       //延时               
                    led3 = 1;                      //3
                     n=0;
                   }
            }
      }
}
[/url]



作者: wc86110    时间: 2016-7-27 07:23
就这个嘛完全是入门级的没那个必要加入
作者: luoluoluo136    时间: 2016-7-27 09:00
如果要精确的话,你需要一个时基,或者你从来都不关机。否则的话,只能按每天使用多长时间,来定一个总的时间,每次使用的时候,减时间

作者: PK250    时间: 2016-7-27 09:43
可以加一个时间中断,反正你的程序也比较简单,多响应几次中断也没多大影响
作者: PK250    时间: 2016-7-27 09:45
道理和昨天改的一样,再加一个变量,当到期时变量值发生改变
作者: PK250    时间: 2016-7-27 09:47
也不对。。。。如果芯片断电就不行了,所以得加一块外部时钟芯片。。。。

作者: w3158    时间: 2016-7-27 15:38
PK250 发表于 2016-7-27 09:47
也不对。。。。如果芯片断电就不行了,所以得加一块外部时钟芯片。。。。

断电先不管他,能不能设好一个时间(比如100个小时)后这单片机就不能正常工作了这时断一下电也不能用了,只能从新输入一次程序。可以的话请帮忙加进这个程序里。谢谢了!
作者: AMB    时间: 2016-7-29 09:23
#include<reg52.h>
sbit k1 =P3^4;        //按键
sbit led1 =P1^0;        //灯1
sbit led2 =P1^1;        //灯2
sbit led3 =P1^2;        //灯3
unsigned char n=0;
voiddelay(unsigned int t)     //延时子程序
{ while(t--);   }                //延时子程序
void main(void)        //主程序
{
           while(1)  //扫描按键
      {
                if(k1==0)        //按键按下
        {     
                       if(n==0)
                 {
                        led1 = 0;     //灯1亮
                   delay(60000);       //延时
         
                          led2 = 0;           //灯2亮
                    
                      delay(60000);      //延时
                            led1 = 1;            //灯1灭
                                   n=1;
                     }   
         }      
               
                if(k1==1)        //按键弹起
           {
                       if(n==1)
              {
                          led2 = 1; //灯2灭
                                                  
                    led3 = 0; //灯3亮               
               delay(60000);       //延时               
                    led3 = 1;                      //灯3灭
                     n=100--------0;
                   }
            }
      }
}
[/url]
其他你在改
作者: ahshmj    时间: 2016-7-29 09:51
这个可以使用带eeprom的单片机,用数个eeprom字节记录“运行累计时间”(如果应用程序不需要实时时钟,可以不加时钟芯片,反正单片机一运行,定时器便启动。)“运行累计时间”(可以十分钟或小时,也可以是天)比较,达到或超过以后就跳过主要的功能程序模块即可。但是建议你还是设一个口令比较程序,输入一个正确口令即可继续使用。没必要重装。如果你想设置第二个“限制时间段”,或更多,就多设计个预置口令,比如达到100小时是什么口令,超过100达到200小时时是什么口令。

我想,这些提示对一个自己所编程序的价值需要这个功能的人来说,已经够了吧?
作者: w3158    时间: 2016-7-30 13:08
AMB 发表于 2016-7-29 09:23
#include
sbit k1 =P3^4;        //按键
sbit led1 =P1^0;        //灯1

void delay(unsigned int t)     //延时子程序 (这里我少打了个空格)
  n=100--------0;  (这句不能通过,这是定的时间吗?)
我是新手,能帮我加全吗谢谢了!
作者: w3158    时间: 2016-7-30 13:21
本帖最后由 w3158 于 2016-7-30 17:04 编辑
ahshmj 发表于 2016-7-29 09:51
这个可以使用带eeprom的单片机,用数个eeprom字节记录“运行累计时间”(如果应用程序不需要实时时钟,可以 ...

谢谢你的提示,不过我才刚刚学单片机只会在比较简单的程序中改改我要的功能。现在能不能用个定时器计时,比如到时间了就把延时时间改变了,反正不能正常工作就行。除非在到期之前断一下电就从新计时,如中间没断过电一旦到期限后再断电也不能正常了。可以的话请帮忙加进去,谢谢了!
作者: w3158    时间: 2016-7-31 22:17
我怎么成技术员了?我是新手啊




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1