标题:
各位各位大佬,单片机独立按键控制数码管为什么按下的时候也要加一呢?
[打印本页]
作者:
x51hei666
时间:
2020-8-15 16:14
标题:
各位各位大佬,单片机独立按键控制数码管为什么按下的时候也要加一呢?
#include "main.h"
sbit S7=P3^0;//加
sbit S6=P3^1;//减
sbit S5=P3^2;//清0
uchar key_code,key_counts;//按键代码,按键计数
uchar num_buff[3]={0,0,0};//数码管显示内容
uchar dula[12]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff};
void main()
{
allint();
while(1)
{
key_contrul_smg_display();
key_contrul_smg_display_buff();
}
}
void delay(uchar i)
{
while(i--);
}
void allint()
{
P2=0X80;P0=0XFF;P2=0X00;
P2=0XA0;P0=0X00;P2=0X00;
P2=0XC0;P0=0XFF;P2=0X00;
P2=0XE0;P0=0XFF;P2=0X00;
}
void key_contrul_smg_display()
{
uchar i,j=0x80;
num_buff[0]=key_counts/100;
num_buff[1]=key_counts%100/10;
num_buff[2]=key_counts%10;
for(i=0;i<3;i++)
{
j=_crol_(j,1);
P2=0XE0;P0=dula[num_buff[ i]];P2=0X00;
P0=0XFF;
P2=0XC0;P0=j;P2=0X00;
P0=0X00;
delay(1000);
}
}
void key_contrul_smg_display_buff()
{
uchar i;
P30=1;P31=1;P32=1;
key_code=P3;
if(key_code!=0xff)
{
for(i=0;i<30;i++)
{
key_contrul_smg_display();
switch(key_code)
{
case 0xfe:if(key_counts<9)key_counts++;break;
case 0xfd:if(key_counts>0)key_counts--;break;
case 0xfb:key_counts=0;break;
}
key_code=0xff;
}
}
}
作者:
13487086265
时间:
2020-8-15 19:33
你是什么意思?我不太懂
作者:
x51hei666
时间:
2020-8-15 19:41
这个是代码是独立按键控制数码管加减的
作者:
你速度发生的
时间:
2020-8-15 21:06
因为你按下的时候key_counts++自加,数码管显示是把key_counts这个数字分别显示如这个num_buff[2]=key_counts%10;然后接着P0=dula[num_buff[ i]];所以按下的时候显示也会+1。再说了你显示的不就是按下的次数吗,按下不加一怎么检验你按下单片机是否收到,加1是为了给你现象,知道单片机收到了你的按键信息。
作者:
wps10025
时间:
2020-8-16 09:05
初学者请教,上个程序中 allint();是什么意思呢?
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1