单片机用c语言,按钮控制一个LED灯,要求按下松开,LED亮,按下松开,LED暗!循环
bit flash;//闪烁标志位
sbit led=P0^0;
sbit P01=P0^1;
sbit P02=P0^2;
void main()
{
P01=P02=0;
flash=0;
led=0;
while(1)
{
scankey();
ledflash();
}
}
void scankey()//键盘扫描
{
P01=1;//行线给1
if(P02)//如果P02也是1则说明接通
{
delay(10);//去抖动10MS
if(P02)//再次确定按键按下
{
while(P02){flash=flash}//按住按键的动作
flash=~flash;//按键按下后执行动作
}
}
}
void ledflash()
{
if(flash)
{
led=1;//点亮
delay(100);//延时100MS
led=0;//熄灭
}
else led=0;
}
void delay(unsigned int i)
{自己根据单片机频率写个1MS带形参的演示程序}
这个程序是现写的。。应该能执行,有些细节没有写,自己修改下,只是个大框而已(比如函数声明,定义端口什么的)
这个很简单啊~~ 写一个嵌套判断~
if(key==0)
{
delay(100); //假设这是1s的延时,嵌套10个就是10秒的~~
if(key==0)
{
delay(100);
if(key==0)
{
flag=1; //标志位改变
}
}
}
if(flag==1)
{
led=1; //灯点亮
}
if(key==1)
{
flag=0; //标志位还原
}
if(flag==0)
{
led=0; //灯熄灭
}
1、首先打开桌面上的keil软件,在进行对51单片机进行编程时最常用的就是keil软件。
2、编写相应的代码:#include<reg52.h> //定义单片机的头文件sbit led=P2^0; //定义单片机的管脚,void main(void) //主函数{ while(1) //无限循环 {led=0x1f; //点亮前面三个灯。这里是十六进制的换算, //不懂得可以查一下资料 }。
3、打开烧写软件,点击【打开文件】,寻找刚刚编写的程序。
4、找到相应的文件夹以后,寻找HEX文件。这是所能烧写软件识别的程序。
5、找到程序以后,将单片机连接到电脑,并点击程序下载,将程序烧写进单片机。
6、程序下载进单片机以后就能够看到八个led点亮了前面三个。
你要什么单片机。
我这里只能用51单片机(晶振11.0592Mhz)演示
比如我将按钮连P1.6,led连P1.7。如下图:
那你代码里,只要写一个延迟函数,主函数循环检查按钮,按钮弹起时P1.7取反就行。
//大致代码如下:
#include <reg52.h>
sbit k1=P1^6;
sbit led=P1^7;
void delay(uint xms);
void main()
{
while(1)
{
if(k1==0)
{
delay(5);
if(k1==0)
{
while(k1==0);
led=~led;
}
}
}
}
void delay(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=112;j>0;j--);
}
怎样用2个按键让51弹片机P1 P2口输出高电平和低电平,用C语言怎样编?
P1,P2口都有8条线哦,假定按键1在 P10口 按键2在 P11口 两个输出口分别为 P20 P21 我写个主循环的一部分。while(1){ if(P10==0) P20=0;else P20=1;if(P11==0) P21=0;else P21=1;}
如何用C语言创建一个按钮,按下这个按钮后,相当于从键盘录入相应的字符...
弱弱的问一句 点击这个按钮后, 是不是这个按钮获取了焦点 ,键盘消息传递给了按钮,其实传到了视图里面,那你的主窗口肯定拿不到消息了
C语言用一个按钮控制流水灯的编程求帮助啊??? 程序写下,谢谢
通过外部中断INT0所连的按键可以控制P1.4-P1.7所控制的LED等顺序或者逆序形成流水灯。这是基于51的程序,其它CPU的也大同小异,希望对你有帮助!
如何用C语言表示下面这段话(按下启动按钮SB1,如果工作台不在原点位置...
可以使用C语言的printf函数来表示下面这段话,示例代码如下:c printf("按下启动按钮SB1,如果工作台不在原点位置则开始向?");在控制台输出这段话后,程序会等待用户按下启动按钮,如果工作台不在原点位置则继续执行其他操作。注意,本例代码中使用了双引号将字符串括起来,这是C语言中表示字符串的方...
单片机c语言代码按START 按钮,数码管内容每次增加2,按STOP数码管内容每...
if(START==0) n+=2;if(STOP==0) n++;当然要延时消抖了
C语言中设置按钮的方法
),CreateWindows 这个函数你应该用了不少了吧,其余的参数可以参考 MSDN,但是类名我们指定了 “BUTTON”,说明我们要创建一个按钮,每个按钮都有一个唯一的 ID,通过你的消息处理函数,可以知道哪个按钮发生了什么事件,详细讲的话,非常多,你可以参考 MSDN,或者《Windows 程序设计》这本书 。
如何用C语言写一个button按钮
define true ((bool)1)HWND ChuangJianChuangKou(char *a,bool(*b)(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam),bool c,int x,int y){ HWND hwnd;static TCHAR szAppName[] = TEXT("Mz Game") ;WNDCLASS wndclass ;wndclass.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS | ...
用C语言编程两个按键控制三个7段数码管显示0~99
A MOV R2, #10 ML3:CALL DL10MS DJNZ R2, ML3 JB K_ADD, M_LOOP JMP ML2 ;--- DL10MS:MOV R6, #20 MOV R7, #110 DJNZ R7,DJNZ R6, $ - 2 RET END 汇编的程序,应该不符合要求,也就没有多写,仅仅有加一的功能。
用C语言编写,两个按钮控制蜂鸣器工作。按钮1按下,蜂鸣器以500Hz的频 ...
while(key2==0); \/\/等待释放按键 EA=0; \/\/关闭总中断 BELL=0; \/\/关闭蜂鸣器 } } } } void timer0() interrupt 1 { TH0=(65535-2000)\/256;TL0=(65535-2000)%256; \/\/中断计时2ms(500Hz),之所以用中断是因为定时比较准确 想改延时就把里面的2000改掉,这个数除以1000得的...
用c语言来控制一个轻触开关,那种开关是按下去是闭合的,但是一松手开关...
这个开关如果不是总电源的话,还是很容易实现的,比如,你可以定义个全局变量,初始值为0,然后单片机检测按键是否按下,按下则对这个变量取反,然后判断这个是否为0xff(定义开启电机的值为0xff),是那就开启电机,否则关闭;如果这个开关时总电源的开关的话,则有点麻烦,需要有硬件的支持。
书月澳舒: 其实是一样的,也没什么哪个规范这一说,这个看个人习惯了首先if(SW13==0)是判断此引脚是否为0 (按键按下)然后一个delay用于按键防抖动 没被注释的那部分是靠if在次判断是否为0按下按下后执行LED_ON函数使LED亮然后通过while...
永德县19227515665: 单片机 用c语言编写 一个按键切换led样式 - ?
书月澳舒: 将按键一边接单片机I/O口,一边接地.这样,按键按下时,该I/O口为低电平,未按下时是高电平(单片机上电后I/O口默认为高电平),假如按键接在了P1^0口,程序如下 #include<reg52.h> sbit key=P1^0; void main() {while(1){if(key==0){(led样式1程序)else{(led样式2程序)}}} } 这样,当按键按下时,led是样式一;松开时是样式二
永德县19227515665: 请用一个按钮去控制一盏LED灯的点亮与熄灭.当按钮按下的时候灯亮,按钮松开的时候灯灭.用C语言编写. - ?
书月澳舒: 以51为例子,假如低电平灯亮 #include<reg51.h> sbit K1=P1^0 //P^0接开关 sbit LED=P1^1;//接LED void main(void) { P1=oxff;//初始化P1 while(1) { LED=~K1; }}
永德县19227515665: 单片机一个按键控制一个发光二极管 - ?
书月澳舒: 以下是用C语言实现的:#include<reg51.h>sbit KEY=P1^0; sbit LED=P1^1;void delay();void main() {while(1) //不断循环{if(KEY==0) //判断键盘是否被按下{delay(); //调用延时函数,作用消抖if(KEY==0) //再次读键盘,以判断刚才判...
永德县19227515665: 单片机 用C语言怎么编写用一个按钮,控制一盏灯的亮与灭的程序? - ?
书月澳舒: 设按钮状态(高/低)输入某个IO口; 找到读取这个IO口的数据地址; 程序不断读取这个地址,并比较相应位是否有变化; (要有去抖处理,否则一次按键会产生多个变化) 设指示灯对应的IO口数据地址; 根据按键发生与否设置这个IO口相应位进行翻转.
永德县19227515665: 单片机C语言的LED按键控制的程序 - ?
书月澳舒: #include "reg51.h" #include "intrins.h"sbit key1 = P1^0; sbit key2 = P1^1;void Delay_ms(unsigned int m) {unsigned int i, j;for(i = 0; i < m; i++)for(j = 0; j < 125; j++); }void main(void) {while(1){if(key1 == 0){Delay_ms(10);if(key1 == 0)...
永德县19227515665: 单片机控制一个led灯亮灭C编程 - ?
书月澳舒: #include <reg52.h> //52系列单片机头文件 #define uint unsigned int //宏定义 sbit led1=P1^0; //声明单片机P1口的第一位 void delay1s(); //声明子函数 void main() //主函数 {while(1) //大循环{led1=0; /*点亮第一个发光二极管*/delay1s...
永德县19227515665: 求AT89C52单片机C语言编程,点一下按键LED灯持续点亮, - ?
书月澳舒: #include sbit LED=P0^0;//LED使用P0^0引脚,低电平驱动 sbit PB1=P1^0;//按键1 sbit PB2=P1^1;//按键2 void main()//主函数 { while(1)//主循环 { if(!PB1)//按键1按下 { LED=0;//LED点亮 while(!PB1);//阻塞防止重复执行 } if(!PB2) { LED=1;//LED熄灭 while(!PB2);//阻塞防止重复执行 } } } 没有验证有没有错误,按键也没加消抖,将就吧~
永德县19227515665: 单片机C语言按键控制LED编程3个问题 *(自学菜鸟) - ?
书月澳舒: #include sbit K1 = P0^0; sbit K2 = P0^1; sbit K3 = P0^2; void main (void) { while(1) { switch(P0&0x07) { case 0x06:P2=0xAA;break; case 0x05:P2=0X55;break; case 0x03:P2=0x00;break; default :P2=0xff;break; } } }
永德县19227515665: 用一个按键控制一个LED闪烁的程序怎么写 - ?
书月澳舒: 如用51单片机#include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit S1=P3^2;sbit LED=P0^0;void delay(uint z){ int x,y; for(x=110;x>0;x--) for(y=z;y>0;y--)}void main(){ LED=0; while(1) { if(S1==0) { delay(5); if(S1==0); { LED=~LED; } } }}以上程序仅供参考