教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 外语考试 >

1602、18b20、ds1302电子时钟(3)

来源:网络收集 时间:2026-06-01
导读: write_com(0x80+0x40+0x0a); if(temperature==1) write_date('-'); //若温度为负则前面显示“-” else write_date(' '); //若温度的百位为0且正则不显示 write_com(0x80+0x40+0x0b); write_date(table[get_temp()/1

write_com(0x80+0x40+0x0a); if(temperature==1) write_date('-'); //若温度为负则前面显示“-” else

write_date(' '); //若温度的百位为0且正则不显示 write_com(0x80+0x40+0x0b);

write_date(table[get_temp()/100]); //十位 }

write_com(0x80+0x40+0x0c);

write_date(table[get_temp()%100/10]); //个位 write_com(0x80+0x40+0x0d); write_date(table[10]);

write_com(0x80+0x40+0x0e);

//温度未上百

介绍了1602/1602/18b20以c语言为基础的编程方法。

write_date(table[get_temp()%10]); //十分之一位

write_com(0x80+0x40+0x0f); write_date(table[11]); }

void deal() //温度处理函数 {

if(get_temp()>limit) //当温度超过设定的上限值时 { }

led=0; delay(100); led=1;

}

/***************END***********END******************************/

3.2.5 KeyScan.h程序文件:

/****************键盘扫描函数***********************/ sbit key1=P3^0; //键盘位定义 sbit key2=P3^1; sbit key3=P3^2; sbit key4=P3^3;

uchar flag,select,alarm=1; void KeyScan() {

/////////进入/退出模式键被按下///////////

if(key1==0)

{

write_com(0x01); //清屏

if(alarm==2) //闹钟到时间 { } else {

flag++;

//模式间的转换

alarm=0; //退出闹钟模式,并且禁止进入

if(flag>=2) { flag=0; select=0;} }

while(!key1); //检测键盘是否释放,下同

}

/////////功能选择键被按下///////////

if(key2==0&&flag==1) { write_com(0x01); //清屏

select++;

介绍了1602/1602/18b20以c语言为基础的编程方法。

if(select>=3) { select=0; write_com(0x01); }

while(!key2); }

/////////时加/温度加一键被按下///////////

if(key3==0) {

if(select==0&flag==1) //调试模式下 {

uchar j,shi1,shi2; for(j=0;j<6;j++)

{

//重新读当前时间

SetTime[j]=l_tmpdate[j]; }

shi1=SetTime[2]>>4; shi2=SetTime[2]&0x0f; shi2++; if(shi2>9) {

shi2=0; shi1++;

if(shi1==2&&shi2==4) { shi1=0; shi2=0; } SetTime[2]=16*shi1+shi2; //写入数组

}

Set_RTC(SetTime);

}

if(select==1&&flag==1) // 闹钟设置模式下 {

uchar shi1,shi2;

alarm=1; //允许进入闹钟模式

shi1=ring_time[2]>>4; shi2=ring_time[2]&0x0f; shi2++; if(shi2>9) {

shi2=0;

shi1++; }

if(shi1==2&&shi2==4) { shi1=0; shi2=0; } ring_time[2]=shi1*16+shi2; //写入数组 }

if(select==2&&flag==1) //上限温度值加一 {

limit+=10;

if(limit>1270) limit=0; write_com(0x01);

介绍了1602/1602/18b20以c语言为基础的编程方法。

}

while(!key3); }

/////////分加/温度减一键被按下/////////// if(key4==0) //分加一键

{

if(select==0&flag==1) //调时模式下

{ uchar j,fen1,fen2; for(j=0;j<6;j++)

//重新读当前时间

{

SetTime[j]=l_tmpdate[j]; }

fen1=SetTime[1]>>4; fen2=SetTime[1]&0x0f; fen2++;

if(fen2>=10) {

fen2=0; fen1++;

if(fen1>=6) {fen1=0;}

SetTime[1]=fen1*16+fen2; //写入数组

}

Set_RTC(SetTime); }

if(select==1&&flag==1) {

// 闹钟设置模式下

uchar fen1,fen2;

alarm=1; //允许进入闹钟模式

fen1=ring_time[1]>>4; fen2=ring_time[1]&0x0f; fen2++; if(fen2>9) {

fen2=0;

fen1++; }

if(fen1>=6) { fen1=0; } ring_time[1]=fen1*16+fen2; //写入数组 }

if(select==2&&flag==1) //温度上限值减一 {

limit-=10;

if(limit<=0) limit=1270; write_com(0x01);

介绍了1602/1602/18b20以c语言为基础的编程方法。

}

while(!key4); } }

/***************END***********END******************************/

3.2.6 OPEN.h程序文件:

/********************上电显示函数 ***************************/ uchar code opens[]="XingTai"; //定义上电显示字符数组 uchar code opens1[]="Institute";

void open() { uchar num; write_com(0x80+0x10); for(num=0;opens[num]!='\0';num++) //把数组中的内容写完

{

write_date(opens[num]); delay(20); }

for(num=0;num<16;num++) {

write_com(0x1c);

delay(200); }

for(num=0;num<5;num++) //整屏左移5 {

write_com(0x18);

//整屏右移16

delay(200); }

for(num=0;num<4;num++) //整屏右移4 {

write_com(0x1c);

delay(200); }

for(num=0;num<3;num++) //整屏左移3 {

write_com(0x18); delay(200); }

for(num=0;num<2;num++) //整屏右移2 {

write_com(0x1c); delay(200); }

for(num=0;num<1;num++) //整屏左移1

介绍了1602/1602/18b20以c语言为基础的编程方法。

{

write_com(0x18); delay(100); }

write_com(0x80+0x53); { }

write_date(opens1[num]); delay(500);

//写入第二行数据

for(num=0;opens1[num]!='\0';num++)

}

/***************END***********END******************************/

3.2.7 MODE.h程序文件:

/*********************功能模式函数*****************************/ uchar code menu[3][9]={{"Time Set"},{"Ring Set"},{"Temp Set"}}; uchar code ringtable[14]="Time To Get Up"; //闹钟显示 void SetTime_Mode() //调时模式 {

uchar i; for(i=0;i<7;i++) { }

SetTime[i]=l_tmpdate[i];

write_com(0xc0+5);

write_date(table2[SetTime[2]>>4]); //读时的第一位

write_date(table2[SetTime[2]&0x0f]); //读时的第二位 write_date(':');

write_date(table2[SetTime[1]>>4]); //读分的第一位

write_date(table2[SetTime[1]&0x0f]); //读分的第二位

//闹钟设置

}

void SetRing_Mode() {

write_com(0xc0+5);

write_date(table2[ring_time[2]>>4]); //读时的第一 …… 此处隐藏:2412字,全部文档内容请下载后查看。喜欢就下载吧 ……

1602、18b20、ds1302电子时钟(3).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/117606.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)