单片机 按键(采用独立式按键)按下一次,让液晶第一位显示的数码加1,显示范围0~9?

单片机 按键(采用独立式按键)按下一次,让液晶第一位显示的数码加1,显示范围0~9?,第1张

程序清单如下:

#include <reg51.h >// 51单片机头文件

#define uchar unsigned char // 宏定义,用uchar替代无符号字符型

#define uint  unsigned int // 宏定义,用uint 替代无符号整数型

sbit Key = P2 ^ 7

uchar Count = 0

uchar code DataChar[10] = // 定义数码管的段码 '0'~'9'、'-'、' ' 'P'

{

0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,

}//延时N毫秒

void DelayNms( uint N ) // 利用x、y作简单的自减运算,消耗单片机指令周期,达到延时的目的

{

uint x,y

for( x=Nx>0x-- )

for( y=110y>0y-- )

}

//数码管显示   // 显示方式为动态扫描,视觉暂留原理

void Display( uchar Num ) // *p指向Main函数中的数组ShowNum的首地址

{

P0 = DataChar[ Num ]// 向P0赋段码值

DelayNms(2)// 短暂的延时

P0 = 0x00// 让数码管熄灭,否则会造成数字重叠

}

void main( void )

{

while(1)

{

if( Key == 0 )

{

DelayNms(30)

if( Key == 0 )

{

Count += 1

Count = (Count>9)? 0 : Count

}

while( !Key )

}

Display( Count )

}

}

5步。分别是判断按键是否按下,延时消抖,再次判断按键是否按下,等待按键抬起,执行预定语句。

一种是普通io口,一种是中d的形式,普通io口是按下按键触发按键子程序案件,指程序经过一段时间的,比如20~50毫秒的延时再次毒案件,如果按键值还是会按下,那么就延时等待按键抬起按键,抬起后执行按键程序,然后返回中d也是一样的,按下按键之后进入中段读按键状态,是否还是为按一下是按一下等待延时再读等待,然后等待案件采取后执行相应的代码,然后退出总代。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/7845438.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-10
下一篇 2023-04-10

发表评论

登录后才能评论

评论列表(0条)

保存