1.绘制完整的符合题目要求的电路图得40分(每错1处扣5分,扣完为止)。
2.系统开机时,数码管显示“N”(N为学号末尾2位+2)得5分,LED常亮得5分。
3.按键1(启动键)第一次触发时,数码管从0开始计时,led 以1Hz的频率闪烁;当计时到N秒时,停止计时和led熄灭;暂停键后再触发时,从暂停的计数处继续计时;按键可以采用外部中断方式识别得5分,计时时间可以利用定时器实现得5分 。
4.按键2(暂停键)每触发1次,切换计时状态,让计时系统暂停计时和LED暂停闪烁。按键可以采用外部中断方式识别得5分。
如果觉得有点用请采纳。
下面是一个示例代码,它实现了启动键(按键1)和暂停键(按键2)的外部中断方式识别,以及定时器实现的计时功能:
#include <reg51.h>
sbit start_key = P3^0; // 启动键
sbit pause_key = P3^1; // 暂停键
sbit led = P1^0; // LED
unsigned char N = 12; // N为学号末尾2位+2
unsigned char time = 0; // 计时
bit timer_flag = 0; // 计时标志
bit pause_flag = 0; // 暂停标志
void delay(unsigned int t) {
while(t--);
}
void interrupt_init() {
IT0 = 1; // 启动键触发中断
IT1 = 1; // 暂停键触发中断
EX0 = 1; // 开启INT0中断
EX1 = 1; // 开启INT1中断
EA = 1; // 开启总中断
}
void timer_init() {
TMOD = 0x01; // 设置定时器0工作在方式1
TH0 = 0xFC; // 设置定时器初值
TL0 = 0x66;
TR0 = 1; // 开启定时器
ET0 = 1; // 开启定时器中断
}
void start_key_isr() interrupt 0 {
if (!timer_flag) {
timer_flag = 1;
time = 0;
} else if (pause_flag) {
pause_flag = 0;
} else {
pause_flag = 1;
}
}
void pause_key_isr() interrupt 2 {
if (timer_flag) {
对于第3点和第4点的要求,我们需要使用外部中断来识别按键1和按键2的触发,并在触发时执行相应的操作。我们可以使用STM32的EXTI中断机制来实现这部分功能。
以下是使用C语言编写的符合要求的电路图程序代码的示例:
#include <stm32f10x.h>
#include <stm32f10x_gpio.h>
#include <stm32f10x_rcc.h>
#include <stm32f10x_exti.h>
// 定义按键1和按键2的GPIO端口和引脚
#define KEY1_GPIO_PORT GPIOA
#define KEY1_GPIO_PIN GPIO_Pin_0
#define KEY2_GPIO_PORT GPIOA
#define KEY2_GPIO_PIN GPIO_Pin_1
// 定义数码管的GPIO端口和引脚
#define SEG_GPIO_PORT GPIOC
#define SEG_GPIO_PINS (GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7)
// 定义LED的GPIO端口和引脚
#define LED_GPIO_PORT GPIOC
#define LED_GPIO_PIN GPIO_Pin_8
// 定义定时器
#define TIM TIM2
// 定义计时时间
#define TIM_TIME N
// 计时状态
#define TIM_START 0
#define TIM_PAUSE 1
int tim_status = TIM_START;
int time_count = 0;
// 初始化GPIO
void GPIO_Init(void)
{
// 开启相应的时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
// 配置按键1和按键2的GPIO为输入模式
GPIO_InitTypeDef GPIO_Init
综上所述,上面的代码并不是完整的代码,只是给出了一些思路,需要自己根据题目要求进行修改和完善。