找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2138|回复: 0
收起左侧

单片机自动浇花(含主从通信)源程序原理图PCB文件

[复制链接]
ID:503624 发表于 2020-5-21 14:08 | 显示全部楼层 |阅读模式
自动浇花C51版本

压缩包里含有PCB和最终程序

用来借鉴,不要照抄

Altium Designer画的原理图和PCB图如下:(51hei附件中可下载工程文件)
51hei.png 51hei.png

单片机源程序如下:
  1. #include "headfile.h"

  2. #define u8 unsigned char
  3. #define u16 unsigned int

  4. sbit dht=P1^1;
  5. sbit buzzer=P1^7;


  6. u8 time=0;
  7. u8 send_flag=0;
  8. u8 data_count=0;

  9. u8 key_val;

  10. u8 show[10]="0123456789";
  11. u8 rec_data[6]={0,0,0,0,0,0};

  12. void main()
  13. {
  14.         


  15.         u8 temp_show[]="temp:00C 00C";
  16.         u8 air_wet[]="air-wet:00%";
  17.         u8 soil_wet[]="soil-wet:00% 00%";

  18.         u8 auto_show[]="mode:auto";
  19.         u8 hand_show[]="mode:hand";
  20.         
  21.         buzzer=0;
  22.         
  23.         OLED_Init();
  24.         timer0_init();
  25.         uart_init();
  26.         
  27.         EA=1;
  28.         
  29.         while(1)
  30.         {
  31.                 key_val=matrix_key();
  32.                
  33.                 temp_show[5]=show[rec_data[0]/10];
  34.                 temp_show[6]=show[rec_data[0]%10];
  35.                 temp_show[9]=show[rec_data[3]/10];
  36.                 temp_show[10]=show[rec_data[3]%10];
  37.                
  38.                 air_wet[8]=show[(rec_data[1]-40)/10];
  39.                 air_wet[9]=show[(rec_data[1]-40)%10];
  40.                
  41.                 soil_wet[9]=show[rec_data[2]/10];
  42.                 soil_wet[10]=show[rec_data[2]%10];
  43.                 soil_wet[13]=show[rec_data[4]/10];
  44.                 soil_wet[14]=show[rec_data[4]%10];
  45.                
  46.                 OLED_P8x16Str(0,0,temp_show);
  47.                 OLED_P8x16Str(0,2,air_wet);
  48.                 OLED_P8x16Str(0,4,soil_wet);
  49.                
  50.                 if(rec_data[5]==1)
  51.                 {
  52.                         OLED_P8x16Str(0,6,auto_show);
  53.                 }
  54.                 else if(rec_data[5]==2)
  55.                 {
  56.                         OLED_P8x16Str(0,6,hand_show);
  57.                 }
  58.         }
  59. }

  60. void timer0_isr()interrupt 1
  61. {
  62.         TL0 = 0x00;                //??????
  63.         TH0 = 0xEE;                //??????
  64.         if(key_val!=0)
  65.         {
  66.                 switch(key_val)
  67.                 {
  68.                         case 1:SBUF='1';data_count=0;break;
  69.                         case 2:SBUF='2';data_count=1;break;
  70.                         case 3:SBUF='3';data_count=2;break;
  71.                         case 4:SBUF='4';data_count=3;break;
  72.                         case 5:SBUF='5';data_count=4;break;
  73.                         case 6:SBUF='6';data_count=5;break;
  74.                         default:break;
  75.                 }
  76.         }
  77. }

  78. void uart_isr()interrupt 4
  79. {
  80.         if(TI)
  81.         {
  82.                 TI=0;
  83.         }
  84.         
  85.         if(RI)
  86.         {
  87.                 RI=0;
  88.                 rec_data[data_count]=SBUF;
  89.         }
  90. }
复制代码
51hei.png
所有资料51hei提供下载:
51-pcb.zip (1.59 MB, 下载次数: 20)

评分

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

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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