找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2209|回复: 1
打印 上一主题 下一主题
收起左侧

51单片机模拟洗衣机的查询,预定(蓝牙,定时器)帮别人做的设计源码

[复制链接]
跳转到指定楼层
楼主
ID:251195 发表于 2018-4-20 20:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近闲的无聊,就接了5个系里面同学的毕业设计,这几天加班累得我,当然是收费的,都是同学,差不多就500一个,然而班级一个同学让我帮他调设备,也是网上买的,居然花了2800,社会,社会........老子做了5个,还没人家一个赚的多,小猪佩奇送给自己安慰一下自己。。。。。。。。废话不想说,直接看代码吧.....都是很简单的,很多东西都是现成的,我就是为了骗黑币。。。。。。暴露自己了

单片机源程序如下:
  1. #include <reg52.h>
  2. #include <intrins.h>

  3. #define uint unsigned int
  4. #define uchar unsigned char
  5. typedef bit BOOL;
  6.         
  7. unsigned int sec = 0,min = 0,aa,tmp;
  8. unsigned char ss,sg,ms,mg,count,count1;

  9. sbit key1 = P0^0; //系统启动按键
  10. sbit key2 = P0^1; //投币三元按键
  11. sbit beep = P3^7; //蜂鸣器,洗衣完成
  12. sbit led1 = P0^2; //等待运行灯
  13. sbit led2 = P0^3; //系统运行灯
  14. sbit led3 = P0^4; //网上预约灯

  15. sbit rs=P0^7;
  16. sbit rw=P0^6;
  17. sbit lcden=P0^5;

  18. char code dis1 []={"Waiting To Run!"};
  19. char code dis2 []={"system running!"};
  20. char code dis3 []={"time remaining:"};

  21. void delay_ms(uint z)
  22. {
  23.         uint x,y;
  24.         for(x=z;x>0;x--)
  25.                 for(y=110;y>0;y--);
  26. }

  27. void send(unsigned char a)        //单字节发送函数
  28. {                                                    //注意:若单片机TXD(P3.1)无上拉能力,必须在P3.1端接上拉电阻
  29.                                 ES =0;
  30.         TI=0;        
  31.         SBUF=a;
  32.         while(TI==0);
  33.         TI=0;
  34.                                 ES = 1;
  35. }


  36. void send_str(unsigned char *str)  //发送字符串函数
  37. {
  38.         while(*str != '\0')
  39.                 send(*str++);
  40. }

  41. void ctrl()                            //接收处理函数
  42. {
  43.         switch(tmp)
  44.                 {
  45.                         case '1':      //查询洗衣机是否被预约
  46.                         if(count1 == 0)
  47.                                 {
  48.                                         send_str(" the system is not running\n! ");
  49.                                 }
  50.                                 else
  51.                                 {
  52.                                         send_str(" the system is running\n! ");
  53.                                 }
  54.                         
  55.                         break;
  56.                         
  57.                         case '2':      //查询洗衣机剩余洗衣时间
  58.                                 if(count1 == 0)
  59.                                 {
  60.                                         send_str(" time remaining: 00:00\n");
  61.                                 }
  62.                                 else
  63.                                 {
  64.                                         send_str(" time remaining: \n");
  65.                                         send((unsigned char) 2-ms+'0');
  66.                                         send((unsigned char) 9-mg+'0');
  67.                                         send(':');
  68.                                         send((unsigned char) 5-ss+'0');
  69.                                         send((unsigned char) 9-sg+'0');
  70.                                         send('\n');
  71.                                 }

  72.             break;

  73.                         case '3':      //预定洗衣机
  74.                         led3 = 1;
  75.                         count1 = 1;
  76.             send_str(" the machines is reserved by you!\n");
  77.             break;

  78.                         case '4':       //启动洗衣机
  79.                                                 led2 = 1;
  80.                                                 led3 = 0;
  81.             count = 3;
  82.             break;

  83.                 default:                  
  84.             break;
  85.    }
  86. }

  87. void init(void)
  88. {
  89.         ES=0;                                //关中断
  90.   SCON = 0x50;                        // REN=1允许串行接受状态,串口工作模式1,
  91.                                       //10位UART(1位起始位,8位数据位,1位停止位,无奇偶校验),波特率可变
  92.         TMOD = 0x21;
  93.         TH0 = (65535-50000)/256;
  94.         TL0 = (65535-50000)%256;
  95.         
  96.         TH1=TL1=0xFD;                       // 波特率9600 (本次测试采用晶振为11.0592)
  97.         PCON &= 0x7f;                       // 波特率不倍增
  98.         TR1 = 1;                            //定时器1开始工作,产生波特率
  99.                                       //发送标志位置0
  100.   TI=0;                               //接收标志位置0
  101.   RI=0;
  102.   ES=1;
  103.         
  104.         
  105.         EA = 1;                             //开总中断
  106.         ET0 = 1;                                                                                                                //开定时器中断

  107. }
  108. void write_com(uchar com)
  109. {
  110.         rs=0;
  111.         lcden=0;
  112.         P2=com;
  113.         delay_ms(5);
  114.         lcden=1;
  115.         delay_ms(5);
  116.         lcden=0;        
  117. }

  118. void write_date(uchar date)
  119. {
  120.         rs=1;
  121.         lcden=0;
  122.         P2=date;
  123.         delay_ms(5);
  124.         lcden=1;
  125.         delay_ms(5);
  126.         lcden=0;        
  127. }

  128. void lcd_init()
  129. {
  130.         rw=0;
  131.         lcden=0;
  132.         write_com(0x38);
  133.         write_com(0x0c);
  134.         write_com(0x06);
  135.         write_com(0x01);        
  136. }
  137. void write_fm(uchar add,uchar data1,uchar data2)
  138. {        
  139.         write_com(0x80+0x40+add);
  140.         write_date(0x30+data1);
  141.         write_date(0x30+data2);
  142. }


  143. void main()
  144. {
  145.                 char i = 0;
  146.                
  147.                 init();   
  148.                 lcd_init();

  149.                 led1 =1;
  150.                 led2 =0;
  151.                 led3 =0;
  152.                 beep = 0;
  153.                 key1 = 1;
  154.                 key2 = 1;

  155.                 count1 = 0;  //0为系统没有运行;1为系统已经被预定
  156.         
  157.                 write_com(0x80);
  158.                 i=0;
  159.                 while (dis1 [i]!='\0')
  160.                 {
  161.                         write_date(dis1 [i]);
  162.                         i++;        
  163.                 }
  164.                
  165.                 while(key1 == 1)  
  166.                 {
  167.                                 if(count == 3)
  168.                                 {
  169.                                         count = 0;
  170.                                         led2  = 1;
  171.                                         write_com (0x01);
  172.                                         while(1)
  173.                                         {                                       
  174.                                                 TR0 = 1;                   //开启定时器
  175.                                                 ss = sec/10;
  176.                                                 sg = sec%10;
  177.                                                 ms = min/10;
  178.                                                 mg = min%10;

  179.                                                 write_com(0x80);
  180.                                                 i=0;
  181.                                                 while (dis1 [i]!='\0')
  182.                                                 {
  183.                                                         write_date(dis3 [i]);
  184.                                                         i++;        
  185.                                                 }
  186.                                                 
  187.                                                 write_fm(4,2-ms,9-mg);
  188.                                                 write_date(':');        
  189.                                                 write_fm(7,5-ss,9-sg);
  190.                                                 
  191.                                                 if(ms == 2&&mg == 9&&ss == 5&&sg == 9)
  192.                                                 {
  193.                                                                 ET0 = 0;
  194.                                                                 TR0 = 0;                   //关定时器
  195.                                                 }                                       
  196.                                         }      
  197.                                 }
  198.                         }        
  199.                
  200.                         
  201.                 if(key1 == 0)
  202.                 {
  203.                         delay_ms(20);
  204.                         write_com (0x01);
  205.                          while(key1 != 1)
  206.                          {
  207.                                  led1 = 0;
  208.                                 write_com(0x80);                                                
  209.                                 i=0;
  210.                                 while (dis2 [i]!='\0')
  211.                                 {
  212.                                         write_date(dis2 [i]);
  213.                                         i++;        
  214.                                 }
  215.                                 count1 = 1;                   //人工投币        
  216.                                 if(key2 == 0)
  217.                                 {
  218.                                         delay_ms(20);
  219.                                         if(key2 == 0)
  220.                                         {
  221.                                                 count++;
  222.                                                 while(!key2);
  223.                                         }                                                
  224.                                 }
  225.                                 if(count == 3)
  226.                                 {
  227.                                         count = 0;
  228.                                         led2  = 1;
  229.                                         write_com (0x01);
  230.                                         while(1)
  231.                                         {                                       
  232.                                                 TR0 = 1;                   //开启定时器
  233.                                                 ss = sec/10;
  234.                                                 sg = sec%10;
  235.                                                 ms = min/10;
  236.                                                 mg = min%10;

  237.                                                 write_com(0x80);
  238.                                                 i=0;
  239.                                                 while (dis1 [i]!='\0')
  240.                                                 {
  241.                                                         write_date(dis3 [i]);
  242.                                                         i++;        
  243.                                                 }
  244.                                                 
  245.                                                 write_fm(4,2-ms,9-mg);
  246.                                                 write_date(':');        
  247.                                                 write_fm(7,5-ss,9-sg);
  248.                                                 
  249.                                                 if(ms == 2&&mg == 9&&ss == 5&&sg == 9)
  250.                                                 {
  251.                                                                 ET0 = 0;
  252.                                                                 TR0 = 0;                   //关定时器
  253.                                                 }                                       
  254.                                         }      
  255.                                 
  256.                                 }
  257.                         }
  258.                 }
  259.                
  260. }


  261. void timer0() interrupt 1
  262. ……………………

  263. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
赵桂黎.rar (44.86 KB, 下载次数: 40)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:489376 发表于 2019-6-19 17:43 | 只看该作者
2800,基本操作啦
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表