求指错,C51矩阵按键数码管显示
程序编译通过,但是数码管完全没反应,由于刚刚接触不多,对于一些语句的顺序和用法可能错了自己看不出来
#include<reg52.h>
sbit duan=P2^6;//定义数码管段选段选
sbit wei=P2^7;//定义数码管位选
unsigned char Hang_scan[]={0xfe,0xfd,0xfb,0xf7};//行扫描初始值数组
unsigned char DIGITAL[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
unsigned char key=0;//按键编号
void delay();//声明延时函数
void scan(){
unsigned char i;//行编号
for(i=0;i<4;i++){
P3=Hang_scan[i];//逐行赋初始值
if(P3!=Hang_scan[i]){//按键消抖
delay();
if(P3!=Hang_scan[i]){//再次判断按键是否按下
switch(P3&0xf0){//由按键按下后P3高四位的值判断列位置
case 0xe0:key=4*i+1; break;//第1列
case 0xd0:key=4*i+2; break;//2
case 0xb0:key=4*i+3; break;//3
case 0x70:key=4*i+4; break;//4
}
}while(P3!=Hang_scan[i]){}//判断按键是否弹起
}
}
}
void delay(){
unsigned char j;
for(j=0;j<1000;j++);
}
void main(){
while(1){
scan();
wei=1;//打开位选
P0=0xfb;//选择第二位
wei=0;
duan=1;//打开段选
P0=DIGITAL[key-1];//给数码管端口赋值
duan=0;
}
}
...全文
相关推荐
C51单片机矩阵按键与数码管移位显示实验设计源码
本文还有配套的精品资源,点击获取 简介:本实验项目通过C51单片机实现矩阵按键的扫描检测与数码管的移位动态显示功能,是嵌入式系统设计中的典型应用。项目详细介绍了矩阵按键的高效设计、数码管的驱动与动态显示原理,以及移位寄存器在数码管数据传输中的作用。实验还包括硬件接线图、接线说明和C51单片机编程源码,涵盖了单片机编程的核心知识点,如基本输入输出、定时器、位操作和中断处理。通...
C51单片机矩阵键盘输入&数码管静态显示
学会矩阵键盘的检测,掌握数码管静态显示原理。
基于51单片机C语言——学习矩阵键盘和数码管 以及 实现矩阵键盘键值实现8位数码管显示键值和LED灯闪烁
运用了矩阵键盘赋予相对应的16进制数1.矩阵键盘S16用来转换模式模式一:在8位数码管上显示按下的键值模式二:按下对应的键位,则LED闪烁对应的次数
【Proteus仿真】51单片机+矩阵按键扫描+数码管显示
【Proteus仿真】51单片机+矩阵按键扫描+数码管显示
51单片机按键与数码管显示编程实战
51单片机,也称为8051单片机,是一种经典的微控制器。它广泛应用于电子设备、家用电器、仪器仪表等领域。由于其简单的结构、易于编程和丰富的I/O端口资源,51单片机成为许多电子爱好者和初学者的首选。它通常用于实现一些基本的控制任务,如按键输入处理。去抖动技术旨在解决物理按键在操作过程中产生的机械抖动问题。这通常发生在按键接触的瞬间,由于弹性变形而引起的快速、小幅度的接触变化。


疑难问题
