看一下IC座,是不是有个脚没有焊好。把你室友的单片机拨下来,插到你的板子上看对不对,如果不对,就是你的板子有问题。再把你的单片机插到你室友的板子上,看对不对,如果对了,还是你的板子有问题,如果不对,就

这段程序没有错误.如果你就JTAG的话建议使用在线仿真(具体教程请百度吧,不算复杂),在switch(x)处设置断点,当程序执行到那里就暂停了,可以看到x的值是多少,这样有助于你查找错误.如果没有的话建议买一个,也不贵,五六十

一般来说,如图的按键相当于开关,而开关是没有电阻的。你的试验已经说明开关有电阻,这表明开关已经失效。

你的程序没有注释,看了比较费劲,你对一楼的追问没错,程序语句也都对,根据你的程序,只能完成一个键的检测之后就没反应了。估计你是仿制了别人的键盘子程序,在你的程序结构中不合适。问题:没有循环体,就算程序没问

} 楼主编写的程序只能识别4个按键,显示4种不同的状态。要想识别16个按键,建议看看:http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/blog/item/7ec90efb831f6bd4b58f315e.html

单片机c语言编程实例问题!我用矩阵键盘控制LED灯!但是按键盘没有反应!

好言归正传,首先靠int0,来控制键盘,在硬件上要有触发条件,因为int0是硬件触发的,再说软件,其实键盘的扫描,除了你程序中编程的键值确定外,更重要的是你没有在键盘一旦中断,就要关闭int0的中断,然后程序进入键盘的

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

先配置单片机的时钟,然后配置LED的IO,然后配置定时器完成1秒定时,

1、意外中断。是否打开了某个中断,但是没有响应和清除中断标志,导致程序一直进入中断,造成死机假象。2、中断变量处理不妥。若定义某些会在中断中修改的全局变量,这时要注意两个问题:首先为了防止编译器优化中断变量,要在

程序错误。1、首先,把stm32单片机从机械主板上拆卸下来。2、其次,把拆下来的stm32单片机安装到ch340烧录程序测试机器软件进行程序修复。3、最后把stm32单片机重新安装在机械主板上即可。

程序编译连接都对,不等于程序就是对的。假如小灯是在P1.0上,可程序却写在P3.5上,这程序编译时仍然是对,可小灯却不会亮的。因此,程序编译连接都对,但程序也一样是错误的。这是逻辑上的错误。什么原因,把程序

GPIO_Configuration(); //配置GPIO ///*将EXTI线6连接到PB6*/ GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource6);/* Configure Key Button EXTI Line to generate an interrupt on falling edge */ //配

STM32中断程序,按键控制灯的亮灭,程序运行没错,烧录到单片机就不行呢?哪位大神帮帮忙啊,不胜感谢

sbit key = P1^0;//按键 void delay(unsigned int time){ unsigned int i,j;for(i=0; i

1、创建项目文件。2、按键:S1=P3^2,点亮: led=P1^5。3、创建C语言主函数。4、创建循环效果,检测效果。while(1) {}。5、选择输出的效果。6、当按下一个按键时,关闭灯,整个程序运行,再按一次,程序停止。

一般简单的是用三极管驱动数码管。如果你会C语言的话,很容易上手。自己先从控制1个数码管学,在控制2个数码管(2个数码管基本上可以完成上面试验,8个就可以类推)\r\r1、初始值为0:上电复位后,单片机驱动数码管

1、首先打开编程软件Keil uVision4,新建一个工程文件,在菜单栏中Project—— New uVision Project..。2、然后选择单片机型号是 Atmel 公司的 AT89c52,单击OK。3、再单击工具栏上新建按钮,新建一个文档,然后再点击保存,

电平状态输出相应的信号来控制LED的亮灭。将按键与某个IO口相连。当按下按钮时,IO口会被拉低(变为低电平),未按下按钮时为高电平。在程序中通过循环检测IO口的状态,检测到低电平表示按钮被按下,可以执行相应操作。

if(!KEY1) //检测到按键按下 { LED = ~LED; /*LED取反,此时LED = 0,灯亮。当松手时,KEY1 = 1,不满足if语句不 进入循环,LED继续保持当前状态即LED = 0,如果再次按下按键,此时检测到KEY1 = 0,进入

51单片机的按键控制小灯亮灭的问题(程序类型:c语言)怎么解决?

按键按下就打控制灯的io取反就可以了。如:if(key1==1){while(key1==1); // 等待按键放开led1=~led1;} 使用四个独立按键控制四个LED灯亮灭的汇编程序怎么弄?单片机的P1.0-P1.3接四个发光二极管L1-L4的阴极

首先、你要的是3个功能 如果你要用3个按钮,那就每个实现1种 如果你用的是1个按钮,那就1个实现3种 - 单灯流水,P*口(灯的接口) 循环左移命令 _crol_比方:led1=0xff; _crol_(led1,1);P1=0xff; 这样

include "reg52.h"typedef unsigned int u16;typedef unsigned char u8;sbit led=P2^0;//把所要控制的led灯定义为p2.0这个口sbit k1=P2^1;sbit k2=P2^2;void delay(u16 i){while(i--);}//一个延时程序void

那应该是LED3 = ~LED3;而且要先对LED3赋值。

当松手时,KEY1 = 1,不满足if语句不 进入循环,LED继续保持当前状态即LED = 0,如果再次按下按键,此时检测到KEY1 = 0,进入循环,LED取反得到LED = 0,灯亮。*/ delay(500); /*此处延迟,保证连续两次按键

//这里想实现当某灯被点亮后,如果一定时间 //没有其他灯被点亮,就自动熄灭,while (1) { if (P1 != 255) { //有按键?yanshi(10); //延时消抖 if (P1 != 255) return P1;//返回键盘的状态 }

单片机独立键盘控制LED灯,程序问题

这与程序有关。while(1){ if(key==0){ while(key==0);led=~led; //这样处理松开后灯亮灭 } } while(1){ if(key==0){ led=~led; //这样处理按下键灯亮灭 while(key==0);} }

以后的程序记得缩进,不然很难看的,你得闪烁时间太长了正在闪烁的时候你又按一下按键,那你的单片机就会迷茫了,究竟是从头开始还是继续执行呢?对硬件的处理放到主函数里,你的延时居然是软件加硬件,厉害,中断函数里的LED

flag是用来记忆按键状态,按下key3,flag置1,程序中检测到flag是1才闪烁,松手后LED仍然闪烁,同时下一轮还可以检测另外两个按键 while(1){ if(key1==0)//判断按键是否按下 { Delay1ms(10);//延时消抖 if(key1=

。 if(key==0){sta = 0;}}else{sta = 1;} 这样是为了检测按键的跳变使用的, 判断sta 的值是不是从1 变为0 了, 如果是 那说明按键按下,num++; 在执行Led的时候, switch(num){case 0: 全灭

include#define uchar unsigned charuchar cnt1,cnt2;sbit led1=P1^0;sbit led2=P1^1;void ext0() interrupt 0{cnt1=0led1=0;}void ext1() interrupt 2{cnt2=0;led2=0;}void t0isr() interrupt

程序确实有问题,修改如下:#includesbit key=P3^3;sbit led=P2^0;void delayms(int a){int i;while(a--)for(i=0;i<120;i++);}main(){led=1;while(1) { if(key==0) delay(10);

单片机程序第1次按键LED亮,第2次按键灯灭,交替进行,用中断方式实现,为什么下面这个程序不行

/* 按键位置:P0.1; 功能:1,当第一次按键按下,第一个灯亮,按键放开灯灭 2,当第二次按键按下,第二个灯亮,按键放开灯灭 3,重复执行前面两个步骤 灯的位置:P2口; */ #include #define uint unsigned int #define uchar unsigned char sbit BUTTON=P0^1;//按键的位置 void DELAY(uint x) { uchar s,j; for(s=0;s<x;s++) for(j=0;j<114;j++); } void main() { uint led=0; while(1) { if(BUTTON==0) { led++; if(led==1)//第一次按键按下 { P2=0XFE;//1111 1110 第一个灯亮 DELAY(500);//延时 while(BUTTON!=0)//等待按键放开 { P2=0xff;/1111 1111灯灭 DELAY(500)//延时 } } if(led==2)//第二次按键按下 { led=0;//要给次数初始化 P2=0XFC;//1111 1101第二个灯亮 DELAY(500);//延时 while(BUTTON!=0)//等待按键放开 { P2=0xff;//1111 1111第二个灯灭 DELAY(500)//延时 } } } }
main() { // CLK_CKDIVR=0x00; CLK_Init(); IO_Init(); led_on=0; //timer1_init(); EXTI_DeInit();?/初始化外部中断IO口 _asm("rim"); while(1) { cbi(PA_ODR,4); } } @far @interrupt void TIM1_UPD_OVF_IRQHandler(void) { TIM1_SR1 = 0x00; // 清除更新标志 } @far @interrupt void EXTI0 (void)//外部中断子函数 { if(PA_on) { sbi(PA_ODR,4);PA_on=0;}//PA4为灯亮 else { cbi(PA_ODR,4);PA_on=1;}//PA4为灯灭 EXTI_CR1=0x00 ; } 不懂再追问,你只需要把主程序里面的灯定为一个状态,外部中断里面再定一个状态。要亮2次,加个延时,就行了。
led应该是一个变量,是代表led灯 亮或者灭的一个变量。 当你按下开关后,s1==0,就执行 led=!led 这条语句。 led=!led 的意思就是取反的意思,即原来led灯亮的话 执行该条语句后就变成灭;原来灭的话 执行该条语句后 就变成亮。按键按下就打控制灯的io取反就可以了。如:if(key1==1){while(key1==1); // 等待按键放开led1=~led1;} 使用四个独立按键控制四个LED灯亮灭的汇编程序怎么弄? 单片机的P1.0-P1.3接四个发光二极管L1-L4的阴极,P1.4-P1.7接四个开关K1-K4程序:ORG 00HSTART: MOV A,P1ANL A,#0F0HRR ARR AORl A,#0F0HMOV P1,ASJMP START可以检测单个按键,也可以同时检测多个按键过程:开始--读P1口数据到A--A中的数据右移4次--A中的内容和F0H相或--A中的数据送到P1口--回到开始
LED=~LED; 取反的速度太快 按键按下 实际是led高频闪烁 按键松开后 跳出while(1)松手检测 然后在main的while(1)里面一直等待按键再次按下,同时led=1,也就是说是亮 因此 你的函数的功能基本上可以是 按键按下 led高频闪烁 按键松开 led常亮 所以你要改逻辑结构才行
1、32的 BOOT0=0,BOOT1=0 两个脚是否接地 2、 3、如果run to没勾要复位后才能运行
这是源程序求求大神改
用两个单片机IO口分别接收矩阵键盘的信息,另外还需要一个IO口控制灯的亮和灭。程序会写吧!不会再提问吧,哈哈!
我这里用的是按键,,不知道你说的开关是不是按键,,要不是我再重新编 #include #define uint unsigned int #define uchar unsigned char sbit led=P1^6 ; // 控制LED的口 sbit key=P1^0; // 按键状态检测口 void delay(uint z) //延时函数 { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void main() { uint a=0; key=1; led=1; if(key==0) { delay(5); if(key==0) a++; while(!key); delay(5); while(!key); } if(a==1) { while(key!=0) { led=0; delay(1000); led=1;} led=1;a=0; } else led=1; }