八个灯接在单片机的P1口(P0,P2,P3,P4都一样)while(1){ delay(你想要延时的时间);P1=0xff;delay(你想要延时的时间);P1=0;} 注意led最好加驱动,不然单片机会坏的。

//0xfe = 1111 1110,//说明连接在P3.0端口的按键被按下,显示对应的数字然后跳出循环case 0xfd:P0=dofly_table[2];LED1=0;break;//调用表中的第三个//元素 0xa4 下标 0 才表示数组中的第一个元素case 0xfb:P

switch(P1){ case 0xfe:P0=0x01;break;case 0xfd:P0=0x02;break;case 0xfb:P0=0x04;break;case 0xf7:P0=0x08;break;case 0xef:P0=0x10;break;case 0xdf:P0=0x20;break;case 0xbf:P0=0x40;break;case 0x

八个按键可以用00-ff表达就是说如果按键为P2的话就可以P2=0x00此时无按键输出,0x01为第一个按键按下。但是要按照具体的外围情况来写 switch(local){ case 0:P2=0x01;P3=0x01;break;case 1:P2=0x02;P3=0x02;bre

void delay(unsigned int a){ unsigned int i,j;for(i=0;i

单片机中用矩阵键盘的8个按键分别控制8个LED,当按下时亮,松手时灭,用switch语句

数码管和4×4矩阵键盘的综合应用是比较典型的,proteus里有一个计算器专用的4×4矩阵键盘,很漂亮,可以直接使用,见下面的仿真图。

0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};sbit WELA=P1^7;sbit DULA=P1^6;uchar keyscan();void delay_s(double t){ uint x,y;t=t*959;t=(

整8条线。至于键盘上的数字和符号可以作为参考用,这里proteus里面一个例子里用过的键盘,就是模拟简易计算器的按键。所以,每个按键的功能要与它一致,就用在计算器的仿真电路上,否则就作为一个4X4的矩阵键盘用好了。

2、LED是不是串联电阻了,而且阻值过大,超过1K。3、LED二极管的元件用错了,哈哈,可能性不大……

第一步,先将Proteus运行起来,同样新建一个Arduino 328的项目,自己为项目取个名字,此处取名为LEDMatrix。第二步,要从元件库当中找到LED点阵,并添加到工作区。点击左侧“Component Mode”按钮——点击“P”按钮——在输入

//功能:4*4矩阵键盘控制LED位移显示 //MCU:AT89S52 //晶振:12MHZ include define uint unsigned int define uchar unsigned char //延时函数 void _delay_ms(uint x){ uchar i;while(x--)for(i=0;i

如何用protues仿真4x4键盘矩阵控制LED灯?

手把手教会你单片机编程 单片机智能控制,单片机源代码 /*--- 名称:IO口高低电平控制 修改:无 内容:2个led灯先左移,然后右移,然后同时闪烁 ---*/ includereg52.h //包含头文件,一般情况不需要改动, //头文件

按下K1按键并松开时,LED向左移动一位,按下K2按键时LED向右移动一位。 java servlet 51单片机STC89C52控制LED流水灯左移动。 已赞过 已踩过< 你对这个回答的评价是? 评论 收起 橘桃漠画瑟P 2022-11-17 · 超过101用户采纳过

第二种,灯珠倾斜角度的安装:照出来类似一个“Z”形,感觉是被分成上下两半各向一个方向移动,而且上下有重叠区域,宽度有点稍微挤压,中心重叠的部位,光照度基本在1519左右。第三种,灯珠左右朝向的安装:照出来是一个

对控制LED口的寄存器进行位操作,按k1左移,按K2就是右移了。51单片机是对兼容英特尔8051指令系统的单片机的统称。51单片机广泛应用于家用电器、汽车、工业测控、通信设备中。因为51单片机的指令系统、内部结构相对简单,所以国内

”左移。

先写矩阵读取,在写LED的工作模式,调用对应工作模式就好了

LED点阵左移是指在LED点阵显示屏上,将所有的LED灯从左到右依次向左移动一位,并将最左边的一位移动到最右边。这种移动可以通过控制点阵中每一位的亮灭状态来实现。在硬件实现上,可以使用ShiftRegister来控制每一位的状态。

矩阵键盘控制led灯左移还是右移

第一行四个键盘,摁了没用,数码管没反应,--- 是 1234 这四个按键吗?程序,太长。四行按键的程序,好像都是雷同的,应该没有什么问题。键盘,是自己焊接的吗?是不是某一个引脚,虚焊?

(步骤1和2只需在初次使用设置。)3.举个例子:用keil新建一个工程,比如起名为test,正常编译,并产生hex文件(这一部分不详述),源程序如下:define LEDS 6 include "reg51.h"//led灯选通信号 unsigned char code

6、KeilC与Proteus连接仿真调试 单击仿真运行开始按钮 ,我们能清楚地观察到每一个引脚的电频变化,红色代表高电频,蓝色代表低电频。在LED显示器上,循环显示0、1、2、3、4、5。不懂的再提!qq648500361

uchar keyscantemp = 0xf0;for(i = 0; i < 4; i++)//扫描4次 { P2 = ~(0x01 << i);keyscantemp = P2 & 0xf0;if(keyscantemp != 0xf0)//判断是否有键按下 { delay_s(0.01);//去抖动 P2 =

1、打开keil软件,在工具栏点击Project选项选择new uVision Project创建新的工程并保存,步骤如下图所示:2、创建新的文件,按快捷键“ctrl+s”命名为led.c并保存,步骤如下:3、将创建的51.c文件添加到51项目中,鼠标右

2、LED是不是串联电阻了,而且阻值过大,超过1K。3、LED二极管的元件用错了,哈哈,可能性不大……

//键盘扫描函数 void Scan_Key(void){ P1=0xfe;//PD口(11101111)第1行为低 if((P1&0xf0)!=0xf0)//如果不等于0X0F则有按下 { _delay_ms(10);//延时10MS,去抖 if((P1&0xf0)!=0xf0)//如果TEMP不等于0X

如何用proteus和keil C的仿真实现4*4矩阵键盘控制一个LED灯显示0~F 需要程序和仿真图,谢谢!

我有的的,很全的,51的板子有你想要的矩阵键盘,想要的话你得把你的邮箱给我啊
电路图做好了吗 按照你的图写吧 可以发给我
//功能:4*4矩阵键盘控制LED位移显示 //MCU:AT89S52 //晶振:12MHZ #include #define uint unsigned int #define uchar unsigned char //延时函数 void _delay_ms(uint x) { uchar i; while(x--) for(i=0;i<120;i++); } //键盘扫描函数 void Scan_Key(void) { P1=0xfe;//PD口(11101111)第1行为低 if((P1&0xf0)!=0xf0)//如果不等于0X0F则有按下 { _delay_ms(10);//延时10MS,去抖 if((P1&0xf0)!=0xf0)//如果TEMP不等于0X0F,则说明有键按下 { switch(P1)//判断TEMP的值 { case 0xee:P2=0xfe;break; case 0xde:P2=0xfc;break; case 0xbe:P2=0xf8;break; case 0x7e:P2=0xf0;break; } } } P1=0xfd; if((P1&0xf0)!=0xf0) { _delay_ms(10); if((P1&0xf0)!=0xf0) { switch(P1) { case 0xed:P2=0xe0;break; case 0xdd:P2=0xc0;break; case 0xbd:P2=0x80;break; case 0x7d:P2=0x00;break; } } } P1=0xfb; if((P1&0xf0)!=0xf0) { _delay_ms(10); if((P1&0xf0)!=0xf0) { switch(P1) { case 0xeb:P3=0xfe;break; case 0xdb:P3=0xfc;break; case 0xbb:P3=0xf8;break; case 0x7b:P3=0xf0;break; } } } P1=0xf7; if((P1&0xf0)!=0xf0) { _delay_ms(10); if((P1&0xf0)!=0xf0) { switch(P1) { case 0xe7:P3=0xe0;break; case 0xd7:P3=0xc0;break; case 0xb7:P3=0x80;break; case 0x77:P3=0x00;break; } } } } void main(void) { while(1) { Scan_Key(); } }

为了去除按键抖动.因为机械是非常灵敏的,对于人来说,按键有两个状态 ,松开和按下,但是在两个即将触碰到的瞬间,电气设备会产生抖动结果就是设备感觉你非常快的按下松开按下松开.这可能造成你的软件错误.比如你按下按键,有一个变量就自增1,而抖动会让你感觉你按下了一次但是变量自增了N次. 延时是为了使机器在按键抖动的时候不去做任何响应从而去除按键抖动.而这个延时人是感觉不出来的.
四个按键,定义如下: KEY1 BIT P3.0 KEY2 BIT P3.1 KEY3 BIT P3.2 KEY4 BIT P3.3 按键处理程序: ;----------------------------------- READ_KEY: JB KEY1, K2 CALL DELAY JB KEY1, K2 JNB KEY1, $ PUSH ACC INC 75H MOV A, 75H CJNE A, #10, ZINT01 MOV 75H, #0 ZINT01: POP ACC JMP K_EXIT ;--------------- K2: JB KEY2, K3 CALL DELAY JB KEY2, K3 JNB KEY2, $ PUSH ACC INC 76H MOV A, 76H CJNE A, #10, ZINT01 MOV 76H, #0 ZINT01: POP ACC JMP K_EXIT ;--------------- K3: JB KEY3, K4 CALL DELAY JB KEY3, K4 JNB KEY3, $ PUSH ACC DEC 75H MOV A, 75H CJNE A, #255, ZINT03 MOV 75H, #9 ZINT03: POP ACC JMP K_EXIT ;--------------- K4: JB KEY4, K_EXIT CALL DELAY JB KEY4, K_EXIT JNB KEY4, $ PUSH ACC DEC 76H MOV A, 76H CJNE A, #255, ZINT04 MOV 76H, #9 ZINT04: POP ACC K_EXIT: RET ;--------------- DELAY: DJNZ R7, $ DJNZ R7, $ RET ;-----------------------------------