标题:
我想使用单片机按键控制数码管显示不同的内容,为啥实现不了呢?
[打印本页]
作者:
lijiqing
时间:
2020-7-20 10:47
标题:
我想使用单片机按键控制数码管显示不同的内容,为啥实现不了呢?
请教大神,我想使用按键控制数码管显示不同的内容,为啥实现不了呢,同一个按键,按一次显示温度、按一次显示时间,如此循环。按键加了延时后,按下去后数码管会变黑。求帮我分析下。
单片机源程序如下:
u8 code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//显示0~9的值
u8 DisData[8];
u8 DisplayData[8];
u8 Data[8];
u8 keypro() //按键处理函数
{
u8 i,flag=0,t=0;
if(k1==0)
{
if(k1==0)
{
for(i=0;i<2;i++)
{
delay2s();
flag++;
if(flag==2)flag=0;
}
}
//while(!k1);
}
switch(flag)
{
case (0):t=0;break;
case (1):t=1;break;
}
return t;
}
void dyna() \\数码管显示函数
{
unsigned int i;
for(i=0;i<8;i++)
{
switch(i)
{
case (0):SA=0;SB=0;SC=0;break;
case (1):SA=1;SB=0;SC=0;break;
case (2):SA=0;SB=1;SC=0;break;
case (3):SA=1;SB=1;SC=0;break;
case (4):SA=0;SB=0;SC=1;break;
case (5):SA=1;SB=0;SC=1;break;
case (6):SA=0;SB=1;SC=1;break;
case (7):SA=1;SB=1;SC=1;break;
}
switch(keypro())
{
case 1:Data[i]=DisplayData[i];break;
case 0:Data[i]=DisData[i];break;
}
GPIO_DIG=Data[i];
delay(20);
GPIO_DIG=0x00;//消隐
}
}
复制代码
作者:
wulin
时间:
2020-7-20 21:22
给你一个示例参考,时钟/温度按键切换显示。按键停止操作5秒自动恢复时钟显示。
4位数码管时钟温度表仿真.zip
(158.01 KB, 下载次数: 14)
2020-7-20 21:21 上传
点击文件名下载附件
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1