51单片机6个共阳极LED数码管,最左边3个数码管动态显示个人学号后3位数字。最右边一个数码管显示剩余时间(9秒开始倒计时),中间2个数码管显示“—”。一个开关控制倒计时开始,计时到0,数码显示0,蜂鸣器响起

时间: 2023-08-05 10:04:46 浏览: 18
这个问题需要编写51单片机的程序,以下是一个简单的程序示例: ```c #include <reg51.h> #define uint unsigned int #define uchar unsigned char sbit D1 = P1^0; // 数码管位选引脚1 sbit D2 = P1^1; // 数码管位选引脚2 sbit D3 = P1^2; // 数码管位选引脚3 sbit D4 = P1^3; // 数码管位选引脚4 sbit D5 = P1^4; // 数码管位选引脚5 sbit D6 = P1^5; // 数码管位选引脚6 sbit A = P2^2; // 共阳极LED数码管的A引脚 sbit B = P2^3; // 共阳极LED数码管的B引脚 sbit C = P2^4; // 共阳极LED数码管的C引脚 sbit D = P2^5; // 共阳极LED数码管的D引脚 sbit E = P2^6; // 共阳极LED数码管的E引脚 sbit F = P2^7; // 共阳极LED数码管的F引脚 sbit G = P3^0; // 共阳极LED数码管的G引脚 sbit beep = P3^1; // 蜂鸣器引脚 sbit key = P3^2; // 开关引脚 uint cnt = 9; // 倒计时计数器 uchar code table[10] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f}; // 数码管显示表 void delay(uint t) { // 延时函数 uint i, j; for (i = t; i > 0; i--) { for (j = 110; j > 0; j--); } } void display(uint num) { // 数码管显示函数 uchar a, b, c, d, e, f, g; a = table[num / 1000]; b = table[num % 1000 / 100]; c = table[num % 100 / 10]; d = table[num % 10]; e = table[0]; f = table[0]; g = table[0]; D1 = 1; D2 = 1; D3 = 1; D4 = 1; D5 = 1; D6 = 1; switch (cnt % 6) { case 0: D1 = 0; P2 = a; break; case 1: D2 = 0; P2 = b; break; case 2: D3 = 0; P2 = c; break; case 3: D4 = 0; P2 = d; break; case 4: D5 = 0; P2 = e; break; case 5: D6 = 0; P2 = f; break; } if (cnt == 0) P2 = g; // 倒计时结束时显示0 } void main() { while (1) { if (!key) { // 开关按下时开始倒计时 delay(10); // 延时消抖 if (!key) { beep = 1; // 蜂鸣器响起 while (cnt >= 0) { display(1234); // 显示学号后3位数字 delay(1000); // 延时1秒 cnt--; // 计数器减1 } beep = 0; // 蜂鸣器停止 cnt = 9; // 重置计数器 } } else { P2 = table[10]; // 数码管显示“-” } } } ``` 这个程序中,通过 `table` 数组存储了数码管显示的表格,其中 0~9 分别对应不同的 LED 灯亮灭情况。在 `display()` 函数中,根据要显示的数值计算出需要点亮的 LED 灯,并通过 `D1`~`D6` 引脚控制数码管的位选,通过 `P2` 引脚控制数码管的 A~G 引脚。在主函数中,通过判断开关是否按下来决定是否开始倒计时,并在倒计时结束时响起蜂鸣器。

相关推荐

首先,需要安装一个51单片机开发环境,例如Keil μVision。然后,按照以下步骤设计仿真电路: 1. 打开Keil μVision,创建一个新的工程。 2. 在工程中添加51单片机的头文件和源文件。 3. 添加仿真器件,包括6个共阴极LED数码管、一个蜂鸣器和一个开关。 4. 连接器件,将6个数码管按顺序连接到单片机的6个I/O口上,将蜂鸣器连接到一个PWM输出口上,将开关连接到一个GPIO口上。 5. 编写程序,实现动态显示学号后3位数字和倒计时功能。 6. 在μVision中进行仿真,观察仿真结果是否符合要求。 以下是一个简单的程序示例: c #include <reg51.h> // 引入51单片机头文件 sbit switchPin = P0^0; // 定义开关引脚为P0.0 sbit beepPin = P2^0; // 定义蜂鸣器引脚为P2.0 unsigned char code numTable[] = { // 数码管显示的数字表 0x3F, // 0 0x06, // 1 0x5B, // 2 0x4F, // 3 0x66, // 4 0x6D, // 5 0x7D, // 6 0x07, // 7 0x7F, // 8 0x6F // 9 }; void delay() // 延时函数,用于控制倒计时 { unsigned char i, j; for(i=9; i>0; i--) // 倒数9秒 { for(j=100; j>0; j--); // 延时约1ms } } void main() { unsigned char code stuNum[] = "123"; // 学号后3位数字 unsigned char i = 0; while(switchPin); // 等待开关按下 beepPin = 1; // 关闭蜂鸣器 while(1) { // 数码管动态显示学号后3位数字 P1 = 0xFF; // 全部数码管熄灭 P1 = numTable[stuNum[i]-'0']; // 显示当前数字 P0 = ~(1<<(2-i)); // 打开对应的数码管 i = (i+1) % 3; // 循环计数 // 显示剩余时间 P0 = 0xFC; // 将左边两个I/O口设置为高电平 P1 = numTable[9]; // 最右边的数码管显示9 delay(); // 延时1秒 P1 = numTable[8]; // 最右边的数码管显示8 delay(); // 延时1秒 P1 = numTable[7]; // 最右边的数码管显示7 delay(); // 延时1秒 P1 = numTable[6]; // 最右边的数码管显示6 delay(); // 延时1秒 P1 = numTable[5]; // 最右边的数码管显示5 delay(); // 延时1秒 P1 = numTable[4]; // 最右边的数码管显示4 delay(); // 延时1秒 P1 = numTable[3]; // 最右边的数码管显示3 delay(); // 延时1秒 P1 = numTable[2]; // 最右边的数码管显示2 delay(); // 延时1秒 P1 = numTable[1]; // 最右边的数码管显示1 delay(); // 延时1秒 P1 = numTable[0]; // 最右边的数码管显示0 beepPin = 0; // 打开蜂鸣器 } } 需要注意的是,以上代码仅为示例,实际应用中还需要根据具体需求进行修改和优化。
以下是一个简单的C语言程序,可以实现上述功能。需要注意的是,由于需要控制硬件,这个程序需要在相应的硬件平台上运行,比如单片机等。 c #include <stdio.h> #include <stdlib.h> #include <time.h> #define LED_PIN 8 // 共阳极led数码管的引脚 #define SWITCH_PIN 2 // 开关控制引脚 #define BUZZER_PIN 9 // 蜂鸣器引脚 void init_led() { // 初始化led引脚为输出模式 pinMode(LED_PIN, OUTPUT); } void display_number(int num) { // 显示数字 switch (num) { case 0: digitalWrite(LED_PIN, B11111100); break; case 1: digitalWrite(LED_PIN, B01100000); break; case 2: digitalWrite(LED_PIN, B11011010); break; case 3: digitalWrite(LED_PIN, B11110010); break; case 4: digitalWrite(LED_PIN, B01100110); break; case 5: digitalWrite(LED_PIN, B10110110); break; case 6: digitalWrite(LED_PIN, B00111110); break; case 7: digitalWrite(LED_PIN, B11100000); break; case 8: digitalWrite(LED_PIN, B11111110); break; case 9: digitalWrite(LED_PIN, B11100110); break; default: digitalWrite(LED_PIN, B11111110); } } void display_time(int time_left) { // 显示剩余时间 display_number(time_left % 10); // 最右边的数字 delay(1); display_number((time_left / 10) % 10); // 中间的数字 delay(1); display_number((time_left / 100) % 10); // 最左边的数字 delay(1); } void display_dash() { // 显示 "-" digitalWrite(LED_PIN, B01000000); } void count_down() { // 倒计时 int time_left = 9; // 从9秒开始倒计时 while (time_left >= 0) { display_time(time_left); delay(1000); // 每一秒更新一次显示 time_left--; } // 倒计时结束,显示0,并响起蜂鸣器 for (int i = 0; i < 10; i++) { display_number(0); digitalWrite(BUZZER_PIN, HIGH); delay(100); digitalWrite(BUZZER_PIN, LOW); delay(100); } } int main() { init_led(); // 显示个人学号后4位数字 display_number(1); delay(1000); display_number(2); delay(1000); display_number(3); delay(1000); display_number(4); // 显示 "-" display_dash(); delay(1); display_dash(); delay(1); display_dash(); // 开关控制倒计时开始 pinMode(SWITCH_PIN, INPUT); int switch_state = digitalRead(SWITCH_PIN); while (switch_state == HIGH) { switch_state = digitalRead(SWITCH_PIN); display_dash(); delay(1); display_dash(); delay(1); display_dash(); delay(1); } count_down(); return 0; }
这是一个比较典型的嵌入式系统应用场景,需要借助51单片机的IO口、计时器、中断等功能来实现。以下是一个简单的程序设计思路: 1. 确定各个IO口的连接方式,包括LED数码管和开关的连接方式,可以参考7SEG-MPX6-CC的数据手册。 2. 初始化计时器,设置计时器中断时间间隔为1秒,计时器初始值为9秒。 3. 在主函数中,先将LED数码管全部设置为“—”,并设置一个标志位,表示计时器尚未开始。 4. 监听开关IO口,当检测到开关按下时,开始计时器,并将标志位设为已开始计时。 5. 在计时器中断服务程序中,将计时器初始值减1,同时更新LED数码管的显示内容。 6. 当计时器减为0时,将LED数码管全部设置为0,并且蜂鸣器响起,同时将标志位设为计时器已经结束。 7. 重新监听开关IO口,当检测到开关按下时,重新开始计时器,并将标志位设为未开始计时。 8. 重复以上步骤。 以下是一个简单的程序框架,具体实现需要根据硬件连接方式和具体需求进行调整: c #include <reg51.h> #define LED_PINS P1 // LED数码管连接的IO口 #define SWITCH_PIN P2_0 // 开关连接的IO口 #define BEEP_PIN P2_1 // 蜂鸣器连接的IO口 #define TIMER0_RELOAD_VALUE 65536 - 10000 // 计时器初始值,每1秒减1 volatile unsigned char timer_count = 9; // 计时器计数值,初始为9 volatile bit timer_started = 0; // 标志位,计时器是否已经开始 void init_timer0() { TMOD &= 0xF0; // 设置计时器0为模式0 TMOD |= 0x01; TH0 = TIMER0_RELOAD_VALUE >> 8; TL0 = TIMER0_RELOAD_VALUE & 0xFF; ET0 = 1; // 开启计时器0中断 TR0 = 1; // 启动计时器0 } void update_led_display() { // 更新LED数码管的显示内容 // 可以通过位运算和查表的方式来实现 } void main() { init_timer0(); while (1) { if (SWITCH_PIN == 0 && !timer_started) { // 开关按下,开始计时器 timer_count = 9; timer_started = 1; } else if (SWITCH_PIN == 0 && timer_started) { // 开关按下,重新开始计时器 timer_count = 9; } else if (timer_count == 0 && timer_started) { // 计时器到0,LED数码管显示0,蜂鸣器响起 LED_PINS = 0; BEEP_PIN = 1; timer_started = 0; } else if (timer_started) { // 更新LED数码管的显示内容 update_led_display(); } } } void timer0_isr() interrupt 1 { TH0 = TIMER0_RELOAD_VALUE >> 8; TL0 = TIMER0_RELOAD_VALUE & 0xFF; timer_count--; } 需要注意的是,以上代码仅为参考,具体实现还需要根据硬件连接方式和具体需求进行调整和优化。
要使用共阳极六位数码管显示"hello",需要先将每个字母的七段数码管码转换为对应的数字码。例如: - "h" 对应的数字码是 0x76 - "e" 对应的数字码是 0x79 - "l" 对应的数字码是 0x38 - "o" 对应的数字码是 0x3F 然后,将这些数字码依次存储到一个数组中,如下所示: unsigned char hello[] = {0x76, 0x79, 0x38, 0x38, 0x3F}; 接下来,需要按照以下步骤进行操作: 1. 设置共阳极六位数码管的引脚为输出模式。 2. 使用循环依次输出每一个数字码,每次输出一个数字码后,需要短暂延时一段时间,以便人眼能够识别。 3. 输出完成后,可以将数码管引脚全部置为低电平,以便下次使用。 下面是代码示例: c #include <reg51.h> // 数码管引脚定义 sbit DIG1 = P2^2; sbit DIG2 = P2^3; sbit DIG3 = P2^4; sbit DIG4 = P2^5; sbit DIG5 = P2^6; sbit DIG6 = P2^7; // 数码管段码定义 unsigned char hello[] = {0x76, 0x79, 0x38, 0x38, 0x3F}; void main() { unsigned char i, j; // 设置数码管引脚为输出模式 DIG1 = DIG2 = DIG3 = DIG4 = DIG5 = DIG6 = 0; while (1) { // 循环输出每一个数字码 for (i = 0; i < sizeof(hello); i++) { // 依次输出每一位数码 for (j = 0; j < 6; j++) { switch (j) { case 0: DIG1 = 1; break; case 1: DIG2 = 1; break; case 2: DIG3 = 1; break; case 3: DIG4 = 1; break; case 4: DIG5 = 1; break; case 5: DIG6 = 1; break; } P0 = hello[i]; // 延时一段时间 delay(10); // 关闭当前位 DIG1 = DIG2 = DIG3 = DIG4 = DIG5 = DIG6 = 0; } } // 输出完成后,将数码管引脚全部置为低电平 DIG1 = DIG2 = DIG3 = DIG4 = DIG5 = DIG6 = 0; } } // 延时函数 void delay(unsigned int t) { unsigned int i, j; for (i = 0; i < t; i++) { for (j = 0; j < 10; j++); } }
可以使用定时器中断和数码管扫描的方式实现51单片机在数码管的第一位循环显示0-9十个数字的功能。具体步骤如下: 1. 设置定时器中断,以一定的时间间隔触发中断。可以使用定时器1或定时器0,具体选择哪个定时器需要根据实际情况进行判断。 2. 在中断函数中,设置数码管的扫描方式,即在数码管的第一位上显示0-9十个数字。可以使用一个数组来存储0-9十个数字的显示码,然后依次在数码管的第一位上显示。 3. 在主函数中,启动定时器并开启中断,然后进入循环等待状态。此时,定时器中断会不断触发,从而实现数码管的循环显示功能。 下面是基本的代码框架: c #include <reg51.h> // 数码管端口定义 sbit D1 = P2^0; sbit D2 = P2^1; sbit D3 = P2^2; sbit D4 = P2^3; // 数码管显示码数组 unsigned char code DisplayCode[10] = { 0x3f, // 0 0x06, // 1 0x5b, // 2 0x4f, // 3 0x66, // 4 0x6d, // 5 0x7d, // 6 0x07, // 7 0x7f, // 8 0x6f // 9 }; // 定时器中断函数 void Timer1_ISR(void) interrupt 3 { static unsigned char i = 0; // 数码管扫描 D1 = 1; D2 = 0; D3 = 0; D4 = 0; P0 = DisplayCode[i]; i++; if (i >= 10) { i = 0; } } // 主函数 void main() { // 设置定时器1为模式2,自动重装载,初始值为0,定时时间为10ms TMOD &= 0x0f; TMOD |= 0x20; TL1 = 0; TH1 = 0x4c; // 启动定时器1并开启中断 TR1 = 1; ET1 = 1; EA = 1; // 进入循环等待状态 while (1) { ; } } 需要注意的是,以上代码只是一个基本的框架,具体的实现方式还需要根据实际情况进行调整。例如,如果数码管的扫描方式不同,需要相应地修改代码中的数码管端口定义和扫描方式。
以下是使用C51单片机控制PC输出字符和驱动LED数码管显示相应8421BCD码的程序: #include <reg52.h> // 定义串口通信参数 #define BAUDRATE 9600 #define FOSC 11059200L #define TIMER1_RELOAD (65536L - (FOSC / 12L / BAUDRATE)) // 定义IO口及数码管对应的BCD码 sbit LED_D1 = P1^0; sbit LED_D2 = P1^1; sbit LED_D3 = P1^2; sbit LED_D4 = P1^3; unsigned char code LED_TBL[] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x00 }; // 初始化函数 void Init() { // 设置串口参数 SCON = 0x50; // 8位数据,可变波特率 TMOD &= 0x0f; // 确定计数模式 TMOD |= 0x20; // 设置定时器1为8位自动重装模式 TH1 = TL1 = TIMER1_RELOAD; // 初始化定时器1计数值 TR1 = 1; // 启动定时器1 ES = 1; // 允许串口中断 EA = 1; // 允许总中断 } // 串口中断服务函数 void Serial_ISR() interrupt 4 { if (RI) { RI = 0; // 清除接收标志位 // 接收到字符后,驱动LED数码管显示相应的BCD码 switch(SBUF) { case '0': LED_D1 = LED_D2 = LED_D3 = 1; LED_D4 = 0; break; case '1': LED_D1 = 0; LED_D2 = LED_D3 = LED_D4 = 1; break; case '2': LED_D1 = LED_D2 = 1; LED_D3 = LED_D4 = 0; break; case '3': LED_D1 = LED_D2 = LED_D3 = 1; LED_D4 = 0; break; case '4': LED_D1 = 0; LED_D2 = LED_D3 = 1; LED_D4 = 0; break; case '5': LED_D1 = LED_D3 = 1; LED_D2 = LED_D4 = 0; break; case '6': LED_D1 = LED_D3 = 1; LED_D2 = LED_D4 = 0; break; case '7': LED_D1 = LED_D2 = LED_D3 = 0; LED_D4 = 1; break; case '8': LED_D1 = LED_D2 = LED_D3 = LED_D4 = 0; break; case '9': LED_D1 = LED_D2 = LED_D3 = 1; LED_D4 = 0; break; default: break; } } } // 主函数 void main() { Init(); // 初始化 while (1); } 需要注意的是,此程序中使用了定时器1来实现串口通信的波特率控制,因此需要在程序中使用定时器1的中断服务函数来处理串口接收事件。同时,程序中使用了一个LED_TBL数组来存储每个数字对应的BCD码值,以便驱动LED数码管进行显示。
以下是用51单片机控制8个流水灯顺序点亮的代码: c #include <reg51.h> #define LED P1 #define delay_time 1000 void delay(unsigned int t) { unsigned int i, j; for (i = t; i > 0; i--) for (j = 110; j > 0; j--); } void main() { unsigned char i; P0 = 0x00; LED = 0x00; while (1) { for (i = 0; i < 8; i++) { LED = ~(0x01 << i); delay(delay_time); } } } 同时在共阳极数码管中显示当前点亮灯号,可以使用一个数码管驱动程序和一个计数器。以下是一个简单的数码管驱动程序: c #define DIG P2 #define DIO P0 #define delay_time 2 void display(unsigned char n) { unsigned char i; DIG = 0xfe; DIO = n; for (i = 0; i < delay_time; i++); DIG = 0xfd; DIO = n; for (i = 0; i < delay_time; i++); DIG = 0xfb; DIO = n; for (i = 0; i < delay_time; i++); DIG = 0xf7; DIO = n; for (i = 0; i < delay_time; i++); } void clear_display() { DIG = 0xff; DIO = 0xff; } 然后在主函数中加入计数器和数码管的显示: c void main() { unsigned char i = 0; P0 = 0x00; LED = 0x00; clear_display(); while (1) { for (i = 0; i < 8; i++) { LED = ~(0x01 << i); display(i); delay(delay_time); } } } 最后,让蜂鸣器响一次可以使用以下代码: c #define BUZZER P3_5 void beep() { BUZZER = 1; delay(100); BUZZER = 0; } void main() { unsigned char i = 0; P0 = 0x00; LED = 0x00; clear_display(); while (1) { for (i = 0; i < 8; i++) { LED = ~(0x01 << i); display(i); delay(delay_time); } beep(); } } 这样就完成了用51单片机控制8个流水灯顺序点亮,同时在共阳极数码管中显示当前点亮灯号,同时蜂鸣器响一次的功能。
设计一个基于c51单片机的系统,实现按下一个开关时,四位数码管(共阴极)显示一个递增。 首先,需要定义四个IO口分别用于连接到数码管的四个七段数码管的共阴极引脚。假设这四个IO口分别为P0.0、P0.1、P0.2、P0.3。 然后,编写代码实现递增功能。设计一个变量num,作为计数器,初始值为0。每当按下开关时,num自增1,并通过四个IO口驱动四位数码管显示num的值。 以下是实现该功能的C语言伪代码: #include <reg51.h> sbit sw = P1^0; // 定义开关所连接的IO口 void delay() { // 延时函数,用于稳定显示 int i, j; for(i=0;i<50;i++) for(j=0;j<100;j++); } void display(int num) { // 数码管显示函数 int index[] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F}; // 数码管每个数字所对应的段码值 int i, j; for(i=0;i<4;i++) { // 依次显示每位数字 P0 = ~(1<<i); // 选择对应的数码管 P2 = index[num%10]; // 显示对应的数字 num = num/10; delay(); // 延时 } } void main() { int num = 0; while(1) { if(sw == 0) { // 按下开关 delay(); // 消抖 if(sw == 0) { // 确认按下 num++; // 计数器自增 display(num); // 显示当前数值 } } } } 上述代码利用延时函数控制数码管显示的时间,按下开关时计数器自增,同时调用数码管显示函数显示当前数值。设计一个基于c51单片机的系统,当按下一个开关时,四位数码管(共阴极)显示一个递增。具体由上述代码实现。

最新推荐

基于FPGA的74HC595驱动数码管动态显示--Verilog实现

基于FPGA的74HC595驱动数码管动态显示--Verilog实现.由FPGA控制74HC595驱动数码管其实主要是抓住74HC595的控制时序,进而输出所需控制显示的内容,由同步状态机实现.

51单片机并行口驱动LED数码管显示电路及程序

绍利用51单片机的一个并行口实现多个LED数码管显示的方法,给出了利用此方法设计的多路LED显示系统的硬件电路结构原理图和软件程序流程,同时给出了采用51汇编语言编写程序。

单片机控制74HC595动态扫描数码管显示

74HC595是具有8位移位寄存器和一个存储器,三态输出功能。移位寄存器和存储器是分别的时钟。数据在SCK的上升沿输入,在RCK的上升沿进入的存储寄存器中去。如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个...

单片机数码管之共阴极与共阳极编码

数码管是单片机设计中经常用到的器件,本文主要介绍单片机数码管之共阴极与共阳极编码

基于51单片机DS1302四位数码管可调时钟

基于51单片机DS1302四位数码管可调1时钟设计,含有原理图及配套程序。

基于at89c51单片机的-智能开关设计毕业论文设计.doc

基于at89c51单片机的-智能开关设计毕业论文设计.doc

"蒙彼利埃大学与CNRS联合开发细胞内穿透载体用于靶向catphepsin D抑制剂"

由蒙彼利埃大学提供用于靶向catphepsin D抑制剂的细胞内穿透载体的开发在和CNRS研究单位- UMR 5247(马克斯·穆塞隆生物分子研究专长:分子工程由Clément Sanchez提供于2016年5月26日在评审团面前进行了辩护让·吉隆波尔多大学ARNA实验室CNRS- INSERM教授报告员塞巴斯蒂安·帕波特教授,CNRS-普瓦捷大学普瓦捷介质和材料化学研究所报告员帕斯卡尔·拉斯特洛教授,CNRS-审查员让·马丁内斯蒙彼利埃大学Max Mousseron生物分子研究所CNRS教授审查员文森特·利索夫斯基蒙彼利埃大学Max Mousseron生物分子研究所CNRS教授论文主任让-弗朗索瓦·赫尔南德斯CNRS研究总监-蒙彼利埃大学Max Mousseron生物分子研究论文共同主任由蒙彼利埃大学提供用于靶向catphepsin D抑制剂的细胞内穿透载体的开发在和CNRS研究单位- UMR 5247(马克斯·穆塞隆生物分子研究专长:分子工程由Clément Sanchez提供�

设计一个程序有一个字符串包含n个字符 写一个函数 将此字符串中从第m个字符开始的全部字符复制成为另一个字符串 用指针c语言

以下是用指针实现将字符串中从第m个字符开始的全部字符复制成为另一个字符串的C语言程序: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> void copyString(char *a, char *b, int n, int m); int main() { int n, m; char *a, *b; printf("请输入字符串长度n:"); scanf("%d", &n); a = (char*)malloc(n * sizeof(char)); b =

基于C#多机联合绘图软件的实现-毕业设计论文.doc

基于C#多机联合绘图软件的实现-毕业设计论文.doc

4G车载网络中无线电资源的智能管理

4G车载网络中无线电资源的智能管理汽车网络从4G到5G的5G智能无线电资源管理巴黎萨克雷大学博士论文第580号博士学院博士专业:网络、信息与通信研究单位:巴黎萨克雷大学,UVSQ,LI PARAD,78180,法国伊夫林省圣昆廷参考:凡尔赛大学-伊夫林省圣昆廷论文于11月30日在巴黎萨克雷发表并答辩2021年,由玛丽亚姆·阿卢奇·马迪陪审团组成Pascal Lorenz总裁上阿尔萨斯大学大学教授Mohamed Yacine Ghamri-Doudane拉罗谢尔大学报告员和审查员教授Rami Langar报告员和审查员马恩河谷大学Oyunchimeg SHAGDARVEDECOM研发(HDR)团队负责人审查员论文方向Samir TOHME博士生导师巴黎萨克雷大学名誉教授UVSQ/LI- PARADKALLEL KHEMIRI共同监督巴黎萨克雷UVSQ/大卫Guy Pujolle受邀索邦大学Tara Yahiya邀请巴黎萨克雷大学/LISN高级讲师(HDR)博士论文NNT:2021UPASG061谢谢你首先,我要感谢我的论文导师M.萨米�