项目一、花样流水灯的制作1
利用STM32单片机的8个IO口实现花样流水灯。上电后,间隔点亮每四个LED灯,如图所示:灭开灭开——开灭开灭间隔时间为0.5s.
项目二、花样流水灯的制作2
利用STM32单片机的8个IO口实现花样流水灯。上电后,循环点亮每一个LED灯,间隔时间为0.5s。当k1按下时,控制流水灯在全亮和全熄灭之间循环,间隔时间为0.5s;当k2按下时,控制一个LED灯闪烁,间隔时间为0.5s;当任何按键松开时,恢复循环初始状态。
项目三、LED数码管定时器的制作
利用2位LED数码管制作一个1分钟定时器,最小计时单位为“1秒”,计时显示范围为:0~59。上电时数码管显示“00”,按键K1按下时,定时器开始计时并在数码管上显示;第一次按键K2时,定时器暂停计时,第二次按下K2时,清零。
1条回答 默认 最新
关注 #include "stm32f10x.h" #include "led.h" #include "key.h" u8 num; int main(void) { while(1) { init(); initconfig(); num=ReadKeyDown(); switch(num) { case 0: f0(); break; case 1: f1(); break; case 2: f2(); break; case 3: f3(); break; case 4: f4(); break; } Delay(delay); } }
#include "stm32f10x.h" #include "key.h" void initconfig() { GPIO_InitTypeDef GPIO_InitStructure; /* Configure KEY1 Button */ RCC_APB2PeriphClockCmd(RCC_KEY1, ENABLE); GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_InitStructure.GPIO_Pin = GPIO_KEY1; GPIO_Init(GPIO_KEY1_PORT, &GPIO_InitStructure); /* Configure KEY2 Button */ RCC_APB2PeriphClockCmd(RCC_KEY2, ENABLE); GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_InitStructure.GPIO_Pin = GPIO_KEY2; GPIO_Init(GPIO_KEY2_PORT, &GPIO_InitStructure); /* Configure KEY3 Button */ RCC_APB2PeriphClockCmd(RCC_KEY3, ENABLE); GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_InitStructure.GPIO_Pin = GPIO_KEY3; GPIO_Init(GPIO_KEY3_PORT, &GPIO_InitStructure); /* Configure KEY4 Button */ RCC_APB2PeriphClockCmd(RCC_KEY4, ENABLE); GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_InitStructure.GPIO_Pin = GPIO_KEY4; GPIO_Init(GPIO_KEY4_PORT, &GPIO_InitStructure); } u8 ReadKeyDown(void) { /* 1 key is pressed */ if(!GPIO_ReadInputDataBit(GPIO_KEY1_PORT, GPIO_KEY1)) { return KEY1; } /* 2 key is pressed */ if(!GPIO_ReadInputDataBit(GPIO_KEY2_PORT, GPIO_KEY2)) { return KEY2; } /* 3 key is pressed */ if(!GPIO_ReadInputDataBit(GPIO_KEY3_PORT, GPIO_KEY3)) { return KEY3; } /* 4 key is pressed */ if(!GPIO_ReadInputDataBit(GPIO_KEY4_PORT, GPIO_KEY4)) { return KEY4; } /* No key is pressed */ else { return NOKEY; } }
#include "stm32f10x.h" #include "led.h" #include "key.h" u8 n; void init() { GPIO_InitTypeDef GPIO_InitStructure; /* 配置LED灯使用的GPIO管脚模式*/ RCC_APB2PeriphClockCmd(RCC_GPIO_LED, ENABLE); /*使能LED灯使用的GPIO时钟*/ GPIO_InitStructure.GPIO_Pin = LD1_PIN|LD2_PIN|LD3_PIN|LD4_PIN|LD5_PIN|LD6_PIN|LD7_PIN|LD8_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIO_LED, &GPIO_InitStructure); /*使用的LED灯相关的GPIO口初始化*/ GPIO_ResetBits(GPIO_LED,LD1_PIN|LD2_PIN|LD3_PIN|LD4_PIN|LD5_PIN|LD6_PIN|LD7_PIN|LD8_PIN);/*关闭所有的LED指示灯*/ } void Delay(vu32 nCount) { for(; nCount != 0; nCount--); } void f1() { GPIO_ResetBits(GPIO_LED,LD1_PIN|LD2_PIN|LD3_PIN|LD4_PIN|LD5_PIN|LD6_PIN|LD7_PIN|LD8_PIN); Delay(delay); GPIO_SetBits(GPIO_LED,LD4_PIN|LD5_PIN); Delay(delay); GPIO_SetBits(GPIO_LED,LD3_PIN|LD6_PIN); Delay(delay); GPIO_SetBits(GPIO_LED,LD2_PIN|LD7_PIN); Delay(delay); GPIO_SetBits(GPIO_LED,LD1_PIN|LD8_PIN); Delay(delay); n=ReadKeyDown(); if(n==0)f1(); } void f2() { GPIO_ResetBits(GPIO_LED,LD1_PIN|LD2_PIN|LD3_PIN|LD4_PIN|LD5_PIN|LD6_PIN|LD7_PIN|LD8_PIN); Delay(delay); GPIO_SetBits(GPIO_LED,LD1_PIN|LD3_PIN|LD5_PIN|LD7_PIN); Delay(delay); GPIO_ResetBits(GPIO_LED,LD1_PIN|LD2_PIN|LD3_PIN|LD4_PIN|LD5_PIN|LD6_PIN|LD7_PIN|LD8_PIN); Delay(delay); GPIO_SetBits(GPIO_LED,LD2_PIN|LD4_PIN|LD6_PIN|LD8_PIN); Delay(delay); GPIO_ResetBits(GPIO_LED,LD1_PIN|LD2_PIN|LD3_PIN|LD4_PIN|LD5_PIN|LD6_PIN|LD7_PIN|LD8_PIN); Delay(delay); n=ReadKeyDown(); if(n==0)f2(); } void f3() { GPIO_SetBits(GPIO_LED,LD1_PIN|LD8_PIN); Delay(delay); GPIO_ResetBits(GPIO_LED,LD1_PIN|LD2_PIN|LD3_PIN|LD4_PIN|LD5_PIN|LD6_PIN|LD7_PIN|LD8_PIN); Delay(delay); GPIO_SetBits(GPIO_LED,LD2_PIN|LD7_PIN); Delay(delay); GPIO_ResetBits(GPIO_LED,LD1_PIN|LD2_PIN|LD3_PIN|LD4_PIN|LD5_PIN|LD6_PIN|LD7_PIN|LD8_PIN); Delay(delay); GPIO_SetBits(GPIO_LED,LD3_PIN|LD6_PIN); Delay(delay); GPIO_ResetBits(GPIO_LED,LD1_PIN|LD2_PIN|LD3_PIN|LD4_PIN|LD5_PIN|LD6_PIN|LD7_PIN|LD8_PIN); Delay(delay); GPIO_SetBits(GPIO_LED,LD4_PIN|LD5_PIN); Delay(delay); GPIO_ResetBits(GPIO_LED,LD1_PIN|LD2_PIN|LD3_PIN|LD4_PIN|LD5_PIN|LD6_PIN|LD7_PIN|LD8_PIN); Delay(delay); n=ReadKeyDown(); if(n==0)f3(); } void f0() { GPIO_ResetBits(GPIO_LED,LD1_PIN|LD2_PIN|LD3_PIN|LD4_PIN|LD5_PIN|LD6_PIN|LD7_PIN|LD8_PIN); Delay(delay); } void f4() { GPIO_ResetBits(GPIO_LED,LD1_PIN|LD2_PIN|LD3_PIN|LD4_PIN|LD5_PIN|LD6_PIN|LD7_PIN|LD8_PIN); Delay(delay); GPIO_SetBits(GPIO_LED,LD1_PIN|LD2_PIN); Delay(delay); GPIO_SetBits(GPIO_LED,LD3_PIN|LD4_PIN); Delay(delay); GPIO_SetBits(GPIO_LED,LD5_PIN|LD6_PIN); Delay(delay); GPIO_SetBits(GPIO_LED,LD7_PIN|LD8_PIN); Delay(delay); n=ReadKeyDown(); if(n==0)f4(); }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 来个会搭建付费网站的有偿
- ¥100 有能够实现人机模式的c/c++代码,有图片背景等,能够直接进行游戏
- ¥20 校园网认证openwrt插件
- ¥15 以AT89C51单片机芯片为核心来制作一个简易计算器,外部由4*4矩阵键盘和一个LCD1602字符型液晶显示屏构成,内部由一块AT89C51单片机构成,通过软件编程可实现简单加减乘除。
- ¥15 求GCMS辅导数据分析
- ¥30 SD中的一段Unet下采样代码其中的resnet是谁跟谁进行残差连接
- ¥15 Unet采样阶段的res_samples问题
- ¥60 Python+pygame坦克大战游戏开发实验报告
- ¥15 R语言regionNames()和demomap()无法选中中文地区的问题
- ¥15 Open GL ES 的使用