自动浇花C51版本
压缩包里含有PCB和最终程序
用来借鉴,不要照抄
Altium Designer画的原理图和PCB图如下:(51hei附件中可下载工程文件)
单片机源程序如下:
- #include "headfile.h"
- #define u8 unsigned char
- #define u16 unsigned int
- sbit dht=P1^1;
- sbit buzzer=P1^7;
- u8 time=0;
- u8 send_flag=0;
- u8 data_count=0;
- u8 key_val;
- u8 show[10]="0123456789";
- u8 rec_data[6]={0,0,0,0,0,0};
- void main()
- {
-
- u8 temp_show[]="temp:00C 00C";
- u8 air_wet[]="air-wet:00%";
- u8 soil_wet[]="soil-wet:00% 00%";
- u8 auto_show[]="mode:auto";
- u8 hand_show[]="mode:hand";
-
- buzzer=0;
-
- OLED_Init();
- timer0_init();
- uart_init();
-
- EA=1;
-
- while(1)
- {
- key_val=matrix_key();
-
- temp_show[5]=show[rec_data[0]/10];
- temp_show[6]=show[rec_data[0]%10];
- temp_show[9]=show[rec_data[3]/10];
- temp_show[10]=show[rec_data[3]%10];
-
- air_wet[8]=show[(rec_data[1]-40)/10];
- air_wet[9]=show[(rec_data[1]-40)%10];
-
- soil_wet[9]=show[rec_data[2]/10];
- soil_wet[10]=show[rec_data[2]%10];
- soil_wet[13]=show[rec_data[4]/10];
- soil_wet[14]=show[rec_data[4]%10];
-
- OLED_P8x16Str(0,0,temp_show);
- OLED_P8x16Str(0,2,air_wet);
- OLED_P8x16Str(0,4,soil_wet);
-
- if(rec_data[5]==1)
- {
- OLED_P8x16Str(0,6,auto_show);
- }
- else if(rec_data[5]==2)
- {
- OLED_P8x16Str(0,6,hand_show);
- }
- }
- }
- void timer0_isr()interrupt 1
- {
- TL0 = 0x00; //??????
- TH0 = 0xEE; //??????
- if(key_val!=0)
- {
- switch(key_val)
- {
- case 1:SBUF='1';data_count=0;break;
- case 2:SBUF='2';data_count=1;break;
- case 3:SBUF='3';data_count=2;break;
- case 4:SBUF='4';data_count=3;break;
- case 5:SBUF='5';data_count=4;break;
- case 6:SBUF='6';data_count=5;break;
- default:break;
- }
- }
- }
- void uart_isr()interrupt 4
- {
- if(TI)
- {
- TI=0;
- }
-
- if(RI)
- {
- RI=0;
- rec_data[data_count]=SBUF;
- }
- }
复制代码
所有资料51hei提供下载:
51-pcb.zip
(1.59 MB, 下载次数: 20)
51-最终版程序.zip
(213.81 KB, 下载次数: 13)
|