接LED数码管的A- -H并加一个560欧的上拉排阻,P0接数码管DS1- -DS8位选)
**************************************************************/州含/
按键控制加、减显示00-99(P1接8个独立按键,P10按下为加,P11按下为减,P2
接LED数码管的A- -H并加一个560欧的上拉排阻,P0接数码管DS1- -DS8位选)//
#include<reg52.h>
sbit P0_0=P0^0//个位数字
sbit P0_1=P0^1//十位数字
void delay(int k)//Tab为数码管显示值,存入一个数组内
void key_ccan(void)//声明按键扫描函数
unsigned char code Tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71}unsigned char i,shi,ge,num,count=10//num为被显示的数字
void main()
{
P2=Tab[0]P0_0=0P0_1=0//显示00
num=0//被显示的数置0
while(1)
{
key_ccan()//调用按键扫描程序
for(i=0i<counti++) //显示个位、十位count次后显示的数加1
shi=num/10//取出十位数
ge=num%10//取出个位数
P0_0=1P0_1=1//关闭显示
P2=Tab[shi]//P2口送出十位数据显示代码
P0_0=0//打开十位显示
delay(10)//延时
P0_0=1//关闭显示
P2=Tab[ge]//P2口送出个位数据显示代码
P0_1=0//打开个位显示
delay(10)//延时
P0_1=1//关闭个位显示
}
}
void key_ccan(void)
{
unsigned char ii
P1=0xff
ii=P1
if(ii!=0xff)
{
P1=0xff
delay(50)
ii=P1
if(ii!=0xff)
{
switch(ii)
{
case 0xfe: num++if(num==100) num=0break
case 0xfd: if(num==0) num=99else num--break
default: break
}
}
}
}
void delay(int k) //最简单的C延时程序
{ unsigned char i
while(k--) //直至K减为0则跳出
{for(i=100i>0i--)}
}
¥
5.9
百度文库VIP限时优惠现在开通,立享6亿+VIP内容
立即获取
单片机_两册冲笑个数码管显示00~99
/按键判高控制加、减显示00-99(P1接8个独立按键,P10按下为加,P11按下为减,P2
接LED数码管的A- -H并加一个560欧的上拉排阻,P0接数码管DS1- -DS8位选)
**************************************************************//
按键控制加、减显示00-99(P1接8个独立按键,P10按下为加,P11按下为减,P2
接LED数码管的A- -H并加一个560欧的上拉排阻,P0接数码管DS1- -DS8位选)//
#include<reg52.h>
sbit P0_0=P0^0//个位数字
本人只讲思路:(1)首先你要明确你的按键是厅激上拉接法还是下拉接法;(2)要明确按键是输入设备,所以按键接在PA1上,你要根据按键硬件电路的上拉或下拉接法来确定PA1这个GPIO口的输入方式,按键硬件上是上拉接入,PA1就配置上拉输入,同理,下拉对应下拉;(3)然后写程序,首先写GPIO初始化程序:陆李包括使能时钟、输入模式设置、速度设置、上下拉设置;(4)在写按键检测程序之前要明确检测上升沿还是检测下降沿:如果按键在硬件上是上拉接法,则按下按键会产生负脉冲按键信号,按键检测程序则检测下降沿即可。如果是下拉接法,则当按键按下则产生正脉冲按键信号,按键检测程序则检测上升沿即可。(5)根据(4)中所述,写按键检测上升沿或者下降沿的按键检测程序,并且在按键检测程序中应该采用延时程序实现10至20ms的延时处理按键的抖动,目的是为了消除按键产生的机械抖动,专业说法叫做按键的消抖。(6)在按键检测程序内部,当按键检测成功,则执行自己设定的变量自加1的这一行代码。以上六步就可以实现扮悉袜君所需功能。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)