基于51单片机的温湿度及万年历设计 课程设计 0x00,0x03,0x81,0xB7,0x80,0x00,0x07,0xE0,0x06,0x38,0x01,0x80,0x00,0x38,0x3E,0x00, 0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x0C,0x03,0x80,0x00,0x04,0x20,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x40,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x40,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x40,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x40,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00, 0x00,0x00,0xE0,0xC6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00, 0x00,0xFE,0xC0,0xC6,0x01,0x81,0x83,0xC1,0x80,0x00,0x00,0x00,0x00,0x01,0x00,0x00, 0x00,0x1F,0xC0,0xC3,0xC3,0x83,0x86,0xC3,0x80,0x00,0x00,0x00,0xE0,0x0F,0x80,0x00, 0x01,0xBF,0xC0,0xFF,0x87,0x87,0x86,0x67,0x80,0x00,0x00,0x01,0x98,0x18,0x80,0x00, 0x00,0xFF,0xC0,0xFF,0x01,0x81,0x8E,0x61,0x80,0x00,0x00,0x02,0x04,0x20,0x60,0x00, 0x00,0xFF,0xC0,0xF9,0x81,0x81,0x8C,0x61,0x80,0x00,0x00,0x04,0x04,0x20,0x20,0x00, 0x00,0xFE,0xC1,0xF3,0x01,0x81,0x8E,0x61,0x80,0x00,0x00,0x04,0x02,0xE0,0x20,0x00, 0x01,0x9C,0xC3,0xDE,0x01,0x81,0x86,0x61,0x80,0x00,0x00,0x04,0x01,0x80,0x20,0x00, 0x00,0x36,0xC0,0xCC,0x01,0x81,0x86,0xC1,0x80,0x00,0x00,0x08,0x01,0x80,0x30,0x00, 0x00,0x00,0xC1,0xFF,0xC1,0x81,0x83,0x81,0x80,0x00,0x00,0x08,0x19,0xE0,0x10,0x00, 0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x2E,0x90,0x10,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x43,0x10,0x10,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x43,0x08,0x10,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x43,0x08,0x10,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x40,0x08,0x30,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x40,0x08,0x20,0x00, 0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x40,0x08,0x20,0x00, 0x00,0x0C,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x40,0x08,0x20,0x00, 0x00,0x7E,0x00,0xDE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x20,0x18,0x60,0x00, 0x00,0x1E,0x00,0xD8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x20,0x10,0x40,0x00, 0x00,0x3F,0x81,0xDE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x30,0x20,0x40,0x00, 0x00,0x66,0xC0,0xDB,0x80,0x07,0x00,0x00,0x00,0x00,0x00,0x01,0x10,0x20,0x80,0x00, 0x00,0x3E,0x00,0xDF,0x87,0xFC,0x00,0x00,0x00,0x00,0x00,0x01,0x88,0x60,0x80,0x00, 0x00,0x0C,0xC1,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x41,0x00,0x00, 0x01,0xFF,0x83,0xFB,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4E,0x82,0x00,0x00, 0x00,0x0C,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x43,0x02,0x00,0x00, 0x00,0x0C,0x00,0xCC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x0E,0x00,0x00, 0x00,0x1C,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x08,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x30,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x20,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0xC0,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, };//显示一幅图片(可以是任意一张图片) void delay_50us(uchar z);
24
基于51单片机的温湿度及万年历设计 课程设计 void delay_50ms(uchar z); void delay_1s(uchar z);
void write_12864com(uchar com); void write_12864dat(uchar dat); void ini(); void clear();
void picture( uchar*p); void display1();
void display2(); //显示温湿度 void Delay (uint z) ; void delay_10us() ; void jieshou (void) ; void read (void) ;
void write_1302_byte(uchar dat); void write_1302(uchar add,uchar dat); uchar read_1302(uchar add); void set_rct();
void read_rct(void) void time_pros(void);
void display3();//显示日期 void display4();//显示时间 void tiaoshi();//时间调整
void main() {
ini() ; //液晶初始化 set_rct(); //对时 clear(); //清屏
picture(image); // 显示图片 delay_1s(100); clear(); //清屏 while(1) {
//display1();//显示第一行汉字 read(); //读取温湿度
display2() ;//显示温湿度(第二行) tiaoshi ();
read_rct();//读取时间
time_pros(); //时间处理函数
display3(); //用来显示日期 (第三行) display4(); //用来显示时间(第四行) }
void delay_50us(uchar z) {
25
;
}
基于51单片机的温湿度及万年历设计 课程设计 uint j; for(;z>0;z--)
for (j=19;j>0;j--); }
void delay_50ms(uchar z) { uint j;
for(;z>0;z--)
for (j=6000;j>0;j--); }
void delay_1s(uchar z) { uint i,j,k;
for (i=z;i>0;i--) for(j=600;j>0;j--) for(k=10;k>0;k--); }
void write_12864com(uchar com)//写指令 { rw=0; rs=0;
delay_50us(1);
P1=com;//数据接口 e=1;
delay_50us(10); e=0;
delay_50us(2); }
void write_12864dat(uchar dat)//写数据 { rw=0; rs=1;
delay_50us(1);
P1=dat;//数据接口 e=1;
delay_50us(10); e=0;
delay_50us(2); }
void ini()//初始化 { delay_50ms(2);
write_12864com(0x30);// delay_50us(4);
write_12864com(0x30); delay_50us(4);
write_12864com(0x0c);//显示游标 ,反写 ,光标 delay_50us(4);
write_12864com(0x01); //清除显示
26
基于51单片机的温湿度及万年历设计 课程设计 delay_50us(240);
//write_12864com(0x06); //模式设置 //delay_50us(10); }
void clear(void) { uchar i,j,k; x=0x80; y=0x80;
write_12864com(0x34); //打开扩展指令集 for (i=0;i<2;i++) {
for (j=0;j<32;j++)
{ write_12864com(y+j); write_12864com(x); for (k=0;k<16;k++) {
write_12864dat(0x00); }
}
x=0x88; }
write_12864com(0x36);//打开绘图显示 write_12864com(0x30); }
void picture( uchar*p) {
uchar i,j,k; x=0x80; y=0x80;
write_12864com(0x34); for (i=0;i<2;i++) {
for (j=0;j<32;j++) {
write_12864com(y+j); write_12864com(x); for (k=0;k<16;k++) {
write_12864dat(*p++); } }
x=0x88; }
27
基于51单片机的温湿度及万年历设计 课程设计 write_12864com(0x36); write_12864com(0x30); }
void display1() //显示汉字 { uchar i,a; a=0;
write_12864com(0x80);//地址 write_12864dat(0x20); write_12864dat(0x01); write_12864dat(0x01); write_12864dat(0x20); for (i=4;i<16;i++) {
write_12864dat(table5[a]); a++;
delay_50us(1); } }
void display2()//显示汉字 用数组 {
uchar i,a,b,c,d; a=0; b=0; c=0; d=0;
write_12864com(0x90);//地址 for (i=0;i<4;i++) {
write_12864dat(table1[a]); a++;
delay_50us(1); }
for (i=4;i<8;i++) {
write_12864dat(table3[b]); b++;
delay_50us(1); }
for (i=8;i<12;i++) {
write_12864dat(table2[c]); c++;
delay_50us(1); }
28