单片机学习小组
登录
直播中
王晾其
7年用户
1007经验值
私信
关注
请问独立按键是怎样实现8位数码管0~7循环的
开启该帖子的消息推送
单片机
独立按键
数码管
按键的原理是什么?数码管的原理是什么?
请问独立按键是怎样实现8位数码管0~7循环的?
回帖
(1)
金晖
2022-2-23 14:08:21
(1)按键原理:按键正常状态为默认高电平,当按键按下之后就变成低电平。利用这个特性,我们可以检测出按键是否按下。
(2)数码管原理:想实现数码管的点亮,首先要有位选,即点亮哪一个数码管;其次要有段选,即具体的数码管显示哪一段(一个数码管由8段构成,包括一个小数点)
(3)按键原理图:
(4)74HC138原理图:
(5)数码管原理图:
(6)源代码:
#include
***it K4=P3^3;
***it LSA=P2^2;
***it LSB=P2^3;
***it LSC=P2^4;
typedef unsigned char u8;
typedef unsigned int u16;
u8 code smgduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x80/*显示小数点*/};
void delay(u16 i)//延时函数
{
while(i--);
}
void keypros()
{
u8 i;
if(K4==0)
delay(1000); //按键消抖
if(K4==0)
{
for(i=0;i<8;i++) //for循环实现数码管0~7的循环显示
{
switch(i)
{
case 0: LSA=0;LSB=0;LSC=0;break;
case 1: LSA=1;LSB=0;LSC=0;break;
case 2: LSA=0;LSB=1;LSC=0;break;
case 3: LSA=1;LSB=1;LSC=0;break;
case 4: LSA=0;LSB=0;LSC=1;break;
case 5: LSA=1;LSB=0;LSC=1;break;
case 6: LSA=0;LSB=1;LSC=1;break;
case 7: LSA=1;LSB=1;LSC=1;break;
}
P0=smgduan
; //数码管显示具体数字
delay(50000);
}
}
if(K4!=0)//按键正常状态,不按下
{
LSA=1;
LSB=1;
LSC=1;
P0=smgduan[0];
}
}
void main()
{
while(1)
{
keypros(); //调用按键处理函数
}
}
(1)按键原理:按键正常状态为默认高电平,当按键按下之后就变成低电平。利用这个特性,我们可以检测出按键是否按下。
(2)数码管原理:想实现数码管的点亮,首先要有位选,即点亮哪一个数码管;其次要有段选,即具体的数码管显示哪一段(一个数码管由8段构成,包括一个小数点)
(3)按键原理图:
(4)74HC138原理图:
(5)数码管原理图:
(6)源代码:
#include
***it K4=P3^3;
***it LSA=P2^2;
***it LSB=P2^3;
***it LSC=P2^4;
typedef unsigned char u8;
typedef unsigned int u16;
u8 code smgduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x80/*显示小数点*/};
void delay(u16 i)//延时函数
{
while(i--);
}
void keypros()
{
u8 i;
if(K4==0)
delay(1000); //按键消抖
if(K4==0)
{
for(i=0;i<8;i++) //for循环实现数码管0~7的循环显示
{
switch(i)
{
case 0: LSA=0;LSB=0;LSC=0;break;
case 1: LSA=1;LSB=0;LSC=0;break;
case 2: LSA=0;LSB=1;LSC=0;break;
case 3: LSA=1;LSB=1;LSC=0;break;
case 4: LSA=0;LSB=0;LSC=1;break;
case 5: LSA=1;LSB=0;LSC=1;break;
case 6: LSA=0;LSB=1;LSC=1;break;
case 7: LSA=1;LSB=1;LSC=1;break;
}
P0=smgduan
; //数码管显示具体数字
delay(50000);
}
}
if(K4!=0)//按键正常状态,不按下
{
LSA=1;
LSB=1;
LSC=1;
P0=smgduan[0];
}
}
void main()
{
while(1)
{
keypros(); //调用按键处理函数
}
}
举报
更多回帖
rotate(-90deg);
回复
相关问答
单片机
独立按键
数码管
8
位数码管
实现
10
位
学号动态显示的代码如何去
实现
2022-02-23
2141
如何利用
数码管
驱动芯片max7221
实现
8
位数码管
显示
2021-08-03
1170
按键
控制各
位数码管
显示不同数字
2016-07-19
8545
按键
控制
数码管
2022-07-21
6002
怎样
使用
独立
按键
来控制
数码管
显示数字呢
2022-02-23
1722
怎样
利用定时器T
0
、
数码管
模块和
独立
按键
去设计一个秒表呢
2022-01-21
935
如何去
实现
八
位数码管
的静态与动态显示代码呢
2022-02-23
3879
急,怎么用动态
数码管
显示
8
位数
字?
2015-11-24
16901
四
位数码管
原理及驱动方式是什么?
2022-01-20
1796
数码管
和
按键
2013-08-04
4285
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
英国威廉希尔公司网站
william hill官网 版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分