51单片机矩形键盘控制数码管显示0-F,以及LED灯的亮灭

仿真视频

51单片机矩形键盘控制数码管显示0-F,以及LED灯的亮灭的仿真视频

电路图

总图

部分图1

部分图2

部分图3

元件清单(有多余)

C语言程序

#include <reg51.h>#define uint unsigned int #define uchar unsigned char//共阳数码管编码表&LED灯uchar code table[] ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//函数声明void delay(uint time); //延时函数void display(uchar k); //数码管显示0-F以及LED灯的亮灭uchar getKey();//读取键盘的数值//主程序void main(){ uchar keyValue; while(1){ keyValue = getKey(); //读取键盘值 display(keyValue); //数码管显示&LED亮灭 }}void delay(uint time){ uint i,j; for(i = 0; i<time; ++i) for(j = 0; j<110; ++j);}void display(uchar k){ P0 = table[k]; P1 = table[k];}uchar getKey(){ uchar x , y ; uchar result; // 计算行数X的值 P2 = 0x0f; // 从P2口输出,写P2口 if (P2 != 0x0f)// 从P2口输入,P2口 { // 读出的不是0x0f说明有按键被按下 delay(20); // 判断在哪一行 switch (P2) { case 0x0e: x = 0; break; case 0x0d: x = 1; break; case 0x0b: x = 2; break; case 0x07: x = 3; break; default: break; } delay(10); // 计算列数y的值 P2 = 0xf0; if (P2 != 0xf0) { delay(20); switch (P2) { case 0xe0:y = 0; break; case 0xd0: y = 1; break; case 0xb0: y = 2; break; case 0x70: y = 3; break; default: break; } // 计算出结果,确定数码管显示的数字以及字母与LED的亮灭 } } result = x * 4 + y; return result;}

#单片机##C语言##电工电子#

(0)

相关推荐