生活随笔
收集整理的這篇文章主要介紹了
第四届蓝桥杯单片机省赛 自动灌溉系统
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
第四屆藍橋杯單片機省賽 自動灌溉系統
新手、所用驅動為大賽提供驅動
#include<stc15f2k60s2.h>
#include "intrins.h"#define somenop {_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();}?? ?
#define SlaveAddrW 0xA0
#define SlaveAddrR 0xA1
#define uchar unsigned char
#define uint unsigned int//總線引腳定義
sbit SDA2= P2^1;? /* 數據線 */
sbit SCL = P2^0;? /* 時鐘線 */
sbit SCK=P1^7;?? ??? ?
sbit SDA1=P2^3;?? ??? ?
sbit RST = P1^3;?? // DS1302復位#ifndef _IIC_H
#define _IIC_H//函數聲明
void IIC_Start(void);
void IIC_Stop(void); ?
void IIC_Ack(bit ackbit);
void IIC_SendByte(unsigned char byt);
bit IIC_WaitAck(void); ?
unsigned char IIC_RecByte(void);#endif#ifndef __DS1302_H
#define __DS1302_Hvoid Write_Ds1302_Byte(unsigned? char temp);
void Write_Ds1302( unsigned char address,unsigned char dat );
unsigned char Read_Ds1302 ( unsigned char address );#endif
?
uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff};
uchar shijian[]={0,30,8,0,0,0,0};//s,m,h,
uchar yi,er,san,si,wu,liu,qi,ba;
uchar shidu,fazhi;
bit s6=0,jia=0,jian=0,status=0,kai=1,jidianqi=0;?? ? //status切換手動自動void allinit(void);
void delayms(uint ms);
void display1(uchar yi,uchar er);
void display2(uchar san,uchar si);
void display3(uchar wu,uchar liu);
void display4(uchar qi,uchar ba);
void keyscan(void);
void keyscan16(void);
uchar AD_read(uchar add);
uchar EEPROM_read(uchar add);
void EEPROM_write(uchar add,uchar dat);
void DS_init(void);
void DS_get(void);void main(void)
{?? ?allinit();DS_init();P2=0x80;P0=0xfe;?? ?yi=0;er=8;san=10;si=3;wu=0;liu=10;qi=0;ba=0;//?? ?EEPROM_write(0x10,50);?? ?? //運行一次后可注釋
//?? ?delayms(5);fazhi=EEPROM_read(0x10);while(1){ ?DS_get();shidu=AD_read(0x03);if(status==0){if(shidu<fazhi){P2=0xa0;P0=0x10;?? ??? ??? ??? ??? ?//打開}else{P2=0xa0;P0=0x00;?? ??? ?//繼電器關閉}if(s6==1){if(jia==1){jia=0;fazhi=fazhi+1;}if(jian==1){jian=0;fazhi=fazhi-1;}yi=10;er=10;san=11;si=11;wu=11;liu=11;qi=fazhi/10;ba=fazhi%10;}else if(s6==0){yi=shijian[2]/10;er=shijian[2]%10;san=10;si=shijian[1]/10;wu=shijian[1]%10;liu=11;qi=shidu/10;ba=shidu%10;?? ?}}else if(status==1){if((shidu<fazhi)&&(kai==0)){if(jidianqi==1){P2=0xa0;P0=0x10;}else if(jidianqi==0){P2=0xa0;P0=0x00;}}if((shidu<fazhi)&&(kai==1)){if(jidianqi==1){P2=0xa0;P0=0x50;}else if(jidianqi==00){P2=0xa0;P0=0x40;}}else if(shidu>fazhi){if(jidianqi==1){P2=0xa0;P0=0x10;}else if(jidianqi==0){P2=0xa0;P0=0x00;}}yi=shijian[2]/10;er=shijian[2]%10;san=10;si=shijian[1]/10;wu=shijian[1]%10;liu=11;qi=shidu/10;ba=shidu%10;?? ?}//?? ??? ?EEPROM_write(0x10,220);
//?? ??? ?delayms(5);
//?? ??? ?fazhi=EEPROM_read(0x10);
//?? ??? ?liu=fazhi/100;qi=fazhi%100/10;ba=fazhi%10;//?? ??? ?shidu=AD_read(0x03);//RB2-->0x03
//?? ??? ?liu=shidu/100;qi=shidu%100/10;ba=shidu%10;display1(yi,er);display2(san,si);display3(wu,liu);display4(qi,ba);keyscan();}
}void keyscan(void)
{if(P30==0){?? ??? ?delayms(5);if(P30==0){if(status==0){status=1;P2=0x80;P0=0xFD;}else if(status==1){status=0;P2=0x80;P0=0xfe;}}while(!P30);}if(P31==0){?? ??? ?delayms(5);if(P31==0){?? ?if(status==0){if(s6==0){s6=1;}else if(s6==1){s6=0;EEPROM_write(0x10,fazhi);;}else if(status==1){kai=~kai;}}}while(!P31);}if(P32==0){?? ??? ?delayms(5);if(P32==0){if(status==0){jia=1;}else if(status==1){jidianqi=1;}}while(!P32);}if(P33==0){?? ??? ?delayms(5);if(P33==0){if(status==0){jian=1;}if(status==1){jidianqi=0;}?? ??? ??? ?}while(!P33) ;}
}void allinit(void)
{P2=0xa0;?? ??? //關閉蜂鳴器繼電器P0=0x00;P2=0x80;?? ??? ? //關閉LED燈P0=0xff;P2=0xc0;?? //打開數碼管位選P0=0xff;P2=0xff;P0=0xff;?? //關閉所有數碼管
}void display1(uchar yi,uchar er)
{P2=0xc0;?? ?//位選P0=0x01;?? ? //選擇第一個數碼管P2=0xff;??? //段選P0=tab[yi];delayms(1);P2=0xc0;P0=0x02;?? ?P2=0xff;?? ?P0=tab[er];delayms(1);
}void display2(uchar san,uchar si)
{P2=0xc0;?? ?P0=0x04;?? ?P2=0xff;?? ?P0=tab[san];delayms(1);P2=0xc0;P0=0x08;?? ?P2=0xff;?? ?P0=tab[si];delayms(1);
}void display3(uchar wu,uchar liu)
{P2=0xc0;?? ?P0=0x10;?? ?P2=0xff;?? ?P0=tab[wu];delayms(1);P2=0xc0;P0=0x20;?? ?P2=0xff;?? ?P0=tab[liu];delayms(1);
}void display4(uchar qi,uchar ba)
{P2=0xc0;?? ?P0=0x40;?? ?P2=0xff;?? ?P0=tab[qi];delayms(1);P2=0xc0;P0=0x80;?? ?P2=0xff;?? ?P0=tab[ba];delayms(1);
}void delayms(uint ms)
{uint i,j;for(i=ms;i>0;i--)for(j=845;j>0;j--);}
?
?
總結
以上是生活随笔為你收集整理的第四届蓝桥杯单片机省赛 自动灌溉系统的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。