蓝桥杯基础18——第13届省赛真题与代码详解

目录

0.心得体会

1.题目如下

2.代码实现的思路

键值扫描

数码管窗口切换

数码管的动态扫描

继电器工作时L3闪烁,整点时刻L1灯光亮5秒

3.变量列表

定义的常量和数组

功能控制和状态变量

定时器和计数变量

4.代码参考

4.1 头文件

onewire.h

ds1302.h

4.2 驱动文件

onewire.c

ds1302.c

4.3 主函数代码


0.心得体会

这套题,刷新了我的认知:

        1.对于led的操作,不要定义单位的led,在io编程下总是会冲突,造成效果不好。然后我尝试了用与或进行位运算,但还是会造成引脚冲突。最后,我又尝试了定义一个led状态的变量,每次我都去改变这个变量,然后再将变量赋给P0端口,有大佬这样写出来了,但我还是失败了。于是,我想到了一个损招:本题只有3个led灯,因此建立了一个数组,将3个led的9种状态直接写出来。

        2.对于继电器的操作,也不要定义继电器的一个引脚,直接对P0口进行操作。

        3.主函数的循环中,最好的状态是只出现键值扫描函数、ds1302刷新函数、ds18b20刷新函数。然后外设的刷新采用中断一定时间产生一个标志位,外设读取标志位从而决定是否刷新。

        4.led、继电器、数码管的刷新可以放进中断程序中,对应刷新时间为:20*50us,20*50us,50*50us。

        5.对于io编程模式,要注意对锁存器常关闭。同时采用先赋值P0端口,再打开锁存器方式,这样有效防止数据冲突。

        6.要注意,ds18b20读出来的温度是三位数,因此在进行比较时需要除以10再进行

1.题目如下

2.代码实现的思路

键值扫描

键值扫描通过keyrunning函数实现。该函数检测外部按键的按下,并根据按键对key13_stateSMG_flag变量进行相应的修改。具体实现方式如下:

  • 使用C3C4作为控制列,H3H4作为行读取信号。
  • 通过设置C3C4的电平状态,可以检测到与它们相对应行H3H4的按键是否被按下。
  • 按键S13用于切换继电器工作状态(key13_state变量)。
  • 按键S12用于切换显示模式(SMG_flag变量)。
  • 按键S17S16分别用于调整时钟模式和设置温度(在SMG_flag为2和3时具有不同的功能)。

数码管窗口切换

数码管窗口切换是通过修改SMG_flag变量实现的,该变量影响flash_SMG函数中数码管显示的内容。

  • SMG_flag为1时,显示温度;
  • SMG_flag为2时,显示时间;
  • SMG_flag为3时,显示设置的温度。

数码管的动态扫描

数码管的动态扫描通过flash_SMG函数实现。该函数基于SMG_flagflash_count变量,动态调整数码管显示的内容,实现动态扫描效果。通过在定时器中断服务程序中调用flash_SMG函数,并且周期性地更改flash_count的值来实现数码管的动态扫描。

继电器工作时L3闪烁,整点时刻L1灯光亮5秒

  • 继电器的控制和LED(包括L3)的状态变化在relay_ledrunning函数中实现。
  • flag_5s用于判断是否在整点时刻,影响L1的亮灯逻辑。
  • count_100mstimer1_service中断服务程序中翻转,用于实现L3的闪烁效果。
  • 当继电器工作时,根据温度与设定温度的关系以及flag_5s的值,通过调用state_relaystate_led函数,控制继电器的开关和L3、L1的亮灯逻辑。

3.变量列表

定义的常量和数组

  • duanmaduanma_dot:定义了数码管的显示码(不含/含小数点)。用于控制数码管显示数字0-9及特殊符号。
  • led_state:定义了LED灯的状态,对应L1至L3的开关状态。其中1点亮,0熄灭。

功能控制和状态变量

  • SMG_flag:数码管显示模式标志,取值1到3,分别代表显示温度、时间和设置温度。
  • key13_state:切换工作模式,是一个位变量,0和1分别代表温度控制模式,和时间控制模式。
  • ds1302_mode2:用于控制数码管时间显示模式,是一个位变量,0和1分别代表正常显示“时分”和特殊显示“分秒”。
  • flash_ds1302flash_temperature:这两个位变量用于控制DS1302时间和DS18B20温度的刷新,1表示需要刷新,0表示不需要。
  • set_temperature:设定的温度值,用于温度控制逻辑,取值范围为10到99(摄氏度)。
  • temperature:DS18B20测量的实际温度值,用于显示和控制逻辑。

定时器和计数变量

  • count_50us:定时器0的计数变量,用于控制50微秒的计时和相应的事件触发。
  • flash_count:用于数码管动态扫描的计数变量,控制数码管的显示内容和顺序。
  • flag_5s:一个位变量,用于标识是否在整点时刻亮灯5秒的状态。

4.代码参考

4.1 头文件

onewire.h

#ifndef __ONEWIRE_H__
#define __ONEWIRE_H__

void Write_DS18B20(unsigned char dat);
unsigned char Read_DS18B20(void);
bit init_ds18b20(void);
void Delay_OneWire(unsigned int t);

#endif

ds1302.h

#ifndef __DS1302_H__
#define __DS1302_H__

void Write_Ds1302(unsigned  char temp) ;
void Write_Ds1302_Byte( unsigned char address,unsigned char dat )    ;
unsigned char Read_Ds1302_Byte ( unsigned char address );

#endif

4.2 驱动文件

onewire.c

/*	# 	单总线代码片段说明
	1. 	本文件夹中提供的驱动代码供参赛选手完成程序设计参考。
	2. 	参赛选手可以自行编写相关代码或以该代码为基础,根据所选单片机类型、运行速度和试题
		中对单片机时钟频率的要求,进行代码调试和修改。
*/

#include <reg52.h>


sbit DQ = P1^4;


//
void Delay_OneWire(unsigned int t)  
{
	unsigned char i;
	while(t--){
		for(i=0;i<12;i++);
	}
}

//
void Write_DS18B20(unsigned char dat)
{
	unsigned char i;
	for(i=0;i<8;i++)
	{
		DQ = 0;
		DQ = dat&0x01;
		Delay_OneWire(5);
		DQ = 1;
		dat >>= 1;
	}
	Delay_OneWire(5);
}

//
unsigned char Read_DS18B20(void)
{
	unsigned char i;
	unsigned char dat;
  
	for(i=0;i<8;i++)
	{
		DQ = 0;
		dat >>= 1;
		DQ = 1;
		if(DQ)
		{
			dat |= 0x80;
		}	    
		Delay_OneWire(5);
	}
	return dat;
}

//
bit init_ds18b20(void)
{
  	bit initflag = 0;
  	
  	DQ = 1;
  	Delay_OneWire(12);
  	DQ = 0;
  	Delay_OneWire(80);
  	DQ = 1;
  	Delay_OneWire(10); 
    initflag = DQ;     
  	Delay_OneWire(5);
  
  	return initflag;
}

ds1302.c

/*	# 	DS1302代码片段说明
	1. 	本文件夹中提供的驱动代码供参赛选手完成程序设计参考。
	2. 	参赛选手可以自行编写相关代码或以该代码为基础,根据所选单片机类型、运行速度和试题
		中对单片机时钟频率的要求,进行代码调试和修改。
*/								

//
#include <reg52.h>
#include <intrins.h>

sbit SCK = P1^7;
sbit SDA = P2^3;
sbit RST = P1^3;


void Write_Ds1302(unsigned  char temp) 
{
	unsigned char i;
	for (i=0;i<8;i++)     	
	{ 
		SCK = 0;
		SDA = temp&0x01;
		temp>>=1; 
		SCK=1;
	}
}   

//
void Write_Ds1302_Byte( unsigned char address,unsigned char dat )     
{
 	RST=0;	_nop_();
 	SCK=0;	_nop_();
 	RST=1; 	_nop_();  
 	Write_Ds1302(address);	
 	Write_Ds1302(dat);		
 	RST=0; 
}

//
unsigned char Read_Ds1302_Byte ( unsigned char address )
{
 	unsigned char i,temp=0x00;
 	RST=0;	_nop_();
 	SCK=0;	_nop_();
 	RST=1;	_nop_();
 	Write_Ds1302(address);
 	for (i=0;i<8;i++) 	
 	{		
		SCK=0;
		temp>>=1;	
 		if(SDA)
 		temp|=0x80;	
 		SCK=1;
	} 
 	RST=0;	_nop_();
 	SCK=0;	_nop_();
	SCK=1;	_nop_();
	SDA=0;	_nop_();
	SDA=1;	_nop_();
	return (temp);			
}

4.3 主函数代码

#include <reg52.h>
#include <intrins.h>
#include "ds1302.h"
#include "onewire.h"

sbit AUXR = 0x8e;

sbit C3 = P3^5;
sbit C4 = P3^4;
sbit H3 = P3^2;
sbit H4 = P3^3;

unsigned char code duanma[12] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xc1,0xbf};
unsigned char code duanma_dot[10] = { 0x40 , 0x79 , 0x24 , 0x30 , 0x10 , 0x12 , 0x02 , 0x78 , 0x00 , 0x10 };
unsigned char code write_ds1302_addr[7] = { 0x80 , 0x82 , 0x84 , 0x86 , 0x88 , 0x8a , 0x8c };
unsigned char code read_ds1302_addr[7] = { 0x81 , 0x83 , 0x85 , 0x87 , 0x89 , 0x8b , 0x8d };
unsigned char ds1302_time[8] = { 0x45 , 0x59 , 0x7 , 0x11 , 0x04 , 0x04 , 0x24 };
unsigned char code led_state[8] = { 0xff , 0xfb , 0xfd , 0xf9 , 0xfe , 0xfa , 0xfc , 0xf8 }; //对应L1,L2,L3,1点亮,0熄灭
//									000		001		010	   011	 100 	101 	110 	111

void flash_SMG ();
void keyrunning ();
void relay_ledrunning ();

unsigned char SMG_flag = 1;
bit key13_state = 0;
bit ds1302_mode2 = 0;

void select_HC573 ( unsigned char channal )
{
	switch ( channal )
	{
		case 4:
			P2 = ( P2 & 0x1f ) | 0x80;
		break;
		case 5:
			P2 = ( P2 & 0x1f ) | 0xa0;
		break;
		case 6:
			P2 = ( P2 & 0x1f ) | 0xc0;
		break;
		case 7:
			P2 = ( P2 & 0x1f ) | 0xe0;
		break;
		case 0:
			P2 = ( P2 & 0x1f ) | 0x00;
		break;
	}
}


void state_SMG ( unsigned char pos_SMG , unsigned char value_SMG )
{
	select_HC573 ( 0 );
	P0 = 0x01 << pos_SMG;	
	select_HC573( 6 );
	select_HC573 ( 0 );
	P0 = value_SMG;
	select_HC573( 7 );
	select_HC573 ( 0 );
}

void state_SMG_all ( unsigned char value_SMG_all )
{
	select_HC573 ( 0 );
	P0 = 0xff;	
	select_HC573( 6 );
	select_HC573 ( 0 );
	P0 = value_SMG_all;
	select_HC573( 7 );
	select_HC573 ( 0 );
}	

void state_relay ( unsigned char value_relay )
{
	select_HC573 ( 0 );	
	if ( value_relay == 0 )
	{
		P0 =0x00;
	}
	else
	{
		P0 =0x10;
	}
	select_HC573 ( 5 );
	select_HC573 ( 0 );
}

void state_led ( unsigned char value_led )
{
	select_HC573 ( 0 );
	P0 = 0xff;
	select_HC573 ( 4 );
	P0 = value_led;
	select_HC573 ( 4 );	
	select_HC573 ( 0 );
}

void init_sys ()
{
	select_HC573 ( 0 );
	P0 = 0xff;	
	select_HC573 ( 4 );
	select_HC573 ( 0 );
	P0 = 0x00;
	select_HC573 ( 5 );
	select_HC573 ( 0 );

}

void init_ds1302()
{
	unsigned char i;
	Write_Ds1302_Byte( 0x8e , 0x00 );
	for ( i=0 ; i<8 ; i++ )
	{
		Write_Ds1302_Byte( write_ds1302_addr[i] , ds1302_time[i] );
	}
	Write_Ds1302_Byte( 0x8e , 0x80 );
}
 
bit flash_ds1302 = 0;
void ds1302_flash ()
{
	if ( flash_ds1302 == 1 )
	{
		unsigned char i;
		for ( i=0 ; i<8 ; i++ )
		{
			ds1302_time[i] = Read_Ds1302_Byte ( read_ds1302_addr[i] );
		}
		flash_ds1302 = 0;
	}
}

void Delay700ms()		//@12.000MHz
{
	unsigned char i, j, k;

	_nop_();
	_nop_();
	i = 32;//32
	j = 236;
	k = 16;
	do
	{
		do
		{
			while (--k);
		} while (--j);
		keyrunning ();	
//		relay_ledrunning ();		
	} while (--i);
}


bit flash_temperature = 0;
unsigned int set_temperature = 23;
unsigned int temperature = 0;
void ds18b20_temperature ()
{
	if ( flash_temperature == 1 )
	{
		unsigned char LSB,MSB;
		init_ds18b20();
		Write_DS18B20(0xcc);	
		Write_DS18B20(0x44);
		Delay700ms();
		init_ds18b20();
		Write_DS18B20(0xcc);	
		Write_DS18B20(0xbe);
		
		LSB = Read_DS18B20();
		MSB = Read_DS18B20();
		
	 
		temperature = MSB;
		temperature = ( temperature << 8 ) | LSB;
		temperature = (temperature >> 4)*10 + (LSB & 0x0f)*0.625;
		
		flash_temperature = 0;
	}
 
}

//===================================================================================
void init_timer0 (void)		//50微秒@12.000MHz
{
	AUXR &= 0x7F;		//定时器时钟12T模式
	TMOD &= 0xF0;		//设置定时器模式
	TMOD |= 0x02;		//设置定时器模式
	TL0 = 0xCE;		//设置定时初值
	TH0 = 0xCE;		//设置定时重载值
	TF0 = 0;		//清除TF0标志
	TR0 = 1;		//定时器0开始计时
	
	EA = 1;
	ET0 = 1;
}

unsigned char count_50us = 0;
unsigned char flash_count = 0;
void timer0_service () interrupt 1
{
	count_50us++;
	if ( count_50us % 50 == 0 )
	{
		if ( SMG_flag == 1 )
		{
			if ( ++flash_count > 5 )
			{
				flash_count = 0;
			}
		}
		else if ( SMG_flag == 2 )
		{
			if ( ++flash_count == 8 )
			{
				flash_count = 0;
			}
		}
		else if ( SMG_flag == 3 )
		{
			if ( ++flash_count > 4 )
			{
				flash_count = 0;
			}
		}
		flash_SMG ();		
	}
	
	if ( count_50us == 200 )
	{
		count_50us = 0;
		flash_ds1302 = 1;
		if ( SMG_flag == 1 )
		{
			flash_temperature = 1;			
		}
	}
	
	if ( count_50us % 20 == 0 )
	{
		relay_ledrunning ();
	}

}

//=======================================================================
void init_timer1(void)		//50毫秒@12.000MHz
{
	AUXR &= 0xBF;		//定时器时钟12T模式
	TMOD &= 0x0F;		//设置定时器模式
	TL1 = 0xB0;		//设置定时初值
	TH1 = 0x3C;		//设置定时初值
	TF1 = 0;		//清除TF1标志
	TR1 = 1;		//定时器1开始计时
	
	EA = 1;
	ET1 = 1;
}

unsigned char count_50ms = 0;
bit count_100ms = 0;
void timer1_service () interrupt 3
{
	if ( ++count_50ms % 2 == 0 )
	{
		count_100ms = ~count_100ms;
	}	
}

bit flag_5s = 0;
void relay_ledrunning ()
{
	if ( ds1302_time[0] >= 0x00 && ds1302_time[0] < 0x06 && ds1302_time[1] == 0x00 )
	{
		flag_5s = 1;
	}
	else 
	{
		flag_5s = 0;
	}
	
	if ( (key13_state == 0) && (temperature/10 >= set_temperature) )
	{
		state_relay( 1 );
		
		if ( flag_5s == 0 )
		{
			if ( count_100ms == 0 )
			{
				state_led ( led_state[2] );
			}
			else
			{
				state_led ( led_state[3] );
			}
		}
		else if ( flag_5s == 1 )
		{
			if ( count_100ms == 0 )
			{
				state_led ( led_state[6] );
			}
			else
			{
				state_led ( led_state[7] );
			}	
		}
	}
	else if ( (key13_state == 0) && (temperature/10 < set_temperature) )
	{
		state_relay( 0 );
		if ( flag_5s == 0 )
		{
			state_led ( led_state[2] );
		}
		else if ( flag_5s == 1 )
		{
			state_relay ( 1 );
			state_led ( led_state[6] );
		}
	}
	else if ( key13_state == 1 )
	{
		if ( flag_5s == 0 )
		{
			state_relay( 0 );
			state_led ( led_state[0] );
		}
		else if ( flag_5s == 1 )
		{
			state_relay( 1 );
			if ( count_100ms == 0 )
			{
				state_led ( led_state[4] );
			}
			else
			{
				state_led ( led_state[5] );
			}
		}
	}
	else
	{
		state_led ( 7 );
		state_relay ( 0 );
	}
}	
	
void flash_SMG ()
{
	state_SMG_all ( 0xff );
	
	if ( SMG_flag == 1 )
	{
		switch ( flash_count )
		{
			case 0 :	
				state_SMG ( 0 , duanma[10] );
			break;
			case 1 :	
				state_SMG ( 1 , duanma[SMG_flag] );
			break;
			case 2 :	
				state_SMG ( 5 , duanma[temperature/100] );
			break;
			case 3 :	
				state_SMG ( 6 , duanma_dot[temperature/10%10] );
			break;
			case 4 :	
				state_SMG ( 7 , duanma[temperature%10] );
			break;
			case 5 :	
				state_SMG_all ( 0xff );
			break;
		}
	}
	else if ( SMG_flag == 2 )
	{
		switch ( flash_count )
		{
			case 0 :	
				state_SMG ( 0 , duanma[10] );
			break;
			case 1 :	
				state_SMG ( 1 , duanma[SMG_flag] );
			break;
			case 2 :	
				if ( ds1302_mode2 == 1 )
				{
					state_SMG ( 3 , duanma[ds1302_time[1]/16] );
				}
				else
				{
					state_SMG ( 3 , duanma[ds1302_time[2]/16] );
				}
			break;
			case 3 :
				if ( ds1302_mode2 == 1 )
				{
					state_SMG ( 4 , duanma[ds1302_time[1]%16] );
				}
				else
				{
					state_SMG ( 4 , duanma[ds1302_time[2]%16] );
				}				
			break;
			case 4 :	
				state_SMG ( 5 , duanma[11] );
			break;
			case 5 :
				if ( ds1302_mode2 == 1 )
				{
					state_SMG ( 6 , duanma[ds1302_time[0]/16] );
				}
				else
				{
					state_SMG ( 6 , duanma[ds1302_time[1]/16] );
				}				
			break;
			case 6 :	
				if ( ds1302_mode2 == 1 )
				{
					state_SMG ( 7 , duanma[ds1302_time[0]%16] );
				}
				else
				{
					state_SMG ( 7 , duanma[ds1302_time[1]%16] );
				}
			break;
			case 7 :	
				state_SMG_all ( 0xff );
			break;
		}
	}		
	else if ( SMG_flag == 3 )
	{
		switch ( flash_count )
		{
			case 0 :	
				state_SMG ( 0 , duanma[10] );
			break;
			case 1 :	
				state_SMG ( 1 , duanma[SMG_flag] );
			break;
			case 2 :	
				state_SMG ( 6 , duanma[set_temperature/10] );
			break;
			case 3 :	
				state_SMG ( 7 , duanma[set_temperature%10] );
			break;
			case 5 :	
				state_SMG_all ( 0xff );
			break;
		}
	}
}

void Delay2ms()		//@12.000MHz
{
	unsigned char i, j;

	i = 24;
	j = 85;
	do
	{
		while (--j);
	} while (--i);
}


void keyrunning ()
{
	C3 = 0;
	C4 = H3 = H4 = 1;
	if ( H3 == 0 )
	{
		Delay2ms();
		if ( H3 == 0 )
		{
			while ( H3 == 0 );//S13
			key13_state = ~key13_state;
		}
	}
	else if ( H4 == 0 )
	{
		Delay2ms();
		if ( H4 == 0 )
		{
			while ( H4 == 0 );//S12				
			if ( ++SMG_flag == 4 )
			{
				SMG_flag = 1;
			}
		}
	}
	
	C4 = 0;
	C3 = H3 = H4 = 1;	
	if ( H3 == 0 )
	{
		Delay2ms();
		if ( H3 == 0 )
		{
			while ( H3 == 0 )//S17
			{				
				if ( SMG_flag == 2 )
				{	
					ds1302_flash();
					ds1302_mode2 = 1;
				}		
			}
			ds1302_mode2 = 0;
			if ( SMG_flag == 3 )
			{
				if ( --set_temperature == 9 )
				{
					set_temperature = 10;
				}
			}
		}
	}
	else if ( H4 == 0 )
	{
		Delay2ms();
		if ( H4 == 0 )
		{
			while ( H4 == 0 );//S16
			if ( SMG_flag == 3 )
			{
				if ( ++set_temperature == 100 )
				{
					set_temperature = 99;
				}
			}
		}
	}
}	

void main ()
{
	
	init_ds1302();
	init_timer0();
	init_timer1();
	init_sys();
	while ( 1 )
	{
		keyrunning ();				
		ds1302_flash ();
		ds18b20_temperature ();
	}
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

funasr 麦克风实时流语音识别;模拟vad检测单独输出完整每句话

参考: https://github.com/alibaba-damo-academy/FunASR chunk_size 是用于流式传输延迟的配置。[0,10,5] 表示实时显示的粒度为 1060=600 毫秒,并且预测的向前信息为 560=300 毫秒。每个推理输入为 600 毫秒(采样点为 16000*0.6=960),输出为相应的文本。对于最后一个语音…

IntelliJ IDEA 2024 for Mac/Win:引领Java开发新纪元的高效集成环境

在日新月异的软件开发领域&#xff0c;一款高效、智能的集成开发环境&#xff08;IDE&#xff09;无疑是程序员们不可或缺的神兵利器。今天&#xff0c;我要为大家介绍的&#xff0c;正是这样一款集大成之作——IntelliJ IDEA 2024。无论是Mac用户还是Windows用户&#xff0c;只…

react query 学习笔记

文章目录 react query 学习笔记查询客户端 QueryClient获取查询客户端 useQueryClient异步重新请求数据 queryClient.fetchQuery /使查询失效 queryClient.invalidateQueries 与 重新请求数据queryClient.refetchQueries 查询 QueriesuseQuery查询配置对象查询的键值 Query Key…

LLM生成模型在生物基因DNA应用:HyenaDNA

参考&#xff1a; https://github.com/HazyResearch/hyena-dna 整体框架基本就是GPT模型架构 不一样的就是&#x1d5a7;&#x1d5d2;&#x1d5be;&#x1d5c7;&#x1d5ba;&#x1d5a3;&#x1d5ad;&#x1d5a0; block &#xff0c;主要是GPT的多重自注意力层引入了cnn…

深度学习图像处理基础工具——opencv 实战信用卡数字识别

任务 信用卡数字识别 穿插之前学的知识点 形态学操作 模板匹配 等 总体流程与方法 1.有一个模板 2 用轮廓检测把模板中数字拿出来 外接矩形&#xff08;模板和输入图像的大小要一致 &#xff09;3 一系列预处理操作 问题的解决思路 1.分析准备&#xff1a;准备模板&#…

微信小程序兼容iphone适配安全区域

背景&#xff1a; 小程序页面底部在ios中会有小黑条遮挡 上代码&#xff1a; padding-bottom: constant(safe-area-inset-bottom); /* 兼容 iOS < 11.2 */ padding-bottom: env(safe-area-inset-bottom); /* 兼容 iOS > 11.2 */ 项目描述&#xff1a; 微信小程序是通过…

中国绿色技术助力全球能源转型(国际论坛)

中国的清洁能源发展战略和实践对全球能源结构转型产生了深远影响。作为全球最大的可再生能源生产和消费国&#xff0c;中国在推动国内可再生能源产业发展的同时&#xff0c;也积极与世界各国分享技术和经验&#xff0c;促进全球范围内清洁能源技术的普及和应用成本的降低。例如…

FL Studio808鼓音在哪 FL Studio怎么让音乐鼓点更有力 FL Studio教程

FL Studio808鼓音在哪&#xff1f;808是一款电鼓机的名称&#xff0c;它发出的声音也被称之为808鼓&#xff0c;通常我们可以安装鼓机插件来使用&#xff0c;但FL Studio中自带的也有808鼓的采样音频。FL Studio怎么让音乐鼓点更有力&#xff1f;让鼓点更有力要从EQ均衡器、压缩…

ELK、ELKF企业级日志分析系统介绍

前言 随着企业级应用系统日益复杂&#xff0c;随之产生的海量日志数据。传统的日志管理和分析手段&#xff0c;难以做到高效检索、实时监控以及深度挖掘潜在价值。在此背景下&#xff0c;ELK日志分析系统应运而生。"Elastic" 是指 Elastic 公司所提供的一系列与搜索…

在 Google Cloud 上轻松部署开放大语言模型

今天&#xff0c;“在 Google Cloud 上部署”功能正式上线&#xff01; 这是 Hugging Face Hub 上的一个新功能&#xff0c;让开发者可以轻松地将数千个基础模型使用 Vertex AI 或 Google Kubernetes Engine (GKE) 部署到 Google Cloud。 Model Garden (模型库) 是 Google Clou…

AI大模型探索之路-实战篇:基于CVP架构-企业级知识库实战落地

目录 前言 一、概述 二、本地知识库需求分析 1. 知识库场景分析 2. 知识库应用特点 3. 知识库核心功能 三、本地知识库架构设计 1. RAG架构分析 2. 大模型方案选型 3. 应用技术架构选型 4. 向量数据库选型 5. 模型选型 三、本地知识库RAG评估 四、本地知识库代码落地 1. 文件…

CSS文本单行溢出和多行溢出样式

一、单行溢出 1.代码 <!DOCTYPE html> <html><head><meta charset"UTF-8" /><title>demo</title><style>#div2{overflow: hidden;white-space: nowrap;/*强制不换行*/text-overflow:ellipsis;/*超出的部分用省略号代替*…

一起学习python——基础篇(19)

今天来说一下python的如何修改文件名称、获取文件大小、读取文中指定的某一行内容。 1、修改文件名称&#xff1a; import os testPath"D:/pythonFile/test.txt" testPath2"D:/pythonFile/test2.txt" #修改文件名称使用rename方法&#xff0c; #第一个参…

Mac环境 llamafile 部署大语言模型LLM

文章目录 Github官网本地部署 llamafile 是一种可在你自己的电脑上运行的可执行大型语言模型&#xff08;LLM&#xff09;&#xff0c;它包含了给定的开放 LLM 的权重&#xff0c;以及运行该模型所需的一切。让人惊喜的是&#xff0c;你无需进行任何安装或配置。 Github https…

CSS核心样式-04-定位属性+轮播图静态结构布局案例

目录 十、定位属性 概念 定位属性 position 偏移量属性 1. 相对定位 性质 注意事项 实际应用 应用1&#xff1a;导航栏位置微调 应用2&#xff1a;文字位置微调 2. 绝对定位 绝对定位的性质 注意事项 为参考元素的参考点 祖先级为参考元素 祖先元素参考点 3. 固定…

【150套】基于SSM框架的Java毕业设计开发实战项目(附源码+演示视频+LW)

大家好&#xff01;我是程序员一帆&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f9e1;今天给大家分享150的Java毕业设计&#xff0c;基于ssm框架&#xff0c;这些项目都经过精心挑选&#xff0c;涵盖了不同的实战主题和用例&#xff0c;可做毕业设计和课程…

数据库SQL语言实战(一)

目录 创建SQL表 题目一 题目二 题目三 插入数据 题目一 题目二 题目三 总结 创建SQL表 题目一 创建学生信息表&#xff08;学生编号、姓名、性别、年龄、出生日期、院系名称、班级&#xff09;&#xff1a; test1_student&#xff1a;sid char 12 not null、nam…

C语言入门(第一天:基础语法)

一、 使用工具 1、我们学习C语言所用的编辑器是Vscode&#xff0c;大家应该都不陌生了&#xff0c;但是要在编辑器内部编写C语言&#xff0c;我们需要下载安装一些工具插件来运行C语言。 有了以上两个工具就可以进行我们的C语言编译学习了&#xff01; 二、基础语法 1.第一个…

【opencv】示例-epipolar_lines.cpp 对极线

这段代码总的功能是使用OpenCV库进行立体视觉的估计。它从命令行读取两个图像文件名&#xff0c;使用SIFT算法检测关键点并计算这些点的描述子&#xff0c;接着通过FLANN库进行快速近似最近邻搜索来找到匹配的关键点。然后使用RANSAC方法计算基础矩阵&#xff0c;找到内点&…

Python学习笔记15 - 字符串

字符串是一个不可变的字符序列&#xff0c;另一个不可变的序列是元组 字符串的驻留机制 字符串的常用操作 字符串的查询 字符串的大小写转换 字符串内容 对齐操作的方法 字符串的劈分操作 字符串的判断 字符串替换 字符串合并 字符串的比较 字符串的切片 格式化字符串 字符串…