程序.docx

上传人:b****3 文档编号:11778052 上传时间:2023-06-02 格式:DOCX 页数:18 大小:17.32KB
下载 相关 举报
程序.docx_第1页
第1页 / 共18页
程序.docx_第2页
第2页 / 共18页
程序.docx_第3页
第3页 / 共18页
程序.docx_第4页
第4页 / 共18页
程序.docx_第5页
第5页 / 共18页
程序.docx_第6页
第6页 / 共18页
程序.docx_第7页
第7页 / 共18页
程序.docx_第8页
第8页 / 共18页
程序.docx_第9页
第9页 / 共18页
程序.docx_第10页
第10页 / 共18页
程序.docx_第11页
第11页 / 共18页
程序.docx_第12页
第12页 / 共18页
程序.docx_第13页
第13页 / 共18页
程序.docx_第14页
第14页 / 共18页
程序.docx_第15页
第15页 / 共18页
程序.docx_第16页
第16页 / 共18页
程序.docx_第17页
第17页 / 共18页
程序.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

程序.docx

《程序.docx》由会员分享,可在线阅读,更多相关《程序.docx(18页珍藏版)》请在冰点文库上搜索。

程序.docx

程序

#include

//#include

#include

#include

#include

/*DS12887地址定义*/

#defineDS12887_SECXBYTE[0x7f00]

#defineDS12887_SEC_AXBYTE[0x7f01]

#defineDS12887_MINXBYTE[0x7f02]

#defineDS12887_MIN_AXBYTE[0x7f03]

#defineDS12887_HOURXBYTE[0x7f04]

#defineDS12887_HOUR_AXBYTE[0x7f05]

#defineDS12887_WEEKXBYTE[0x7f06]

#defineDS12887_DATEXBYTE[0x7f07]

#defineDS12887_MONTHXBYTE[0x7f08]

#defineDS12887_YEARXBYTE[0x7f09]

#defineDS12887_AXBYTE[0x7f0A]

#defineDS12887_BXBYTE[0x7f0B]

#defineDS12887_CXBYTE[0x7f0C]

#defineDS12887_DXBYTE[0x7f0D]

#defineucharunsignedchar

#defineuintunsignedint

/*端口定义*/

sbitkey2=P1^5;

sbitkey3=P1^6;

sbitkey4=P1^7;

sbitkey_down=P3^3;

sbitP3_5=P3^5;

/*doubletpture0;*/

uinttpture;

ucharkey;

ucharposition;

uchart1_num;

ucharn;

/*ucharRES;*/

uchart,j,tp;

/*doubleRES1;

/*doubleRES0;*/

/*doubleR2=2.5;

/*doubleu=3.0;*/

uchartime_memory1[8];/*用于存储年月日*/

uchartime_memory2[8];/*用于存储时分秒*/

uchartime_memory3[8];/*用于存储温度*/

/*uinttemp[10];*/

ucharmov_left;

uintcount_num=0;/*频率*/

voidds12887_start();

voidds12887_read();

voidds12887_write();

voiddisplay_conver();

voiddisplay_led();

voiddelay_50us(uint);

voidkey_option();

ucharcodetable[12]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1F,0x01,0x09,0xff,0x00};

struct

{

ucharyear;

ucharmonth;

uchardate;

ucharweek;

ucharhour;

ucharmin;

ucharsec;

}now_time;/*当前时间参数*/

voidmain()

{

position=0;/*不闪烁状态*/

key=2;/*初始显示温度*/

t1_num=0;

n=0;

/*for(tp=0;tp<10;tp++)

{

temp[tp]=0;

}

tp=0;*/

/*RES0=10.0;*/

/*tpture0=25.0;*/

P3_5=0;/*屏蔽湿度采集,选通温度采集*/

TMOD=0x15;/*T1定时,T0计数*/

SCON=0x00;/*串口使用方式0*/

ds12887_start();

EX0=1;/*INT0开启*/

IT0=1;

ds12887_read();

EA=1;

while

(1)

{

if(key==2&&ET1==0)

{

TH0=TL0=0;

TH1=0x3c;

TL1=0xb0;

ET1=1;

TR1=1;

TR0=1;

}

display_conver();

display_led();

}

}

/*DS12887初始化函数*/

voidds12887_start(void)

{

DS12887_A=0x20;/*设定晶振开始工作*/

ACC=DS12887_C;

ACC=DS12887_D;

DS12887_B=0x92;

DS12887_SEC=0x00;DS12887_MIN=0x00;DS12887_HOUR=0x12;DS12887_WEEK=0x02;

DS12887_DATE=0x11;DS12887_MONTH=7;DS12887_YEAR=7;

DS12887_B=0x12;/*24小时制,BCD码输出,更新中断允许,芯片工作*/

}

/*DS12887读设置函数*/

voidds12887_read(void)

{

/*DS12887_B=DS12887_B|0x80;/*禁止更新数据*/

now_time.sec=DS12887_SEC;

now_time.min=DS12887_MIN;

now_time.hour=DS12887_HOUR;

now_time.week=DS12887_WEEK;

now_time.date=DS12887_DATE;

now_time.month=DS12887_MONTH;

now_time.year=DS12887_YEAR;

/*DS12887_B=DS12887_B&0x7f;/*允许更新数据*/

}

/*DS12887写设置函数*/

voidds12887_write(void)

{

/*DS12887_B=DS12887_B|0x80;/*禁止更新数据*/

DS12887_SEC=now_time.sec;

DS12887_MIN=now_time.min;

DS12887_HOUR=now_time.hour;

DS12887_WEEK=now_time.week;

DS12887_DATE=now_time.date;

DS12887_MONTH=now_time.month;

DS12887_YEAR=now_time.year;

/*DS12887_B=DS12887_B&0x7f;/*允许更新数据*/

}

/*数据转换与显示程序*/

voiddisplay_conver(void)

{

time_memory1[0]=2;

time_memory1[1]=0;

time_memory1[2]=now_time.year/16;

time_memory1[3]=now_time.year%16;

time_memory1[4]=now_time.month/16;

time_memory1[5]=now_time.month%16;

time_memory1[6]=now_time.date/16;

time_memory1[7]=now_time.date%16;

time_memory2[0]=now_time.hour/16;

time_memory2[1]=now_time.hour%16;

time_memory2[2]=now_time.min/16;

time_memory2[3]=now_time.min%16;

time_memory2[4]=now_time.sec/16;

time_memory2[5]=now_time.sec%16;

time_memory2[6]=10;

time_memory2[7]=now_time.week%16;

}

voiddisplay_led(void)

{

uchari;

mov_left=0xfe;/*每次左移选通一位*/

switch(key)/*年月日、时分秒、温度之间的切换*/

{

case0:

for(i=0;i<8;i++)

{

/*P1=mov_left;*/

if(i+1==position||i+2==position)/*闪烁功能实现程序*/

{

n++;

if(n==7||n==8)

{

P1=mov_left;

if(n==8)

{

n=0;

}

}

elseP1=0xff;

}

elseP1=mov_left;

SBUF=table[time_memory1[i]];

delay_50us(10);

/*while(TI==0);*/

TI=0;/*数据发送完毕*/

mov_left=mov_left*2;

mov_left=mov_left|0x01;

if(key_down==0)/*有键按下时执行程序*/

{

delay_50us(200);

if(key_down==0)

{

key_option();

key_down=1;

while(key_down==0);

}

}

}break;

case1:

for(i=0;i<8;i++)

{

/*P1=mov_left;*/

if(i+1==position||i+2==position)

{

n++;

if(n==7||n==8)

{

P1=mov_left;

if(n==8)

{

n=0;

}

}

elseP1=0xff;

}

elseP1=mov_left;

SBUF=table[time_memory2[i]];

delay_50us(10);

/*while(TI==0);*/

TI=0;

if(key_down==0)

{

delay_50us(200);

if(key_down==0)

{

key_option();

key_down=1;

while(key_down==0);

}

}

mov_left=mov_left*2;

mov_left=mov_left|0x01;

}break;

case2:

for(i=0;i<8;i++)

{

/*P1=mov_left;*/

if(i+1==position||i+2==position)

{

n++;

if(n==7||n==8)

{

P1=mov_left;

if(n==8)

{

n=0;

}

}

elseP1=0xff;

}

elseP1=mov_left;

SBUF=table[time_memory3[i]];

t=10;

for(;t>0;t--)

for(j=19;j>0;j--);

/*delay_50us(10);*/

TI=0;

if(key_down==0)

{

delay_50us(200);

if(key_down==0)

{

key_option();

key_down=1;

while(key_down==0);

}

}

mov_left=mov_left*2;

mov_left=mov_left|0x01;

}break;

default:

return;

}

}

voidint0_update(void)interrupt0using2/*DS12887时钟芯片1秒更新中断*/

{

ds12887_read();

ACC=DS12887_C;

}

/*按键的选择程序*/

voidkey_option(void)

{

ucharm=0;

if(key2==0)

{

key=(key+1)%3;

}

if(key3==0&&(key==0||key==1))

{

position=(position+2)%10;/*更改需要修改的位*/

}

if(key4==0)/*修改数据程序*/

{

if(key==0)

{

switch(position)

{

case4:

now_time.year=now_time.year+1;

m=now_time.year;

if(m==0x9a)

{

now_time.year=0;

}

elseif(m==0x0a||m==0x1a||m==0x2a||m==0x3a||m==0x4a||m==0x5a||m==0x6a||m==0x7a||m==0x8a)

{

now_time.year=now_time.year+6;

}

ds12887_write();

break;

case6:

now_time.month=now_time.month+1;

m=now_time.month;

if(m==0x13)

{

now_time.month=1;

}

elseif(m==0x0a)

{

now_time.month=now_time.month+6;

}

ds12887_write();

break;

case8:

now_time.date=now_time.date+1;

m=now_time.date;

if(m==0x32)

{

now_time.date=1;

}

elseif(m==0x0a||m==0x1a||m==0x2a)

{

now_time.date=now_time.date+6;

}

ds12887_write();

break;

default:

return;

}

}

elseif(key==1)

{

switch(position)

{

case2:

now_time.hour=now_time.hour+1;

m=now_time.hour;

if(m==0x24)

{

now_time.hour=0;

}

elseif(m==0x0a||m==0x1a)

{

now_time.hour=now_time.hour+6;

}

ds12887_write();

break;

case4:

now_time.min=now_time.min+1;

m=now_time.min;

if(m==0x5a)

{

now_time.min=0;

}

elseif(m==0x0a||m==0x1a||m==0x2a||m==0x3a||m==0x4a)

{

now_time.min=now_time.min+6;

}

ds12887_write();

break;

case6:

now_time.sec=now_time.sec+1;

m=now_time.sec;

if(m==0x5a)

{

now_time.sec=0;

}

elseif(m==0x0a||m==0x1a||m==0x2a||m==0x3a||m==0x4a)

{

now_time.sec=now_time.sec+6;

}

ds12887_write();

break;

case8:

now_time.week=now_time.week+1;

m=now_time.week;

if(m==8)

{

now_time.week=1;

}

ds12887_write();

break;

default:

return;

}

}

}

}

/*1秒定时器中断,采集温度*/

voidt1_wendu(void)interrupt3using3

{

TR0=0;

TR1=0;

P3_5=0;

t1_num++;

if(t1_num==10)

{

t1_num=0;

count_num=TH0*256+TL0;

tpture=(count_num-495)/8+28;

/*temp[tp++]=count_num;*/

/*RES=100000/(count_num*7)-5;*/

/*RES1=1.0/(count_num*7.0e-5)-2.0*R2;*/

/*tpture=46.34-1.88*RES1;*/

/*tpture=45-17*RES/9;*/

/*tpture=log(RES1/RES0)/log(2.71828)*u+1/tpture0;

tpture=1/tpture-273.15;

/*tpture=tpture*100;*/

/*for(tp=0;abs(tpture-tp)<1;tp++);*/

/*time_memory3[4]=tpture%10;

time_memory3[7]=tpture/10;

time_memory3[7]=time_memory3[3]%10;

time_memory3[6]=11;

time_memory3[5]=tpture/100;

time_memory3[5]=time_memory3[1]%10;

time_memory3[4]=tpture/1000;*/

time_memory3[1]=tpture%10;

time_memory3[0]=tpture/10;

TH0=TL0=0;

}

TH1=0x3c;

TL1=0xb0;

TR0=1;

TR1=1;

}

/*延时程序:

t*50us*/

voiddelay_50us(uintt)

{

ucharj;

for(;t>0;t--)

for(j=19;j>0;j--);

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 计算机软件及应用

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2