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

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

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

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

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

sbitdis_bit5=P2^1;

sbitdis_bit6=P2^0;

sbitled1_bit=P2^2;

//定时LED的控制口

sbitled2_bit=P2^5;

sbits1_bit=P1^0;

//定义S1控制口

sbits2_bit=P1^1;

//定义S2控制口

sbits3_bit=P1^2;

//定义S3控制口

sbitdq_ds18b20=P3^3;

//定义控制DS18B20

sbitspeak=P3^7;

//定义蜂鸣器控制口

sbitclk_ds1302=P3^6;

//定义控制DS1302的时钟线

sbitio_ds1302=P3^5;

//定义控制DS1302的串行数据

sbitrest_ds1302=P3^4;

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

voiddelay_3us();

//3US的延时程序

voiddelay_8us(uintt);

//8US延时基准程序

voiddelay_50us(uintt);

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

voiddisplay1(uchardis_data);

//数码管1显示子程序

voiddisplay2(uchardis_data);

//数码管2显示子程序

voiddisplay3(uchardis_data);

//数码管3显示子程序

voiddisplay4(uchardis_data);

//数码管4显示子程序

voiddisplay5(uchardis_data);

//数码管5显示子程序

voiddisplay6(uchardis_data);

//数码管6显示子程序

voidinit_t0();

//定时器0初始化函数

voiddis_led();

//LED处理函数

voidjudge_s1();

//S1按键处理函数

voidjudge_s2();

//S2按键处理函数

voidjudge_s3();

//S3按键处理函数

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

//显示子程序

voiddis_san(uchars6,uchars5,uchars4,uchars3,uchars2,uchars1,ucharsan);

//闪烁显示子程序

voidjudge_dis();

//显示处理函数

voidjudge_clock();

voidset_ds1302();

//设置时间

voidget_ds1302();

//读取当前时间

voidw_1byte_ds1302(uchart);

//向DS1302写一个字节的数据

ucharr_1byte_ds1302();

//从DS1302读一个字节的数据

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

//DS18B20测温函数定义

voidw_1byte_ds18b20(ucharvalue);

//向DS18B20写一个字节

ucharr_1byte_ds18b20(void);

//从DS18B20读取一个字节的数据

voidrest_ds18b20(void);

//DS18B20复位程序

voidreadtemp_ds18b20(void);

//读取温度

voiddis_temp();

//温度显示函数

//共阳数码管断码表

constuchartabl1[16]={0*c0,0*f9,0*a4,0*b0,0*99,0*92,

//012345

0*82,0*f8,0*80,0*90,0*86,0*87,0*FF,

//6789ETB

0*c6,0*bf,0*ff};

//C-

constuchartabl3[]={0*00,0*01,0*01,0*02,0*03,0*03,0*04,0*04,0*05,0*06,0*06,0*07,0*08,0*08,0*09,0*09};

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_*,temp_flag2;

//从左到右分别存储温度百位,十位,个位,小数位

uchartab23[3];

//={0*40,0*59,0*23,0*28,0*11,0*06,0*09};

//上电时默认的时间

//主程序

voidmain()

{

P3=0*00;

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();

TR0=1;

//

//set_ds1302();

//设置DS1302的初始时间

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

while

(1)

get_ds1302();

judge_dis();

//显示处理

judge_s1();

judge_s2();

judge_s3();

judge_clock();

//闹钟处理程序

}

voidtimer0()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&

0*f0;

zancun4>

>

=4;

zancun5=minute_count&

zancun5>

zancun6=second_count&

zancun6>

dis(zancun4,hour_count&

0*0f,zancun5,minute_count&

0*0f,zancun6,second_count&

0*0f);

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

case3:

dis(5,10,11,3,12,12);

//显示SET3

case4:

dis(5,10,11,4,12,12);

//显示SET4

case5:

dis(5,10,11,5,12,12);

//显示SET5

case6:

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

case7:

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

case8:

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

case9:

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

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

case10:

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

dis_san(zancun1/10,zancun1%10,zancun2/10,zancun2%10,12,zancun3,1);

case11:

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

dis_san(zancun1/10,zancun1

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

当前位置:首页 > 高中教育 > 语文

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

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