当前位置: 首页 > news >正文

基于单片机的多功能电子钟设计

文章目录

  • 前言
  • 资料获取
  • 设计介绍
  • 功能介绍
    • 程序代码部分参考
  • 设计清单
  • 具体实现截图
  • 参考文献
  • 设计获取


前言

💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗
👇🏻 精彩专栏 推荐订阅👇🏻
单片机设计精品实战案例
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人

资料获取

文章底部名片,详细资料联系我。

设计介绍

随着电子技术行业的迅猛发展,电子产品的市场需求量增多,许多传统产品受到前所未有的冲击。电子钟是日常生活中的必需品,但传统电子钟功能单一,不能很好地满足人们日常的需求。多功能电子钟解决了这些问题,不仅拥有传统电子钟的功能,还拥有显示日期、温度测试、电子闹钟等常用功能,大大满足了人们的需求[1]。
多功能电子时钟是采用数字电路实现对时、分、秒数字显示的计时装置,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、通断动力设备、甚至各种定时电气的自动启用等,所有这些都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义[2]。
当前市场上已有现成的数字钟集成电路芯片出售,价格较便宜。由于数字集成电路技术的发展,使数字钟具有走时准确,性能稳定,携带方便等特点,是目前人们生活和工作不可或缺的报时用品。国内厂家的产品拥有时间、日期、温度、夜光、贪睡功能、倒计时、顺计时、省电模式、多组闹钟、可循环显示、多档亮度调节、12/24时制转换、调节亮度、遥控操作等功能。国外的时钟企业也已经研发出了价格低廉、封装小,功能更齐全的且具有时基软件调校功能(TTF)及振荡器停振自动检测功能的时钟芯片。
在实际生活中数字式电子钟的设计方法有很多钟,可用中小规模集成电路组成电子钟;也可以利用专用的电子钟芯片配以显示电路及其所需要的外围电路组成电子钟;还可以利用单片机来实现电子钟等等。如果用数字电路来完成,所设计的电路相当复杂,其功能也主要依赖于数字电路的各功能模块的组合来实现,焊接的过程比较复杂,成本也非常高[3]。而利用单片机实现的电子钟具有编程灵活、便于电子钟功能的扩充(即可用该电子钟发出各种控制信号)、精确度高等特点,被广泛应用。
本次设计是基于单片机的定时计时功能而设计的一款以单片机为核心控制的电子钟,具有多项显示和控制功能,并且能够实现实时显示时、分、秒;具有闹钟、秒表功能;实时显示环境的温度、湿度、二氧化碳等信息。

功能介绍

课题研究方案:基于单片机AT89S52的实时多功能电子钟由时钟、微控制器、键盘和液晶显示、温湿度测量及显示、PM2.5、CO2测量及显示、蜂鸣器等部分组成。整个系统工作时,首先对各个测量模块进行初始化设置,使其产生的相应信号(如时钟模块产生时间信号、温湿度测量模块产生的温湿度信号等)可以通过键盘对其进行调整与校正以及完成其他控制功能,然后由液晶模块显示时间信息,包括年、月、日、时、分、秒、星期、温湿度、空气质量等信息,蜂鸣器模块用于整点报时功能。

课题主要研究内容与技术参数:主要研究是一款以单片机为核心,且具有多项显示和控制功能的多功能电子钟。从而整个系统能够实现实时显示时、分、秒;具有闹钟、秒表功能;实时显示环境的温度、湿度、二氧化碳等信息。具体的技术参数如下:
1.点阵式液晶显示器或 LED 显示;
2.能够实时显示时、分、秒,以 24 时计时方式;
3.具有快速校准时、分秒的功能;
4.时钟具有整点报时的功能;
5.具有秒表功能,秒表精度 0.1 秒,具有启动、暂停及清零功能;
6.具有闹钟的功能,可通过按钮关闭该提醒音;
7.可显示环境的温度和湿度等功能,温度检测精度±0.5℃;湿度检测精度±2%RH。
8.可以检测 PM2.5,测量精度为±10%;
9.可检测 CO2 浓度,测量精度为±5%。

程序代码部分参考

/*************************************************************电子时钟补充说明:
***************************************************************/
#include<reg52.h>		   //头文件
#include<LCD1602.h>
#include<DS1302.h>
#include<DHT11.h>
#include<AT24C02.h>
#include<INTERRUPT.h>
#include<ADC0832.h>
#include<SGP30.h>#define uchar unsigned char//宏定义
#define uint unsigned int/***********************引脚定义***********************/ 	
sbit key_mode = P1^0;	 //设置键
sbit key_jia  = P1^1;	 //加键
sbit key_jian = P1^2;	 //减键
sbit key_ok   = P1^3;	 //确定键
sbit key_miao = P1^4;	 //秒表键sbit buzz     = P2^7;	 //蜂鸣器
sbit PM_out   = P3^2;    //粉尘传感器
/***********************变量定义***********************/
uchar set_f=0;		//设置选择标记,=0非设置,=1设置
uchar num;			//计数变量
uchar naozhong[3];	//闹钟-时、闹钟-分、闹钟-开关
bit   miaobiao_f=0;	//秒表标记位,=0非秒表模式,=1秒表模式
bit   baoshi_f=0;	//报时标记位,=1整点报时uint PM25=0;	//存储实测PM2.5值uint pm25_data[10];	//历史最近10个PM2.5值,以便求平均减少测量误差uchar max=184;  //AD最大值
uchar min=16;   //AD最小值/********************************************************
函数名称:void delayms(uint ms)
函数作用:毫秒延时函数
参数说明:
********************************************************/ 
void delayms(uint ms)
{unsigned char i=100,j;for(;ms;ms--){while(--i){j=10;while(--j);}}
}
/********************************************************
函数名称:void delayus(uint us)
函数作用:US延时函数
参数说明:
********************************************************/
void delayus(uint us)
{while( --us ) ;
}
/********************************************************
函数名称:void baoshi(uchar i)
函数作用:整点报时函数
参数说明:i为蜂鸣器响的次数
********************************************************/ 
void baoshi(uchar i)
{uchar j;for(j=0;j<i;j++)//循环i次{buzz=0;		//蜂鸣器鸣叫delayms(20);//延时buzz=1;		//关闭蜂鸣器鸣叫delayms(20);//延时}
}
/********************************************************
函数名称:void display(void)
函数作用:正常显示时间、温度函数
参数说明:
********************************************************/ 
void display(void)
{//显示时间LCD_disp_char(0,1,ASCII[time[2]/10]);//显示时【0:表示第1列,2:表示第2行,所有关于显示都一样】LCD_disp_char(1,1,ASCII[time[2]%10]);LCD_disp_char(2,1,':');LCD_disp_char(3,1,ASCII[time[1]/10]);//显示分【3:表示第4列,2:表示第2行,所有关于显示都一样】LCD_disp_char(4,1,ASCII[time[1]%10]);LCD_disp_char(5,1,':');LCD_disp_char(6,1,ASCII[time[0]/10]);//显示秒LCD_disp_char(7,1,ASCII[time[0]%10]);//判断整点报时if(time[0]==0&&time[1]==0&&baoshi_f==0)//判断是否为整点{baoshi_f=1;				   //标记整点报时开启if(time[2]%12==0)	   //根据当前时间,控制蜂鸣器鸣叫次数baoshi(12);elsebaoshi(time[2]%12);//12小时制			}if(time[0]>10&&time[1]==0)	   //整点报时结束baoshi_f=0;				   //重置整点报时标志//判断闹钟if(time[2]==naozhong[0]&&time[1]==naozhong[1]&&time[0]==0&&naozhong[2]==1)buzz=0;//闹钟时间到,开启闹钟if(time[1]!=naozhong[1])buzz=1;//闹钟结束关闭闹钟//显示温度if(DHT11_Check()){if(time[0]%6>2){LCD_disp_char(10,1,Temp_H/10+0x30);LCD_disp_char(11,1,Temp_H%10+0x30);LCD_disp_char(12,1,'.');LCD_disp_char(13,1,Temp_L%10+0x30);LCD_disp_char(14,1,0x00);			 //显示自定义字符‘°’LCD_disp_char(15,1,'C');			 //显示‘C’}else{LCD_disp_char(10,1,' ');LCD_disp_char(11,1,ASCII[Humi_H%100/10]);LCD_disp_char(12,1,ASCII[Humi_H%10]);lcd1602_write_character(13,1,"%RH");		}}//显示PM2.5值LCD_disp_char(0,2,ASCII[PM25/100]);	LCD_disp_char(1,2,ASCII[PM25%100/10]);LCD_disp_char(2,2,ASCII[PM25%10]);lcd1602_write_character(3,2,"ug/m3");//显示CO2值LCD_disp_char(9,2,ASCII[CO2/1000]);	LCD_disp_char(10,2,ASCII[CO2%1000/100]);LCD_disp_char(11,2,ASCII[CO2%100/10]);LCD_disp_char(12,2,ASCII[CO2%10]);lcd1602_write_character(13,2,"PPM");
}
/********************************************************
函数名称:void display2()
函数作用:显示调整日期、时间函数
参数说明:
********************************************************/ 
void display2()
{num++;lcd1602_write_character(0,1,"Set time:");if(num%2==0)	  //偶数次显示,奇数次不显示。这样就会有闪烁效果,可以清楚看到当前设置的是哪个值{LCD_disp_char(4,2,ASCII[time[2]/10]); //显示时LCD_disp_char(5,2,ASCII[time[2]%10]);LCD_disp_char(6,2,':');  LCD_disp_char(7,2,ASCII[time[1]/10]); //显示分LCD_disp_char(8,2,ASCII[time[1]%10]);	   LCD_disp_char(9,2,':');LCD_disp_char(10,2,ASCII[time[0]/10]);//显示秒LCD_disp_char(11,2,ASCII[time[0]%10]);}	else			 //奇数次不显示{switch(set_f)//根据当前设置的内容,对应位置闪烁{case 1: lcd1602_write_character(4,2,"  "); break;case 2: lcd1602_write_character(7,2,"  "); break;case 3: lcd1602_write_character(10,2,"  "); break;default: break;}}	
}
/********************************************************
函数名称:void display3()
函数作用:显示调整闹钟函数
参数说明:
********************************************************/ 
void display3()
{num++;lcd1602_write_character(0,1,"Set alarm clock");if(num%2==0)	//偶数次显示,奇数次不显示。这样就会有闪烁效果,可以清楚看到当前设置的是哪个值{	LCD_disp_char(3,2,ASCII[naozhong[0]/10]);//显示闹钟-时LCD_disp_char(4,2,ASCII[naozhong[0]%10]);LCD_disp_char(5,2,':');  LCD_disp_char(6,2,ASCII[naozhong[1]/10]);//显示闹钟-分LCD_disp_char(7,2,ASCII[naozhong[1]%10]);if(naozhong[2]%2==0)lcd1602_write_character(9,2,"OFF"); //显示闹钟-开/关elselcd1602_write_character(9,2,"ON ");	}else			 //奇数次不显示{switch(set_f)//根据当前设置的内容,对应位置闪烁{case 4: lcd1602_write_character(3,2,"  "); break;case 5: lcd1602_write_character(6,2,"  "); break;case 6: lcd1602_write_character(9,2,"   "); break;default: break;}}
}
/********************************************************
函数名称:void display4(void)
函数作用:显示秒表计时函数
参数说明:
********************************************************/ 
void display4()
{lcd1602_write_character(0,1,"Seconds counter");	 //000:00.0LCD_disp_char(4,2,ASCII[fens/100]);	  //显示秒表-分LCD_disp_char(5,2,ASCII[fens%100/10]);LCD_disp_char(6,2,ASCII[fens%10]);LCD_disp_char(7,2,':');LCD_disp_char(8,2,ASCII[times/10]);	  //显示秒表-秒LCD_disp_char(9,2,ASCII[times%10]);LCD_disp_char(10,2,'.');LCD_disp_char(11,2,ASCII[T0_num/2]);  //显示秒表-分秒
}
/********************************************************
函数名称:void scan(void)
函数作用:按键查询处理函数
参数说明:
********************************************************/ 
void scan(void)
{//设置键if(key_mode==0&&miaobiao_f==0)			   //按键按下{  delayms(7);			   //延时消抖if(key_mode==0)		   //再次确认按键按下{buzz=1;		   //进入设置关闭闹钟声光提示if(set_f==0||set_f==3||set_f==6)     //进入设置先清除屏幕,显示设置部分{Writeds1302 (WRITE_PROTECT,0X00); //禁止DS1302写保护LCD_write_command(0x01);          //清除屏幕显示delay_n40us(100);		          //延时等待全部清除完毕}set_f++;							  //设置变量+1if(set_f>6)						  //全部设置完成,退出设置{									  set_f=0;						  //重置设置变量	AT24C02_write_date(0,naozhong[0]);//写入【闹钟-时】数据保存AT24C02_write_date(1,naozhong[1]);//写入【闹钟-分】数据保存AT24C02_write_date(2,naozhong[2]);//写入【闹钟-开关】数据保存Writeds1302 (WRITE_MINUTE,(time[1]/10)*16+time[1]%10);//将设置好的时间写入DS1302Writeds1302 (WRITE_SECOND,(time[0]/10)*16+time[0]%10);LCD_write_command(0x01);          //清除屏幕显示delay_n40us(100);		          //延时等待全部清除完毕}			}while(!key_mode);//等待按键松开}//确定if(key_ok==0)		       //按键按下{delayms(7);			   //延时消抖if(key_ok==0&&set_f!=0)//再次确认按键按下,并且当前处于设置模式{set_f=0;						  //重置设置变量	AT24C02_write_date(0,naozhong[0]);//写入【闹钟-时】数据保存AT24C02_write_date(1,naozhong[1]);//写入【闹钟-分】数据保存AT24C02_write_date(2,naozhong[2]);//写入【闹钟-开关】数据保存	Writeds1302 (WRITE_MINUTE,(time[1]/10)*16+time[1]%10);//将设置好的时间写入DS1302Writeds1302 (WRITE_SECOND,(time[0]/10)*16+time[0]%10);LCD_write_command(0x01);          //清除屏幕显示delay_n40us(100);		          //延时等待全部清除完毕}elseif(key_ok==0&&buzz==0)	  //否则,当前闹钟响起,进入暂停闹钟{buzz=1;						  //关闭蜂鸣器}elseif(key_ok==0&&miaobiao_f==1)  //否则,秒表启停{buzz=0;TR0=~TR0;//切换 秒表计时-开始/暂停delayms(5);buzz=1;}				while(!key_ok);	                      //等待按键松开}//加键		if(key_jia==0)				//按键按下{delayms(7);				//延时消抖if(key_jia==0&&set_f!=0)//再次判断按键按下{if(set_f==1)	  //设置时,同上{			time[2]++;time[2]=(time[2]/10)*16+time[2]%10;if(time[2]>0x23)time[2]=0x00;Writeds1302 (WRITE_HOUR,time[2]);	}if(set_f==2)	  //设置分,同上{time[1]++;time[1]=(time[1]/10)*16+time[1]%10;if(time[1]>0x59)time[1]=0x00;Writeds1302 (WRITE_MINUTE,time[1]);	}if(set_f==3)	 //设置秒,同上{time[0]++;time[0]=(time[0]/10)*16+time[0]%10;if(time[0]>0x59)time[0]=0x00;Writeds1302 (WRITE_SECOND,time[0]);	}if(set_f==4)	 //设置闹钟-时{naozhong[0]++;		//闹钟-时 +1if(naozhong[0]>23)	//判断闹钟-时 是否大于23时naozhong[0]=0;	//如果是,回到0时}if(set_f==5)    //设置闹钟-分{naozhong[1]++;		//闹钟-分 +1if(naozhong[1]>59)	//判断闹钟-分 是否大于59时naozhong[1]=0;	//如果是,回到0分	}if(set_f==6)	//设置闹钟-开/关{naozhong[2]++;		//切换闹钟开/关,0表示关,1表示开	if(naozhong[2]==2)naozhong[2]=0;}}if(key_jia==0&&miaobiao_f==1)//秒表模式下{T0_num=0;				 //复位秒表时间times=0;fens=0;}	}//减键if(key_jian==0)			     //按键按下{delayms(7);				 //延时消抖if(key_jian==0&&set_f!=0)//再次判断按键按下{if(set_f==1)	//设置时,同上{			if(time[2]==0)time[2]=23;elsetime[2]--;time[2]=(time[2]/10)*16+time[2]%10;Writeds1302 (WRITE_HOUR,time[2]);		}if(set_f==2)	//设置分,同上{if(time[1]==0)time[1]=59;elsetime[1]--;time[1]=(time[1]/10)*16+time[1]%10;Writeds1302 (WRITE_MINUTE,time[1]);		}if(set_f==3)	//设置秒,同上{if(time[0]==0)time[0]=59;elsetime[0]--;time[0]=(time[0]/10)*16+time[0]%10;Writeds1302 (WRITE_SECOND,time[0]);			}if(set_f==4)	 //设置闹钟-时,同上{if(naozhong[0]==0)naozhong[0]=23;else	naozhong[0]--;						}if(set_f==5)	//设置闹钟-分,同上{if(naozhong[1]==0)naozhong[1]=59;else	naozhong[1]--;}if(set_f==6)	//设置闹钟-开/关,同上{naozhong[2]++;			if(naozhong[2]==2)naozhong[2]=0;}}if(key_jian==0&&miaobiao_f==1)//秒表模式{T0_num=0;				  //复位秒表时间times=0;fens=0;}}//秒表键,不支持连按if(key_miao==0&&set_f==0)		  //否者,切换秒表模式和正常模式{delayms(7);				 //延时消抖if(key_miao==0)//再次判断按键按下{miaobiao_f=~miaobiao_f;	  //切换秒表模式和正常模式		LCD_write_command(0x01);  //清除屏幕显示delay_n40us(100);		  //延时等待全部清除完毕if(miaobiao_f==0)		  //退出秒表模式时,关闭秒表计时{TR0=0;				  //关闭定时器T0_num=0;			  //重置所有秒表的时间times=0;fens=0;}}while(!key_miao);}	
}
/*********************************************************
函数名称:uchar paixu(uchar *s)
函数作用:求平均值
参数说明:uchar型使用
*********************************************************/
uchar paixu(uchar *s)
{uchar i;uint val;val=0;for(i=0;i<10;i++) 		//进行累加val+=s[i];	return val/10;			//求平均数并返回
}/*********************************************************
函数名称:void read_pm25()
函数作用:求PM2.5值
参数说明:
*********************************************************/
void read_pm25()
{uchar i;uchar temp[10];for(i=0;i<10;i++)					  //连续采集十个数据{	PM_out=1;						  //控制输出高电平delayus(34);					  //延时_nop_();_nop_();ADC0832_read(0);				  //采集AD值delayus(4);_nop_();_nop_();PM_out=0;						  //控制输出低电平delayus(1209);					  temp[i]=ADC_date;				  //记录AD值}ADC_date=paixu(temp);				  //求本次采集的十个数据平均值if(ADC_date>max)					  //记录历史最大值max=ADC_date;if(ADC_date<min)					  //记录历史最小值min=ADC_date;	PM25=(double)((ADC_date-min)/(max-min))*520;//计算PM2.5for(i=0;i<9;i++)					  //记录最近十个PM2.5值数据pm25_data[i]=pm25_data[i+1];pm25_data[9]=PM25;PM25=paixu2(pm25_data);				  //将记录的十个PM2.5值数据取平均值
}
/********************************************************
函数名称:void mian()
函数作用:主函数
参数说明:
********************************************************/ 
void main()
{uchar i=200;				        //循环计数变量if(key_ok==0){buzz=0;delayms(100);if(key_ok==0){for(i=0;i<5;i++)AT24C02_write_date(i,0);//写入数据保存}buzz=1;}naozhong[0]=AT24C02_read_date(0);//读取存储的【闹钟-时】数据naozhong[1]=AT24C02_read_date(1);//读取存储的【闹钟-分】数据naozhong[3]=AT24C02_read_date(2);//读取存储的【闹钟-开关】数据SGP30_Init();               //初始化SGP30T0_init();					//定时器初始化LCD_init();					//LCD1602初始化lcd1602_write_pic(0x00,pic);//将自定义字符“°”写入到LCD1602中while(1)					//死循环{scan();					//按键检测处理if(miaobiao_f==0)		//非秒表模式,正常显示模式{if(set_f==0)		//非设置模式下{i++;			//循环次数+1if(i>30)		//循环次数达到30次,采集一次温度{i=0;		//重置循环次数read_pm25();     //采集PM2.5值DHT11_read();    //DHT11读取温湿度函数SGP30_Read_CO2();//从SGP30读数据CO2Read_time();	//读取DS1302时间}display();		//更新显示数据}elseif(set_f<4)		//设置时间模式{				Read_time();//读取时间display2();	//显示校准时间界面}else			//设置闹钟模式display3();	//显示设置闹钟界面}else					//秒表模式display4();}
}

设计清单

元件清单
'双掷开关
'蜂鸣器
STC89C51
下载口

具体实现截图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

参考文献

[1]王瀚增,姜欣欣.基于C51单片机的多功能电子钟系统设计与仿真[J].通信电源技术,2018,35(02):117-119.
[2]李刚仁,王进. 基于单片机AT89S52的实时电子钟的Proteus仿真[J]. 公路与汽运,2011,(02):20-22+54.
[3]卢超. 基于单片机的数字电子钟的设计与制作[J]. 大庆师范学院学报,2006,(05):48-53.
[4]金子涵, 任致远, 史旭东,王胜铎. 基于Multisim 14仿真设计的多功能数字电子钟[J]. 电子产品世界, 2021, 28(06): 94-97.
[5]陈敏. 基于51单片机的多功能电子钟设计[J]. 轻工科技, 2023, 39(01): 105-108.
[6]邵英淼, 李晶晶, 马丽娜等. 基于无线通信的多功能室内环境检测系统设计[J]. 无线互联科技, 2020, 17(09): 1-2.
[7]张丽红, 张国祥. 基于51单片机的电子钟系统设计与仿真[J]. 电子世界, 2018(20): 134-135.
[8]张婷. 基于单片机的电子钟的设计与仿真[J]. 山西电子技术, 2017(06): 14-16.
[9]尹克岩. 基于单片机的多功能数字钟的设计[J]. 电子制作, 2017(15): 68-69+54.
[10]赵海雁, 闫强. 基于单片机多功能的电子钟系统设计[J]. 山西电子技术, 2017, (01): 58-61.
[11]马忠梅, 李元章, 王美刚,王拓, 单片机的C语言应用程序设计(第6版). 北京航空航天出版社,2017.
[12]王会良,王东锋,董冠强,单片机C语言应用100例. 电子工业出版社,2017.
[13]刘波. 51单片机应用开发典型范例基于PROTEUS仿真. 电子工业出版社, 2014.
[14]马修水,钟伟红,陈琢,刘西琳.传感器与检测技术,浙江大学出版社, 2016.5
[15]赵海雁, 闫强. 基于单片机多功能的电子钟系统设计[J]. 山西电子技术, 2017,(01): 58-61.
[16]叶青. 基于51单片机的多功能数字电子钟的设计[J]. 山东工业技术,2016,(10): 158-160.
[17]刘昕,杨峰,谢晋.基于单片机AT89C52的多功能电子钟设计[J].信息化研究,2010,36(04): 61-64.
[18]张淑骅. 基于单片机的温度电子钟显示系统[J]. 科技信息,2009,(33): 58+46.
[19]贺媛, 李昕, 马健, 纪永成. 室内二氧化碳浓度监测报警器设计[J]. 吉林大学学报(信息科学版),2023,41(05): 827-831.
[20]薛青. 多功能电子钟的设计与实现[J]. 黑龙江科技信息,2017,(09): 95.
[21]Vinay Divakar. Design and Implementation of Microcontroller Based Temperature Data Logging System[J]. International Journal of Engineering and Advanced Technology (IJEAT),2013,3(2).
[22]Jun Xia Zhang, Bing Wang, Ya Ning Song. Exploration of Humidity Data Acquisition System Based on Single Chip Microcomputer[J]. Advanced Materials Research, 2013, 2526(753-755).
[23]Jian Huang. Design of Electronic Clock based on STM32[J]. IOP Conference Series: Materials Science and Engineering,2017,242(1).
[24]Wen Haokang,Zheng Qiang. Design of a High Precision Digital Clock Based on Single Chip Microcomputer[J]. 人工生命とロボットに関する国際会議予稿集,2021,26.
[25]Hu X., Chen T.,Zhao N… Research on rail temperature measuring meter based on DS18B20 and STC12C series MCU[J]. RISTI - Revista Iberica de Sistemas e Tecnologias de Informacao,2016,2016(E8).

设计获取

文章下方名片联系我即可~

精彩专栏推荐订阅:在下方专栏👇🏻

毕业设计精品实战案例

收藏关注不迷路!!

🌟文末获取设计🌟

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 一个进程的情况下,例如 tomcat 只启动一个项目,cpu 很高,倒是内存很低,是什么原因呢?
  • Kotlin 流 Flow
  • 安装win7鼠标键盘不能动原因分析及解决办法
  • Unity3D在2D游戏中获取触屏物体的方法
  • Spring Boot-自定义banner
  • ASP.NET Core 入门教学十七 GraphQL入门指南
  • 触想内嵌式工业一体机应用于智能检票机改善旅游体验
  • How can I provide a RGBA png file to OpenAI PHP library
  • 【LeetCode】07.整数反转
  • 系统架构师考试学习笔记第三篇——架构设计高级知识(18)面向服务架构设计理论与实践
  • DFS算法专题(一)——二叉树中的深搜【回溯与剪枝的初步注入】
  • 分类预测|基于蜣螂优化极限梯度提升决策树的数据分类预测Matlab程序DBO-Xgboost 多特征输入单输出 含基础模型
  • MySQL 默认事务隔离级别及原因
  • 数组与贪心算法——409、621(1中1简)
  • 游卡,三七互娱,得物,顺丰,快手,oppo,康冠科技,途游游戏,埃科光电25秋招内推
  • 【技术性】Search知识
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • js对象的深浅拷贝
  • k个最大的数及变种小结
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • Sublime Text 2/3 绑定Eclipse快捷键
  • vue--为什么data属性必须是一个函数
  • 浮动相关
  • 开发基于以太坊智能合约的DApp
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 如何进阶一名有竞争力的程序员?
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 项目实战-Api的解决方案
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • #1014 : Trie树
  • #QT 笔记一
  • #QT项目实战(天气预报)
  • #考研#计算机文化知识1(局域网及网络互联)
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (Redis使用系列) SpirngBoot中关于Redis的值的各种方式的存储与取出 三
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (五)MySQL的备份及恢复
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (转)socket Aio demo
  • ... 是什么 ?... 有什么用处?
  • .net core MVC 通过 Filters 过滤器拦截请求及响应内容
  • .NET Core 和 .NET Framework 中的 MEF2
  • .Net Memory Profiler的使用举例
  • .NET WPF 抖动动画
  • .NET 读取 JSON格式的数据
  • .NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化
  • .NET/C# 如何获取当前进程的 CPU 和内存占用?如何获取全局 CPU 和内存占用?
  • .NET开源全面方便的第三方登录组件集合 - MrHuo.OAuth