一份不知道哪里来的第十五届国赛模拟题

这是一个不知道来源的模拟题目,没有完全完成,只作代码记录,不作分析和展示,极其冗长,但里面有长按短按双击的复合,可以看看。

目录

  • 题目
  • 代码
    • 底层驱动
    • 主程序核心代码
    • 关键:双击单击长按复合代码

题目

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

代码

底层驱动

IIC(EEPROM没在主程序用)

unsigned char guangmin(){unsigned char ret;I2CStart();I2CSendByte(0x90);I2CWaitAck();I2CSendByte(0x41);I2CWaitAck();I2CStart();I2CSendByte(0x91);I2CWaitAck();ret = I2CReceiveByte();I2CSendAck(1);I2CStop();return ret;
}void DAC(unsigned char dat){I2CStart();I2CSendByte(0x90);I2CWaitAck();I2CSendByte(0x41);I2CWaitAck();I2CSendByte(dat);I2CWaitAck();I2CStop();
}void eepromwirte(unsigned char addr,unsigned char dat){I2CStart();I2CSendByte(0xa0);I2CWaitAck();I2CSendByte(addr);I2CWaitAck();I2CSendByte(dat);I2CWaitAck();I2CStop();
}unsigned char eepromread(unsigned char addr){unsigned char ret;I2CStart();I2CSendByte(0xa0);I2CWaitAck();I2CSendByte(addr);I2CWaitAck();I2CStart();I2CSendByte(0xa1);I2CWaitAck();ret = I2CReceiveByte();I2CSendAck(1);I2CStop();return ret;
}

主程序核心代码

#include <STC15F2K60S2.H>
#include "intrins.h"
#include "inithc138.h"
#include "delay.h"
#include "onewire.h"
#include "iic.h"
#include "ds1302.h"#define de 5
code unsigned char Seg_Table[17] = 
{
0xc0, //0
0xf9, //1
0xa4, //2
0xb0, //3
0x99, //4
0x92, //5
0x82, //6
0xf8, //7
0x80, //8
0x90, //9
0x88, //A
0x83, //b
0xc6, //C
0xa1, //d
0x86, //E
0x8e, //F
0xbf
};
unsigned char show = 0;//显示功能切换
unsigned char canshu = 0;//参数界面切换
bit mode = 1;//控制模式切换
unsigned char jiaozhun = 0;//校准设置切换
bit huixian = 0;//回显模式切换
unsigned int temp = 0;//温度
bit ce = 1;
unsigned int time = 0;//超声波传播时间
long distance = 0;//距离
unsigned char cejushangxian = 80;//测距上限
unsigned char cejuxiaxian = 20;//测距下限
unsigned int tempcan = 30;//温度参数
unsigned char light = 0;//光敏参数
unsigned char ds1302writeaddr[3] = {0x80,0x82,0x84};
unsigned char ds1302readaddr[3] = {0x81,0x83,0x85};
unsigned char rtctime[3] = {0x05,0x29,0x10};
char disjiao = 0;//距离校准值
int tempjiao = 0;//温度校准值
unsigned char temptime[3] = {0};//温度超限时间
unsigned char distime[3] = {0};//温度超限时间
double daczhi = 0;//DAC输出大小
bit zhouqi = 0;//1为进入按键周期
unsigned char keycount = 0;//按键周期计时
unsigned char cishu = 0;
bit zhouqi1 = 0;//1为进入按键周期
unsigned char keycount1 = 0;//按键周期计时
unsigned char cishu1 = 0;
bit keystat = 0;//按键状态(长短按)
unsigned int count = 0;//长按计时
unsigned char ledstat = 0xff;
unsigned char ledcount = 0;
bit ledflag = 0;
bit chaoxian = 0;
unsigned int tempshow = 0;//校准后的温度
//*****************************************测温模块
void cewen(){unsigned char LSB,MSB;init_ds18b20();Write_DS18B20(0xcc);Write_DS18B20(0x44);if(ce){Delay(520);}ce = 0;init_ds18b20();Write_DS18B20(0xcc);Write_DS18B20(0xbe);LSB = Read_DS18B20();MSB = Read_DS18B20();init_ds18b20();temp = ((MSB << 8) | LSB) * 0.625;tempshow = temp + tempjiao;}
//*****************************************
//*****************************************超声波模块
sbit TX = P1^0;
sbit RX = P1^1;
void showselect();
void Delay13us(void)	//@12.000MHz
{unsigned char data i;_nop_();_nop_();i = 36;while (--i);
}void fangbo(){unsigned char i;for(i = 0;i < 8;i++){TX = 1;Delay13us();TX = 0;Delay13us();}
}void initpca(){CMOD = 0x01;CCON = 0x00;
}void ceju(){CH = 0x00;CL = 0x00;CF = 0;CR = 0;			fangbo();CR = 1;while((RX == 1) && (CH < 0x17));CR = 0;if(RX == 0){RX = 1;time = (CH << 8) | CL;distance = time * 0.017;}
}
//*****************************************
//*****************************************DS1302实时时钟
void ds1302config(){unsigned char i;Write_Ds1302_Byte(0x8e,0x00);for(i = 0;i < 3;i++){Write_Ds1302_Byte(ds1302writeaddr[i],rtctime[i]);}Write_Ds1302_Byte(0x8e,0x80);
}void ds1302read(){unsigned char i;for(i = 0;i < 3;i++){rtctime[i] = Read_Ds1302_Byte(ds1302readaddr[i]);}
}
//*****************************************
//*****************************************显示功能
void shujujiemian(){//数据界面showsmg(1,Seg_Table[12]);showsmg(2,Seg_Table[tempshow / 100]);showsmg(3,Seg_Table[tempshow / 10 % 10] & 0x7f);showsmg(4,Seg_Table[tempshow % 10]);if((distance + disjiao) >= 0){showsmg(8,Seg_Table[(distance + disjiao) % 10]);if((distance + disjiao) > 9){showsmg(7,Seg_Table[(distance + disjiao) / 10 % 10]);}}else{showsmg(7,0xc7);showsmg(8,0xc7);}
}void p1(){//参数P1showsmg(1,0x8c);showsmg(2,Seg_Table[1]);showsmg(6,0x89);showsmg(7,Seg_Table[cejushangxian / 10]);showsmg(8,Seg_Table[cejushangxian % 10]);
}void p2(){//参数P2showsmg(1,0x8c);showsmg(2,Seg_Table[2]);showsmg(6,0xc7);showsmg(7,Seg_Table[cejuxiaxian / 10]);showsmg(8,Seg_Table[cejuxiaxian % 10]);
}void p3(){//参数P3showsmg(1,0x8c);showsmg(2,Seg_Table[3]);showsmg(7,Seg_Table[tempcan / 10]);showsmg(8,Seg_Table[tempcan % 10]);
}void p4(){//参数P4showsmg(1,0x8c);showsmg(2,Seg_Table[4]);if(mode){showsmg(4,0x8c);showsmg(5,Seg_Table[14]);}else{showsmg(4,Seg_Table[10]);showsmg(5,0xc1);}showsmg(8,Seg_Table[light % 10]);if(light > 9){showsmg(7,Seg_Table[light / 10 % 10]);}if(light > 99){showsmg(6,Seg_Table[light / 100 % 10]);}
}void canshujiemian(){//参数界面switch(canshu){case 0:p1();break;case 1:p2();break;case 2:p3();break;case 3:p4();break;}
}void shijianjiemian(){//时间显示showsmg(1,Seg_Table[rtctime[2] / 16]);showsmg(2,Seg_Table[rtctime[2] % 16]);showsmg(3,Seg_Table[16]);showsmg(4,Seg_Table[rtctime[1] / 16]);showsmg(5,Seg_Table[rtctime[1] % 16]);showsmg(6,Seg_Table[16]);showsmg(7,Seg_Table[rtctime[0] / 16]);showsmg(8,Seg_Table[rtctime[0] % 16]);
}void f1(){showsmg(1,Seg_Table[15]);showsmg(2,Seg_Table[1]);if(disjiao >= 0){showsmg(8,Seg_Table[disjiao % 10]);if(disjiao > 9){showsmg(7,Seg_Table[disjiao / 10 % 10]);}}else if(disjiao < 0){if(disjiao >= -9){showsmg(8,Seg_Table[-(disjiao) % 10]);showsmg(7,Seg_Table[16]);}if(disjiao < -9){showsmg(8,Seg_Table[-(disjiao) % 10]);showsmg(7,Seg_Table[-(disjiao) / 10 % 10]);showsmg(6,Seg_Table[16]);}}
}void f2(){showsmg(1,Seg_Table[15]);showsmg(2,Seg_Table[2]);if(tempjiao > 0){showsmg(8,Seg_Table[tempjiao % 10]);showsmg(7,Seg_Table[tempjiao  / 10 % 10] & 0x7f);}else if(tempjiao < 0){showsmg(8,Seg_Table[(-tempjiao) % 10]);showsmg(7,Seg_Table[(-tempjiao) / 10 % 10] & 0x7f);showsmg(6,Seg_Table[16]);}else if(tempjiao == 0){showsmg(8,Seg_Table[0]);}
}void f3(){showsmg(1,Seg_Table[15]);showsmg(2,Seg_Table[3]);if(mode){showsmg(7,0x8c);showsmg(8,Seg_Table[14]);}else{showsmg(7,Seg_Table[10]);showsmg(8,0xc1);}
}void jiaozhunshezhi(){//校准设置界面switch(jiaozhun){case 0:f1();break;case 1:f2();break;case 2:f3();break;}
}void wenduchaoxian(){//温度超限时间记录showsmg(1,0x8b);showsmg(2,0xa7);if(temptime[2] != 0){showsmg(3,Seg_Table[temptime[2] / 16]);showsmg(4,Seg_Table[temptime[2] % 16]);showsmg(5,Seg_Table[temptime[1] / 16]);showsmg(6,Seg_Table[temptime[1] % 16]);showsmg(7,Seg_Table[temptime[0] / 16]);showsmg(8,Seg_Table[temptime[0] % 16]);}
}void julichaoxian(){//距离超限时间记录showsmg(1,0x8b);showsmg(2,0xa1);if(distime[2] != 0){showsmg(3,Seg_Table[distime[2] / 16]);showsmg(4,Seg_Table[distime[2] % 16]);showsmg(5,Seg_Table[distime[1] / 16]);showsmg(6,Seg_Table[distime[1] % 16]);showsmg(7,Seg_Table[distime[0] / 16]);showsmg(8,Seg_Table[distime[0] % 16]);}
}void huixianmoshi(){//回显模式if(huixian == 0){wenduchaoxian();}else{julichaoxian();}
}
//*****************************************
//*****************************************DAC输出
void DACshuchu(){if((disjiao + distance) <= cejuxiaxian){daczhi = 51;}else if((disjiao + distance) >= cejushangxian){daczhi = 255;}else{daczhi = (204 / (cejushangxian - cejuxiaxian)) * (disjiao + distance - cejuxiaxian) + 51;}DAC(daczhi);
}
//*****************************************
//*****************************************
void showselect(){switch(show){case 0:shujujiemian();break;case 1:canshujiemian();break;case 2:shijianjiemian();break;case 3:jiaozhunshezhi();break;case 4:huixianmoshi();break;}
}
//*****************************************
//*****************************************单击双击检测
void Timer0_Isr(void) interrupt 1
{ledcount++;if(zhouqi){keycount++;}if(keycount == 100){zhouqi = 0;}if(zhouqi1){keycount1++;}if(keycount1 == 100){zhouqi1 = 0;}if(keystat){count++;}if(ledcount == 200){ledcount = 0;}if(ledcount % 20 == 0){ledflag = ~ledflag;}
}void Timer0_Init(void)		//5毫秒@12.000MHz
{AUXR |= 0x80;			//定时器时钟1T模式TMOD &= 0xF0;			//设置定时器模式TL0 = 0xA0;				//设置定时初始值TH0 = 0x15;				//设置定时初始值TF0 = 0;				//清除TF0标志TR0 = 1;				//定时器0开始计时ET0 = 1;				//使能定时器0中断EA = 1;
}//*****************************************
//*****************************************按键扫描
void scankey(){P33 = 0;P32 = 1;P44 = 1;P35 = 1;if(P44 == 0){//S4Delay(de);while(P44 == 0){showselect();}show++;jiaozhun = 0;canshu = 0;huixian = 0;show %= 5;}if(P35 == 0){//S12Delay(de);if(P35 == 0){zhouqi = 1;}while(P35 == 0){showselect();}cishu++;if(show == 1){if(canshu == 2){tempcan++;if(tempcan > 40){tempcan = 40;}}else if((canshu == 3) && (mode == 1)){light += 10;if(light > 200){light = 200;}}}if(show == 3){if(jiaozhun == 0){disjiao++;if(disjiao > 10){disjiao = 10;}}else if(jiaozhun == 1){tempjiao++;if(tempjiao > 30){tempjiao = 30;}}}}if(show == 1){if(zhouqi == 0){if(cishu == 1){//单击if(show == 1){if(canshu == 0){cejushangxian++;if(cejushangxian > 90){cejushangxian = 90;}}else if(canshu == 1){cejuxiaxian++;if(cejuxiaxian > (cejushangxian - 20)){cejuxiaxian = cejushangxian - 20;}}}}if(cishu == 2){//双击if(show == 1){if(canshu == 0){cejushangxian += 10;if(cejushangxian > 90){cejushangxian = 90;}}else if(canshu == 1){cejuxiaxian += 10;if(cejuxiaxian > (cejushangxian - 20)){cejuxiaxian = cejushangxian - 20;}}}}keycount = 0;cishu = 0;}}P33 = 1;P32 = 0;P44 = 1;P35 = 1;if(P44 == 0){//S5Delay(de);while(P44 == 0){showselect();}if(show == 1){canshu++;canshu %= 4;}if(show == 3){jiaozhun++;jiaozhun %= 3;}if(show == 4){huixian = ~huixian;}}if(P35 == 0){//S13Delay(de);if(P35 == 0){zhouqi1 = 1;}while(P35 == 0){keystat = 1;showselect();}keystat = 0;if(count < 400){//短按cishu1++;if(show == 1){if(canshu == 2){tempcan--;if(tempcan < 20){tempcan = 20;}}else if((canshu == 3) && (mode == 1)){light -= 10;if(light > 200){light = 0;}}}if(show == 3){if(jiaozhun == 0){disjiao--;if(disjiao < -10){disjiao = -10;}}else if(jiaozhun == 1){tempjiao--;if(tempjiao < -30){tempjiao = -30;}}}}else{if(show == 3){if(jiaozhun == 0){disjiao = 0;}if(jiaozhun == 1){tempjiao = 0;}}}count = 0;}if(show == 1){if(zhouqi1 == 0){if(cishu1 == 1){//单击if(show == 1){if(canshu == 0){cejushangxian--;if(cejushangxian < (cejuxiaxian + 20)){cejushangxian = cejuxiaxian + 20;}}else if(canshu == 1){cejuxiaxian--;if(cejuxiaxian < 10){cejuxiaxian = 10;}}}}if(cishu1 == 2){//双击if(show == 1){if(canshu == 0){cejushangxian -= 10;if(cejushangxian < (cejuxiaxian + 20)){cejushangxian = (cejuxiaxian + 20);}}else if(canshu == 1){cejuxiaxian -= 10;if(cejuxiaxian < 10){cejuxiaxian = 10;}}}}keycount1 = 0;cishu1 = 0;}}
}
//*****************************************
//*****************************************LED模块与超限判断
void chaoxianpanduan(){if(((temp + tempjiao) / 10) > tempcan){chaoxian = 1;temptime[0] = rtctime[0];temptime[1] = rtctime[1];temptime[2] = rtctime[2];//eepromwirte()}
}void led(){unsigned char tmp = 0;if(tempshow > tempcan * 10){ledstat = ledstat & ~0x10;}else{ledstat = ledstat | 0x10;}if((show == 0) && (ledflag == 1)){ledstat = ledstat & ~0x01;}else{ledstat = ledstat | 0x01;}if((show == 3) && (ledflag == 1)){ledstat = ledstat & ~0x02;}else{ledstat = ledstat | 0x02;}if(((distance + disjiao) <=cejushangxian) && ((distance + disjiao) >= cejuxiaxian)){ledstat = ledstat | 0x08;}else{ledstat = ledstat & ~0x08;}tmp = guangmin();if((mode == 1) && (tmp > light)){ledstat = ledstat & ~0x80;}else{ledstat = ledstat | 0x80;}outputp0(4,ledstat);
}
//*****************************************
void main(){ds1302config();cewen();initpca();initsys();ceju();Timer0_Init();while(1){if(mode == 0){light = guangmin();}cewen();led();ceju();showselect();ds1302read();DACshuchu();scankey();chaoxianpanduan();}
}

关键:双击单击长按复合代码

以S12为例

//*****************************************单击双击检测
void Timer0_Isr(void) interrupt 1
{ledcount++;if(zhouqi){keycount++;}if(keycount == 100){zhouqi = 0;}if(zhouqi1){keycount1++;}if(keycount1 == 100){zhouqi1 = 0;}if(keystat){count++;}if(ledcount == 200){ledcount = 0;}if(ledcount % 20 == 0){ledflag = ~ledflag;}
}void Timer0_Init(void)		//5毫秒@12.000MHz
{AUXR |= 0x80;			//定时器时钟1T模式TMOD &= 0xF0;			//设置定时器模式TL0 = 0xA0;				//设置定时初始值TH0 = 0x15;				//设置定时初始值TF0 = 0;				//清除TF0标志TR0 = 1;				//定时器0开始计时ET0 = 1;				//使能定时器0中断EA = 1;
}//*****************************************P33 = 0;P32 = 1;P44 = 1;P35 = 1;if(P44 == 0){//S4Delay(de);while(P44 == 0){showselect();}show++;jiaozhun = 0;canshu = 0;huixian = 0;show %= 5;}if(P35 == 0){//S12Delay(de);if(P35 == 0){zhouqi = 1;}while(P35 == 0){showselect();}cishu++;if(show == 1){if(canshu == 2){tempcan++;if(tempcan > 40){tempcan = 40;}}else if((canshu == 3) && (mode == 1)){light += 10;if(light > 200){light = 200;}}}if(show == 3){if(jiaozhun == 0){disjiao++;if(disjiao > 10){disjiao = 10;}}else if(jiaozhun == 1){tempjiao++;if(tempjiao > 30){tempjiao = 30;}}}}if(show == 1){if(zhouqi == 0){if(cishu == 1){//单击if(show == 1){if(canshu == 0){cejushangxian++;if(cejushangxian > 90){cejushangxian = 90;}}else if(canshu == 1){cejuxiaxian++;if(cejuxiaxian > (cejushangxian - 20)){cejuxiaxian = cejushangxian - 20;}}}}if(cishu == 2){//双击if(show == 1){if(canshu == 0){cejushangxian += 10;if(cejushangxian > 90){cejushangxian = 90;}}else if(canshu == 1){cejuxiaxian += 10;if(cejuxiaxian > (cejushangxian - 20)){cejuxiaxian = cejushangxian - 20;}}}}keycount = 0;cishu = 0;}}

注意几个要点:
1、涉及到双击,要把判断部分抽离按键按下阶段,否则不会进行判断
2、注意按键周期,在编程过程中可以用数码管显示按键周期和按键按下进行调试。
3、定时器尽量使用1T,优先级尽量高。

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

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

相关文章

今日学会的,刘姥姥进大观园

Git - First-Time Git Setup 下载了Git&#xff0c;会用Git了&#xff1f; 还有这个&#xff1a;学习 HTML5 Canvas 这一篇文章就够了 | 菜鸟教程 (runoob.com) JavaScript 用法 | 菜鸟教程 (runoob.com) 看到这个真的是受益匪浅&#xff0c;我终于懂了一直有的疑惑。 3D可…

RAG技术探索

什么是RAG 1 RAG原理 RAG&#xff08;Retrieval Augmented Generation, 检索增强生成&#xff09;&#xff0c;即LLM在回答问题或生成文本时&#xff0c;先会从大量文档中检索出相关的信息&#xff0c;然后基于这些信息生成回答或文本&#xff0c;从而提高预测质量。RAG模型尤…

数据在内存中的存储<C语言>

导言 在计算机中不同类型的数据在计算机内部存储形式各不相同&#xff0c;弄懂各种数据在计算机内部存储形式是有必要的&#xff0c;C语言的学习不能浮于表面&#xff0c;更要锻炼我们的“内功”&#xff0c;将来在写程序的时候遇见各种稀奇古怪的bug时&#xff0c;也便能迎刃而…

控制障碍函数CBF详解(附带案例实现)

控制障碍函数CBF详解&#xff08;附带案例实现&#xff09; 文章目录 控制障碍函数CBF详解&#xff08;附带案例实现&#xff09;1. Control Affine System2. Lyapunov Theory, Nagumos Theory, Invariance Principle3. Control Lyapunov Function (CLF) and CLF-QP4. Control …

算法(十二)分治算法

文章目录 算法概念算法例子字符串中小写转大写求X^n问题 算法概念 分治算法&#xff08;divide and conquer&#xff09;算法的核心思想其实就是"分而治之"&#xff0c;将原问题划分成n个规模较小&#xff0c;并且结构与原问题相似的子问题&#xff0c;递归地解决这…

移植其他命令行Vivado IDE的工具

移植其他命令行Vivado IDE的工具 介绍 本章介绍如何迁移各种AMD命令行工具以在AMD中使用 Vivado™集成设计环境&#xff08;IDE&#xff09;。 迁移ISE Partgen命令行工具 ISE™Design Suite Partgen工具可获得&#xff1a; •系统上安装的所有设备的信息 •详细的包装信息 您可…

[openwrt-21.02]openwrt-21.02 make menuconfig不显示luci-app-firewall问题分析及解决方案

问题描述 make menuconfig在 在applications界面没有luci-app-firewall 问题分析 首先重新执行 ./scripts/feeds update -a ./scripts/feeds install -a 然后再次执行make menuconfig&#xff0c;依然不显示&#xff0c;所以不是feeds安装的问题 最后看到log有个openmptc…

记录mabatis-plus初体验

一、简介 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 测试问题现象&#xff1a;测试mabatis的crud方法 增加 批量删除都没有问题 单单就是这个根据ID删除有问题 解决方案&#xff1a;真的就是pom文件的问题 自己的版本是Intelli…

Fully Convolutional Networks for Semantic Segmentation--论文笔记

论文笔记 资料 1.代码地址 2.论文地址 https://arxiv.org/abs/1411.4038 3.数据集地址 论文摘要的翻译 卷积网络是强大的视觉模型&#xff0c;可以产生特征层次结构。我们表明&#xff0c;卷积网络本身&#xff0c;经过端到端&#xff0c;像素对像素的训练&#xff0c;在…

【新能源大巴BMS结构与乘用车的区别】

新能源大巴BMS结构与乘用车的区别 这篇文章主要介绍新能源大巴的电池和BMS的结构与乘用车的区别。 主要有&#xff0c;新能源大巴行业、新能源电池系统结构和新能源大巴的BMS系统。 第一部分 新能源大巴行业 其实数数全球的商用车(大巴卡车)&#xff0c;大致的方向还是沿着就…

前端传String字符串 后端使用enun枚举类出现错误

情况 前端 String 后端 enum 前端 后端 报错 2024-05-31T21:47:40.61808:00 WARN 21360 --- [nio-8080-exec-6] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.method.annotation.MethodArgumentTypeMismatchException: Failed to con…

香港服务器无法访问是什么情况?

香港服务器无法访问是什么情况?简单来说&#xff0c;这意味着香港服务器没有响应请求&#xff0c;客户端无法访问。此错误可能由于多种原因而发生&#xff0c;包括网络连接问题、服务器停机、防火墙限制和 DNS 错误。当发生服务器无法访问错误时&#xff0c;它会影响您网站的性…

Qt for android : libusb在android中使用

简介 如何在Qt for Android中使用libusb&#xff0c; 其实libusb的文档里面都写的很清楚&#xff0c; 这里只是稍微做下整理。 libusb libusb github源码 libusb release的版本, 有编译好的静态 步骤 1. 下载libusb libusb v1.0.027 源码包 2. 整理提取libusb android使用源…

Docker 私有仓库部署和管理

目录 一、案例一 概述 二、案例一 前置知识点 2.1、什么是 Docker Compose 2.2、什么是 Consul 三、案例一 使用 docker Compose 搭建 Consul 集群环境 3.1、案例实验环境 3.2、案例需求 四、案例实施 4.1、Docker 网络通信 1&#xff09;端口映射 2&#xf…

运筹学_3.运输问题(特殊的线性规划)

目录 前言3.1 平衡运输问题中初始基可行解确定运输问题平衡运输与非平衡运输平衡运输问题的数学模型单纯形法解决平衡运输问题&#xff0c;初始可行基的确认 3.2 平衡运输问题的最优解判别求检验数表上作业法 3.3 产销不平衡的运输问题运输问题中产大于销的问题运输问题中产小于…

【MySQL访问】

文章目录 一、C远程连接到MySQLmysql_init()函数mysql_real_connect&#xff08;&#xff09;函数实战案例 二、处理查询select的细节mysql_store_result()函数获取结果行和列获取select结果获取行内容获取列属性 三、MySQL图形化界面连接 关于动态链接&#xff0c;请看这篇文章…

达梦数据库(五) -------- 达梦数据库+mybatisPlus+springboot

前言&#xff1a;安装完达梦数据库后&#xff0c;需要初始化实例&#xff0c;在初始化实例时&#xff0c;需要注意大小写敏感的设置。大小写敏感只能在初始化数据库的时候设置&#xff0c;默认为大小写敏感&#xff0c;一旦设置成功就无法修改&#xff0c;如果想要修改&#xf…

elementui el-tooltip文字提示组件弹出层内容格式换行处理

1、第一种 1.1 效果图 1.2、代码 <template><div class"wrapper"><el-tooltip class"content" effect"dark" placement"top"><div slot"content"><div v-html"getTextBrStr(text)"&…

ai虚拟主播自动切换的实现

前段时间,看到b站突然冒出很多ai主播,输入数字切换小姐姐.感觉挺有趣.思考了以下决定手动实现一下. 然后就陷入长达5天的踩坑中 由于是自建的webrtc服务器,很自然的想直接收流转发,这也是最优的方案, 然而实际上遇到许多不是很友好的bug, 然后再想使用rtp转发,依然不理想. 最后…

【第十二节】C++控制台版本贪吃蛇小游戏

目录 一、游戏简介 1.1 游戏概述 1.2 实现功能 1.3 开发环境 二、实现设计 2.1 C类的设计 2.2 项目结构 2.3 代码设计 三、程序运行截图 3.1 游戏界面 3.2 自定义地图 3.3 常规游戏界面 一、游戏简介 1.1 游戏概述 本游戏是一款基于C语言开发的控制台版本贪吃蛇游…