各位老师帮忙解答一下问题,本人刚上手15单片机
时间:10-02
整理:3721RD
点击:
#include <reg51.h>
#define GPIO_DIG P0
#define GPIO_KEY P1
typedef unsigned char u8;
typedef unsigned int u16;
u16 digital[] = {0xf9, 0xa4, 0xb0, 0x99, 0x92,
0x82, 0xf8, 0x80, 0x90, 0xc0}; //1, 2, 3, 4, 5, 6, 7, 8, 9, 0
u8 KeyValue;
void Delay(u16 i)
{
while(i--);
}
void KeyDown()
{
u8 touch = 0;
GPIO_KEY = 0xf0;
if(GPIO_KEY != 0xf0)
{
Delay(1000);
if(GPIO_KEY != 0xf0)
{
GPIO_KEY = 0xf0;
switch(GPIO_KEY)
{
case(0xe0): KeyValue = 0; break;
case(0xd0): KeyValue = 1; break;
case(0xb0): KeyValue = 2; break;
case(0x70): KeyValue = 3; break;
}
GPIO_KEY = 0x0f;
switch(GPIO_KEY)
{
case(0x0e): KeyValue = KeyValue; break;
case(0x0d): KeyValue = KeyValue + 4; break;
case(0x0b): KeyValue = KeyValue + 8; break;
case(0x07): KeyValue = KeyValue + 12; break;
}
while((touch < 50)&&(GPIO_KEY !=0x0f))
{
Delay(1000);
touch++;
}
}
}
}
void main()
{
while(1)
{
KeyDown();
GPIO_DIG = digital[KeyValue];
}
}
这是我写的一段程序,不知道为什么一下载完程序就显示1(我的数组第一个就是1,如果换成0,下载完程序就变成0)复位之后还是显示1,我想要的效果是在我没按下按键的时候,静态数码管是灭的?该怎么改?三极管是共阳的
#define GPIO_DIG P0
#define GPIO_KEY P1
typedef unsigned char u8;
typedef unsigned int u16;
u16 digital[] = {0xf9, 0xa4, 0xb0, 0x99, 0x92,
0x82, 0xf8, 0x80, 0x90, 0xc0}; //1, 2, 3, 4, 5, 6, 7, 8, 9, 0
u8 KeyValue;
void Delay(u16 i)
{
while(i--);
}
void KeyDown()
{
u8 touch = 0;
GPIO_KEY = 0xf0;
if(GPIO_KEY != 0xf0)
{
Delay(1000);
if(GPIO_KEY != 0xf0)
{
GPIO_KEY = 0xf0;
switch(GPIO_KEY)
{
case(0xe0): KeyValue = 0; break;
case(0xd0): KeyValue = 1; break;
case(0xb0): KeyValue = 2; break;
case(0x70): KeyValue = 3; break;
}
GPIO_KEY = 0x0f;
switch(GPIO_KEY)
{
case(0x0e): KeyValue = KeyValue; break;
case(0x0d): KeyValue = KeyValue + 4; break;
case(0x0b): KeyValue = KeyValue + 8; break;
case(0x07): KeyValue = KeyValue + 12; break;
}
while((touch < 50)&&(GPIO_KEY !=0x0f))
{
Delay(1000);
touch++;
}
}
}
}
void main()
{
while(1)
{
KeyDown();
GPIO_DIG = digital[KeyValue];
}
}
这是我写的一段程序,不知道为什么一下载完程序就显示1(我的数组第一个就是1,如果换成0,下载完程序就变成0)复位之后还是显示1,我想要的效果是在我没按下按键的时候,静态数码管是灭的?该怎么改?三极管是共阳的
你做了按键扫描,但是没有做有没有按键按下的判断,也就是按键扫描完后,就直接显示按键值,应该是按键扫描完后,判断是否有按键按下,如果有就显示按键值,没有则跳过显示部分。
好的,谢谢哈,我再改改
好的,谢谢哈,我再改改
好的,谢谢哈,我再改改
好的,谢谢哈,我再改改