终于自学单片机开发,写了这个猫洁易智能外扩程序,免清洁液永久清洗,在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天回家,发现机器工作正常,没砂没清洁液的也很干净.太爽了,哈哈哈

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

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

2019-5-3今晚发现猫前2脚进了猫厕又退出来,查看果然盆内有水,排水又堵塞了,启动机器手动按到1+4灯亮进行人工排水,发现水排不出来,采用从排水管反灌法,发现排出毛球,前2次反灌排水不是很顺畅,进行多次反灌直到观察排水顺畅,盆内水全排干后,让机器重新运行一次,观察排水情况正常,采用反灌法可以不要拆除机器,比较方便,也不至于弄的脏水污染别处。另外发现后来启动按钮不起作用了,只好等程序运行到排水时拔掉信号线进行多次反灌,花了将近1小时的时间进行处理。

51单片机自学--改造我的机器相关推荐

  1. 51单片机自学--交通红绿灯模拟

    51单片机自学--交通红绿灯模拟(黄灯闪烁与不闪两种模式) ABC东西红黄绿DEF南北红黄绿S时间K选择模式 或许看这文章的是初学者,有些话还是要说的,就是要使用本代码,需要把对应的端口进行更改为你连 ...

  2. 51单片机自学笔记定时器中断

    目录 相关寄存器 中断允许寄存器IE 中断优先级寄存器IP 定时器/计数器控制寄存器TCON 定时器/计数器工作模式寄存器TMOD 程序 代码 计算定时器初值 中断函数写法 相关寄存器 中断允许寄存器 ...

  3. 51单片机自学笔记(1)——定时计数器

    1.定时/计数器的介绍   51单片机一共有两个16位的 定时/计数 器--T0,T1.其数据均存放于特殊功能寄存器(SFR)中.T0的16位数据分两部分存放,高8位存放在TH0(其字节地址位8CH) ...

  4. 51单片机自学笔记(4)——MCS-51存储器的扩展

      为什么要进行存储器的扩展呢?就是因为单片机自带的储存空间不够.本文将以80C31单片机来举例讲解存储器的扩展,80C31内置128字节数据存储器(RAM),片内并无程序存储器(ROM),需外接RO ...

  5. 51单片机自学--编译器错误提示该如何查找问题

    常有人发生错误后不知所措,一筹莫展,花费很多时间,无法解决问题,到处询问,听人乱指点而无法解决问题,这里给段聊天记录.

  6. 51单片机自学--可连续运算的加减乘除数码管显示计算器

    教程及网络上大部分只有单一简单的4则运算的例子,这里写一个可以连续运算功能的,清零则重新开始.代码如下: 可在=运算后还能连续运算,除非清零从新开始,都可以连续运算,如:1+2+3+4+5+6+7+8 ...

  7. 51单片机编码自学_这是9个月的自学式编码看起来像什么

    51单片机编码自学 by Stephen Mayeux 斯蒂芬·马约(Stephen Mayeux) 这是9个月的自学式编码看起来像什么 (Here's What 9 Months of Self-T ...

  8. 自学51单片机 - 矩阵按键实验

    自学51单片机 - 矩阵按键实验 1.开发板原理图 2.程序 2.1 行列式扫描法 2.2 线翻转扫描法 3.结果 1.开发板原理图 2.程序 2.1 行列式扫描法 /**************** ...

  9. 太原理工大学机器人团队20天学习打卡day14(51单片机初步)

    太原理工大学机器人团队20天学习打卡day14(51单片机初步) 不定期更新. (我这个氵比又来更新了,虽然貌似没啥人看,今天内容又是前些天内容的升级 我们将制作一个流水灯) 进一步学习如何让8个小灯 ...

最新文章

  1. SSH远程访问及控制
  2. Linux下的多进程间共享资源的互斥访问
  3. Django 一些 简单 配置
  4. Java语言基础学习笔记——基础语法
  5. php mysql installed_CentOS在使用yum install php-mysql安装php时报错的解决方法
  6. 如何使用JavaScript控制台改进工作流程
  7. docker中linux用户名密码,linuxea:尽可能不在docker镜像中嵌入配置或者密码
  8. java 执行oracle命令_利用oracle存储过程执行操作系统命令
  9. 二十一、日期Date类型
  10. Jenkins实现生产环境部署文件的回滚操作(Windows)
  11. 【0x50「动态规划」例题】LCIS【最长公共上升子序列】
  12. 设计模式--模板方法模式(12)
  13. python培训学费多少钱-福州Python培训大概多少钱?
  14. 如何使用ListView分页
  15. QQ和MSN 在线代码
  16. C#中常用对话框类详解
  17. Linux电脑怎么接入arm开发板,PC机与ARM开发板之间实现NFS共享
  18. [Angular] - 01 Architecture and workflow
  19. 阿里妈妈称日均覆盖人数破7000万
  20. 冰河浅析 - 揭开木马的神秘面纱(下)

热门文章

  1. [幻灯更新]9月27日-9月28日剔除“伪创新”和“无领域”的领域驱动设计-网络公开课
  2. mysql 全局权限_mysql的大局权限GLOBAL PRIVILEGES
  3. 大型智慧校园系统源码 智慧校园源码 Android电子班牌源码
  4. 讨论主题:人工智能对人类社会发展的影响(弊大于利)
  5. 客户的网络环境或服务器的监控
  6. 网络基础知识--IP地址
  7. Lighting - 光的亮度衰减
  8. 123457123456#2#----com.MC.ShiZi365--前拼后广--儿童识字Game-mc22222222222222222
  9. 泰克电输运/物性表征/量子材料/超导材料测试方案
  10. docker中关于端口绑定的问题