12864液晶电子钟 具有按键可调、闹钟、温度显示(2)
while(key2==0);
}
if(mm==3&&key3==0) //时减1
{
if(hm==0){delay(1);if(key3==0){hour--;if(hour<=-1){hour=23;}}}
if(hm!=0){delay(1);if(key3==0){shi--;if(shi<=-1){shi=23;}}}
while(key3==0);
}
if(mm==4&&key2==0) //日加1
{
delay(1);
if(key2==0)
{
day++;
if(day>=31){day=1;}
}
while(key2==0);
}
if(mm==4&&key3==0) //日减1
{
delay(1);
if(key3==0)
{
day--;
if(day<=0){day=31;}
}
while(key3==0);
}
if(mm==5&&key2==0) //月加1
{
delay(1);
if(key2==0)
{
month++;
if(month>=13){month=1;}
}
理解才是最主要
while(key2==0);
}
if(mm==5&&key3==0) //月减1
{
delay(1);
if(key3==0)
{
month--;
if(month<=0){month=12;}
}
while(key3==0);
}
if(mm==6&&key2==0) //年加1
{
delay(1);
if(key2==0){years++;}// 不设置 年限
while(key2==0);
}
if(mm==6&&key3==0) //年减1
{
delay(1);
if(key3==0){years--;}
while(key3==0);
}
if(mm==7&&key2==0) //星期加1
{
delay(1);
if(key2==0)
{
cc++;
if(cc>=8){cc=1;}
}
while(key2==0);
}
if(mm==7&&key3==0) //星期减1
{
delay(1);
if(key3==0)
{
cc--;
if(cc==0){cc=7;}
理解才是最主要
}
while(key3==0);
}
}
/********************************************************************
*******************
******************************* 功能:18B20 所有函数
************************************/
/******************* 18B20复位,初始化函数
**************************/
void dsreset(void)
{
uint i;
wd=0;
i=103;
while(i>0)i--;
wd=1;
i=4;
while(i>0)i--;
}
/******************* 18B20 读1位 函数 **************************/
bit tempreadbit(void)
{
uint i;
bit dat;
wd=0;i++; //i++ 起延时作用
wd=1;i++;i++;
dat=wd;
i=8;while(i>0)i--;
return (dat);
}
/******************* 18B20 读1个字节 函数
**************************/
uchar tempread(void)
{
uchar i,j,dat;
dat=0;
for(i=1;i<=8;i++)
{
j=tempreadbit();
dat=(j<<7)|(dat>>1); //读出的数据最低位在最前面,这样刚好一个字节在
DAT里
}
return(dat);
理解才是最主要
}
/******************* 18B20 写一个字节数据 函数
**************************/
void tempwritebyte(uchar dat)
{
uint i;
uchar j;
bit testb;
for(j=1;j<=8;j++)
{
testb=dat&0x01;
dat=dat>>1;
if(testb) //写 1
{
wd=0;
i++;i++;
wd=1;
i=8;while(i>0)i--;
}
else
{
wd=0; //写 0
i=8;while(i>0)i--;
wd=1;
i++;i++;
}
}
}
/******************* 18B20 开始获取温度并转换 函数
**************************/
void tempchange(void)
{
dsreset();
delay(1);
tempwritebyte(0xcc); // 写跳过读ROM指令
tempwritebyte(0x44); // 写温度转换指令
}
/******************* 18B20 读取寄存器中存储的温度数据 函数
**************************/
uint get_temp()
{
uchar a,b;
dsreset();
delay(1);
理解才是最主要
tempwritebyte(0xcc);
tempwritebyte(0xbe);
a=tempread(); //读低8位
b=tempread(); //读高8位
temp=b;
temp<<=8; //两个字节组合为1个字
temp=temp|a;
f_temp=temp*0.0625; //温度在寄存器中为12位 分辨率位0.0625° temp=f_temp*10+0.5; //乘以10表示小数点后面只取1位,加0.5是四舍
五入
f_temp=f_temp+0.05;
return temp; //temp是整型
}
/******************* 18B20 发送数据 函数 **************************/
void comm(char *parr)
{
do
{
SBUF = *parr++; //发送数据
while(!TI); //等待发送完成标志为1
TI =0; //标志清零
}while(*parr); //保持循环直到字符为'\0'
}
/************************ 功能:主函数 ****************************/
void main()
{ uchar buff[4];
TMOD=0x01; // 设置T0为工作方式 1
EA=1;
ET0=1;
TR0=1; //开启T0中断
TH0=-50000/256;
TL0=-50000%256;
init_12864();
init_zifu();
hm=0;
while(1)
{ if(count>5&&count<18)
{
tempchange(); //开始获取温度
get_temp(); //读取寄存温度
sprintf(buff,"%f",f_temp);
comm(buff);
xieludizhi(4,5);xieling_shu(0,0x30+ temp/100);xieling_shu(0,0x30+
temp%100/10);
理解才是最主要
xieling_shu(0,0x2e);xieling_shu(0,0x30+temp%100%10);
}
if(hm==0)display(); // 如果 hm=0 显示北京时间,否则显示闹钟时间
else display1();
anjian(); // 按键判断
xingqi(); // 显示星期
if(minute==59&&second==59){fengmingqi();} // 整点 报时
if(shi==hour&&fen==minute&&miao>=second&&miao<=second+3){fengmingq
i();}// 闹钟
}
}
/************************ 功能:中断函数 **************************/
void time() interrupt 1
{
TH0=-50000/256;
TL0=-50000%256;
count++;
if(count==20)
{
count=0;
second++;
if(second==60)
{
second=0;
minute++;
if(minute==60)
{
minute=0;
hour++;
if(hour==24)
{
hour=0;
相关推荐:
- [小学教育]四年级综合实践活动课《衣物的洗涤》教
- [小学教育]2014半年工作总结怎么写
- [小学教育]20世纪外国文学专题综合试题及答案
- [小学教育]TS_1循环使用催化丙烯环氧化反应研究
- [小学教育]最实用的考勤签到表(上下班签到表)
- [小学教育]气候与生态建筑——以新疆民居为例
- [小学教育]二人以上股东有限责任公司章程参考样本
- [小学教育]2014届第一轮复习资料4.1,3美好生活的
- [小学教育]土方开挖、降水方案
- [小学教育]手绘儿童绘本《秋天的图画》(蜡笔)
- [小学教育]2002级硕士研究生卫生统计学考试试题
- [小学教育]环保装备重点发展目录
- [小学教育]金蝶K3合并报表培训教材
- [小学教育]岩浆岩试题及参考答案
- [小学教育]知之深爱之切学习心得
- [小学教育]第十二章 蛋白质的生物合成
- [小学教育]Chapter 2-3 Solid structure and basi
- [小学教育]市政道路雨季专项施工方案
- [小学教育]中国海洋大学2012-2013学年第二学期天
- [小学教育]教育心理学第3章-学习迁移
- 浅谈深化国企改革中加强党管企业
- 2006年中国病理生理学会学术活动安排
- 设计投标工作大纲
- 基于ARP的网络攻击与防御
- 2016届湖北省七市(州)教科研协作体高三
- Google_学术搜索及其检索技巧
- 2019-2020学年七年级地理下册6.3美洲教
- 城市道路可研报告
- 【名师指津】2012高考英语 写作基础技
- 6级知识点培训北京师范大学《幼儿智趣
- 注册会计师会计知识点:金融资产
- 新安装 500 kV 变压器介损分析与判断
- PS2模拟器PCSX2设置及使用教程.
- 医院药事管理与药剂科管理组织机构
- {PPT背景素材}丹巴的醉人美景,免费,一
- NAS网络存储应用解决方案
- 青海省西宁市六年级上学期数学期末考试
- 测量管理体系手册依据ISO10012:2003
- 洞子小学培养骨干教师工作计划
- 浅谈《牛津初中英语》的教材特点及教学




