⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 51单片机驱动ds1302时间模块+ds18b20温度传感器模块+12864液晶显示完整程序设计.txt

📁 51单片机驱动DS1302时间模块+DS18B20温度传感器模块+12864液晶显示完整程序设计
💻 TXT
📖 第 1 页 / 共 2 页
字号:
sclk=1; 
io=acc3; 
sclk=0; 
delay(); 
sclk=1; 
io=acc4; 
sclk=0; 
delay(); 
sclk=1; 
io=acc5; 
sclk=0; 
delay(); 
sclk=1; 
io=acc6; 
sclk=0; 
delay(); 
sclk=1; 
io=acc7; 
sclk=0; 
delay(); 
sclk=1;/// 


//sclk=0; 
ACC=shu; //数据  
io=acc0;/// 
sclk=0; 
delay(); 
sclk=1; 
io=acc1; 
sclk=0; 
delay(); 
sclk=1; 
io=acc2; 
sclk=0; 
delay(); 
sclk=1; 
io=acc3; 
sclk=0; 
delay(); 
sclk=1; 
io=acc4; 
sclk=0; 
delay(); 
sclk=1; 
io=acc5; 
sclk=0; 
delay(); 
sclk=1; 
io=acc6; 
sclk=0; 
delay(); 
sclk=1; 
io=acc7; 
sclk=0; 
delay(); 
sclk=1;///  

rst=0; 
sclk=0; 
} ///写完毕 
unsigned char r_1302(unsigned char ADD){ 

sclk=0; 
rst=1; 
ACC=ADD; //地址  
io=acc0;/// 
sclk=0; 
delay(); 
sclk=1; 
io=acc1; 
sclk=0; 
delay(); 
sclk=1; 
io=acc2; 
sclk=0; 
delay(); 
sclk=1; 
io=acc3; 
sclk=0; 
delay(); 
sclk=1; 
io=acc4; 
sclk=0; 
delay(); 
sclk=1; 
io=acc5; 
sclk=0; 
delay(); 
sclk=1; 
io=acc6; 
sclk=0; 
delay(); 
sclk=1; 
io=acc7; 
sclk=0;///// 
delay(); 
sclk=1; 

delay(); 
sclk=0; 
acc0=io; 
delay(); 
sclk=1; 
delay(); 
sclk=0; 
acc1=io; 
delay(); 
sclk=1; 
delay(); 
sclk=0; 
acc2=io; 
delay(); 
sclk=1; 
delay(); 
sclk=0; 
acc3=io; 
delay(); 
sclk=1; 
delay(); 
sclk=0; 
acc4=io; 
delay(); 
sclk=1; 
delay(); 
sclk=0; 
acc5=io; 
delay(); 
sclk=1; 
delay(); 
sclk=0; 
acc6=io; 
delay(); 
sclk=1; 
delay(); 
sclk=0; 
acc7=io; 
delay(); 

rst=0; 
sclk=0; 
return(ACC); 
} 
ds1302_c() 
{ 
w_1302(0x80,0x80); 
w_1302(0x8e,0x00); 
w_1302(0x80,time1[0]); //;秒 
w_1302(0x82,time1[1]); // 分=0 
w_1302(0x84,time1[2]); //时 =0 
w_1302(0x86,time1[3]); // 日 
w_1302(0x88,time1[4]);// 月 
w_1302(0x8a,time1[5]);//星期 
w_1302(0x8c,time1[6]);//年 
w_1302(0x8e,0x80); 
w_1302(0x90,0xb8); 
w_1302(0x80,0x00); 
} 

//x_lcd(unsigned a){//由a确定X轴 //y_lcd(unsigned a){///由A确定y轴 
//void dis_lcd(){//打开显示选择第一行显示 //w_lcd(unsigned b){ ///写a到12864 
//void busy_lcd(){//////判断忙 //void cs1_lcd(){ ////////选择左边 
//void cs2_lcd(){ ////////选择右边 
d12864_lcd(unsigned char x,y,k){ 
unsigned char ix,iy,i; 
dis_lcd();//打开显示 
if(x>63){ 
x=x-64; 
cs2_lcd(); 
} 
else cs1_lcd(); 
i=0; 
if(k<12){ 
for(iy=0;iy<2;iy++) 
for(ix=0;ix<8;ix++){ 
y_lcd(iy+y); 
x_lcd(ix+x); 
w_lcd(shu[k][i]); 
i++; 
} 
} 
else{k-=12; 
for(iy=0;iy<2;iy++) 
for(ix=0;ix<16;ix++){ 
y_lcd(iy+y); 
x_lcd(ix+x); 
w_lcd(shu1[k][i]); 
i++; 
} 
} 
} 

time_lcd(){ 
unsigned char y,k,time,add,i,we1,we2; 
add=128;///////必须是小于64-8大于64  
d12864_lcd(0,0,12);//: 北 
d12864_lcd(16,0,13);//: 京 
d12864_lcd(31,0,14);//: 时 
d12864_lcd(47,0,15);//: 间 
k=0x81; 
y=0; //在第几行显示 
for(i=0;i<3;i++){  
time=r_1302(k); 
time1[i]=time; 
add=add-8;; 
time=time&0x0f; 
d12864_lcd(add,y,time);///秒个位 
add=add-8; 
time=r_1302(k); 
time&=0xf0; 
time>>=4; 
d12864_lcd(add,y,time);//秒十位 
add=add-8;; 
k+=2; 
} 
d12864_lcd(40+64,y,10);//: 
d12864_lcd(16+64,y,10);//: 显示两点 
// 
time1[5]=r_1302(0x8b); 
d12864_lcd(64,4,16);//: 星 
d12864_lcd(64+16,4,17);//: 期 
r_1302(0x8b);//读星期 
d12864_lcd(64+32,4,r_1302(0x8b));//: 读星期几`并显示 
//// 
y=2;//在第四行显示 
add=56+16; 
time=r_1302(0x87); 
time1[3]=time; 
d12864_lcd(add,y,time&0x0f);//: 显示日 
time=r_1302(0x87); 
time&=0xf0; 
time>>=4; 
add-=8; 
d12864_lcd(add,y,time); //显示日的十位 
add-=8; 
add-=8; 
time1[4]=time=r_1302(0x89); 
d12864_lcd(add,y,time&0x0f);//: 显示月 
time=r_1302(0x89); 
time&=0xf0; 
time>>=4; 
add-=8; 
d12864_lcd(add,y,time); //显示月的十位 
add-=8; 
add-=8; 
time1[6]=time=r_1302(0x8d); 
d12864_lcd(add,y,time&0x0f);//: 显示年 
time=r_1302(0x8d); 
time&=0xf0; 
time>>=4; 
add-=8; 
d12864_lcd(add,y,time); //显示年的十位 
//////读完 

d12864_lcd(40+16,y,11);//: 
d12864_lcd(16+16,y,11);//: 显示两/ 
add-=8; 
d12864_lcd(add,y,0);//: 0 
add-=8; 
d12864_lcd(add,y,2);//: 2 

d12864_lcd(0,4,18);//: 温 
d12864_lcd(16,4,19);//: 度 
we1=wendu(); 
we2=we1/10; 
d12864_lcd(32,4,we2);//: 2 
we2=we1-we2*10; 
d12864_lcd(40,4,we2);//: 显示温度值 
cs1_lcd(); 
y_lcd(4); 
x_lcd(50); 
w_lcd(0x18); 
x_lcd(51); 
w_lcd(0x18); 
} 
/////////////////////////显示时间完毕 


hei_lcd(unsigned char x,y){ //全黑用来做闪标用 
char iy,ix,di,i; 
di=0x00; 
if(x>63){ 
x=x-64; 
cs2_lcd(); 
} 
else cs1_lcd(); 
i=0; 
for(iy=0;iy<2;iy++){ 
for(ix=0;ix<16;ix++){ 
y_lcd(iy+y); 
x_lcd(ix+x); 
w_lcd(di); 
} 
} 
} 
key_t(){ //键盘key1 加1 key2 减1 

if(!key1){ 
key_time++; 
delay1(20000); 
while(!key1); 
} 
if(!key2){ 
key_time--; 
delay1(20000); 
while(!key2); 
} 
} 


void delay11(word useconds) 
{ 
for(;useconds>0;useconds--) 
key_t(); 
} 

time_key(){ 
unsigned char keyd,ktime; 
unsigned int year; 
word kk; 
keyd=0; 
kk=10000;///闪动快慢 
if(!key0){ 
for(;;){ 
if(!key0){ 
keyd=keyd+1; 
delay1(500);  
if(keyd>8)keyd=1; 
key_time=0;//////每设牟换一个就把存设时间清0 
key0=1; 
while(!key0); 
key0=1; 
} 
////////////////////////闪程序 
if(keyd==1){//=1进入秒闪 同时设置秒时间 
key_time=(time1[0]&0x0f)+((time1[0]&0xf0)>>4)*10; //将数姐里的数度到key_time里 10进制 
hei_lcd(112,0);//x y 
delay11(kk);//////闪动快慢 
if(key_time>=60)key_time=0;  
d12864_lcd(112,0,key_time/10);  
d12864_lcd(120,0,key_time-(key_time/10)*10); 
time1[0]=(((key_time/10)<<4)&0xf0)+(key_time-(key_time/10)*10); //换成BCD码存到数组里 
delay1(10000); 
} 
if(keyd==2){//=1进入分闪 同时设置秒时间 
key_time=(time1[1]&0x0f)+((time1[1]&0xf0)>>4)*10; //将数姐里的数度到key_time里 10进制 
hei_lcd(88,0);//x y 
delay11(kk);//////闪动快慢 
if(key_time>=60)key_time=0; 
d12864_lcd(88,0,key_time/10);  
d12864_lcd(96,0,key_time-(key_time/10)*10); 
delay1(10000); 
time1[1]=(((key_time/10)<<4)&0xf0)+(key_time-(key_time/10)*10); //换成BCD码存到数组里 
} 
if(keyd==3){//=1进入时闪 同时设置秒时间 
key_time=(time1[2]&0x0f)+((time1[2]&0xf0)>>4)*10; //将数姐里的数度到key_time里 10进制 
hei_lcd(64,0);//x y 
delay11(kk);//////闪动快慢 
if(key_time>=24)key_time=0; 
d12864_lcd(64,0,key_time/10);  
d12864_lcd(72,0,key_time-(key_time/10)*10); 
time1[2]=(key_time/10)<<4+(key_time-key_time/10); 
delay1(10000); 
time1[2]=(((key_time/10)<<4)&0xf0)+(key_time-(key_time/10)*10); //换成BCD码存到数组里 
}  
if(keyd==4){//=1进入年闪 同时设置秒时间 
key_time=(time1[6]&0x0f)+((time1[6]&0xf0)>>4)*10; //将数姐里的数度到key_time里 10进制 
hei_lcd(16,2);//x y 
delay11(kk);//////闪动快慢 
if(key_time>99)key_time=0; 
d12864_lcd(16,2,key_time/10);  
d12864_lcd(24,2,key_time-(key_time/10)*10); 
time1[6]=(key_time/10)<<4+(key_time-key_time/10); 
delay1(10000); 
time1[6]=(((key_time/10)<<4)&0xf0)+(key_time-(key_time/10)*10); //换成BCD码存到数组里 
} 

if(keyd==5){//=1进入月闪 同时设置秒时间 
key_time=(time1[4]&0x0f)+((time1[4]&0xf0)>>4)*10; //将数姐里的数度到key_time里 10进制 
hei_lcd(40,2);//x y 
delay11(kk);//////闪动快慢 
if(key_time>=13)key_time=0; 
d12864_lcd(40,2,key_time/10);  
d12864_lcd(48,2,key_time-(key_time/10)*10); 
time1[4]=(key_time/10)<<4+(key_time-key_time/10); 
delay1(10000); 
time1[4]=(((key_time/10)<<4)&0xf0)+(key_time-(key_time/10)*10); //换成BCD码存到数组里 
} 

if(keyd==6){//=1进入日闪 同时设置秒时间 
key_time=(time1[3]&0x0f)+((time1[3]&0xf0)>>4)*10; //将数姐里的数度到key_time里 10进制 
year=(time1[4]&0x0f)+(((time1[4]&0xf0)>>4)*10)+2000; 
switch(time1[4]){ //计算闰月 
case 1: ktime=31;break; 
case 3: ktime=31;break; 
case 5: ktime=31;break; 
case 7: ktime=31;break; 
case 8: ktime=31;break; 
case 10: ktime=31;break; 
case 12: ktime=31;break; 
case 4: ktime=30;break; 
case 6: ktime=30;break; 
case 9: ktime=30;break; 
case 11: ktime=30;break; 
case 2: if(year%4==0&&year%100!=0||year%400==0) ktime=29; 
else ktime=29;break; 
} 
hei_lcd(64,2);//x y 
delay11(kk);//////闪动快慢 
if(key_time>ktime)key_time=0; 
d12864_lcd(64,2,key_time/10);  
d12864_lcd(72,2,key_time-(key_time/10)*10); 
time1[3]=(key_time/10)<<4+(key_time-key_time/10); 
delay1(10000); 
time1[3]=(((key_time/10)<<4)&0xf0)+(key_time-(key_time/10)*10); //换成BCD码存到数组里 
} 

if(keyd==7){//=1进入星期闪 同时设置秒时 
char iy,ix,di,i; 
key_time=time1[5]; 
di=0x00; 
cs2_lcd(); 
i=0; 
for(iy=0;iy<2;iy++){ 
for(ix=0;ix<8;ix++){ 
y_lcd(iy+4); 
x_lcd(ix+96); 
w_lcd(di); 
} 
di=00; 
} 
delay11(kk);//////闪动快慢 
if(key_time>7)key_time=0; 
d12864_lcd(96,4,key_time);  
time1[5]=key_time; 
delay1(10000); 
time1[5]=key_time; //换成BCD码存到数组里 
} 
//////////////////// 
if(!key3)break; 
} 
ds1302_c(); ///更改时间 
} 
} 

/////////////// 
lcd_key(){ 
if(!key3){ 
if(!key2)lcd_d=1; 
else lcd_d=0; 
} 
} 
main(){ 
ds1302_c();  
clr_lcd(); 
for(;;){ 
time_lcd(); 
time_key(); 
lcd_key();  
} 
} 

参考链接:http://www.picavr.com/news/2008-08/8196.htm

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -