自制万年历年月日时分秒周温度

  • 格式:doc
  • 大小:279.50 KB
  • 文档页数:7

下载文档原格式

  / 7
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

万年历

#include

#include "ds1302.h"

#include "hareware.h"

#include "18b20.h"

//1MS延时子程序

void delay_ms(int x){

int i,j;

for(i=0;i

for(j=0;j<120;j++);}

}

unsigned char code TAB[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//数据0---9

unsigned char code TAB1[]={0xe8,0xe9,0xea,0xeb,0xec,0xed,0xee,0xef,

0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,

0xc0,0xb0,0x60};//数据选择输出口

char disp1[17];

//char init[7];

int j,temperture,y,t_cnt,t_cnt1,flag,mos,yiwei,shezhi,a;

void trasfer(void); //数据转换

//void trasfer1(void); //数据转换2

void anjian(void);//按键判断

void shuzhi1(void);//数值的转化

void wendu(void);//温度报警

main(){

TMOD = 0X11;//定时器0和定时器0工作在方式一

TH0=(65536-time0_us)/256;

TL0=(65536-time0_us)%256;//定时器0赋初值

TH1=(65536-time_us)/256;

TL1=(65536-time_us)%256;//定时器0赋初值

EA=1;//开总中断开关

ET0=1;//开定时器0中断开关

TR0=1;//定时器0开始定时

ET1=1;//开定时器0中断开关

TR1=1;//定时器0开始定时

DS1302_Initial(); //初始化DS1302

// DS1302_SetTime(init1); //设置初始时间

DS1302_GetTime(now); //读取当前时间

y=temperture;

flag=1;

mos=0;

yiwei=0;

shezhi=0;

a=0x20;

while(1){

temperture=ReadTemperature();

anjian();

// trasfer1();

trasfer();

wendu();

}

}

/**************************************************/

/**************定时器T0中断服务子函数**************/

/**************************************************/

void T0_ISR() interrupt 1 using 1

{

TH0=(65536-time0_us)/256;

TL0=(65536-time0_us)%256; //定时器0重新赋初

switch(mos){

case 0:{

SEG7P=0x00; // 关闭7节显示器

SCANP=TAB1[j]; // 输出扫瞄信号

SEG7P=TAB[(disp1[j])]; // 转换成驱动信号,并输出到P0

j++;

if(j==17)j=0;

break;

}

case 1:{

SEG7P=0x00; // 关闭7节显示器

SCANP=TAB1[j]; // 输出扫瞄信号

if((j==yiwei||j==yiwei+1)&&flag==1){

SEG7P=0x00;

}

else{

SEG7P=TAB[(disp1[j])]; // 转换成驱动信号,并输出到P0

}

j++;

if(j==17)j=0;

break;

}

}

}

/**************************************************/

/**************定时器T1中断服务子函数**************/

/**************************************************/

void T1_ZD() interrupt 3 using 1 //定时器中断子程序

{

TH1=(65536-time_us)/256;

TL1=(65536-time_us)%256;//设定定时器初值

t_cnt++;//定时器定时一次就加一

t_cnt1++;//定时器定时一次就加一

if(t_cnt>=time_cnt){//判断是否有20次

t_cnt=0; //清零

flag=~flag;

// y=temperture; //2秒钟温度稳定变化一次,以稳定温度的显示}

if(t_cnt1>=time_cnt1){//判断是否有20次

t_cnt1=0; //清零