【格院】MS Lab代码:exercise 1-9
格院 MS LAB 1-9 源代码
·
大家有不懂的地方请移步“格院生存指南”公众号
这里只提供代码的参考
请勿copy,请勿copy,请勿copy,重要的事情说三遍。这只是参考和思路分享。
exercise 1:
#include "mbed.h"
DigitalOUT REDLED (D5);
DigitalOut GREENLED (D6);
DigitalOut TESTPIN (D6);
int main()
{
TESTPIN.write(0);
//TESTPIN.write(1);
while (true) {
REDLED.write(1);
GREENLED.write(0);
ThisThread::sleep_for(1s);
REDLED.write(0);
GREENLED.write(1);
ThisThread::sleep_for(1s);
}
}
exercise 2:
#include "mbed.h"
// 定义PWM参数
#define PWM_PERIOD_MS 1 // PWM周期,单位:毫秒
#define PWM_DUTY_CYCLE 0.5f // PWM占空比,范围:0.0-1.0
#define DELAY_TIME 1000 // 延时时间,单位:毫秒
PwmOut pwm(D0);
int main()
{
pwm.period_ms(PWM_PERIOD_MS);
pwm.write(PWM_DUTY_CYCLE);
while (true) {
ThisThread::sleep_for(DELAY_TIME);
}
}
exercise 3:
#include "mbed.h"
// 定义引脚和参数常量
#define INPUT_PIN A0 // 数字输入引脚
#define PWM_PIN D0 // PWM输出引脚
#define DUTY_CYCLE 0.5f // PWM占空比:50%
#define PERIOD_SLOW 5 // 慢速周期:5ms
#define PERIOD_FAST 2 // 快速周期:2ms
#define DELAY_TIME 1s // 循环延时时间
// 创建输入输出对象
DigitalIn inputSignal(INPUT_PIN); // 数字输入对象
PwmOut pwmOutput(PWM_PIN); // PWM输出对象
int main()
{
while (true) {
// 设置固定占空比
pwmOutput.write(DUTY_CYCLE);
// 根据输入信号切换PWM周期
if (inputSignal.read() == 1) {
pwmOutput.period_ms(PERIOD_SLOW); // 输入高电平时使用较慢周期
} else {
pwmOutput.period_ms(PERIOD_FAST); // 输入低电平时使用较快周期
}
// 延时等待
ThisThread::sleep_for(DELAY_TIME);
}
}
exercise 4:
#include "mbed.h"
DigitalOut p1(D4);
DigitalOut p2(D5);
int main()
{
while (true) {
p1.write(1); p2.write(1);ThisThread::sleep_for(1s);
p1.write(0);p2.write(1);ThisThread::sleep_for(1s);
p1.write(1); p2.write(0);ThisThread::sleep_for(1s);
p1.write(0); p2.write(0);ThisThread::sleep_for(1s);
}
}
exercise 5:
#include "mbed.h"
// 定义七段数码管引脚
BusOut Display(A1, A2, A3, A4, A5, A6, A7);
// 定义显示字符的编码常量
#define DISPLAY_H 0x76 // 字母"H"的七段码
#define DISPLAY_E 0x79 // 字母"E"的七段码
#define DISPLAY_L 0x38 // 字母"L"的七段码
#define DISPLAY_O 0x73 // 字母"O"的七段码
#define DISPLAY_OFF 0x00 // 全部熄灭
// 定义时间常量
#define DISPLAY_DELAY 200ms // 显示延时时间
int main()
{
// 循环显示"HELO"五次
for(int i = 0; i < 5; i++) {
// 显示字母"H"
Display = DISPLAY_H;
ThisThread::sleep_for(DISPLAY_DELAY);
// 显示字母"E"
Display = DISPLAY_E;
ThisThread::sleep_for(DISPLAY_DELAY);
// 显示字母"L"
Display = DISPLAY_L;
ThisThread::sleep_for(DISPLAY_DELAY);
// 显示字母"L"
Display = DISPLAY_L;
ThisThread::sleep_for(DISPLAY_DELAY);
// 显示字母"O"
Display = DISPLAY_O;
ThisThread::sleep_for(DISPLAY_DELAY);
// 短暂熄灭所有段,作为单词间的分隔
Display = DISPLAY_OFF;
ThisThread::sleep_for(DISPLAY_DELAY);
}
}
exercise 6:
#include "mbed.h"
// 定义模拟输出引脚
AnalogOut VoltageTest(A3);
// 定义电压值常量
#define VOLTAGE_1 0.1515f
#define VOLTAGE_2 0.3f // 约1.00V (基于3.3V参考电压)
#define VOLTAGE_3 0.6f // 约2.00V (基于3.3V参考电压)
#define VOLTAGE_4 0.76f // 约2.50V (基于3.3V参考电压)
// 定义延时常量
#define DELAY_TIME 3s // 每个电压级别的持续时间
int main()
{
while (true) {
// 输出第一级电压
VoltageTest = VOLTAGE_1;
ThisThread::sleep_for(DELAY_TIME);
// 输出第二级电压
VoltageTest = VOLTAGE_2;
ThisThread::sleep_for(DELAY_TIME);
// 输出第三级电压
VoltageTest = VOLTAGE_3;
ThisThread::sleep_for(DELAY_TIME);
// 输出第四级电压
VoltageTest = VOLTAGE_4;
ThisThread::sleep_for(DELAY_TIME);
}
}
exercise 7:
这个结果纯纯试出来的,可信度不高
#include "mbed.h"
// 定义模拟输出引脚
AnalogOut Sawtooth_Wave(A3);
// 定义锯齿波参数
#define WAVE_STEPS 101 // 锯齿波的步进数量
#define STEP_INCREMENT 0.009 // 每步电压增量
#define STEP_DELAY 79 // 每步延时(微秒)
int main()
{
while (true) {
// 生成锯齿波形
for(int i = 0; i < WAVE_STEPS; i++) {
// 计算并输出当前电压值
Sawtooth_Wave.write(i * STEP_INCREMENT);
// 延时以控制波形频率
wait_us(STEP_DELAY);
}
}
}
exercise 8:
#include "mbed.h"
// 定义LED引脚
#define LED1_PIN D4
#define LED2_PIN D5
#define LED3_PIN D6
#define LED4_PIN D9
#define VOLTAGE_PIN A3
// 定义电压阈值常量(基于3.3V参考电压)
#define THRESHOLD_1 0.18 // 约0.6V
#define THRESHOLD_2 0.35 // 约1.2V
#define THRESHOLD_3 0.54 // 约1.8V
#define THRESHOLD_4 0.70 // 约2.4V
int main()
{
// 初始化LED输出引脚
DigitalOut LED1(LED1_PIN);
DigitalOut LED2(LED2_PIN);
DigitalOut LED3(LED3_PIN);
DigitalOut LED4(LED4_PIN);
// 初始化模拟输入引脚
AnalogIn InputVoltage(VOLTAGE_PIN);
while (1)
{
// 读取当前电压值
float voltage = InputVoltage.read();
// 根据电压范围控制LED显示
if (voltage <= THRESHOLD_1) // 0 ~ 0.6V
{
LED1 = 0;
LED2 = 0;
LED3 = 0;
LED4 = 0;
}
else if (voltage < THRESHOLD_2) // 0.6V ~ 1.2V
{
LED1 = 1;
LED2 = 0;
LED3 = 0;
LED4 = 0;
}
else if (voltage < THRESHOLD_3) // 1.2V ~ 1.8V
{
LED1 = 1;
LED2 = 1;
LED3 = 0;
LED4 = 0;
}
else if (voltage < THRESHOLD_4) // 1.8V ~ 2.4V
{
LED1 = 1;
LED2 = 1;
LED3 = 1;
LED4 = 0;
}
else // 2.4V以上
{
LED1 = 1;
LED2 = 1;
LED3 = 1;
LED4 = 1;
}
}
}
exercise 9:
大一写的时候没注意保存
被我搞掉了
![]()
更多推荐


所有评论(0)