51 单片机 C 语言编程:矩阵键盘输入,显示在数码管
2016-01-25 12:13
369 查看
通过矩阵键盘输入,并显示在一位数码管上。
题目链接:http://zhidao.baidu.com/question/1382863947562936340
做而论道回答如下:
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit duanx = P2^6;
sbit weix = P2^7;
uchar key, k_tmp, view;
uchar show[] = {
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x40};
void keyscan(void)
{
key = 16;
P3 = 0xf0; k_tmp = P3 & 0xf0;
if (k_tmp == 0x70) key = 0;
else if(k_tmp == 0xb0) key = 1;
else if(k_tmp == 0xd0) key = 2;
else if(k_tmp == 0xe0) key = 3;
P3 = 0x0f; k_tmp = P3 & 0x0f;
if (k_tmp == 0x07) key = key + 12;
else if(k_tmp == 0x0b) key = key + 8;
else if(k_tmp == 0x0d) key = key + 4;
else if(k_tmp == 0x0e) key = key + 0;
view = show[key];
}
void display(uchar view)
{
P0 = view; duanx = 1; duanx = 0;
P0 = 0xfe; weix = 1; weix = 0;
}
main()
{
while(1) {
keyscan();
display(view);
}
}
提问者评价:谢谢,解决了问题,已经很好了。
题目链接:http://zhidao.baidu.com/question/1382863947562936340
做而论道回答如下:
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit duanx = P2^6;
sbit weix = P2^7;
uchar key, k_tmp, view;
uchar show[] = {
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x40};
void keyscan(void)
{
key = 16;
P3 = 0xf0; k_tmp = P3 & 0xf0;
if (k_tmp == 0x70) key = 0;
else if(k_tmp == 0xb0) key = 1;
else if(k_tmp == 0xd0) key = 2;
else if(k_tmp == 0xe0) key = 3;
P3 = 0x0f; k_tmp = P3 & 0x0f;
if (k_tmp == 0x07) key = key + 12;
else if(k_tmp == 0x0b) key = key + 8;
else if(k_tmp == 0x0d) key = key + 4;
else if(k_tmp == 0x0e) key = key + 0;
view = show[key];
}
void display(uchar view)
{
P0 = view; duanx = 1; duanx = 0;
P0 = 0xfe; weix = 1; weix = 0;
}
main()
{
while(1) {
keyscan();
display(view);
}
}
提问者评价:谢谢,解决了问题,已经很好了。
相关文章推荐
- C语言编程,键盘输入一个字符,输出其类型
- 开灯问题用C语言怎么解决 ?
- 80x86汇编语言编程:在九九乘法表中高亮显示结果
- 80x86汇编语言编程:用光标键控制字符串的移动
- 80x86汇编语言编程:用光标键控制三角形的移动
- 80x86 汇编语言编程:要求显示完整的算式
- C语言:500 以内最大 10 个素数并求和
- 80x86 汇编语言编程:显示一个螺旋数据方阵
- 51单片机编程:双机串行通信
- 80x86 汇编语言编程:斐波那契数列--大数处理
- 51单片机定时器编程:这么简单的要求,不用大动干戈
- 80x86 汇编语言编程:输出指定行数的星号
- Java并发编程:Callable、Future和FutureTask
- 如何在代码中为组件设置dip,sp值
- 51 汇编编程:8255 驱动矩阵键盘和数码管
- 51单片机汇编编程--16位流水灯收缩点亮
- 51单片机 C 语言编程:单片机定时中断
- 51单片机汇编编程--16位拉幕灯
- C语言编写51单片机程序:键控流水灯
- c++学习之继承篇(多重继承之虚继承)