51单片机+ds1302+DS18b20温度时钟电路图+C语言程序.docx

上传人:b****1 文档编号:707170 上传时间:2022-10-12 格式:DOCX 页数:70 大小:60KB
下载 相关 举报
51单片机+ds1302+DS18b20温度时钟电路图+C语言程序.docx_第1页
第1页 / 共70页
51单片机+ds1302+DS18b20温度时钟电路图+C语言程序.docx_第2页
第2页 / 共70页
51单片机+ds1302+DS18b20温度时钟电路图+C语言程序.docx_第3页
第3页 / 共70页
51单片机+ds1302+DS18b20温度时钟电路图+C语言程序.docx_第4页
第4页 / 共70页
51单片机+ds1302+DS18b20温度时钟电路图+C语言程序.docx_第5页
第5页 / 共70页
点击查看更多>>
下载资源
资源描述

51单片机+ds1302+DS18b20温度时钟电路图+C语言程序.docx

《51单片机+ds1302+DS18b20温度时钟电路图+C语言程序.docx》由会员分享,可在线阅读,更多相关《51单片机+ds1302+DS18b20温度时钟电路图+C语言程序.docx(70页珍藏版)》请在冰豆网上搜索。

51单片机+ds1302+DS18b20温度时钟电路图+C语言程序.docx

51单片机+ds1302+DS18b20温度时钟电路图+C语言程序

时钟电路图:

*■11

PCB板:

酱时井務ft是用诵m-pdfMerisi口叵因

Fjr齐舱C:

s®工细理沖缶皿ndm-*TfS'4'包田Ui>'irftZS:

M

 

訂开始LJ-雲匕®务如1痒3月计ttVl.•呈T』d"吐拠席射■w耳pg文宇■[豹…

SS时軽件思冃说

 

单片机程序:

/*===================================================================

调试要求:

1.MCU:

AT89S52芯片或AT89C52

2.晶振:

12MHz

功能:

多功能时钟+温度计

/

#inelude

#ineludevintrins.h>

 

sbits1_bit=P1A0;//定义S1控制口

sbits2_bit=P01;//定义S2控制口

sbits3_bit=P02;//定义S3控制口

sbitdq_ds18b20=P3A3;//定义控制DS18B20

sbitspeak=P3A7;//定义蜂鸣器控制口

sbitclk_ds1302=P3A6;//定义控制DS1302勺时钟线sbitio_ds1302=P3A5;//定义控制DS1302勺串行数据

sbitrest_ds1302=P3A4;

#definesmg_dataP0//定义数码管数据口

voiddelay_3us();//3US的延时程序

延时50*T微妙函数的声明

//数码管1显示子程序

//数码管2显示子程序

//数码管3显示子程序

//数码管4显示子程序

//数码管5显示子程序

//数码管6显示子程序

voiddelay_8us(uintt);//8US延时基准程序

voiddelay_50us(uintt);//

voiddisplay1(uchardis_data);voiddisplay2(uchardis_data);voiddisplay3(uchardis_data);voiddisplay4(uchardis_data);voiddisplay5(uchardis_data);voiddisplay6(uchardis_data);

voidinit_t0();//定时器0初始化函数

voiddis_led();//LED处理函数

voidjudge_s1();//S1按键处理函数

voidjudge_s2();//S2按键处理函数

voidjudge_s3();//S3按键处理函数

//显

s2,uchar

voiddis(uchars6,uchars5,uchars4,uchars3,uchars2,uchars1);

示子程序

voiddis_san(uchars6,uchars5,uchars4,uchars3,uchar

s1,ucharsan);〃闪烁显示子程序

voidjudge_dis();//显示处理函数

voidjudge_clock();//显示处理函数

voidset_ds1302();//设置时间

voidget_ds1302();//读取当前时间

voidw_1byte_ds1302(uchart);//向DS130写一个字节的数据

ucharr_1byte_ds1302();//从DS130读一个字节的数据

//DS18B20测温函数定义

voidw_1byte_ds18b20(ucharvalue);//向DS18B2写一个字节ucharr_1byte_ds18b20(void);//从DS18B2读取一个字节的数据voidrest_ds18b20(void);//DS18B20复位程序

voidreadtemp_ds18b20(void);//读取温度

voiddis_temp();//温度显示函数

//共阳数码管断码表

constuchartabl1[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,

//012345

0x82,0xf8,0x80,0x90,0x86,0x87,0xFF,

//6789ETB

0xc6,0xbf,0xff};

//C-

constuchar

tabl3[]={0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09};

uchart0_crycle;

ucharhour_count,minute_count,second_count,msecond_count;

ucharclock_hour,clock_minute;

ucharcountdown_second;

ucharcountdown_hour,countdown_minute;

ucharclock_en;//闹钟关闭和开启的标志,1开启,0关闭

ucharflag1,second_flag,zancun1,zancun2,zancun3;

ucharzancun4,zancun5,zancun6,zancun7;

ucharclock_flag,countdown_flag;

ucharmsecond_minute,msecond_second,msecond_msecond,msecond_flag;//秒表相关参数

uintspeak_count;

uchartempl,temph,temp_flag;

uchart_b,t_s,t_g,t_x,temp_flag2;//从左到右分别存储温度百位,十位,个

位,小数位

uchartab23[3];〃二{0x40,0x59,0x23,0x28,0x11,0x06,0x09};//上电时默认的

时间

//主程序

voidmain()

{

P3=0x00;

flag1=0;

zancun3=0;

msecond_minute=0;//置秒表相关参数为0

msecond_second=0;

msecond_msecond=0;

speak=1;//关闭蜂鸣器

speak_count=0;

clock_hour=0;

clock_minute=0;

clock_flag=0;

countdown_flag=0;//倒计时标志位为0

clock_en=0;//开机时默认关闭闹钟

init_t0();

TRO=1;//

//set_ds1302();〃设置DS1302勺初始时间

//接下来开始编写让数码管显示的程序

while

(1)

{

get_ds1302();

judge_dis();//显示处理

judge_s1();

judge_s2();

judge_s3();

judge_clock();//闹钟处理程序

}_

}

voidtimerO()interrupt1

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;t0_crycle++;

if(t0_crycle==2)//0.1秒

{

t0_crycle=0;

msecond_flag=1;

msecond_count++;

if(msecond_count==10)//1秒

{_

msecond_count=0;

second_flag=1;

}

}

}

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

//显示处理函数

voidjudge_dis()

{

if(flag1==0)

{

if(second_flag==1)

{_

zancun7++;

second_flag=0;

}_

if(zancun7<1)

{

if(temp_flag2==1)

{一

readtemp_ds18b20();//读取温度temp_flag2=0;

dis_temp();//温度显示函数

}

if(zancun7>=1)

{

temp_flag2

=1;

zancun4

=hour_count&0xf0;

zancun4

>>=4;

zancun5

=minute_count&0xf0;

zancun5

>>=4;

zancun6

=second_count&0xf0;

zancun6

>>=4;

dis(zancun4,hour_count&0x0f,zancun5,minute_count&0x0f,zancun6,second_count&0x0f);

dis_led();

if(zancun7==5)zancun7=0;

}

}

if(flag1!

=0)

{

switch(flag1)

{

case1:

dis(5,10,11,1,12,12);//显示SET1

led1_bit=1;

led2_bit=1;

break;

case2:

dis(5,10,11,2,12,12);//显示SET2

break;

case3:

dis(5,10,11,3,12,12);//显示SET3

break;

case4:

dis(5,10,11,4,12,12);//显示SET4

break;

case5:

dis(5,10,11,5,12,12);//显示SET5

break;

case6:

dis_san(zancun1/10,zancunl%10,zancun2/10,zancun2%0,12,12,1);break;

case7:

dis_san(zancun1/10,zancunl%10,zancun2/10,zancun2%0,12,12,2);break;

case8:

dis_san(zancun1/10,zancunl%10,zancun2/10,zancun2%0,12,12,3);break;

case9:

//进入修改时间,时间分位个位闪烁

dis_san(zancun1/10,zancunl%10,zancun2/10,zancun2%0,12,12,4);break;

case10:

//进入修改闹钟,闹钟小时十位闪烁

dis_san(zancunl/10,zancunl%10,zancun2/10,zancun2%0,12,zancun3,1);break;

case11:

//进入修改闹钟,闹钟小时个位闪烁

dis_san(zancun1/10,zancunl%10,zancun2/10,zancun2%0,12,zancun3,2);break;

case

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

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1