51单片机自学--改造我的机器

终于自学单片机开发,写了这个猫洁易智能外扩程序,免清洁液永久清洗,在2017-10月我购买的时候,以为可以很放心去旅游,旅游一周回来,发现机器没清洗,猫屎堆满机器盆,顿时感到很讨厌,花了钱居然得不到相应的服务,机器还在告警,询问客服说是清洁液用完了就不工作,原来这是款霸王绑定销售,而销售宣传中丝毫不提有这种限制?!而且该机器销售宣传说是把5年买猫砂土的钱投资在他的机器上更便宜,猫砂是水洗可反复使用的,结果他这机器不但要清洗液限制机器工作,从消耗猫砂与清洁液算一下比其他的消费更贵,这是欺骗客户的卑鄙行径.


于是查看网上有人用过这机器后来拆除不用了,那是他实在没办法,也有人到处打听如何破解清洗液,我呢是软硬兼施的,机器到我手,他们挺SB的设计根本就没用,我想怎么改造就怎么办,目前用单片机设计组织清洗整过程的运行逻辑已经成功,机器不再受清洁液限制,可以永久工作,哪怕没有清洁液,一样可以水洗,从此可以无忧旅游,倘若有一天其机器内的控制板坏掉,我还可以用单片机全部替换,重新按自己的思路设计控制清洗运行逻辑,用他们这台机器的硬件,说实话,这个机器硬件设计挺巧妙的,除了那SB霸王的清洗液控制.

另有位同样养猫买这种机器的人说,他现在用超市买2元多一斤的坏米当猫砂用,我觉得不错,同样是摆脱绑定销售的方法.

完成智能外扩更使我轻松和得意,从此不用再听家里女人关于猫洁易这机器的唠叨了,有女人的幸福就是听她的唠叨,然后奋发学习,设计出智能外扩,从此扬眉吐气,亦可在家里女人面前吹牛了.大笑

这是我第一个用C写的51单片机程序:

#include "reg52.h"   
//#include<intrins.h>


typedef unsigned int u16; 
typedef unsigned char u8;


sbit xuan_ze = P1^2;  
sbit zhi_xin = P1^3;   
sbit dian_yuan = P1^4;   
sbit wei = P2^7;       
sbit duan = P2^6;      
sbit beep = P2^3;


u8 code duan_xuan_biao[] =
{//数码管段选表0-9ABCDEFGHJLNOPTUVY.
   0x3F,  0x06,  0x5B,  0x4F,  0x66,  0x6D,  0x7D,  0x07,  0x7F,  0x6F,  //"9"
   0x77,  0x7C,  0x39,  0x5E,  0x79,  0x71,  0X3d,  0x76,  0x0e,  0x38,  //"L"
   0x37,  0x5C,  0x73,  0X31,  0x1c,  0x3e,  0x6e,  0x40,  0X80,  0X49,  //""
   0X48,  0X08,  0X01,  0X41,  0X40,  0X24,  0X36,  0X12,  0X52,  0X64,  //""
   0X70,  0X46,  0x00   //熄灭
};
u8 shu_ma_wei_biao[] =
{//数码位表1-8位,数码管低电平亮,电路板上从左到右为1-8数码管
//如要第8位亮则8位电平:0111 1111,如要第一位亮则8位电平:1111 1110
0x00,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f
};
//unsigned char code KeyCodeMap[4][4] = { //矩阵按键编号到标准键盘键码的映射表
//    { 0x31, 0x32, 0x33, 0x26 }, //数字键1、数字键2、数字键3、向上键
//    { 0x34, 0x35, 0x36, 0x25 }, //数字键4、数字键5、数字键6、向左键
//    { 0x37, 0x38, 0x39, 0x28 }, //数字键7、数字键8、数字键9、向下键
//    { 0x30, 0x1B, 0x0D, 0x27 } //数字键0、ESC 键、 回车键、 向右键
//};

void shu_ma_duan(u8 i)
{
duan = 1;
P0 = duan_xuan_biao[i];
duan = 0;
}

void shu_ma_wei(u8 i)
{
wei = 1;
P0 = i;
wei = 0;
}

void din_shi_chu_zhi()
{
 TH0 = (65535-46082)/256; /*设置初始值,定时50MS 11.059晶振*/
 TL0 = (65535-46082)%256; 
// TH0 = (65536-9174)/256; /*设置初始值,定时10MS 11.059晶振*/
//  TL0 = (65536-9174)%256; 
// TH0 = 0X4b; /*给定时器赋初值,定时50ms,11M晶震*/
// TL0 = 0Xfe;
// TH0 = 0XFC; /*给定时器赋初值,定时1ms,12M晶震*/
//  TL0 = 0X18;
//  TH0 = 0x3C; /*设置初始值,定时50MS,12M晶震*/
//  TL0 = 0xB0; 
}


void din_shi_she_zhi()
{
TMOD = 0X01;  //选择为定时器0模式,工作方式1,仅用TR0打开启动。
    din_shi_chu_zhi(); //设置初始值,定时50MS,12M晶震
    //EA = 1; //打开总中断
    //ET0 = 1; //打开定时器0中断
    TR0 = 1; //启动定时器0
}

void yan_shi_us(u8 i)
{
// while(i--);
u8 x,y;
for(x = i; x > 0; x--)
for(y = 114; y > 0 ; y--);
}

void yan_shi_MS(u16 i)
{
u8 miao = 0, fen = 0, m = 0, f = 0;
while(i)
{
if(TF0==1) 
{
TF0 = 0;
            din_shi_chu_zhi();  
i--; miao++;
}
if(miao == 20)
{
miao = 0; fen++;
shu_ma_wei(0xf7);
shu_ma_duan((++m)%30);
}
if(fen == 60)
{
  fen = 0;
  shu_ma_wei(0xfb);
  shu_ma_duan((++f)%30);
}
}
}

void an_niu(u8 i, u8 x)
{
u8 x_z_i = 1, z_x_i = 1;

while(i--)
{
if(x == 1) 
{  
   zhi_xin = 0;
shu_ma_wei(shu_ma_wei_biao[2]);
shu_ma_duan(x_z_i++);
}
else

   xuan_ze = 0;
shu_ma_wei(shu_ma_wei_biao[1]);
shu_ma_duan(z_x_i++); 
}


if(x_z_i == 10)x_z_i = 0;
if(z_x_i == 10)z_x_i = 0;


yan_shi_MS(9);   
            xuan_ze = 1;  
zhi_xin = 1;    
beep = 0;
yan_shi_MS(9);   
beep = 1;
}
}

void XuanZhe_ZhiXin(u8 x, u8 z)
{
an_niu(x,0);  
an_niu(z,1);  
}

void chan_dou_dong(u8 i)
{
an_niu(2,1);   
yan_shi_MS(100);   
an_niu(2,1);    
yan_shi_MS(100);   
an_niu(2,1);    
yan_shi_MS(i);    
an_niu(1,1);    
}

void qing_xi_you_hua()
{
XuanZhe_ZhiXin(5,3);
yan_shi_MS(300);  
an_niu(1,1);    


XuanZhe_ZhiXin(1,3);


yan_shi_MS(7920);  


XuanZhe_ZhiXin(7,1);
yan_shi_MS(160);  


an_niu(2,1);    
yan_shi_MS(100);  
chan_dou_dong(250);


XuanZhe_ZhiXin(4,1);


yan_shi_MS(2400);  
an_niu(1,1);   
}

void zhuan_pan_zheng_fan(u16 i, u16 x)
{
u8 j = 3;
yan_shi_MS(i);        
while(j--){
an_niu(2,1);    
yan_shi_MS(x);  

an_niu(2,1);   
yan_shi_MS(i);   
}
}

void ce_shi_mo_shi()
{
        xuan_ze = 0;    
zhi_xin = 0;    
yan_shi_MS(150);   
xuan_ze = 1;
zhi_xin = 1; 
yan_shi_MS(150);   
}

void Hong_Gan()
{
dian_yuan = 0;                       
yan_shi_MS(100);                    
dian_yuan = 1;                       
ce_shi_mo_shi();                    

XuanZhe_ZhiXin(5,1);                 
XuanZhe_ZhiXin(3,3);                
yan_shi_MS(180);                     
XuanZhe_ZhiXin(1,1);                 
zhuan_pan_zheng_fan(3750, 600);      

XuanZhe_ZhiXin(7,1);             
        yan_shi_MS(30);                      
an_niu(1,1);                     
XuanZhe_ZhiXin(5,1);                
XuanZhe_ZhiXin(4,1);                 
zhuan_pan_zheng_fan(1950, 600);      

XuanZhe_ZhiXin(7,1);              
yan_shi_MS(30);                     
an_niu(1,1);                      
XuanZhe_ZhiXin(5,1);                 
XuanZhe_ZhiXin(4,1);                 
zhuan_pan_zheng_fan(1050, 600);      
}

void main()
{
u8 hmq = 0;
din_shi_she_zhi();                   
ce_shi_mo_shi();                     

XuanZhe_ZhiXin(2,1);                
an_niu(1,0);                     
qing_xi_you_hua();              

XuanZhe_ZhiXin(6,1);                 
XuanZhe_ZhiXin(1,1);                 
  yan_shi_MS(600);                    
an_niu(1,1);                     
qing_xi_you_hua();              

XuanZhe_ZhiXin(6,1);                 
an_niu(1,0);                      
qing_xi_you_hua();              


Hong_Gan();
Hong_Gan();

XuanZhe_ZhiXin(7,1);                 
        yan_shi_MS(120);                     
an_niu(2,1);                     
yan_shi_MS(120);                    
chan_dou_dong(260);                  
XuanZhe_ZhiXin(5,1);                 
XuanZhe_ZhiXin(4,1);                 


while(1)
{
shu_ma_wei(shu_ma_wei_biao[6]);
shu_ma_duan(14); 
yan_shi_us(2);
shu_ma_wei(shu_ma_wei_biao[7]);
shu_ma_duan(20);
yan_shi_us(2);
shu_ma_wei(shu_ma_wei_biao[8]);
shu_ma_duan(13);
yan_shi_us(2);
if(hmq) beep = 1;
else { beep = 0; yan_shi_MS(100); hmq++;} 
}

}

智能外扩工作描述:

1.三次清洗过程:

第一次为进水并把猫屎铲除的清洗,第二次为加清洁液的清洗,第三次洁净的清洗;

机器原来的铲猫屎是干的时候铲,发现这种方法猫砂损耗非常大,改用进水后铲猫屎,可以减少猫砂损耗.

同时延长了三次清洗过程的时间,洗得更干净没异味,原来机器使用中发现机器没工作时靠近就有异味,机器工作时异味更大,尤其烘干阶段,这种情况网络上查看别人也这么说,甚至有人因此批评该机器和不用该机器.

2.三次烘干过程:由于采用了别人的方法,用便宜的口感差的坏米替换猫砂,我觉得这方法确实很好,因为,米是纯天然的,不会造成环境污染,而且很便宜,更重要的是猫吃了也不担心会生病,给猫看一次病,都得千元左右,给猫治病有时比人更多;

猫砂会夹在猫脚趾间,猫会去舔食,因为猫不会吐出来,所以会都吃掉,毕竟机器原来的猫砂是化学品,就算他们称无毒,不免也有所担心,时间长了会不会对猫有害?就算他们称猫砂是可降解的,但毕竟还是化学品.

改变了猫砂用品用米充当,米是可以短期水泡的,而且是易碎的,因此,烘干就要特别处理,米才能多次使用,否则,米会被水泡软化的,猫刨的时候更容易碎化,从而使米消耗更快,设计时充分考虑这点因素,因此加长烘干时间,确保米材料被彻底烘干,务使彻底干燥,而且现在靠近机器不再有异味,还有一股米的味道,机器烘干时也不再有很大异味飘进房间.

3.清洁液与猫砂的更多自主制作与选择.

从此清洁液自配采用纯天然植物材料制作,猫砂采用更多可替换的纯天然植物材料,永久避开人工化学制品,更加心安.

4.结合WIFI电源插座,更是升级到用手机即可控制机器工作,随心所欲设定机器工作次数与时间,不再受原来机器程序设定的局限.

自上周智能外扩弄好,加入米后,这些天发现猫恋上了它的厕所,老在垫盘上睡觉


醒来后伸懒腰,又躺着不动


我去阳台猫来跟我走,我回房间后,猫又回到垫盘上坐着偷笑.

2018-6-21外出旅游5天回家,发现机器工作正常,没砂没清洁液的也很干净.太爽了,哈哈哈

还有就是告诉我家属,任何时候都可以启动机器进行清洗,我家属常在水池洗,发现她常启动机器清洗.

看到了?砂基本消耗殆尽,我家属的意思是不再添加砂及替代品,通过一段时间观察,猫一样会上厕所,没砂似乎不影响猫使用厕所.

猜你喜欢

转载自blog.csdn.net/xianfajushi/article/details/80154426