⑴ 单片机怎么用按键控制开始 停止和清零
//定义IO和变量
sbit start = P1^1;
sbit stop = P1^2;
sbit reset = P1^3;
bit flag_start;//计数标志位
uint sec;//秒
//按键功能
if(start==0)
flag_start=0;
if(stop==0)
flag_start=1;
if(reset==0)
{flag_start=0;sec=0;}
//计数程序
if(flag_start)
{sec++;}
单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。
⑵ 单片机按钮开关名称
开关在单片机中叫蜂鸣器。
单片机开关也可以叫元器件名称蜂鸣器。一般型104无极电容30p无极电容10uF有极电容1uF有极电容发光二极管USB接口串口下载公头单排针单排座可调电阻九脚电容器,(散件)51单片机模块遥控继电器开关智能控制万用板电子套件。
单片机是一种集成电路芯片。单片机又称单片微控制器,是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备,一块芯片就成了一台计算机。
单片机介绍
单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备,概括的讲:一块芯片就成了一台计算机。
它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。
单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。
⑶ 单片机按键有几种方式
按键检测一般有:1、查询、2、扫描、3中断等方式。查询方式占用主循环资源,就是说主程序主要干检测按键的活儿,若增加其他程序容易出错。扫描方式效果最好,可以在性能和占用资源间平衡,中断方式,适用于响应速度极高的场景,但抗干扰较差。
⑷ 单片机 按键
/*程序中的aa为题目中的a*/
#include<reg52.h>
#defineucharunsignedchar
#defineuintunsignedint
sbitk1=P2^0;
ucharaa;
voiddelay(ucharx)
{
uchary;
while(x--)
for(y=115;y>0;y--);
}
voiddelay1(uintxx)
{
ucharyy;
while(xx--)
for(yy=115;yy>0;yy--);
}
voidmain()
{ucharbb=0;
aa=0;
while(1)
{P1=aa;//为了便于观察aa的变化
if(k1==0)//是否按下
{delay(10);//去抖
if(k1==0&&bb==0)//第一次按下
{bb++;
delay1(800);
if(k1==0)aa++;//长按
elseaa=0;//简单按下
}
elseif(k1==0&&bb!=0)//非第一次按下
{
bb++;
delay1(800);
if(k1==0)aa--;//长按
elseaa=1;非长按
}
}
}
}
⑸ 单片机按键
voiddelay(uintz)
{intx,y;
for(x=z;x>0;x--)
for(y-110;y>0;y--);这里的减号改为等号
}
voidmain()
{
uchartemp=0xfe;
while(1)
{
if(k1==0)
{
P1=temp;
delay(500);
temp=_crol_(temp,1);
}
if(k1==1)
{
P1=temp;
delay(500);
temp=_cror_(temp,1);
}
}
}
这样的话就是你不按按键循环右移,按下按键不放循环左移,放开按键又循环右移
你要想亮500ms灭500ms的话就是
voidmain()
{
uchartemp=0xfe;
while(1)
{
if(k1==0)
{
P1=temp;
delay(500);
P1=0xff;
delay(500);
temp=_crol_(temp,1);
}
if(k1==1)
{
P1=temp;
delay(500);
P1=0xff;
delay(500);
temp=_cror_(temp,1);
}
}
}
⑹ 单片机按键功能
按键按照结构原理可分为两类,一类是触点式开关按键,如机械式开关、导电橡胶式开关等;另一类是无触点式开关按键,如电气式按键,磁感应按键等。前者造价低,后者寿命长。目前,微机系统中最常见的是触点式开关按键。
2.输入原理
在单片机应用系统中,除了复位按键有专门的复位电路及专一的复位功能外,其它按键都是以开关状态来设置控制功能或输入数据的。当所设置的功能键或数字键按下时,计算机应用系统应完成该按键所设定的功能,键信息输入是与软件结构密切相关的过程。
对于一组键或一个键盘,总有一个接口电路与CPU相连。CPU可以采用查询或中断方式了解有无将键输入,并检查是哪一个键按下,将该键号送入累加器ACC,然后通过跳转指令转入执行该键的功能程序,执行完后再返回主程序
⑺ 单片机按键控制
补充下楼上的回答,delay()为延时子函数,一般延时10mS即可,用于键盘消抖,延时程序可根据单片机的主频或者定时计数器来实现
⑻ 51单片机按键
#include<reg51.h>
#define uchar unsigned char
uchar num,time,limit=2;
sbit led1=P1^0;
sbit key1=P2^0;
bit flag=0;
void t0isr() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
time++;
if(time>=60)
{
TR0=0;
time=0;
flag=1;
}
}
void t1isr() interrupt 3
{
TH1=(65536-10000)/256;
TL1=(65536-10000)%256;
num++;
if(num>limit)
{
num=0;
led1=~led1;
}
}
main()
{
TMOD=0x11;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TH1=(65536-10000)/256;
TL1=(65536-10000)%256;
ET0=1;
ET1=1;
EA=1;
while(1)
{
if(key1==0)
{
time=0;
num=0;
TR1=1;
TR0=1;
flag=0;
while(key1==0);
if(flag==1)limit++;
}
}
}
⑼ c51单片机按键
1.设置一个状态变量,如flag,定义flag=0为开状态,flag=1为关状态。
2.因为是按键(不是开关),所以实际上单片机读取的应该是脉冲形式的输入。设按键接单片机P01引脚,故可采用以下程序实现按键扫描
if(P01==0)//按下按键,进入下降沿
{
delay2();//20ms延时去按键前抖动
while(P01==0);//等待上升沿到 来,即按键弹起
flag=~flag;//flag取反,实现状态切换
}
void delay2()//20ms延时子程序
{
unsigned char i,k;
for(i=0;i<100;i++)
for(k=0;k<100;k++);
}
注:根据按键的具体接法,若按下按键向单片机输入低电平,则采用以上程序;若按下按键向单片机输入高电平,则将两处P01==0均改为P01==1。
⑽ 单片机的独立按键
#include<reg51.h> // 4*4 按键+数码管仿真,可以参考。
#define uchar unsigned char
uchar temp;
int key1,key,disbuf;// 此表为 LED 的字模 0 1 2 3 4 5 6 7 8 9 a b c d e f
unsigned char code LED7Code[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};
unsigned char ledx[8];
bit s0,s1;
void delay(uchar z)
{
uchar i,j;
for(i=0;i<120;i++)
for(j=0;j<z;j++);
}
void scan() //要是按键了,扫描键盘编码值
{
P1=0xF0;
delay(1);
temp=P1;
switch(temp)
{
case 0xe0: key1=0;
break;
case 0xd0: key1=1;
break;
case 0xb0: key1=2;
break;
case 0x70: key1=3;
break;
}
P1=0x0f;
delay(1);
temp=P1;
switch(temp)
{
case 0x0E: key=key1+0;
break;
case 0x0D: key=key1+4;
break;
case 0x0B: key=key1+8;
break;
case 0x07: key=key1+12;
break;
default : key=-1;
}
if((key1+1)&&(key+1)) disbuf=key;
}
void ejjc() //判断是否按键
{
P1=0xF0;
if(P1!=0xF0) { scan();s0=1;}
else { s0=0; s1=1;}
}
void main()
{
uchar i;
while(1)
{
ejjc();
if(s0==1 && s1==1)
{
s0=0;s1=0;
for(i=0;i<8;i++)
{ ledx[i]=ledx[i+1]; ledx[8]=disbuf; }
}
P0=0xff;
P2=LED7Code[ledx[0]];
P0=0xfe;
delay(5);
P0=0xff;
P2=LED7Code[ledx[1]];
P0=0xfd;
delay(5);
P0=0xff;
P2=LED7Code[ledx[2]];
P0=0xfb;
delay(5);
P0=0xff;
P2=LED7Code[ledx[3]];
P0=0xf7;
delay(5);
P0=0xff;
P2=LED7Code[ledx[4]];
P0=0xef;
delay(5);
P0=0xff;
P2=LED7Code[ledx[5]];
P0=0xdf;
delay(5);
P0=0xff;
P2=LED7Code[ledx[6]];
P0=0xbf;
delay(5);
P0=0xff;
P2=LED7Code[ledx[7]];
P0=0x7f;
delay(5);
}
}