1602、18b20、ds1302电子时钟(3)
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字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [外语考试]管理学 第13章 沟通
- [外语考试]07、中高端客户销售流程--分类、筛选讲
- [外语考试]2015-2020年中国高筋饺子粉市场发展现
- [外语考试]“十三五”重点项目-汽车燃油表生产建
- [外语考试]雅培奶粉培乐系列适用年龄及特点
- [外语考试]九三学社入社申请人调查问卷
- [外语考试]等级薪酬体系职等职级表
- [外语考试]货物买卖合同纠纷起诉状(范本一)
- [外语考试]青海省实施消防法办法
- [外语考试]公交车语音自动报站系统的设计第3稿11
- [外语考试]logistic回归模型在ROC分析中的应用
- [外语考试]2017-2021年中国隔膜泵行业发展研究与
- [外语考试]神经内科下半年专科考试及答案
- [外语考试]园林景观设计规范标准
- [外语考试]2018八年级语文下册第一单元4合欢树习
- [外语考试]分布式发电及微网运行控制技术应用
- [外语考试]三人行历史学笔记:中世纪人文主义思想
- [外语考试]2010届高考复习5年高考3年联考精品历史
- [外语考试]挖掘机驾驶员安全生产责任书
- [外语考试]某211高校MBA硕士毕业论文开题报告(范
- 用三层交换机实现大中型企业VLAN方案
- 斯格配套系种猪饲养管理
- 涂层测厚仪厂家直销
- 研究生学校排行榜
- 鄱阳湖湿地景观格局变化及其驱动力分析
- 医学基础知识试题库
- 2010山西省高考历年语文试卷精选考试技
- 脉冲宽度法测量电容
- 谈高职院校ESP教师的角色调整问题
- 低压配电网电力线载波通信相关技术研究
- 余额宝和城市商业银行的转型研究
- 篮球行进间运球教案
- 气候突变的定义和检测方法
- 财经大学基坑开挖应急预案
- 高大支模架培训演示
- 一种改进的稳健自适应波束形成算法
- 2-3-鼎视通核心人员薪酬股权激励管理手
- 我国电阻焊设备和工艺的应用现状与发展
- MTK手机基本功能覆盖测试案例
- 七年级地理教学课件上册第四章第一节




