① 能不能用mcs-51单片机做一个4x4矩阵键盘及四位显示电路 实现四位数加减法
这个是可以做的,不过数码管位数还是少了,四位数加减,要用5位数码管才能正确显示结果,加法的结果可能出现5位。减法的结果,可能出现负数和4位值,这都需要5位数码管才能显示出来。至于实现代码,网络一下,有很多的,下来后稍加修改就可以了。不要期望得到完全符合你要求的代码,那样一方面出现几率较低,另一方面也不利于你的学习。
② 用verilog设计一个4*4矩阵键盘,来对模拟开关进行控制从而实现对输入电压不同倍数的放大
从程控放大电路的实际应用来讲,楼主所作的方案没有什么必要。当然,就题目来讲,一个经典的4*4矩阵键盘可以一键输入0~F的信息,还是很有价值的。原来也没有作过这方面的东西,尝试着在网络上找了别人的文档,感觉如下链接交待的最好,它不仅有4*4矩阵键盘外围电路的示意图,也有关于代码的流程图说明(当然对于verilog设计--即作为硬件来讲,把它表述成为状态图会更好),还有对于所设计模块接口信号的简单说明。可以一起学习一下。
http://www.cnblogs.com/yuphone/archive/2010/11/09/1783623.html
③ 单片机键盘显示电路设计的程序要求输入64个按键,8个LED显示
用8*8的矩阵键盘组成64个按键,只需要16个IO口,8个LED需要8个IO口,所以选用STC89C51的单片机就够用了。
④ 51单片机数码管显示矩阵键盘的按键,电路图如下:
我的网络空间复里面,有雷制同的东西。可以参考。
--同理显示一百二十三,一千二百三十四,
其实,输入数字,能移位显示出来 123、1234,这就可以了。
只有当按下+-×÷=的时候,才需要把显示的各个数码,组合成一个数字,用来计算。
⑤ 设计一个4X4矩阵键盘键信号检测电路 EDA
这个做起来抄不难的,关键是把内部变量想清楚。但是你要求设计完整的EDA程序,还要详细解释。这要求有点过了,除非有现成的,否则谁闲着蛋疼花这么多时间来做这种事情。知道上问问题最好还是具体一点的--连我这种最近看起来像是闲的蛋疼的都不想回答啊。:(
⑥ vhdl4x4键盘扫描与数码管显示电路设计
网络上搜一下4*4矩阵键盘,这个给你参考...
自己做点小小修改吧...
/*******************************************************************/
/* */
/* 单片机开发系统演示程序 - 矩阵键盘键值显示 */
/* */
/* 一位数码管显示 */
/* */
/*******************************************************************/
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar table[17]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82, //0,1,2,3,4,5,6
0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xBF};//7,8,9,A,B,C,D,E,F,-
sbit BEEP = P3^7; //蜂鸣器驱动线
uchar dis_buf; //显示缓存
uchar temp;
uchar key; //键顺序吗
void beep(); //蜂鸣器
void delay0(uchar x); //x*0.14MS
//--------------------------------------------------
/* 延时子程序*/
void delay(uchar x)
{ uchar j;
while((x--)!=0)
{ for(j=0;j<125;j++)
}
}
//--------------------------------------------------
/*键扫描子程序*/
void keyscan(void)
{
P1=0x0F; //低四位输入
delay(1);
temp=P1; //读P1口
temp=temp&0x0F;
temp=~(temp|0xF0);
if(temp==1)
key=0;
else if(temp==2)
key=1;
else if(temp==4)
key=2;
else if(temp==8)
key=3;
else
key=16;
P1=0xF0; //高四位输入
delay(1);
temp=P1; //读P1口
temp=temp&0xF0;
temp=~((temp>>4)|0xF0);
if(temp==1)
key=key+0;
else if(temp==2)
key=key+4;
else if(temp==4)
key=key+8;
else if(temp==8)
key=key+12;
else
key=16;
dis_buf=table[key]; //查表得键值
}
//--------------------------------------------------
/*判断键是否按下*/
void keydown(void)
{
P1=0xF0;
if(P1!=0xF0)
{
keyscan();
beep();
while(P1!=0xF0); //等待键释放
}
}
//--------------------------------------------------
void beep()
{
unsigned char i;
for (i=0;i<180;i++)
{
delay0(6);
BEEP=!BEEP; //BEEP取反
}
BEEP=1; //关闭蜂鸣器
delay(250); //延时
}
//--------------------------------------------------
void delay0(uchar x) //x*0.14MS
{
unsigned char i;
while(x--)
{
for (i = 0; i<13; i++) {}
}
}
//--------------------------------------------------
main()
{
P0=0xFF; //置P0口
P2=0xFF; //置P2口
dis_buf=0xBF;
while(1)
{
keydown();
P0 = dis_buf; //键值送显示
delay(2);
P2 = 0x7F;
}
}
//--------------------------------------------------
⑦ 请教4x4矩阵键盘控制LCD显示字符串一个按键显示一条字符的程序和仿真电路图
我不知道你会不会矩阵,我把程序写下给你,你按我说的仿真下试试。
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar num,temp;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,
0x77,0x7c,0x39,
0x5e,0x79,0x71};
void delay(uint t);
void main()
{
P2=0xff;
P0=0;
num=0;
while(1)
{
P3=0xfe;
temp=P3;
temp=temp&0xf0;
while(temp!=0xf0)
{
delay(5);
temp=P3;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xee:num=1;
break;
case 0xde:num=2;
break;
case 0xbe:num=3;
break;
case 0x7e:num=4;
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
}
P2=0;
P0=table[num-1];
}
}
P3=0xfd;
temp=P3;
temp=temp&0xf0;
while(temp!=0xf0)
{
delay(5);
temp=P3;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xed:num=5;
break;
case 0xdd:num=6;
break;
case 0xbd:num=7;
break;
case 0x7d:num=8;
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
}
P2=0;
P0=table[num-1];
}
}
P3=0xfb;
temp=P3;
temp=temp&0xf0;
while(temp!=0xf0)
{
delay(5);
temp=P3;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xeb:num=9;
break;
case 0xdb:num=10;
break;
case 0xbb:num=11;
break;
case 0x7b:num=12;
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
}
P2=0;
P0=table[num-1];
}
}
P3=0xf7;
temp=P3;
temp=temp&0xf0;
while(temp!=0xf0)
{
delay(5);
temp=P3;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xe7:num=13;
break;
case 0xd7:num=14;
break;
case 0xb7:num=15;
break;
case 0x77:num=16;
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
}
P2=0;
P0=table[num-1];
}
}
}
}
void delay(uint t)
{
uint x,y;
for(x=0;x<t;x++)
for(y=0;y<110;y++);
}
你把P0口接上拉电阻之后接到数码管(共阴),P2接数码管的公共端,P3口接矩阵键盘。
你看程序去理解下把。
⑧ 简单的51系列单片机控制4*4矩阵键盘显示电路图
可以在P0.0/P0.1/P0.2/P0.3四个I/O口上每个接四个按键,,在P0.4/P0.5/P0.6/P0.7四个口线上与前面的四个口线上的按键交插相连,这样可以通过查询的方式,比如是第查到P1.0口上有按键按下了,再转向查看P0.1,P0.5,P0.6,P0.7哪个口的电平发生的变化,这样就很容易找到是哪个按键了
⑨ 谁能看懂这个电路图,是个矩阵键盘
键盘是行列反转扫描法,P3口高、低半字节分别控制行与列,扫描分两次完成,版下面的链接介绍的很权详细。
http://wenku..com/view/42d12fc60c22590102029dd2.html
显示部分没啥好说了,ls244是数码管段缓冲器,三极管是位驱动器。