基于51单片机公交车报站系统—显示时间温度

news2024/12/23 13:12:39

基于51单片机公交车报站系统

(仿真+程序)

功能介绍

具体功能:

1.用LCD12864播报站台,显示当前站台和下一站,当前时间和温度;

2.站台名为一号到四号,下行从一号到四号,上行从四号到一号;

3.按下上行/下行准备播报,按下播报按键就会显示当前站台和下一站台;

4.K1~K4按键可以设置时间;

​演示视频:

基于51单片机公交车报站系统—显示时间温度

添加图片注释,不超过 140 字(可选)

程序

#include <reg51.h>
/***公众号:木子单片机****/
#define uint unsigned int
#define uchar unsigned char
#include "value.h"
sbit x_key=P1^3;
sbit s_key=P1^4;
sbit bz_key=P1^5;
sbit gb_key=P1^6;
sbit x_LED=P2^6;
sbit s_LED=P2^7;
uchar x_mode,s_mode;
uchar x_num,s_num;
bit flag_200ms = 1;
uchar flag_c_en;
bit flag_100ms;
sbit dq=P3^2;	  //18b20 IO口的定义
uint temperature ;    //温度变量

/************ 延时函数  *****************/
void delay_uint(uint z)
{
 while(z--);
}
/********************************************************************
* 名称 : delay_1ms()
* 功能 : 延时1ms函数
* 输入 : q
* 输出 : 无
***********************************************************************/
void delay_1ms(uint q)
{	
 uint i,j;
 for(i=0;i<q;i++)
 for(j=0;j<115;j++);
}
uchar dis_lcd[10];
#include "lcd12864bu.h"
/******************显示时间函数***************************/
void dis_shijian()	//显示时间
{
 write_shu16(0,0*8,shi,0);
 write_shuzi(1,0*2,2*8,fuhao[1],0);		
 write_shu16(0,3*8,fen,0);	
 write_shuzi(1,0*2,5*8,fuhao[1],0);		
 write_shu16(0,6*8,miao,0);

// write_yhanzi(2,0,5*16,qita[6]);   //星期
// write_shu16(0,14*8,week,0);
// if(week==0)
// {
//  write_yhanzi(1,0,7*16,xingqi[6]);   
// }
// if(week==1)
// {
//  write_yhanzi(1,0,7*16,xingqi[1]);  
// }
// if(week==2)
// {
//  write_yhanzi(1,0,7*16,xingqi[2]);   
// }
// if(week==3)
// {
//  write_yhanzi(1,0,7*16,xingqi[3]);   
// }
// if(week==4)
// {
//  write_yhanzi(1,0,7*16,xingqi[4]);   
// }
// if(week==5)
// {
//  write_yhanzi(1,0,7*16,xingqi[5]);   
// }
// if(week==6)
// {
//  write_yhanzi(1,0,7*16,xingqi[6]);   
// }
 write_shu16(1*2,0*8,0x20,0);
 write_shu16(1*2,2*8,nian,0);
 write_shuzi(1,1*2,4*8,fuhao[0],0);	
 write_shu16(1*2,5*8,yue,0);
 write_shuzi(1,1*2,7*8,fuhao[0],0);	
 write_shu16(1*2,8*8,ri,0);

 write_shu18b20(1*2,12*8,temperature,0);	
 write_shuzi(1,1*2,14*8,dian,0);
}
/************初始化显示*****************/
void init_12864_dis() //初始化显示
{
 cs1=1; //左屏开显示
 cs2=0;		
 dis_shijian();	//显示时间	
}
/***********************18b20初始化函数*****************************/
void init_18b20()
{
 bit q;
 dq=1;				//把总线拿高
 delay_uint(1);	    //15us
 dq=0;				//给复位脉冲
 delay_uint(80);		//750us
 dq=1;				//把总线拿高 等待
 delay_uint(10);		//110us
 q=dq;				//读取18b20初始化信号
 delay_uint(20);		//200us
 dq=1;				//把总线拿高 释放总线
}

/*************写18b20内的数据***************/
void write_18b20(uchar dat)
{
 uchar i;
 for(i=0;i<8;i++)
 {					 //写数据是低位开始
  dq=0;			 //把总线拿低写时间隙开始 
  dq=dat&0x01; //向18b20总线写数据了
  delay_uint(5);	 // 60us
  dq=1;			 //释放总线
  dat>>=1;
 }	
}

/*************读取18b20内的数据***************/
uchar read_18b20()
{
 uchar i,value;
 for(i=0;i<8;i++)
 {
  dq=0;			 //把总线拿低读时间隙开始 
  value>>= 1;	 //读数据是低位开始
  dq=1;			 //释放总线
  if(dq==1)		 //开始读写数据 
  value|=0x80;
  delay_uint(5);	 //60us	读一个时间隙最少要保持60us的时间
 }
 return value;		 //返回数据
}

/*************读取温度的值 读出来的是小数***************/
uint read_temp()
{
 uint value;
 uchar low;			   //在读取温度的时候如果中断的太频繁了,就应该把中断给关了,否则会影响到18b20的时序
 init_18b20();		   //初始化18b20
 write_18b20(0xcc);	   //跳过64位ROM
 write_18b20(0x44);	   //启动一次温度转换命令
 delay_uint(50);		   //500us

 init_18b20();		   //初始化18b20	
 write_18b20(0xcc);	   //跳过64位ROM
 write_18b20(0xbe);	   //发出读取暂存器命令
	
 EA=0;
 low=read_18b20();	   //读温度低字节
 value=read_18b20();  //读温度高字节
 EA =1;
 value<<=8;		   //把温度的高位左移8位
 value|=low;		   //把读出的温度低位放到value的低八位中
 value*=0.625;	       //转换到温度值 小数
 return value;		   //返回读出的温度 带小数
}

/******************显示时间函数***************************/
void dis_shijian_set()	//显示时间
{
 write_shu16(0*2,0*8,0x20,0);
 write_shu16(1*2,2*8,shi,0);
 write_shu16(1*2,6*8,fen,0);	
 write_shu16(1*2,10*8,miao,0);

 write_shu16(0*2,2*8,nian,0);	
 write_shu16(0*2,6*8,yue,0);	
 write_shu16(0*2,10*8,ri,0);

// write_yhanzi(1,4,5*16,xingqi[week]);			
}
/************初始化设置显示*****************/
void init_12864_set1()
{
 write_yhanzi(1,0,2*16,qita[0]);   //年
 write_yhanzi(1,0,4*16,qita[1]);   //月
 write_yhanzi(1,0,6*16,qita[2]);   //日

 write_yhanzi(1,2,2*16,qita[3]);   //时
 write_yhanzi(1,2,4*16,qita[4]);   //分 
 write_yhanzi(1,2,6*16,qita[5]);   //秒
// write_yhanzi(2,4,3*16,qita[6]);   //星期

 dis_shijian_set();	//显示时间
}

/******************时间芯片显示函数**********************/	   
void ds1302_dis()
{
 uchar miao_1;
 if(menu_1 == 0)
 {
  read_time();
  if(miao_1 != miao)
  {
   miao_1 = miao;
   dis_shijian();	//显示时间
  }
 }
}

/********************独立按键程序*****************/
uchar key_can;	 //按键值
void key()	 //独立按键程序
{
 static uchar key_new;
 key_can=20;                   //按键值还原
 P3|=0x78;                     //对应的按键IO口输出为1
 if((P3&0x78)!=0x78)		//按键按下
 {
  delay_1ms(1);	     	//按键消抖动
  if(((P3&0x78)!=0x78)&&(key_new==1))
  {						//确认是按键按下
   key_new=0;
   switch(P3&0x78)
   {
	case 0x70:key_can=1;break;	 //得到按键值
	case 0x68:key_can=2;break;	 //得到按键值
	case 0x58:key_can=3;break;	 //得到按键值
	case 0x38:key_can=4;break;	 //得到按键值
   }
  }			
 }
 else 
 key_new=1;	
}

/**********************设置函数************************/
void key_with()
{
 if(key_can==4)   //退出键
 {
  qingling();
  init_12864_dis(); //初始化显示
  flag_200ms=1;
  menu_1=0;
 }
 if(key_can==1)	//设置键
 {
  menu_1 ++;
  flag_200ms=1;
  if(menu_1==1)
  {
   x_num=0;
   s_num=0;
   x_mode=0;
   s_mode=0;
   qingling();
   init_12864_set1();
  }
  if(menu_1>7)
  menu_1 = 1;
 }
 if(menu_1!=0)
 {
  if(menu_1==1)		  //设置年
  {
   if(key_can==2)	//加
   set_ds1302time(1,&nian,0x99);		
   if(key_can==3)	//减	  
   set_ds1302time(0,&nian,0x99);	
  }
  if(menu_1==2)		  //设置月
  {
   if(key_can==2)	//加
   set_ds1302time(1,&yue,0x13);		
   if(key_can==3)	//减	  
   set_ds1302time(0,&yue,0x13);	
  }
  if(menu_1==3)		  //设置日
  {
   if(key_can==2)	//加
   set_ds1302time(1,&ri,0x32);		
   if(key_can==3)	//减	  
   set_ds1302time(0,&ri,0x32);	
  }
  if(menu_1==4)		  //设置时
  {
   if(key_can==4)	//加
   set_ds1302time(1,&shi,0x24);		
   if(key_can==3)	//减	  
   set_ds1302time(0,&shi,0x24);	
  }
  if(menu_1==5)		  //设置分
  {
   if(key_can==2)	//加
   set_ds1302time(1,&fen,0x60);		
   if(key_can==3)	//减	  
   set_ds1302time(0,&fen,0x60);	
  }
  if(menu_1==6)		  //设置秒
  {
   if(key_can==2)	//加
   set_ds1302time(1,&miao,0x60);		
   if(key_can==3)	//减	  
   set_ds1302time(0,&miao,0x60);	
  }
//  if(menu_1==7)		  //设置星期
//  {
//   if(key_can==2)	//加
//   set_ds1302time(1,&week,0x8);		
//   if(key_can==3)	//减	  
//   set_ds1302time(0,&week,0x8);	
//  }
  dis_shijian_set();	//显示时间
  switch(menu_1)	   // 光标显示
  {
   case 1:write_shu16(0*2,2*8,nian,1);break;
   case 2:write_shu16(0*2,6*8,yue,1);break;
   case 3:write_shu16(0*2,10*8,ri,1);break;
   case 4:write_shu16(1*2,2*8,shi,1);break;
   case 5:write_shu16(1*2,6*8,fen,1);break;
   case 6:write_shu16(1*2,10*8,miao,1);break;
//   case 7:write_yhanzi(1,4,5*16,xingqi[week]);break;
  }
  write_time();	   //把时间写进去
 }			
}
/*********************定时器0、定时器1初始化******************/
void time0_init()	  
{					 
 EA=1;	 	  //开总中断
 TMOD=0X11;	  //定时器0、定时器1工作方式1
 ET0=1;		  //开定时器0中断 
 TR0=1;		  //允许定时器0定时
}
void baozhan()
{
 if(x_key==0)
 {
  delay_1ms(20);
  if(x_key==0)
  {
   qingling();
   x_mode=1;
   s_mode=0;
   x_num=0;
   s_num=0;
   x_LED=0;
   s_LED=1;
   write_yhanzi(1,4,0*16,daoda[0]);   //到
   write_yhanzi(1,4,1*16,daoda[1]);   //达
   write_shuzi(1,2*2,4*8,fuhao[1],0);//:

   write_yhanzi(1,6,0*16,xiayizhan[0]);   //下
   write_yhanzi(1,6,1*16,xiayizhan[1]);   //站
   write_shuzi(1,3*2,4*8,fuhao[1],0); //:
  }
  while(!x_key);
 }
 if(s_key==0)
 {
  delay_1ms(20);
  if(s_key==0)
  {
   qingling();
   x_mode=0;
   s_mode=1;
   x_num=0;
   s_num=0;
   x_LED=1;
   s_LED=0;
   write_yhanzi(1,4,0*16,daoda[0]);   //到
   write_yhanzi(1,4,1*16,daoda[1]);   //达
   write_shuzi(1,2*2,4*8,fuhao[1],0);//:

   write_yhanzi(1,6,0*16,xiayizhan[0]);   //下
   write_yhanzi(1,6,1*16,xiayizhan[1]);   //站
   write_shuzi(1,3*2,4*8,fuhao[1],0); //:
  }
  while(!s_key);
 }
 if((bz_key==0)&&(x_mode==1))
 {
  delay_1ms(20);
  if((bz_key==0)&&(x_mode==1))
  {
   x_num++;		
   if(x_num>=5)
   {
    x_num=5;
   }
  }
  while(!bz_key);
 }
 if((bz_key==0)&&(s_mode==1))
 {
  delay_1ms(20);
  {
   s_num++;
   if(s_num>=5)
   {
    s_num=5;
   }
  }
  while(!bz_key);
 }
 if(gb_key==0)
 {
  delay_1ms(20);
  if(gb_key==0)
  {
   	x_mode=0;
    s_mode=0;
    x_num=0;
    s_num=0;
	x_LED=1;
    s_LED=1;
	qingling();
  }
 }
}
void yuyin()
{
 /******************************下行报站显示***********/
 if(x_num==1)
 {
  write_yhanzi(1,4,3*16,yihaozhan[0]);   //一
  write_yhanzi(1,4,4*16,yihaozhan[1]);   //号
  write_yhanzi(1,4,5*16,yihaozhan[2]);   //站 

  write_yhanzi(1,6,3*16,erhaozhan[0]);   //二
  write_yhanzi(1,6,4*16,erhaozhan[1]);   //号
  write_yhanzi(1,6,5*16,erhaozhan[2]);   //站
 }
 if(x_num==2)
 {
  write_yhanzi(1,4,3*16,erhaozhan[0]);   //二
  write_yhanzi(1,4,4*16,erhaozhan[1]);   //号
  write_yhanzi(1,4,5*16,erhaozhan[2]);   //站

  write_yhanzi(1,6,3*16,sanhaozhan[0]);   //三
  write_yhanzi(1,6,4*16,sanhaozhan[1]);   //号
  write_yhanzi(1,6,5*16,sanhaozhan[2]);   //站
 }

 if(x_num==3)
 {
  write_yhanzi(1,4,3*16,sanhaozhan[0]);   //三
  write_yhanzi(1,4,4*16,sanhaozhan[1]);   //号
  write_yhanzi(1,4,5*16,sanhaozhan[2]);   //站

  write_yhanzi(1,6,3*16,sinhaozhan[0]);   //四
  write_yhanzi(1,6,4*16,sinhaozhan[1]);   //号
  write_yhanzi(1,6,5*16,sinhaozhan[2]);   //站
 }
 if(x_num==4)
 {
  write_yhanzi(1,4,3*16,sinhaozhan[0]);   //四
  write_yhanzi(1,4,4*16,sinhaozhan[1]);   //号
  write_yhanzi(1,4,5*16,sinhaozhan[2]);   //站

  write_yhanzi(1,6,3*16,zhongdianzhan[0]);   //终
  write_yhanzi(1,6,4*16,zhongdianzhan[1]);   //点
  write_yhanzi(1,6,5*16,zhongdianzhan[2]);   //站
 }
 if(x_num==5)
 {
  write_yhanzi(1,4,3*16,zhongdianzhan[0]);   //终
  write_yhanzi(1,4,4*16,zhongdianzhan[1]);   //点
  write_yhanzi(1,4,5*16,zhongdianzhan[2]);   //站

  write_yhanzi(1,6,0*16,ganxiechengzuo[0]);   //感
  write_yhanzi(1,6,1*16,ganxiechengzuo[1]);   //谢
  write_yhanzi(1,6,2*16,ganxiechengzuo[2]);   //乘
  write_yhanzi(1,6,3*16,ganxiechengzuo[3]);   //坐
  write_yhanzi(1,6,4*16,ganxiechengzuo[4]);   //本
  write_yhanzi(1,6,5*16,ganxiechengzuo[5]);   //公
  write_yhanzi(1,6,6*16,ganxiechengzuo[6]);   //车

 }
 /******************************上行报站显示***********/
 if(s_num==1)
 {
  write_yhanzi(1,4,3*16,sinhaozhan[0]);   //四
  write_yhanzi(1,4,4*16,sinhaozhan[1]);   //号
  write_yhanzi(1,4,5*16,sinhaozhan[2]);   //站 

  write_yhanzi(1,6,3*16,sanhaozhan[0]);   //三
  write_yhanzi(1,6,4*16,sanhaozhan[1]);   //号
  write_yhanzi(1,6,5*16,sanhaozhan[2]);   //站
 }
 if(s_num==2)
 {
  write_yhanzi(1,4,3*16,sanhaozhan[0]);   //三
  write_yhanzi(1,4,4*16,sanhaozhan[1]);   //号
  write_yhanzi(1,4,5*16,sanhaozhan[2]);   //站

  write_yhanzi(1,6,3*16,erhaozhan[0]);   //二
  write_yhanzi(1,6,4*16,erhaozhan[1]);   //号
  write_yhanzi(1,6,5*16,erhaozhan[2]);   //站
 }
 if(s_num==3)
 {
  write_yhanzi(1,4,3*16,erhaozhan[0]);   //二
  write_yhanzi(1,4,4*16,erhaozhan[1]);   //号
  write_yhanzi(1,4,5*16,erhaozhan[2]);   //站

  write_yhanzi(1,6,3*16,yihaozhan[0]);   //一
  write_yhanzi(1,6,4*16,yihaozhan[1]);   //号
  write_yhanzi(1,6,5*16,yihaozhan[2]);   //站 
 }
 if(s_num==4)
 {
  write_yhanzi(1,4,3*16,yihaozhan[0]);   //一
  write_yhanzi(1,4,4*16,yihaozhan[1]);   //号
  write_yhanzi(1,4,5*16,yihaozhan[2]);   //站 

  write_yhanzi(1,6,3*16,zhongdianzhan[0]);   //终
  write_yhanzi(1,6,4*16,zhongdianzhan[1]);   //点
  write_yhanzi(1,6,5*16,zhongdianzhan[2]);   //站
 }
 if(s_num==5)
 {
  write_yhanzi(1,4,3*16,zhongdianzhan[0]);   //终
  write_yhanzi(1,4,4*16,zhongdianzhan[1]);   //点
  write_yhanzi(1,4,5*16,zhongdianzhan[2]);   //站

  write_yhanzi(1,6,0*16,ganxiechengzuo[0]);   //感
  write_yhanzi(1,6,1*16,ganxiechengzuo[1]);   //谢
  write_yhanzi(1,6,2*16,ganxiechengzuo[2]);   //乘
  write_yhanzi(1,6,3*16,ganxiechengzuo[3]);   //坐
  write_yhanzi(1,6,4*16,ganxiechengzuo[4]);   //本
  write_yhanzi(1,6,5*16,ganxiechengzuo[5]);   //公
  write_yhanzi(1,6,6*16,ganxiechengzuo[6]);   //车
 }
}

硬件设计

使用元器件:

单片机:AT89C51;

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

添加图片注释,不超过 140 字(可选)

设计资料

01仿真图

本设计使用proteus7.8和proteus8.9两个版本设计!具体如图!

添加图片注释,不超过 140 字(可选)

02程序

本设计使用软件keil5版本编程设计!具体如图!

添加图片注释,不超过 140 字(可选)

03设计资料

        资料获取请关注同名公众号,全部资料包括仿真源文件 、程序(含注释)等。具体内容如下,全网最全! !

 

可以关注下方公众号!

点赞分享一起学习成长。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1815125.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

力反馈设备的融入让虚拟装配训练更具沉浸感

随着科技的快速发展&#xff0c;虚拟现实&#xff08;VR&#xff09;技术已经在各个领域得到了广泛应用。其中&#xff0c;虚拟装配训练作为虚拟制造的重要组成部分&#xff0c;对于提高装配效率、降低设计成本以及提升产品质量具有至关重要的作用。然而&#xff0c;传统的虚拟…

大模型排行榜出炉!第一名不是ChatGPT!

前言 现在科技圈什么最火&#xff1f;当属大模型。 如雨后春笋般冒出的大模型&#xff0c;每一个都在争做行业No.1&#xff0c;但你知道现在哪个大模型能力最强&#xff1f;哪个最受人喜欢吗&#xff1f; 近期&#xff0c;清华大学发布《SuperBench大模型综合能力评测报告》…

【启明智显分享】2D图形加速和JPEG解码如何实现高质量图形传输(以Model3A 7寸触摸屏为例)

自从1951年在旋风计算机上成功显示图形开始&#xff0c;人类致力于计算机处理图形的不发就从来没有停止过。随着技术的发展&#xff0c;人们对图形图像处理能力的期望也越来越高。计算机图形图像处理能力的提高与高运算能力的处理器和图像处理技术都有着紧密的联系。 今天&…

电脑意外出现user32.dll丢失的八种修复方法,有效解决user32.dll文件丢失

遇到与 user32.dll 相关的错误通常是因为该文件已损坏、丢失、或者与某些软件冲突。今天这篇文章寄给大家介绍八种修复user32.dll丢失的方法&#xff0c;下面是一步步的详细教程来解决这个问题。 1. 重新启动电脑 第一步总是最简单的&#xff1a;重新启动你的电脑。许多小问题…

MQTT通讯协议接入

1.MQTT协议概述 MQTT是一种基于发布/订阅模式的轻量级消息传输协议&#xff0c;常用于低带宽、不可靠网络环境下传输消息&#xff0c;适用于物联网设备之间的通信。 1.1 MQTT协议的组件 客户端&#xff08;Client&#xff09;&#xff1a;连接到MQTT代理服务器的设备&#xff…

怎么把flv格式转成mp4?教你四种简单好用的转换方法!

怎么把flv格式转成mp4&#xff1f;FLV文件格式&#xff0c;曾经以其独特的方式在视频传输领域崭露头角&#xff0c;如今却似乎被时代的洪流逐渐淹没。其新颖之处虽然为视频传输界带来了一抹亮色&#xff0c;但随之而来的挑战也不容忽视&#xff0c;首当其冲的便是兼容性问题。由…

HLS入门---流水灯闪烁

文章目录 1.HLS简介2.led闪烁实验2.1 函数撰写 1.HLS简介 HLS&#xff08;High-Level Synthesis&#xff0c;高级综合&#xff09;是一种将高级硬件描述语言&#xff08;如C/C&#xff09;转换为硬件描述语言&#xff08;如Verilog或VHDL&#xff09;的过程。这种技术允许设计…

推荐一款WPF绘图插件OxyPlot

开始 使用 NuGet 包管理器添加对 OxyPlot 的引用&#xff08;如果要使用预发布包&#xff0c;请参阅下面的详细信息&#xff09;向用户界面添加PlotView在代码中创建一个PlotModel绑定到你的属性PlotModelModelPlotView 例子 您可以在代码存储库的文件夹中找到示例。/Source/Ex…

录取查询小程序怎么制作?

招生老师往往需要花费大量的时间和精力去手动整理学生的录取信息&#xff0c;并一一通知学生。那时的录取查询系统&#xff0c;复杂而繁琐&#xff0c;要处理大量的数据&#xff0c;还要确保信息的准确无误和安全。经常为了发布录取结果&#xff0c;不得不加班到深夜&#xff0…

盲盒小程序 跨平台兼容性测试策略:打造无缝体验

在盲盒小程序的开发过程中&#xff0c;跨平台兼容性测试是确保应用在不同设备和操作系统上都能提供无缝体验的重要步骤。本文将探讨一些关键的跨平台兼容性测试策略&#xff0c;以助力开发者打造稳定、流畅的小程序。 一、明确测试目标 在进行跨平台兼容性测试之前&#xff0…

【数据结构 |集合框架、泛型】初始集合框架、时间(空间)复杂度、简单认识泛型

✨✨谢谢大家捧场&#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天开心哦&#xff01;✨✨ &#x1f388;&#x1f388;作者主页&#xff1a; &#x1f388;丠丠64-CSDN博客&#x1f388; ✨✨ 帅哥美女们&#xff0c;我们共同加油&#xff01;一起…

DDei在线设计器-属性编辑器

DDei-Core-属性编辑器 DDei-Core-属性编辑器插件包含了文本、大文本、数值、下拉、单选、勾选以及颜色等属性编辑。 图形和属性共同构成一个完整的定义&#xff0c;属性编辑器就是编辑属性值的控件。当选中图形实例时&#xff0c;属性面板就会展现当前实例的所有属性以及属性编…

JavaScript的面向对象思想及实现

文章目录 深入面向对象编程思想面向过程编程面向对象编程 构造函数原型数组扩展案例 constructor属性使用场景对象原型原型继承原型链 面向对象思想代码实现——模态框封装 深入面向对象 编程思想 面向过程编程 面向过程编程&#xff1a;面向过程就是分析出解决问题所需要的…

2024中国网络安全产品用户调查报告(发布版)

自2020年始&#xff0c;人类进入了21世纪的第二个十年&#xff0c;全球进入了百年未有之大变局&#xff0c;新十年的开始即被新冠疫情逆转了全球化发展的历程&#xff0c;而至2022年3月俄乌战争又突然爆发&#xff0c;紧接着2023年7月“巴以冲突"皱起&#xff0c;世界快速…

Jetson Linux 上安装ZMQ

1. 安装ZMQ 框架 apt-get install libzmq3-dev 2. 或者自己build ZMQ https://github.com/zeromq/libzmq.git 参考官网教程 3. 安装CPPZMQ CPPZMQ 是ZMQ 的友好的C封装&#xff0c;只需要一个zmq.hpp 头文件即可 git clone https://github.com/zeromq/cppzmq.git cd cppz…

LabVIEW进行负载测试

本文介绍了如何使用LabVIEW进行负载测试&#xff0c;通过一个具体案例详细讲解了测试系统的组成、工作原理和实现方法。系统采用先进的硬件和软件架构&#xff0c;结合LabVIEW的强大功能&#xff0c;成功实现了对设备的高效负载测试&#xff0c;确保了系统的可靠性和性能。 项…

【SpringCloud学习笔记】RabbitMQ(上)

1. RabbitMQ简介 官网地址&#xff1a;https://www.rabbitmq.com/ 2. 安装方式 安装前置准备&#xff1a; 此处基于Linux平台 Docker进行安装&#xff0c;前置准备如下&#xff1a; Linux云服务器 / 虚拟机Docker环境 安装命令&#xff1a; docker run \-e RABBITMQ_DEFAU…

养猫发现猫毛过敏?宠物空气净化器真的能拯救猫毛过敏吗?

广东省 猫咪是许多人梦寐以求的伴侣&#xff0c;但对于轻度猫毛过敏和鼻炎患者来说&#xff0c;养猫似乎是个遥不可及的梦想。我常在社交媒体上羡慕地观看朋友们的吸猫日常&#xff0c;却因过敏无法亲自养猫。这种遗憾驱使我寻找解决方案&#xff0c;从研究低过敏猫种到尝试空气…

使用Git进行代码版本管理

目录 1. 简介 2. 管理流程 2.1. 建立清晰的分支策略 2.2. 定期提交与合并 2.3. 使用标签来管理发布版本 2.4. 保持代码库的整洁 2.5. 利用Git钩子和CI/CD集成 3. 实现步骤 3.1. 建立仓库 3.2. 分支管理 3.3. 推送代码 ①首先切换到要 code 的分支&#xff0c;比如 d…

AM273X毫米波演示

介绍 毫米波演示展示了 AM273X SOC 使用毫米波 SDK&#xff08;软件开发工具包&#xff09;中的驱动程序的一些功能。它允许用户指定chirp配置文件并实时显示检测到的对象和其他信息。 以下是此演示功能的高级描述&#xff1a; 能够通过 UART 端口上的命令行界面 &#xff08;…