蓝桥杯第九届电子类单片机组程序设计(模拟题)

news2024/11/25 10:28:32

目录

蓝桥杯大赛历届真题

一、第九届比赛题

二、代码实现

main.c

iic.c

iic.h


前言
蓝桥杯的真题可以再官网上查到,链接放下边了,点击即可跳转到官网:

蓝桥杯大赛历届真题

突然发现官网上的题也不全,而且还有一部分是模拟题,不过也没关系,回头可以再去其他地方找找真题,分享给大家。

蓝桥杯比赛的题型目前是:客观题: 15%基于硬件平台的程序设计与调试: 85%。客观题是数电模电+单片机基础知识的选择题,这里包括往后开元代码时,就不再带着大家看了,大家可以去上边发的那个链接里找。

根据经验,省赛程序设计是大头,如果你程序设计写的很好,但是客观题写的一塌糊涂,省一也是绝对没问题的,当然参加国赛想拿好名次的话,客观题就也得重视起来了。

一、第九届比赛题

但看这个模拟题的话还算挺正规的,已经接近现在的题目要求了,不过难度的话,估计还赶不上今年省赛题目的难度。

二、代码实现

相信随着不断地训练,很快,大家也能得心应手地应对每一道赛题

main.c

#include <stc15.h>
#include <intrins.h>
#include "iic.h"

code unsigned char Seg_Table[] =
{
0xc0, //0
0xf9, //1
0xa4, //2
0xb0, //3
0x99, //4
0x92, //5
0x82, //6
0xf8, //7
0x80, //8
0x90, //9
0xFF,//熄灭 10
0xc6, //C 11
0x8e //F 12
};
unsigned char Led_Num=0xFF;
#define LED_ON(x)			Led_Num&=~(0x01<<x);P0=Led_Num;P2|=0x80;P2&=0x9F;P2&=0x1F;
#define LED_OFF(x)		Led_Num|=0x01<<x;		P0=Led_Num;P2|=0x80;P2&=0x9F;P2&=0x1F;
#define LED_OFF_ALL()	Led_Num=0xFF;				P0=0xFF;P2|=0x80;P2&=0x9F;P2&=0x1F;

#define NIXIE_CHECK()	P2|=0xC0;P2&=0xDF;P2&=0x1F;
#define NIXIE_ON()		P2|=0xE0;P2&=0xFF;P2&=0x1F;
void Timer0_Init(void);		//1毫秒@11.0592MHz
void Delay100ms(void);	//@11.0592MHz
void get_key(void);//按键读取与处理函数
void show_menu(void);//显示菜单函数
void Timer1_Init(void);		//1毫秒@11.0592MHz
void read_ult(void);//超声波测距,测量的信息直接存到remote内
void loaddata_at(void);//从eeprom获取存储的数据
void updata_at(void);//将数据存储到eeprom内

unsigned char Nixie_num[]={10,10,10,10,10,10,10,10};//数码管待显示的数据
unsigned char location=0;//中间变量
unsigned char key_value=0;//读取到的按键键值,重甲变量
unsigned char mod=0;//菜单模式,0:测距,1:回显,2:参数设置
unsigned int ult_t=0;//超声波来回的时间,中间变量
unsigned int remote=0; //超声波读取到的距离值
unsigned char remote_count=0;//用于记录last_remote数字的位置,取值0到3
unsigned int last_remote[4]={0,0,0,0};//记录四次超声波读取到的数据
sbit TX=P1^0;//定义超声波的引脚
sbit RX=P1^1;
unsigned char show_four_times=0;//在mod1中,显示四个数据而不影响remote_count的中间变量
unsigned char mang_qu=0;//测量盲区
bit is_led_flash=0;//led闪烁的时间标志位,为0时,且启动了led灯闪烁,则1s后被置为1
bit is_run_flash=0;//是否启动LED闪烁,0:不启动闪烁,1:启动闪烁
unsigned char run3_times=0;//记录LED灯灭两三次后停止
bit L1_is_on=0;//led闪烁的状态标志位
void main()
{
	loaddata_at();//上电先从eeprom读取一次记录的数据
	LED_OFF_ALL();//熄灭led灯
	Timer0_Init();
	Timer1_Init();
	EA=1;
	Delay100ms();
	while(1)
	{
		get_key();
		/*DA输出,由于输出到逻辑比较简单,这里直接写main里了*/
		if(remote<=mang_qu)//距离小于盲区,输出0
			write_pcf(0);
		else if(remote>mang_qu&&(remote-mang_qu)<50)//距离大于盲区,输出(距离-盲区)*0.2v
			write_pcf((unsigned char)((remote-mang_qu)*0.02/5*255));
		else if(remote>mang_qu&&(remote-mang_qu)>50)//待输出电压高于5v,就输出5v
			write_pcf(255);
		
		/*LED等闪烁,关于led灯的,除了几个切换模式要开关灯之外,只有一个需要闪烁的地方。逻辑也比较简单,闪烁代码写在main里
		开关灯的代码写在get_key()里了,因为模式都是在get_key()内切换的*/
		if(is_run_flash==1&&is_led_flash==1)//is_run_flash==1表示开启led灯闪烁,闪烁三次会被置为0 停止闪烁
		{
			is_led_flash=0;
			if(L1_is_on==0)
			{
				LED_ON(0);
				L1_is_on=1;
			}
			else if(L1_is_on==1)
			{
				LED_OFF(0);
				L1_is_on=0;
			}
			if(++run3_times==6)
			{
				run3_times=0;
				LED_OFF(0);
				is_run_flash=0;
			}
		}
		show_menu();
		//Delay100ms();
	}
}
unsigned int count_1000=0;
void Timer0_Isr(void) interrupt 1
{
	P0=0x01<<location;NIXIE_CHECK();
	P0=Seg_Table[Nixie_num[location]];NIXIE_ON();
	
	if(++location==8)
		location=0;
	
	if(is_led_flash==0)//当is_led_flash=0时,1000ms之后被置为1
	{
		if(++count_1000>1000)
		{
			is_led_flash=1;
			count_1000=0;
		}
	}
	
}

void Timer0_Init(void)		//1毫秒@11.0592MHz
{
	AUXR |= 0x80;			//定时器时钟1T模式
	TMOD &= 0xF0;			//设置定时器模式
	TL0 = 0xCD;				//设置定时初始值
	TH0 = 0xD4;				//设置定时初始值
	TF0 = 0;				//清除TF0标志
	TR0 = 1;				//定时器0开始计时
	ET0 = 1;				//使能定时器0中断
}
void Timer1_Init(void)		//1毫秒@11.0592MHz
{
	AUXR |= 0x40;			//定时器时钟1T模式
	TMOD &= 0x0F;			//设置定时器模式
	TL1 = 0x00;				//设置定时初始值
	TH1 = 0x00;				//设置定时初始值
	TF1 = 0;				//清除TF1标志
	//TR1 = 1;				//定时器1开始计时
}
void Delay100ms(void)	//@11.0592MHz
{
	unsigned char data i, j, k;

	_nop_();
	_nop_();
	i = 5;
	j = 52;
	k = 195;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}
void Delay5ms(void)	//@11.0592MHz
{
	unsigned char data i, j;

	i = 54;
	j = 199;
	do
	{
		while (--j);
	} while (--i);
}
void get_key(void)
{
	unsigned char key_P3;
	P3=0xFF;
	if(P30==0){Delay5ms();while(P30==0);Delay5ms();key_value=7;}
	else if(P31==0){Delay5ms();while(P31==0);Delay5ms();key_value=6;}
	else if(P32==0){Delay5ms();while(P32==0);Delay5ms();key_value=5;}
	else if(P33==0){Delay5ms();while(P33==0);Delay5ms();key_value=4;}
	
	//S4
	if(key_value==4&&mod==0)//在菜单0,按下s4之后读取一次超声波并记录
	{
		read_ult();//读取超声波
		last_remote[remote_count]=remote;//并记录
		if(++remote_count==4)//更新remote_count信息
			remote_count=0;
		is_run_flash=1;//开启led灯闪烁
		updata_at();//更新一次eeprom的数据
	}
	//S5
	else if(key_value==5)
	{
		if(mod==0)//在模式0按下s5,进入模式1数据回显
		{
			mod=1;
			LED_ON(7);
		}
		else if(mod==1)//在模式1按下s5,再切换回距离测量也就是模式0
		{
			mod=0;
			LED_OFF(7);
		}
	}
	//S7
	else if(key_value==7)
	{
		if(mod==1)
		{
			if(++show_four_times==4)//记录四次之后,在循坏过来从0开始
				show_four_times=0;
		}
		else if(mod==2)//在模式2下
		{
			mang_qu+=10;//按下S7,盲区加10
			if(mang_qu>30)//最高不超过30
				mang_qu=0;
		}
	}
	//S6
	else if(key_value==6)//按下s6
	{
		if(mod==0|mod==1)//如果不在模式2,则进入模式2,并开启L7
		{
			mod=2;
			LED_ON(6);
			LED_OFF(7);//如果是从模式1跳转到模式2的,也就是退出了模式1,熄灭L7
		}
		else if(mod==2)//如果在模式2,则进入模式0,并熄灭L7,并保存数据
		{
			mod=0;//进入模式1
			LED_OFF(6);//熄灭L7
			wirite_at(104,mang_qu);//保存数据
		}
	}
	
	key_value=0;
	P3=key_P3;
	P4=key_P4;
}
void Delay14us(void)	//@11.0592MHz
{
	unsigned char data i;

	_nop_();
	i = 45;
	while (--i);
}
void send_wave(void)
{
	unsigned char i=0;
	for(i=0;i<8;i++)
	{
		TX=1;Delay14us();
		TX=0;Delay14us();
	}
}

void show_menu(void)
{
	unsigned char remote_count_s=0;//中间变量,用于显示上一次距离信息
	
	/*下边的逻辑是为了显示上一次记录的距离信息。
	第一次读取距离后,读取的距离存储在0位置,此时remote_count=1,上一次数据应该在3位置(也就是差了两个1)
	也不知道逻辑对不对,看不懂题目的意思
	*/
	if(remote_count>1)
		remote_count_s=remote_count-1-1;
	else if(remote_count==1)
		remote_count_s=3;
	else if(remote_count==0)
		remote_count_s=2;
	
	if(mod==0)//模式0,显示距离
	{
		Nixie_num[0]=11;
		Nixie_num[1]=10;
		Nixie_num[2]=remote/100%10;
		Nixie_num[3]=remote/10%10;
		Nixie_num[4]=remote/1%10;

		Nixie_num[5]=last_remote[remote_count_s]/100%10;
		Nixie_num[6]=last_remote[remote_count_s]/10%10;
		Nixie_num[7]=last_remote[remote_count_s]/1%10;

	}
	else if(mod==1)//mod=1,回显数据
	{
		Nixie_num[0]=show_four_times+1;
		Nixie_num[1]=10;
		Nixie_num[2]=10;
		Nixie_num[3]=10;
		Nixie_num[4]=10;
		Nixie_num[5]=last_remote[show_four_times]/100%10;
		Nixie_num[6]=last_remote[show_four_times]/10%10;
		Nixie_num[7]=last_remote[show_four_times]/1%10;
	}
	else if(mod==2)//mod=2显示盲区
	{
		Nixie_num[0]=12;
		Nixie_num[1]=10;
		Nixie_num[2]=10;
		Nixie_num[3]=10;
		Nixie_num[4]=10;
		Nixie_num[5]=10;
		Nixie_num[6]=mang_qu/10%10;
		Nixie_num[7]=mang_qu/1%10;
	}
}
void read_ult(void)//读取超声波函数
{
	send_wave();//发送8个40KHz的超声波
	TR1=1;//开始计时
	while((RX==1)&&(TF1==0));
	TR1=0;//停止计时
	if(TF1==1)//如果是定时器溢出
	{
		ult_t=0;//则记为0(没取到信息)
		TF1=0;
	}
	else//如果接收到数据了
	{
		//就获取定时器计数
		ult_t=TH1;
		ult_t<<=8;
		ult_t|=TL1;
	}
	
	remote=(unsigned int)(ult_t*0.001537);//从而计算出距离信息
	ult_t=0;
	TH1=0;
	TL1=0;
	TF1=0;
}
void loaddata_at(void)//存储数据
{
	//关于盲区数据的存储放在“退出模式2”的按键功能内了,因为题目要求退出模式2时储存数据
	last_remote[0]=read_at(100);
	Delay100ms();//注意不能连续读写eeprom,会读取或者写入失败
	last_remote[1]=read_at(101);
	Delay100ms();
	last_remote[2]=read_at(102);
	Delay100ms();
	last_remote[3]=read_at(103);
	Delay100ms();
	mang_qu=read_at(104);
}
void updata_at(void)
{
	wirite_at(100,last_remote[0]);
	Delay100ms();
	wirite_at(101,last_remote[1]);
	Delay100ms();
	wirite_at(102,last_remote[2]);
	Delay100ms();
	wirite_at(103,last_remote[3]);
}

iic.c

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

#define DELAY_TIME	5
#include <stc15.h>
#include <intrins.h>
#include "iic.h"
sbit sda=P2^1;
sbit scl=P2^0;
//
static void I2C_Delay(unsigned char n)
{
    do
    {
        _nop_();_nop_();_nop_();_nop_();_nop_();
        _nop_();_nop_();_nop_();_nop_();_nop_();
        _nop_();_nop_();_nop_();_nop_();_nop_();		
    }
    while(n--);      	
}

//
void I2CStart(void)
{
    sda = 1;
    scl = 1;
	I2C_Delay(DELAY_TIME);
    sda = 0;
	I2C_Delay(DELAY_TIME);
    scl = 0;    
}

//
void I2CStop(void)
{
    sda = 0;
    scl = 1;
	I2C_Delay(DELAY_TIME);
    sda = 1;
	I2C_Delay(DELAY_TIME);
}

//
void I2CSendByte(unsigned char byt)
{
    unsigned char i;
	
    for(i=0; i<8; i++){
        scl = 0;
		I2C_Delay(DELAY_TIME);
        if(byt & 0x80){
            sda = 1;
        }
        else{
            sda = 0;
        }
		I2C_Delay(DELAY_TIME);
        scl = 1;
        byt <<= 1;
		I2C_Delay(DELAY_TIME);
    }
	
    scl = 0;  
}

//
unsigned char I2CReceiveByte(void)
{
	unsigned char da;
	unsigned char i;
	for(i=0;i<8;i++){   
		scl = 1;
		I2C_Delay(DELAY_TIME);
		da <<= 1;
		if(sda) 
			da |= 0x01;
		scl = 0;
		I2C_Delay(DELAY_TIME);
	}
	return da;    
}

//
unsigned char I2CWaitAck(void)
{
	unsigned char ackbit;
	
    scl = 1;
	I2C_Delay(DELAY_TIME);
    ackbit = sda; 
    scl = 0;
	I2C_Delay(DELAY_TIME);
	
	return ackbit;
}

//
void I2CSendAck(unsigned char ackbit)
{
    scl = 0;
    sda = ackbit; 
	I2C_Delay(DELAY_TIME);
    scl = 1;
	I2C_Delay(DELAY_TIME);
    scl = 0; 
	sda = 1;
	I2C_Delay(DELAY_TIME);
}
void write_pcf(unsigned char dat)
{
	I2CStart();
	I2CSendByte(0x90);
	I2CWaitAck();
	I2CSendByte(0x40);
	I2CWaitAck();
	I2CSendByte(dat);
	I2CWaitAck();
	I2CStop();
}
/*本次题目没有用到AD转化,只有DA输出,所以把AD转化的代码注释掉了(注意iic.h内也注释掉了)*/
//unsigned char read_pcf(unsigned char add)
//{
//	unsigned char ad=0;
//	I2CStart();
//	I2CSendByte(0x90);
//	I2CWaitAck();
//	I2CSendByte(add);
//	I2CWaitAck();
//	I2CStop();
//	
//	I2CStart();
//	I2CSendByte(0x91);
//	I2CWaitAck();
//	ad=I2CReceiveByte();
//	I2CSendAck(1);
//	I2CStop();
//	
//	return ad;
//}
void wirite_at(unsigned char add,dat)
{
	I2CStart();
	I2CSendByte(0xA0);
	I2CWaitAck();
	I2CSendByte(add);
	I2CWaitAck();
	I2CSendByte(dat);
	I2CWaitAck();
	I2CStop();
}
unsigned char read_at(unsigned char add)
{
	unsigned char at=0;
	I2CStart();
	I2CSendByte(0xA0);
	I2CWaitAck();
	I2CSendByte(add);
	I2CWaitAck();
	I2CStop();
	
	I2CStart();
	I2CSendByte(0xA1);
	I2CWaitAck();
	at=I2CReceiveByte();
	I2CSendAck(1);
	I2CStop();
	
	return at;
}

iic.h

#ifndef _IIC_H_
#define _IIC_H_

void write_pcf(unsigned char dat);
//unsigned char read_pcf(unsigned char add);
void wirite_at(unsigned char add,dat);
unsigned char read_at(unsigned char add);

#endif

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

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

相关文章

BUUCTF misc 专题(47)[SWPU2019]神奇的二维码

下载附件&#xff0c;得到一张二维码图片&#xff0c;并用工具扫描&#xff08;因为图片违规了&#xff0c;所以就不放了哈。工具的话&#xff0c;一般的二维码扫描都可以&#xff09; swpuctf{flag_is_not_here}&#xff0c;&#xff08;刚开始出了点小差错对不住各位师傅&am…

新时代异步 IO 框架:IO_URING 的原理、用法、业界示例分析

文章目录 IO_URING基本介绍常见 I/O 模型IO_URING 原理核心结构工作模式高级特性 用法APIliburing基本流程Demo 业界示例SeaStar / ScyllaDBCEPHRocksDBClickHouse IO_URING 基本介绍 常见 I/O 模型 当前 Linux 的几种 I/O 模型&#xff1a; I/O 模型 同步 I/O 是目前应用最…

AI:130-基于深度学习的室内导航与定位

🚀点击这里跳转到本专栏,可查阅专栏顶置最新的指南宝典~ 🎉🎊🎉 你的技术旅程将在这里启航! 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带有在本地跑过的关键代码,详细讲解供…

python 基础知识点(蓝桥杯python科目个人复习计划42)

今日复习内容&#xff1a;重新学习一下贪心算法 今天做题的时候&#xff0c;想了半天贪心算法&#xff0c;结果没全想出来&#xff0c;所以菜就多练&#xff0c;重新学一下呗。 贪心算法是一种常见的算法范式&#xff0c;通常用于求解最优化过程。在每一步的选择中&#xff0…

python学习24

前言&#xff1a;相信看到这篇文章的小伙伴都或多或少有一些编程基础&#xff0c;懂得一些linux的基本命令了吧&#xff0c;本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python&#xff1a;一种编程语言&…

光芒绽放:妙用“GLAD原则”打造标准的数据可视化图表

光芒绽放&#xff1a;妙用“GLAD原则”打造标准的数据可视化图表 文章目录 光芒绽放&#xff1a;妙用“GLAD原则”打造标准的数据可视化图表前言一、可视化工具有哪些&#xff1f;二、那如何做出正确可视化图表 &#xff1f;GLAD原则1.G原则2.L原则3.A原则4.D原则 三、总结最后…

AliOS编译三方库

文章目录 1、官网教程2、编译NDK2.1 下载ndk2.2 编译环境准备2.3 安装ndk 3 cmake交叉编译3.1 编译工具链3.2 编译三方库 4 自带编译配置文件的交叉编译 1、官网教程 AliOS开发官网链接&#xff1a;AliOS开发者官网 应用开发下NDK开发有相关NDK开发介绍 2、编译NDK 2.1 下载…

优思学院|六西格玛到底有没有用?

有很多人说&#xff0c;我的企业已经是行业的顶峰&#xff0c;不需要做些什么了&#xff0c;更不需要什么六西格玛。如果你这样想就大错特错了。历史上不乏因自满而错失发展机遇&#xff0c;最终被竞争对手超越的案例。 诺基亚&#xff08;Nokia&#xff09;&#xff0c;曾经的…

102.网游逆向分析与插件开发-网络通信封包解析-解读喊话道具数据包并且利用Net发送

内容参考于&#xff1a;易道云信息技术研究院VIP课 上一个内容&#xff1a;解读聊天数据包并且利用Net发送 码云地址&#xff08;游戏窗口化助手 分支&#xff09;&#xff1a;https://gitee.com/dye_your_fingers/sro_-ex.git 码云版本号&#xff1a;cc6370dc5ca6b0176aafc…

【web | CTF】BUUCTF [BJDCTF2020]Easy MD5

天命&#xff1a;好像也挺实用的题目&#xff0c;也是比较经典吧 天命&#xff1a;把php的MD5漏洞都玩了一遍 第一关&#xff1a;MD5绕过 先声明一下&#xff1a;这题的MD5是php&#xff0c;不是mysql的MD5&#xff0c;把我搞迷糊了 一进来题目啥也没有&#xff0c;那么就要看…

P1498 南蛮图腾题解

题目 给定一个正整数n&#xff0c;参考输出样例&#xff0c;输出图形。 输入输出格式 输入格式 每个数据输入一个正整数n&#xff0c;表示图腾的大小&#xff08;此大小非彼大小&#xff09; 输出格式 这个大小的图腾 输入输出样例 输入样例 2 输出样例 /\/__\/\ /\…

前端秘法基础式(CSS)(第一卷)

一.认识CSS CSS 指的是层叠样式表&#xff08;Cascading Style Sheets&#xff09;&#xff0c;它是一种用于描述网页外观和布局的语法 CSS 可以定义网页中元素的字体、颜色、大小、位置、背景等样式&#xff0c;使网页具有美观的外观和统 一的风格。 通过将 CSS 样式表与 HTML…

成员方法传参机制

一、成员方法传参机制 1、值传递&#xff1a;形参改变不影响实参 2、地址传递&#xff1a;形参改变影响实参

wordpress外贸成品网站模板

首页大图slider轮播&#xff0c;橙色风格的wordpress外贸网站模板 https://www.zhanyes.com/waimao/6250.html 蓝色经典风格的wordpress外贸建站模板 https://www.zhanyes.com/waimao/6263.html

NetMizer 日志管理系统 多处前台RCE漏洞复现

0x01 产品简介 NetMizer是提供集成应用交付和应用安全解决方案以实现业务智能网络的优秀全球供应商,为全球企业和运营商提供确保关键业务应用的全面可用性、高性能和完善的安全性的解决方案。 0x02 漏洞概述 NetMizer 日志管理系统position.php、hostdelay.php、等接口处存在…

【动态规划初识】不同的二叉搜索树

每日一道算法题之不同二叉搜索树个数 一、题目描述二、思路三、C++代码一、题目描述 题目来源:LeetCode 给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。 C++程序要求输入输出格式如下: 示例1:…

Gartner指引:四大误区大揭秘,打造高效安全管理体系

安全管理体系是一个复杂的生态系统&#xff0c;定义了企业的关键信息、安全原则、资源和活动&#xff08;见图1&#xff09;。企业机构所构建和运行的安全体系往往难以既对员工实用&#xff0c;又能有效管理快速发展的数字风险。因此&#xff0c;首席信息官&#xff08;CIO&…

2024.2.16日总结(小程序开发8)

数据监听器 监听对象属性的变化 数据监听器支持监听对象中单个或多个属性的变化 纯数据字段 什么是纯数据字段 纯数据字段指的是哪些不用于页面渲染的data字段 应用场景:例如有些情况下&#xff0c;某些 data 中的字段既不会展示在界面上&#xff0c;也不会传递给其他组件…

《Go 简易速速上手小册》第1章:Go 语言基础(2024 最新版)

文章目录 1.1 Go 语言的安装与环境配置1.1.1 基础知识讲解案例 Demo&#xff1a;简单的 Go 程序 1.1.2 重点案例&#xff1a;搭建一个 Go Web 服务准备工作步骤 1&#xff1a;创建项目目录步骤 2&#xff1a;编写 Web 服务代码步骤 3&#xff1a;运行你的 Web 服务步骤 4&#…

[word] 手把手教您在word中添加mathtype加载项 #笔记#职场发展

手把手教您在word中添加mathtype加载项 mathtype安装完成后&#xff0c;正常情况下会在word文档中的菜单中自动添加mathtype加载项&#xff0c;但有时也会出现小意外&#xff0c;mathtype并没有加载到word文档中&#xff0c;本教程将教您解决如何手动添加mathtype加载项。 原…