include“reg52.h”void yanshi(){ };///延伸函数一秒根据晶体的频率自己设置也可以用定时器的中断来设置1秒时间也可以用软件定时器;mian(){ p1=0xff;yanshi();p1=0x00;yanshi();}

当减到0时,表示1秒时间到 (重新送初始值20)判断拨动开关状态 如果为低低电平 则选择控制LED的端口内容左移一位 如果为高低电平 则选择控制LED的端口内容右移一位 即可实现对流水灯的方向控制。呵呵 满意

define DY_SPEED 100 //设置每一个明亮级的停留时间(值域:0~65535)/ bit [自定义名] ; //定义一个位(位的值只能是0或1)例:bit LED define [代替名] [原名] //用代替名代替原名(可以方便修改常改或调试

设置定时器时间间隔为1s,计数总共不到1s的话,就再定义一个变量,循环多次,以实现1s 然后再1s时的定时器中断子程序中设置输出脚的电平交替即可

OUTPUT); pinMode(LED_PIN_B , OUTPUT); // 设置为每1ms调用一次TimerCbk函数。 MsTimer2::set(1, TimerCbk); MsTimer2::start();}void loop(){ if (timerCntA >= TM_MS(1000)) { d

} 上述程序的作用是在单片机的P1口上间隔点亮一盏LED灯,每隔1秒钟灯的状态会发生一次变化,即由点亮状态变为熄灭状态,再由熄灭状态变为点亮状态。

单片机led灯一亮一灭间隔1秒

;led1=0;led2=1;led3=1;}if(s2==0){while(s2==0);led1=1;led2=0;led3=1;}if(s3==0){while(s3==0);led1=1;led2=1;led3=0;}if(s4==0){while(s4==0);led1=0;led2=0;led3=0;}}}

void loop() { // 控制LED灯亮灭 digitalWrite(ledPin, HIGH); // 点亮LED delay(1000); // 延时1秒 digitalWrite(ledPin, LOW); // 熄灭LED delay(1000); // 延时1秒} 在上述示例程序中,我们将LED连接到Ardui

Pin2,0},//0s后 led2亮{500,Pin4,0,},//0.5s后 led4亮{1000,0,

现功能:按下按键三个全亮,在按下LED2灭,再按下三个LED全灭,如此循环,相当于三档,第三档是停止。第一档和第二档定时5S,5S终了,停止运行,如果此时再按1次则回到第一档。如果5S之内按下,则切换到下一档,实现

单片机按键时间3sled亮的程序是什么

下面以51单片机为例,P1^0接按键到地,P0^0~3以灌电流驱动方式分别接led1~led4。用Kei uVisionl编译。1.控制四盏灯一起亮灭 include sbit key1 = P1^0;sbit led1 = P0^0;sbit led2 = P0^1

点亮子函数:include"reg51.h"include"intrins.h"define uchar unsigned char void dd(){ uchar temp=0xfe,i;for(i=0;i<8;i++){ P1=temp;temp=_crol_(temp,1);//左移函数 delay();} } 然后你要什么中断

毕业设计名称:单片机点阵式LED显示屏设计 毕业设计主要研究内容及研究意义:研究内容:1、用8051单片机显示字体 2、PROTEUS软件和KEIL软件的使用3、单片机的控制程序 4、点阵屏幕的使用 研究意义:利用51单片机和C语言程序的控制

int w[8]={0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f};int i,tt;int temp;void main(){ TMOD=0X01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;tt=0;i=0;temp=0xfe;duan

Pin2,0},//0s后 led2亮{500,Pin4,0,},//0.5s后 led4亮{1000,0,

1.准备材料:您需要准备以下材料:单片机(如Arduino、STM32等)LED灯 电阻(用于限流,防止LED过电流损坏)连接线 2.连接电路:将LED灯与单片机连接起来。一般情况下,将LED的正极连接到单片机的一个GPIO引脚,将LED的负极连

思路:     控制吧个LED灯,使用上拉方式控制,引脚高电平灯灭,引脚低电平灯亮。     这吧个LED使用同一P口上的所有引脚,假设为P一口中的P一.0-P一.漆共吧个脚。    

零基础 学STM32L053单片机,以及它的编程——用uVision5编出一个让LED灯亮的程序。

include "sys.h"#include "usart.h"#include "delay.h"#include "led.h" #include "key.h" //°´¼ü´¦Àíº¯Êý//·µ»Ø°´&

假设P1接8个LED,高电平时LED点亮,主程序如下:voidmain(void){uchari;while(1){for(i=0;i<7;i++){P1=1<>i;delay_ms(500);}}}

等到执行到 while(!ReadValue);//等待按键被放开 这条指令时 数据仍然是上次采集到的那个值代表按键按下,(!ReadValue)这个值永远成立,所以无法代表按键断开。所以程序一直卡死在这条指令上。如果要通过就必须在判据里重新

先定义对应LED 的控制端口#define LED PAout(0)然后LED=~LED;

如何编写STM32控制LED反转C程序

STM32程序:按键长按和短按的判断,用来控制LED灯,有借鉴了其他程序,但是有细节上的不同。短按是切换灯亮的状态,每按一下换一个状态,长按led灯快闪并且指示灯向4靠近,直到等于4是慢闪。如果只做长短按不需要注重

cpu利用率不高但是可以完成 你上面写的我给你提供一个思路 你应该可以看的懂 看不懂追问 unsigned int key;void main(void){ while(1){ switch(key){ case 0:led0=!led0;//你自己修改 delay_ms(200);break;case

要通过单片机来控制LED灯的亮灭,您可以按照以下步骤进行操作:1.准备材料:您需要准备以下材料:单片机(如Arduino、STM32等)LED灯 电阻(用于限流,防止LED过电流损坏)连接线 2.连接电路:将LED灯与单片机连接起来。一般

MODE[1:0] = 11 : 输出模式,最大速度50MH GPIOF_CRL,GPIOF_CRH的寄存器地址分别是0x40011C00,0x40011C04 这个寄存器是怎么得来的,STM32数据手册里并没有直接给出,在《一个内幕者对STM32的介绍》4.1.1 寄存器

我不知道为什么中文复制之后这里变乱码了,所以截图作为参照,代码附在后面:include "sys.h"#include "usart.h"#include "delay.h"#include "led.h" #include "key.h" //°´¼ü´¦À

先定义对应LED 的控制端口#define LED PAout(0)然后LED=~LED;

等到执行到 while(!ReadValue);//等待按键被放开 这条指令时 数据仍然是上次采集到的那个值代表按键按下,(!ReadValue)这个值永远成立,所以无法代表按键断开。所以程序一直卡死在这条指令上。如果要通过就必须在判据里重新

请教一个stm32程序:我写了一个按键控制LED灯翻转,调试成功的程序如下:

1.准备材料:您需要准备以下材料:单片机(如Arduino、STM32等)LED灯 电阻(用于限流,防止LED过电流损坏)连接线 2.连接电路:将LED灯与单片机连接起来。一般情况下,将LED的正极连接到单片机的一个GPIO引脚,将LED的负极

不会有影响啊,K1,K2,K3按键,分别控制LED1,LED2,LED3;定义一个状态标志变量,识别短按、长按1S,3S,5S的4种状态,只需对每个按键的状态标志进行判断,执行状态标志下的各功能。

4个单片机I/O口如何实现3个按键控制3个LED灯;按键跟灯一一对应,按键按下相应的LED亮,再按一次,LED灭。见下图:

MAIN2 CLR LED1 SJMP MAINMAIN2: SETB LED1 JB KEY2,MAIN3 CLR LED2 SJMP MAINMAIN3: SETB LED2 SJMP MAIN END

keyp3.11: jb p3.1,keyp3.2 ;如果p3.0 为高,则灭掉p2.1 setb p2.1 ;点亮 p2.1 ajmp keyp3.22 keyp3.2: clr p2.1 ;灭掉 p2.1 keyp3.22: jb p3.0,keyp3.0

delay_ms(200);break;case 1: LED1=!LED1;delay_ms(200);break;case 2:LED2=!LED2;delay_ms(200);break;default:break;} void 在这里按键获取函数(void){ key=获取到的值; //没有按键按下的话是进入不到

单片机STM32求助用3个按键控制3个LED灯

keyp3.0: clr p2.2 ;灭掉 p2.2 keyp3.00: jb p3.0,keyp3.1 ;如果p3.0 为高,则灭掉p2.0 setb p2.0 ;点亮 p2.0 ajmp keyp3.11 keyp3.1: clr p2.0 ;灭掉 p2.0 keyp3.11: jb p3.1,keyp3.2 ;如果p3.0 为高,则灭掉p2.1 setb p2.1 ;点亮 p2.1 ajmp keyp3.22 keyp3.2: clr p2.1 ;灭掉 p2.1 keyp3.22: jb p3.0,keyp3.0 ;如果p3.0 为高,则灭掉p2.2 setb p2.2 ;点亮 p2.2 ajmp keyp3.00 简单的谢了一下,你就当学习用吧; 你的电路设计不合理,按键和led都需要上拉,才可正常; 满意的话赞一个,呵呵
#include typedef unsigned int UINT16;typedef unsigned char UCHAR;/************************************************************///½Ó¿Ú¶¨Òåsbit K1 = P1^0;sbit K2 = P1^1;sbit K3 = P1^2;sbit LED1 = P2^0;sbit LED2 = P2^1;sbit LED3 = P2^2;/***********************************************************///ÑÓʱº¯Êý///////***********************************************************/void Delay(UINT16 ui16Dly){ UINT16 i,j; for (i = ui16Dly; i > 0; i--); for (j = 110; j > 0; j--);}/***********************************************************///°´¼üɨÃè///////***********************************************************/UINT16 Key_Scan(void){ UINT16 ui16Key; ui16Key = 0x00; ui16Key |= (K1 == 0) ? 0x01 : 0; ui16Key |= (K2 == 0) ? 0x02 : 0; ui16Key |= (K3 == 0) ? 0x04 : 0; return (ui16Key);}/***********************************************************///LED¹Ø///////***********************************************************/void Led_Off(void){ LED1 = 1; LED2 = 1; LED3 = 1;}/***********************************************************///LEDָʾ///////***********************************************************/void Led_Flg(UINT16 ui16Flg){ switch (ui16Flg) { case 0: //K1 LED1 = 0; break; case 1: LED2 = 0; //K2 break; case 2: //K3 LED2 = 1; LED3 = 0; break; case 3: //K2 LED3 = 1; break; case 4: //K1 LED2 = 1; LED3 = 1; break; case 5: //K1 LED1 = 1; LED2 = 1; LED3 = 1; break; default : LED1 = 1; LED2 = 1; LED3 = 1; break; }}static UINT16 ui16Cnt[3];static UINT16 ui16Flg;/***********************************************************///Ö÷º¯Êý///////***********************************************************/void main(void){ UINT16 ui16Key,ui16Temp; ui16Cnt[0] = 0; ui16Cnt[1] = 0; ui16Cnt[2] = 0; ui16Flg = 0x00; Led_Off(); ui16Key = Key_Scan(); ui16Flg = 0xff; while (1) { //°´¼ü ui16Temp = Key_Scan(); if (ui16Key != ui16Temp) { Delay(5); ui16Temp = Key_Scan(); if (ui16Key != ui16Temp) { ui16Key = ui16Temp; } } //K1 if (ui16Temp & 0x01) { switch (ui16Cnt[0]) { case 0: ui16Flg = 0; break; case 1: ui16Flg = 4; break; case 2: ui16Flg = 5; break; } while (ui16Temp & 0x01) ui16Temp = Key_Scan(); ui16Cnt[0]++; if (ui16Cnt[0] > 2) ui16Cnt[0] = 0; } //K2 if (ui16Temp & 0x02) { if (ui16Cnt[1] > 0) ui16Flg = 3; else ui16Flg = 1; while (ui16Temp & 0x02) ui16Temp = Key_Scan(); ui16Cnt[1]++; if (ui16Cnt[1] > 1) ui16Cnt[1] = 0; } //K3 if (ui16Temp & 0x04) { ui16Flg = 2; while (ui16Temp & 0x04) ui16Temp = Key_Scan(); } //LED Led_Flg(ui16Flg); }}
Stm32共有11个定时器: 1.两个高级定时器:TIM1、TIM8-------------------------APB2 2.四个通用定时器:TIM2~TIM5-------------------------APB1 3.两个基本定时器:TIM6、TIM7-------------------------APB1 4.两个看门狗 5.一个系统嘀嗒定时器(SysTick) 主程序main.c /* *说明: *PA0:KEY1;PA1:KEY2; *PA2:LED1;PA3:LED2; *PA9:USART1_TX;PA10:USART1_RX */ #include "stm32f10x.h" #include "stm32f10x_rcc.h" #include "stm32f10x_gpio.h" #include "stm32f10x_tim.h" #include "stm32f10x_exti.h" #include "system_stm32f10x.h" #include "misc.h" void RCC_Configuration(void); void GPIO_Configuration(void); void TIM3_Configuration(void); void NVIC_Configuration(void); int main() { SystemInit(); RCC_Configuration(); GPIO_Configuration(); TIM3_Configuration(); NVIC_Configuration(); while(1); } void RCC_Configuration(void) { ////USART2和USART3都在在APB1上而USART1是在APB2上的 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE); } void GPIO_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_3; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOA, &GPIO_InitStructure); } void TIM3_Configuration(void) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_ClearITPendingBit(TIM3, TIM_IT_Update); TIM_TimeBaseStructure.TIM_Period = 2000;//频率:72MHz 72000000/36000=2000 TIM_TimeBaseStructure.TIM_Prescaler = 35999;//36000-1=35999 TIM_TimeBaseStructure.TIM_ClockDivision = 0x0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE ); TIM_Cmd(TIM3,ENABLE); } void NVIC_Configuration(void)//配置中断优先级 { NVIC_InitTypeDef NVIC_InitStructure; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); }中断函数stm32f10x_it.c #include "..\include\stm32f10x.h" #include "..\include\stm32f10x_it.h" #include "..\include\stm32f10x_gpio.h" #include "..\include\stm32f10x_tim.h" void TIM3_IRQHandler(void) { TIM_ClearITPendingBit(TIM3, TIM_IT_Update); if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_2)==Bit_RESET) { GPIO_SetBits(GPIOA,GPIO_Pin_2); }else{ GPIO_ResetBits(GPIOA,GPIO_Pin_2); } }中断函数声明头文件stm32f10x_it.h #ifndef __STM32F10x_IT_H #define __STM32F10x_IT_H /* Includes ------------------------------------------------------------------*/ /* Exported types ------------------------------------------------------------*/ /* Exported constants --------------------------------------------------------*/ /* Exported macro ------------------------------------------------------------*/ /* Exported functions ------------------------------------------------------- */ void NMIException(void); void HardFaultException(void); void MemManageException(void); void BusFaultException(void); void UsageFaultException(void); void DebugMonitor(void); void SVCHandler(void); void PendSVC(void); void SysTickHandler(void); void WWDG_IRQHandler(void); void PVD_IRQHandler(void); void TAMPER_IRQHandler(void); void RTC_IRQHandler(void); void FLASH_IRQHandler(void); void RCC_IRQHandler(void); void EXTI0_IRQHandler(void); void EXTI1_IRQHandler(void); void EXTI2_IRQHandler(void); void EXTI3_IRQHandler(void); void EXTI4_IRQHandler(void); void DMA1_Channel1_IRQHandler(void); void DMA1_Channel2_IRQHandler(void); void DMA1_Channel3_IRQHandler(void); void DMA1_Channel4_IRQHandler(void); void DMA1_Channel5_IRQHandler(void); void DMA1_Channel6_IRQHandler(void); void DMA1_Channel7_IRQHandler(void); void ADC1_2_IRQHandler(void); void USB_HP_CAN_TX_IRQHandler(void); void USB_LP_CAN_RX0_IRQHandler(void); void CAN_RX1_IRQHandler(void); void CAN_SCE_IRQHandler(void); void EXTI9_5_IRQHandler(void); void TIM1_BRK_IRQHandler(void); void TIM1_UP_IRQHandler(void); void TIM1_TRG_COM_IRQHandler(void); void TIM1_CC_IRQHandler(void); void TIM2_IRQHandler(void); void TIM3_IRQHandler(void); void TIM4_IRQHandler(void); void I2C1_EV_IRQHandler(void); void I2C1_ER_IRQHandler(void); void I2C2_EV_IRQHandler(void); void I2C2_ER_IRQHandler(void); void SPI1_IRQHandler(void); void SPI2_IRQHandler(void); void USART1_IRQHandler(void); void USART2_IRQHandler(void); void USART3_IRQHandler(void); void EXTI15_10_IRQHandler(void); void RTCAlarm_IRQHandler(void); void USBWakeUp_IRQHandler(void); void TIM8_BRK_IRQHandler(void); void TIM8_UP_IRQHandler(void); void TIM8_TRG_COM_IRQHandler(void); void TIM8_CC_IRQHandler(void); void ADC3_IRQHandler(void); void FSMC_IRQHandler(void); void SDIO_IRQHandler(void); void TIM5_IRQHandler(void); void SPI3_IRQHandler(void); void UART4_IRQHandler(void); void UART5_IRQHandler(void); void TIM6_IRQHandler(void); void TIM7_IRQHandler(void); void DMA2_Channel1_IRQHandler(void); void DMA2_Channel2_IRQHandler(void); void DMA2_Channel3_IRQHandler(void); void DMA2_Channel4_5_IRQHandler(void); #endif /* __STM32F10x_IT_H */ /******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/
先定义对应LED 的控制端口#define LED PAout(0)然后LED=~LED;
int onoff = 1; //点亮 int count = 5000; while(true) { LED = onoff; //先点亮 count = 5000; while(count) ; //空跑CPU,为了占用时间,留出反转时间 onoff = !onoff; //LED反转 }
有问题的那个程序 u8 ReadValue=GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_10); 只在上面那条指令采集了一次按键数据。 等到执行到 while(!ReadValue);//等待按键被放开 这条指令时 数据仍然是上次采集到的那个值代表按键按下,(!ReadValue)这个值永远成立,所以无法代表按键断开。所以程序一直卡死在这条指令上。如果要通过就必须在判据里重新读取按键状态,像正确的程序那样用这样的指令 while(!GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_10));//等待按键被放开 另外因为你只读取了一次按键状态,所以下面那么多一堆软件消除抖动的程序白写了。 综上,正确的程序在每个判断的时刻都要重新读取下按键状态。
今天做回好人,闲着给你写一个做参考。 按键按一次LED灯灭,在按一次按键LED灯亮。 程序如下: /************************************************************************************************************* #include "REG52.H" sbit LED1_01 = P1^1; //LED灯 sbit KEY0_01 = P1^2; //按键 void Delay_1ms(unsigned int Time) { unsigned int x, y; for(x = Time; x > 0; x--) for(y = 120; y > 0; y--); } int main(void) { LED1_01 = 1; //打开LED灯点亮 while(1) { if(KEY0_01 == 0) //检测按键是否按下 { Delay_1ms(10); //延时去抖动 if(KEY0_01 == 0) //确定按键按下 { LED1_01 = ~ LED1_01; //取反LED灯 [ 亮 . 灭 ] } while(KEY0_01 == 0); //检测松手 } } } *****************************************************************************************************************/
没有电路图,没法写程序。 比如,按键在P0口与在P3口程序就不一样; 又比如,扫描的键盘与直接连接在Pn口的又不一样。 没有图实在是没法写程序呃 ***************************************************************** 假定CPU是用51系列的单片机; 假定键盘直接连接在Pn口,从Pn0~Pn7分别对应键1~键7; 假设LED直接由Pm口驱动,从Pm0~Pm3分别对应Led1~Led4; 在这个前提下,以上的问题可以编程如下: ***************************************************************** #define KEY1 01h ;定义键1 #define KEY2 02h ;定义键2 #define KEY3 04h ;定义键3 #define KEY4 08h ;定义键4 #define KEY5 10h ;定义键5 #define KEY6 20h ;定义键6 #define KEY7 40h ;定义键7 #define KEY8 80h ;定义键8 #define LED1 Pm0 ;定义灯1 #define LED2 Pm1 ;定义灯2 #define LED3 Pm2 ;定义灯3 #define LED4 Pm3 ;定义灯4 #define LED_ON 1 ;定义亮灯操作 #define LED_OFF 0 ;定义灭灯操作 ;延迟4秒子程序 #define Timer4s 1234h ;延迟4秒的参数自己调整 Dly4s: push acc; mov dptr, #Timer4s; Dly_2: mov a,dpl; Dly_1: mov dpl,a; dec a; jnz a,Dly_1; mov dpl,a; mov a,dph; dec a; mov dph,a; jnz a,Dly_2; pop acc; ret; ;******* 主程序 **************************** main: mov a, Pn; je a,#KEY1, K1_Pressed; je a,#KEY2, K2_Pressed; je a,#KEY3, K3_Pressed; je a,#KEY4, K4_Pressed; je a,#KEY5, K5_Pressed; je a,#KEY6, K6_Pressed; je a,#KEY7, K7_Pressed; je a,#KEY8, K8_Pressed; ljmp main; K1_Pressed: mov LED1, LED_ON; mov LED2, LED_ON; call Dly4s; mov LED1, LED_OFF; mov LED2, LED_OFF; ljmp main; K2_Pressed: mov LED3, LED_ON; mov LED4, LED_ON; call Dly4s; mov LED3, LED_OFF; mov LED4, LED_OFF; ljmp main; K3_Pressed: mov LED1, LED_ON; call Dly4s; mov LED1, LED_OFF; mov LED2, LED_ON; call Dly4s; mov LED2, LED_OFF; ljmp main; K4_Pressed: mov LED3, LED_ON; call Dly4s; mov LED3, LED_OFF; mov LED4, LED_ON; call Dly4s; mov LED4, LED_OFF; ljmp main; K5_Pressed: mov LED1, LED_ON; mov LED2, LED_ON; call Dly4s; mov LED1, LED_OFF; mov LED2, LED_OFF; ljmp main; K6_Pressed: mov LED3, LED_ON; mov LED4, LED_ON; call Dly4s; mov LED3, LED_OFF; mov LED4, LED_OFF; ljmp main; K7_Pressed: mov LED1, LED_ON; call Dly4s; mov LED1, LED_OFF; mov LED2, LED_ON; call Dly4s; mov LED2, LED_OFF; ljmp main; K8_Pressed: mov LED3, LED_ON; call Dly4s; mov LED3, LED_OFF; mov LED4, LED_ON; call Dly4s; mov LED4, LED_OFF; ljmp main;