程序.doc

0127、宠物定时喂食器设计论文资料

收藏

压缩包内文档预览:
预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图
编号:6122274    类型:共享资源    大小:1.41MB    格式:ZIP    上传时间:2017-11-23 上传人:超****计 IP属地:浙江
4.8
积分
关 键 词:
宠物 定时 喂食 设计 论文 资料
资源描述:
0127、宠物定时喂食器设计论文资料,宠物,定时,喂食,设计,论文,资料
内容简介:
1sbit DS1302CE=P00;sbit DS1302CK=P02;sbit DS1302IO=P01;extern bit DS18B20_Reset(void);extern void DS18B20_Write(unsigned char command);extern unsigned char DS18B20_Read(void);sbit DQ=P10;#define RSCLR P0_5=0/PORTC &= BIT(PORTC0)#define RSSET P0_5=1/PORTC |= BIT(PORTC0)#define RWCLR P0_6=0/PORTC &= BIT(PORTC1)#define RWSET P0_6=1/PORTC |= BIT(PORTC1)#define ENCLR P0_7=0/PORTC &= BIT(PORTC2)#define ENSET P0_7=1/PORTC |= BIT(PORTC2)extern void lcd_delay(unsigned int delaytime);extern void write_lcd_command(unsigned char write_command);extern void write_lcd_data(unsigned char write_data);extern void initize_lcd(void);extern void lcd_displaystr(unsigned char x,unsigned char y,const unsigned char *str);extern void lcd_displaystr_ram(unsigned char x,unsigned char y,unsigned char *str);带温度测量 LCD 显示的实时时钟extern void Init_DS1302_RTC(void);extern unsigned char Read_DS1302_RTC(unsigned char RTC_Address);extern void Write_DS1302_RTC(unsigned char RTC_Address,unsigned char RTC_Data);#include #include 1602LCDDriver.h#include DS18B20Driver.h#include DS1302Driver.h/#include tiaozheng.h#include struct TimerStructunsigned char Year;unsigned char Month;unsigned char Day;unsigned char Week;unsigned char Hour;unsigned char Minute;unsigned char Second; /const unsigned char DATECODE1=Tiaosh;/const unsigned char DATECODE=Date:;/const unsigned char TIMECODE=Time:;const unsigned char DATECODE1=TH;const unsigned char DATECODE2=DF;const unsigned char DATECODE3=DJ;/const unsigned char DATECODE4= ;sbit key1=P12;sbit key2=P13;sbit key3=P14;sbit sound=P11;sbit k1=P03;sbit k2=P04;unsigned char mins,hours,days,months,weeks,years;unsigned char a,b,c,k,flag1,flag2,flag3,flag4,flag5;unsigned char Minute1,Hour1,Day1,Month1,Week1,Year1;unsigned char Minute2,Hour2,Day2,Month2,Week2,Year2;unsigned char DATECODE221= ;unsigned char DATECODE331= ;/struct TimerStruct *Real;struct TimerStruct RealClock;unsigned char DateBuffer1=2006/08/18/5;unsigned char TimeBuffer1= 23:50:00;/const unsigned char DATECODE=Date:;/const unsigned char TIMECODE=Time:;unsigned char DateBuffer=2005/01/01/5;unsigned char TimeBuffer= 00:00:00;unsigned char LCDDisplayBuffer= ;unsigned int SecondCounter;/蜂鸣器测试void fmq_fre(unsigned char f)unsigned int i,j;for(i=f;i0;i-)for(j=248;j0;j-); /延时 0.5MS2void fmq_delay(unsigned char delaytimef)unsigned char j,h;for(j=delaytimef;j0;j-)/for(k=200;k0;k-)for(h=248;h0;h-)sound=1;fmq_fre(1);sound=0;fmq_fre(1);/jdq 的测试void jdq_delay(unsigned char delaytimej)unsigned char k,i,j;for (k=delaytimej;k0;k-)for(i=200;i0;i-)for(j=248;j0;j-); void jdq(void)k1=0;k2=0; /时间调整void tiao_delay(void)unsigned char i,j;for(i=10;i0;i-)for(j=248;j0;j-);unsigned char change( void )while(flag1)if(key2=0) tiao_delay();if(key2=0) a+;if(key3=0) tiao_delay();if(key3=0) a-;switch(k)case 1:mins=a%60;break;case 2: hours=a%24;break;case 3:days=a%32;break;case 4: weeks=a%8;break;case 5: months=a%13;break;case 6: years=a;break; TimeBuffer14=mins%10+0x30; /分个位TimeBuffer13=mins/10+0x30;TimeBuffer11=hours%10+0x30; /时TimeBuffer10=hours/10+0x30;DateBuffer19=days%10+0x30; /日DateBuffer18=days/10+0x30; DateBuffer16=months%10+0x30;/月DateBuffer15=months/10+0x30; DateBuffer111=weeks%10+0x30;/星期 DateBuffer13=years%10+0x30; /年DateBuffer12=years/10+0x30;jdq_delay(2);if(key1=0) tiao_delay();if(key1=0) flag1=0;write_lcd_command(12);lcd_displaystr_ram(0,1,DateBuffer1);lcd_displaystr_ram(1,1,TimeBuffer1);void tiao1(void)mins=mins-mins/16*6;hours=hours-hours/16*6;days=days-days/16*6;3months=months-months/16*6;years=years-years/16*6;TimeBuffer14=mins%10+0x30; /分个位TimeBuffer13=mins/10+0x30;TimeBuffer11=hours%10+0x30; /时TimeBuffer10=hours/10+0x30;DateBuffer19=days%10+0x30; /日DateBuffer18=days/10+0x30; DateBuffer16=months%10+0x30;/月DateBuffer15=months/10+0x30; DateBuffer111=weeks%10+0x30;/星期 DateBuffer13=years%10+0x30; /年DateBuffer12=years/10+0x30;lcd_displaystr_ram(0,1,DateBuffer1);lcd_displaystr_ram(1,1,TimeBuffer1);write_lcd_command(0x0f);write_lcd_command(0x80+0x45);jdq_delay(2);k=1,a=mins,flag1=1;change(); /分write_lcd_command(0x0f);write_lcd_command(0x80+0x42);jdq_delay(2);k+,a=hours,flag1=1;change(); /时write_lcd_command(0x0f);write_lcd_command(0x80+10);jdq_delay(2);k+,a=days,flag1=1;change(); /日void tiao2(void)write_lcd_command(0x0f);write_lcd_command(0x80+12);jdq_delay(2);k+,a=years,flag1=1;change(); /星期write_lcd_command(0x0f);write_lcd_command(0x80+7);jdq_delay(2);k+,a=months,flag1=1;change(); /月write_lcd_command(0x0f);write_lcd_command(0x80+4);jdq_delay(2);k+,a=years,flag1=1;change(); /年mins=mins+mins/10*6;hours=hours+hours/10*6;days=days+days/10*6;months=months+months/10*6;years=years+years/10*6;jdq_delay(5);/调整 1302 时间void tiaozheng(struct TimerStruct *Real)lcd_displaystr(0,14,DATECODE1);mins=Real-Minute;hours=Real-Hour;days=Real-Day;months=Real-Month;weeks=Real-Week;years=Real-Year;tiao1();tiao2();write_lcd_command(0x01);/清屏Write_DS1302_RTC(0x8e,0x00); /写控制Write_DS1302_RTC(0x80,0x00); /写秒Write_DS1302_RTC(0x82,mins); /写分Write_DS1302_RTC(0x84,hours); /写时Write_DS1302_RTC(0x86,days); /写日Write_DS1302_RTC(0x88,months); /写月Write_DS1302_RTC(0x8a,weeks); /写星期Write_DS1302_RTC(0x8c,years); /写年Write_DS1302_RTC(0x8e,0x80); /控制initize_lcd();Init_DS1302_RTC();/调整蜂鸣器定时void dingshif(void)flag3=1;lcd_displaystr(0,14,DATECODE2);mins=Minute1;hours=Hour1;days=Day1;/months=Month1;/weeks=Week1;/years=Year1;4tiao1();tiao_delay();mins=mins+mins/10*6;hours=hours+hours/10*6;days=days+days/10*6;Minute1=mins;Hour1=hours;Day1=days;/Month1=months;/Week1=weeks;/Year1=years;write_lcd_command(0x01);/清屏DATECODE220=&;if(flag4=1) DATECODE330=!;jdq_delay(5);lcd_displaystr(0,14,DATECODE22);lcd_displaystr(0,15,DATECODE33);/调整继电器定时void dingshij(void)flag4=1;lcd_displaystr(0,14,DATECODE3);mins=Minute2;hours=Hour2;days=Day2;/months=Month2;/weeks=Week2;/years=Year2;tiao1();mins=mins+mins/10*6;hours=hours+hours/10*6;days=days+days/10*6;Minute2=mins;Hour2=hours;Day2=days;/ Month2=months;/Week2=weeks;/Year2=years;k1=k2=1;write_lcd_command(0x01); /清屏DATECODE330=!;if(flag3=1) DATECODE220=&;jdq_delay(5);lcd_displaystr(0,14,DATECODE22);lcd_displaystr(0,15,DATECODE33);/蜂鸣器报警void dingshifmq(void) flag3=0;flag2=10;if( RealClock.Hour=Hour1)if( RealClock.Day=Day1)/if( RealClock.Month=Month1)/ if( RealClock.Year=Year1)while(flag2)fmq_delay(1);flag2-;if(key1=0) tiao_delay();if(key1=0) flag2=0;if(key1=0) tiao_delay();if(key1=0) flag2=0;if(key1=0) tiao_delay();if(key1=0) flag2=0;if(key1=0) tiao_delay();if(key1=0) flag2=0;Minute1=Minute1-2;write_lcd_command(0x01);/清屏DATECODE220= ;if(flag4=0) DATECODE330= ;jdq_delay(5);lcd_displaystr(0,14,DATECODE22);lcd_displaystr(0,15,DATECODE33);jdq_delay(10);/继电器取消void dingshijdq(void)flag4=0;if( RealClock.Hour=Hour2)if( RealClock.Day=Day2)/ if( RealClock.Month=Month2)/ if( RealClock.Year=Year2)tiao_delay();k1=0,k2=0;write_lcd_command(0x01);/清屏DATECODE330= ;if(flag3=0) DATECODE220= ;jdq_delay(5);lcd_displaystr(0,14,DATECODE22);5lcd_displaystr(0,15,DATECODE33);Minute2=Minute2-1;/主函数void main(void)jdq();RealClock.Minute=Minute1=Minute2;RealClock.Hour=Hour1=Hour2;RealClock.Day=Day1=Day2;RealClock.Month=Month1=Month2;RealClock.Year=Year1=Year2;flag5=1;fmq_delay(1);initize_lcd();Init_DS1302_RTC();/Write_DS1302_RTC(0x8e,0x00); /写控制Write_DS1302_RTC(0x80,0x00); /写秒/Write_DS1302_RTC(0x82,0x30); /写分/Write_DS1302_RTC(0x84,0x12); /写时/Write_DS1302_RTC(0x86,0x15); /写日/Write_DS1302_RTC(0x88,0x08); /写月/Write_DS1302_RTC(0x8a,0x3); /写星期/Write_DS1302_RTC(0x8c,0x06); /写年/Write_DS1302_RTC(0x8e,0x80); /控制while(1)unsigned int Temp,Temperature;unsigned char TemperatureH;unsigned char TemperatureL;/struct TimerStruct RealClock;while(DS18B20_Reset();DS18B20_Write(0xCC);DS18B20_Write(0xBE); TemperatureL=DS18B20_Read(); /低位TemperatureH=DS18B20_Read(); /高位while(DS18B20_Reset();DS18B20_Write(0xCC);DS18B20_Write(0x44);Temp=TemperatureH*256+TemperatureL; /左移8 位 if(Temp & 0xf800) /去除低 7 位LCDDisplayBuffer0= ;Temp=(Temp)+1;TemperatureL=Temp%256;TemperatureH=Temp/256;Temp=4;Temperature=Temp;/右移四位LCDDisplayBuffer1=Temp/10+0x30;LCDDisplayBuffer2=Temp%10+0x30;Temp=TemperatureL;Temp&=0x000F; /保留低四位Temp*=625; /化小数Temp/=100;LCDDisplayBuffer3=.;LCDDisplayBuffer4=Temp/10+0x30;LCDDisplayBuffer5=Temp%10+0x30; LCDDisplayBuffer6=C;Temp=Read_DS1302_RTC(0x81); /秒RealClock.Second=Temp;TimeBuffer7=Temp%16+0x30;TimeBuffer6=Temp/16+0x30;Temp=Read_DS1302_RTC(0x83); /分RealClock.Minute=Temp;TimeBuffer4=Temp%16+0x30;TimeBuffer3=Temp/16+0x30; /时Temp=Read_DS1302_RTC(0x85);RealClock.Hour=Temp;TimeBuffer1=Temp%16+0x30;TimeBuffer0=Temp/16+0x30;Temp=Read_DS1302_RTC(0x87); /日RealClock.Day=Temp;DateBuffer9=Temp%16+0x30;DateBuffer8=Temp/16+0x30;Temp=Read_DS1302_RTC(0x89); /月RealClock.Month=Temp;DateBuffer6=Temp%16+0x30;DateBuffer5=Temp/16+0x30;Temp=Read_DS1302_RTC(0x8b); /星期RealClock.Week=Temp;DateBuffer11=Temp%16+0x30;Temp=Read_DS1302_RTC(0x8d); /年RealClock.Year=Temp;DateBuffer3=Temp%16+0x30;6DateBuffer2=Temp/16+0x30;lcd_displaystr_ram(0,1,DateBuffer);lcd_displaystr_ram(1,1,TimeBuffer);lcd_displaystr_ram(1,sizeof(TimeBuffer),LCDDisplayBuffer);if(key1=0) tiao_delay();if(key1=0) tiaozheng(&RealClock);if(key2=0) tiao_delay();if(key2=0) dingshif();if(key3=0) dingshij();if(key3=0) tiao_delay();if(RealClock.Minute=Minute1) dingshifmq();if(RealClock.Minute=Minute2) dingshijdq();if(RealClock.Minute=0x00) if(flag5=1) fmq_delay(2),flag5=0;if(RealClock.Minute=0x02) flag5=1;/if(Temperature=0x3500) fmq_delay(1);/if(Temperature#include 1602LCDDriver.hvoid lcd_delay(unsigned int delaytime)while(delaytime)delaytime-;void write_lcd_command(unsigned char write_command)lcd_delay(25);RSCLR;RWCLR;/LCDPORT=write_command;P2_0=(bit)(write_command & 0x80); write_command+=write_command;P2_1=(bit)(write_command & 0x80); write_command+=write_command;P2_2=(bit)(write_command & 0x80); write_command+=write_command;P2_3=(bit)(write_command & 0x80); write_command+=write_command;P2_4=(bit)(write_command & 0x80); write_command+=write_command;P2_5=(bit)(write_command & 0x80); write_command+=write_command;P2_6=(bit)(write_command & 0x80); write_command+=write_command;P2_7=(bit)(write_command & 0x80); ENSET;ENCLR;void write_lcd_data(unsigned char write_data)lcd_delay(25);RSSET;RWCLR;/LCDPORT=write_data;P2_0=(bit)(write_data & 0x80); write_data += write_data;P2_1=(bit)(write_data & 0x80); write_data+=write_data;P2_2=(bit)(write_data & 0x80); write_data+=write_data;P2_3=(bit)(write_data & 0x80); write_data+=write_data;P2_4=(bit)(write_data & 0x80); write_data+=write_data;P2_5=(bit)(write_data & 0x80); write_data+=write_data;P2_6=(bit)(write_data & 0x80); write_data+=write_data;P2_7=(bit)(write_data & 0x80); ENSET;ENCLR;void initize_lcd(void)unsigned char i;ENCLR;for(i=200;i0;i-)lcd_delay(248);write_lcd_command(0x3f);7for(i=4;i0;i-)lcd_delay(248);write_lcd_command(0x3f);write_lcd_command(0x0f);write_lcd_command(0x01);for(i=4;i0;i-)lcd_delay(248);write_lcd_command(0x06);void lcd_displaystr(unsigned char x,unsigned char y,const unsigned char *str)switch(x)case 0:write_lcd_command(0x80+y);break;case 1:write_lcd_command(0xc0+y);break;while(*str)write_lcd_data(*str);str+;void lcd_displaystr_ram(unsigned char x,unsigned char y,unsigned char *str)switch(x)case 0:write_lcd_command(0x80+y);break;case 1:write_lcd_command(0xc0+y);break;while(*str)write_lcd_data(*str);str+;DS18B20Driver#include #include #include DS18B20Driver.hbit DS18B20_Reset(void)unsigned char i;DQ=0;/for(i=255;i0;i-);for(i=255;i0;i-);DQ=1;/ for(i=60;i0;i-);for(i=60;i0;i-);return(DQ);/for(i=200;i0;i-);for(i=200;i0;i-);void DS18B20_Write(unsigned char com
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
提示  人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:0127、宠物定时喂食器设计论文资料
链接地址:https://www.renrendoc.com/p-6122274.html

官方联系方式

2:不支持迅雷下载,请使用浏览器下载   
3:不支持QQ浏览器下载,请用其他浏览器   
4:下载后的文档和图纸-无水印   
5:文档经过压缩,下载后原文更清晰   
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

网站客服QQ:2881952447     

copyright@ 2020-2025  renrendoc.com 人人文库版权所有   联系电话:400-852-1180

备案号:蜀ICP备2022000484号-2       经营许可证: 川B2-20220663       公网安备川公网安备: 51019002004831号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知人人文库网,我们立即给予删除!