基于51单片机的多功能时钟温度计设计

基于51单片机的多功能时钟温度计设计

(仿真+程序+原理图+PCB+设计报告)

具体功能:

1、采用LCD1602液晶显示。

2、显示项目有:年月日、星期、时分秒,温度。

3、采用时钟芯片DS1302,精确走时。板载3V纽扣电池,断电重新上电无需重新设置时间,由3V提供时钟芯片继续计时

4、五个按键操作:设置时钟键,增加键、减小键、设定闹钟键,秒表键。

5、具有ds18b20测温功能

6、秒表中可以实现开始、暂停、复位等功能

代码

void Write1302(uchar dat)
{
  uchar i; 
  SCLK=0;           //拉低SCLK,为脉冲上升沿写入数据做好准备
  delay1(2);       //稍微等待,使硬件做好准备
  for(i=0;i<8;i++)      //连续写8个二进制位数据
    {
     DATA=dat&0x01;    //取出dat的第0位数据写入1302
  delay(2);       //稍微等待,使硬件做好准备
   SCLK=1;           //上升沿写入数据
   delay1(2);      //稍微等待,使硬件做好准备
   SCLK=0;           //重新拉低SCLK,形成脉冲
   dat>>=1;          //将dat的各数据位右移1位,准备写入下一个数据位
   }
 }

 void WriteSet1302(uchar Cmd,uchar dat)
 {
   RST=0;           //禁止数据传递
   SCLK=0;          //确保写数居前SCLK被拉低
   RST=1;           //启动数据传输
   delay1(2);     //稍微等待,使硬件做好准备
   Write1302(Cmd);  //写入命令字
   Write1302(dat);  //写数据
   SCLK=1;          //将时钟电平置于已知状态
   RST=0;           //禁止数据传递
 }

uchar Read1302(void)
 {
   uchar i,dat;
   delay(2);       //稍微等待,使硬件做好准备
   for(i=0;i<8;i++)   //连续读8个二进制位数据
   {
    dat>>=1;       //将dat的各数据位右移1位,因为先读出的是字节的最低位
    if(DATA==1)    //如果读出的数据是1
    dat|=0x80;    //将1取出,写在dat的最高位
    SCLK=1;       //将SCLK置于高电平,为下降沿读出
    delay1(2);  //稍微等待
    SCLK=0;       //拉低SCLK,形成脉冲下降沿
    delay1(2);  //稍微等待
    }  
  return dat;        //将读出的数据返回
  }

uchar  ReadSet1302(uchar Cmd)
 {
  uchar dat;
  RST=0;                 //拉低RST
  SCLK=0;                //确保写数居前SCLK被拉低
  RST=1;                 //启动数据传输
  Write1302(Cmd);       //写入命令字
  dat=Read1302();       //读出数据
  SCLK=1;              //将时钟电平置于已知状态
  RST=0;               //禁止数据传递
  return dat;          //将读出的数据返回
}
void Init_DS1302(void)
{ 
 WriteSet1302(0x8E,0x00);                 //根据写状态寄存器命令字,写入不保护指令 
 WriteSet1302(0x80,((0/10)<<4|(0%10)));   //根据写秒寄存器命令字,写入秒的初始值
 WriteSet1302(0x82,((12/10)<<4|(12%10)));   //根据写分寄存器命令字,写入分的初始值
 WriteSet1302(0x84,((11/10)<<4|(11%10))); //根据写小时寄存器命令字,写入小时的初始值
 WriteSet1302(0x86,((25/10)<<4|(25%10))); //根据写日寄存器命令字,写入日的初始值
 WriteSet1302(0x88,((1/10)<<4|(1%10))); //根据写月寄存器命令字,写入月的初始值
 WriteSet1302(0x8c,((13/10)<<4|(13%10)));   //nian
 WriteSet1302(0x8a,((1/10)<<4|(1%10)));
}

void DisplaySecond(uchar x)
{
 uchar i,j;    
 i=x/10;
 j=x%10;
 write_com(0xc7);   
 write_date(0x30+i);   
 write_date(0x30+j);      
 }
void DisplayMinute(uchar x)
{
 uchar i,j;    
 i=x/10;
 j=x%10; 
 write_com(0xc4);    
 write_date(0x30+i);  
 write_date(0x30+j);        
 }
 void DisplayHour(uchar x)
{
 uchar i,j;   
 i=x/10;
 j=x%10;
 write_com(0xc1);    
 write_date(0x30+i);  
 write_date(0x30+j);        
 }
 
void DisplayDay(uchar x)
{
 uchar i,j;   
 i=x/10;
 j=x%10;    
 write_com(0x89);    
 write_date(0x30+i);  
 write_date(0x30+j);      
 }

void DisplayMonth(uchar x)
{
 uchar i,j;     
 i=x/10;
 j=x%10;  
 write_com(0x86);    
 write_date(0x30+i);  
 write_date(0x30+j);  
 }

void DisplayYear(uchar x)
{
 uchar i,j;  
  i=x/10;
 j=x%10; 
 write_com(0x83);    
 write_date(0x30+i);
 write_date(0x30+j);  
 }   
void DisplayWeek(uchar x)
{ uchar i;
   x=x*3;
 write_com(0x8c);    
 for(i=0;i<3;i++)
   {
   	write_date(table2[x]);
	x++;  
   }
 }   


    

硬件设计

使用元器件:

单片机:STC89C51;

(注意:单片机是通用的,无论51还是52、无论stc还是at都一样,引脚功能都一样。程序也是一样的。)

IC座:DIP40;万能板:9*15 ;

液晶屏:LCD1602;排阻:1k*8;

时钟芯片:DS1302;

蜂鸣器:5V 有源;

三极管 :9012;晶振:11.0592;

电容:22pF,10uF/16V;电阻:1k;

电位器:10K;按键:6*6*5;

接线端子:5.08*2P;

温度传感器:DS18B20;

发光二极管:5mm红色;

自锁开关:8*8;导线:若干;

流程图:

设计资料

01 仿真图

    本设计使用proteus7.8和proteus8.7两个版本设计,向下兼容,无需担心!具体如图!

02 原理图

    本系统原理图采用Altium Designer19设计,具体如图!

03 程序

    本设计使用软件keil4和keil5两个版本编程设计,无需担心!具体如图!

04 设计报告

    一万两千字设计报告,具体如下!

05 资料图

    全部资料包括仿真源文件 、程序(含注释)、AD原理图、开题报告、设计报告、流程图、任务书等。具体内容如下,全网最全! !

下面是开源51单片机设计资料

​大家共同学习进步:

链接:https://pan.baidu.com/s/1-8tUuNXMpdhpS9udt-7RjA?pwd=nfqp 
提取码:nfqp 
 

点赞分享,一起学习进步!一起成长。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
基于51单片机多功能时钟温度计是一种具有实时温度显示和定时功能的电子万年历。传统的电子日历存在体积大、功耗大、显示不准确等问题,而这种设计通过加入时钟芯片DS1302来实现准确记时和定时功能。同时,它还具有显示实时温度的功能。传统的温度传感器系统通常采用复杂的放大、调理和A/D转换电路,而这种设计采用了DS18B20一线制数字温度传感器,可以直接将温度信号转换成数字信号,从而简化了电路结构,降低了成本。最后,温度和时间都通过12864液晶显示器进行显示。测试表明,该系统达到了设计要求的各项功能,各部分工作正常。\[1\]\[2\] 关键词:时钟、温度检测、单片机、温度、LCD12864、DS1302\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* [基于51单片机多功能电子万年历设计(LCD12864+DS1302+DS18B20)](https://blog.csdn.net/qq_45385706/article/details/110541736)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [基于单片机温度计设计](https://blog.csdn.net/m0_51061483/article/details/108836647)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值