标题:
单片机按键显示读取数值 求程序思路
[打印本页]
作者:
1P1P
时间:
2020-3-18 17:58
标题:
单片机按键显示读取数值 求程序思路
C51两个按键控制一个数码管加减0-5,同时还要提取数码管显示的数字是几,再由一个确定键确定,另一端IO口显示几个LED灯的亮灭。
昨天被师傅考问这个程序要如何实现,真的是一脸懵,无论怎样写都不能实现,求助于同事还被人翻白眼,实属无奈,我也才学习了不到一个月的C语言编程,师傅没有教过类似的程序。
哪位大神给一个这样的程序C语言,让我借鉴借鉴不胜感激!!!
作者:
51hei**1140
时间:
2020-3-18 22:04
你好!
1、你单片机上数码管的具体接法
2、另一端的IO口,是指同一个单片机吗
3、你这个是否有实物?还是用仿真?
作者:
余生不负
时间:
2020-3-18 22:37
按+,按-,完了直接把这个寄存器的数据显示出来就可以了,显示多少就是多少,至于这个确定键多余,你不按+,不按-,寄存器的数据是不会改变的,除非你复位,程序是可以很灵活的,可以大胆现象
作者:
wulin
时间:
2020-3-19 08:01
无标题.jpg
(106.36 KB, 下载次数: 39)
下载附件
2020-3-19 08:00 上传
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit key1=P3^0;
sbit key2=P3^1;
uchar code table[]={ //共阴数码管段码0~F
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
uchar code table1[]={0xff,0xfe,0xfc,0xf8,0xf0,0xe0};//LED低电平亮
uchar num=0; //键值变量
uchar count=0; //消抖计数变量
bit flag=0; //按键状态标志
void main(void)
{
P2=table[num];
P1=table1[num];
while(1)
{
if(!key1||!key2)
{
if(++count>=100 && flag==0)
{
flag=1;
if(!key1)
{
if(num<5)
num++;
}
if(!key2)
{
if(num>0)
num--;
}
P2=table[num];
P1=table1[num];
}
}
else
{
count=0;
flag=0;
}
}
}
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1