# 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小时的时间进行处理。

09-22 99
11-05 4321
12-31 2129
04-28 1231
12-27 695
10-28 23
02-11 1576

### “相关推荐”对你有帮助么？

• 非常没帮助
• 没帮助
• 一般
• 有帮助
• 非常有帮助

¥2 ¥4 ¥6 ¥10 ¥20

1.余额是钱包充值的虚拟货币，按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载，可以购买VIP、C币套餐、付费专栏及课程。