本文目录一览:
- 1、C语言独立按键按第一下为什么归0
- 2、c语言独立按键控制程序复位
- 3、51单片机 ,用C语言编程 通过独立按键控制蜂鸣器和静态数码管,
- 4、c语言 独立按键按下计数
- 5、c语言 怎样用两个独立按键控制一位数码管显示 就是按下其中一个按键就加1 按下另一个按键就减1 0~9显示
C语言独立按键按第一下为什么归0
if(k==0)
{
i++;
if(i15)
{i=0;}
while((a50)(k==0))
{
delay();
a++;
}a=0;
P0=bl[i];
}
把i++;这行放到 P0=bl[i]; 后面
c语言独立按键控制程序复位
第一,直接使用硬件来复位,将原本要接到P3.3的电平接到硬件复位上,当然需要一定的设计
第二,还是硬件,直接将此电平接到看门狗电路上
第三,软件,前提是你的单片机支持软件复位(包括直接复位和内置的看门狗)
51单片机 ,用C语言编程 通过独立按键控制蜂鸣器和静态数码管,
1.数码管前三位显示一个跑表,从000到999之间以1%秒速度运行,当按下一个独立键盘时跑表停止,松开手后跑表继续运行。(用定时器设计表)。
code:
#includereg52.h
#define uchar unsigned char
#define uint unsigned int
sbit key1 = P3^4;
sbit dula = P2^6;
sbit wela = P2^7;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
uint num;
uchar bai, shi, ge, flag = 0,t0 = 0;
void delay(uchar z);
void display(void);
void main(void)
{
num = 0;
P3 = 0xff;
TMOD = 0x01;
TH0 = (65536-10000) / 256;
TL0 = (65536-10000) % 256;
EA = 1;
ET0 = 1;
TR0 = 1;
while(1) {
if(key1 == 0) {
delay(5);
if(key1 == 0) {
flag = 1;
}
while(!key1);
delay(5);
while(!key1);
}
display();
}
}
void display(void)
{
dula = 1;
P0 = table[num / 100];
dula = 0;
P0 = 0xff;
wela = 1;
P0 = 0xfe;
wela = 0;
delay(1);
dula = 1;
P0 = table[num % 100 / 10];
dula = 0;
P0 = 0xff;
wela = 1;
P0 = 0xfd;
wela = 0;
delay(1);
dula = 1;
P0 = table[num % 10];
dula = 0;
P0 = 0xff;
wela = 1;
P0 = 0xfb;
wela = 0;
delay(1);
}
void delay(uchar z)
{
uchar
c语言 独立按键按下计数
一般是200MS的时间,如果有大部分是按下的就算按下
比如此阶段扫描十次的话,7次按下就算按下
或者扫描一次就把结果放入缓存区,缓存区里有十个数,取平均值作为结果
作为按键的实际情况
c语言 怎样用两个独立按键控制一位数码管显示 就是按下其中一个按键就加1 按下另一个按键就减1 0~9显示
这个实现是很容易的,定义两个键,一个为加,一个为减,数码管因为只有一个,所以可以用静态显示。程序和仿真图如下:
#includereg51.h
#define uchar unsigned char
uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f};
sbit keyup=P3^0;
sbit keydn=P3^1;
main()
{
uchar i;
i=0;
while(1)
{
P1=table[i];
if(keyup==0)
{
i++;
while(keyup==0);
}
if(keydn==0)
{
if(i0)i--;
while(keydn==0);
}
i%=10;
}
}