急求!!!用at89c51制作4*4矩阵键盘,用一个数码管显示0~F。非常感谢!!

用C语言和汇编写的程序和原理图。如果有的话麻烦发到992066694@qq.com,不甚感激!!!!

第1个回答  2011-05-23
  /*-----------------------------------------------
  矩阵键盘实验程序
  通过反转法循环扫描矩阵键盘,并通过数码管显示数据
  ------------------------------------------------*/
  #include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义

  #define uchar unsigned char
  #define uint unsigned int

  unsigned char const EL[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,
  0x77,0x7c,0x39,0x5e,0x79,0x71};//0-F
  /*------------------------------------------------
  函数声明
  ------------------------------------------------*/
  uchar keyscan(void);//键盘扫描
  void delay(uint i); //演示程序
  /*------------------------------------------------
  主函数
  ------------------------------------------------*/
  void main()
  {
  uchar key;
  P2=0; //1数码管亮 按相应的按键,会显示按键上的字符
  P0=0X00;
  while(1)
  {
  key=keyscan(); //调用键盘扫描,
  switch(key)
  {

  case 0xee:P0=EL[0];break;//0按下相应的键显示相对应的码值
  case 0xde:P0=EL[1];break;//1 按下相应的键显示相对应的码值
  case 0xbe:P0=EL[2];break;//2
  case 0x7e:P0=EL[3];break;//3
  case 0xed:P0=EL[4];break;//4
  case 0xdd:P0=EL[5];break;//5
  case 0xbd:P0=EL[6];break;//6
  case 0x7d:P0=EL[7];break;//7
  case 0xeb:P0=EL[8];break;//8
  case 0xdb:P0=EL[9];break;//9
  case 0xbb:P0=EL[10];break;//a
  case 0x7b:P0=EL[11];break;//b
  case 0xe7:P0=EL[12];break;//c
  case 0xd7:P0=EL[13];break;//d
  case 0xb7:P0=EL[14];break;//e
  case 0x77:P0=EL[15];break;//f

  }
  }
  }
  /*------------------------------------------------
  键盘扫描程序
  ------------------------------------------------*/
  uchar keyscan(void) //键盘扫描函数,使用行列反转扫描法
  {
  uchar cord_h,cord_l;//行列值中间变量
  P3=0x0f; //行线输出全为0
  cord_h=P3&0x0f; //读入列线值
  if(cord_h!=0x0f) //先检测有无按键按下
  {
  delay(100); //去抖
  if(cord_h!=0x0f)
  {
  cord_h=P3&0x0f; //读入列线值
  P3=cord_h|0xf0; //输出当前列线值
  cord_l=P3&0xf0; //读入行线值
  return(cord_h+cord_l);//键盘最后组合码值
  }
  }return(0xff); //返回该值
  }
  /*------------------------------------------------
  延时程序
  ------------------------------------------------*/
  void delay(uint i) //延时函数
  {
  while(i--);
  }追问

谢谢!!请问您能发到我邮箱吗?还有原理图。

追答

给你发过去了

追问

谢谢!

本回答被提问者采纳

...做个AT89C51单片机接4X3矩阵键盘和LED数码管显示,汇编程序有问题,数 ...
……LCALL KEYPRO ---调用子程序 MOV P2,A ; 十六进制数直接送出,4脚LED显示 ……子程序,应该使用RET指令返回,才能把A送到4脚LED显示。但是 KEYPRO 中,没有返回。并且在 KEYPRO 中,还有一个 LCALL KEYPRO 指令!形成了递归,且永远不返回。一会就把堆栈填满了。

一个按键怎么控制数码管显示不同的字符
这个要加程序的,按一下按键,程序中变量自加1,然后根据程序变量的值,显示相应的字符。例如:1 MP3 2 CD 3 DVD,如果当前变量值为3,下一次按键有效时,应直接赋值为1,这样就形成了循环

基本要求:利用单片机AT89C51设计电子琴,用矩阵键盘代表键琴,至少能弹...
1、四个音调,按键调节 2、指示灯显示当前音调 3、七个按键对应七个音节 4、音乐 IC 发音,驱动 8Ω 喇叭,比蜂鸣器滴滴滴好听多了 5、可根据顾客要求进行功能定制 ☆ 已作出的实物优酷视频演示地址:http:\/\/v.youku.com\/v_show\/id_XMzg3MjMwOTg3Ng ...

怎样用单片机控制直流电动机
1、通过设置PWM波的占空比来控制直流电机的转速,占空比越大,转速越快,越小转速越低。2、当然单片机的I\/O口是不能直接驱动电机的,所以你还需要用一个马达驱动芯片。像LG9110、CMO825等。马达驱动IC可以将单片机I\/O输出信号放大,这样电机中流过的电流足够大,电机才能转起来。3、你要是不清除PWM是...

单片机原理、应用与PROTEUS仿真的章节目录
第8章 AT89C51人机交互通道的接口技术8.1 单片机与LED数码管动态显示的接口技术8.1.1 基础知识8.1.2 接口电路设计8.1.3 接口程序设计8.1.4 运行与思考*8.2 单片机与字符型LCD显示器的接口技术8.2.1 基础知识8.2.2 接口电路设计8.2.3 接口程序设计8.2.4 运行与思考8.3 单片机与矩阵式键盘的接口技术8.3.1 基础...

...设计的电子密码锁源程序?上网搜了好多都不行。。。求啊~~_百度...
一、题目:可改密的六位电子密码锁二、摘要: 单片机技术是智能化检测与控制领域应用非常普及并且 具有很大潜力的技术。 论文阐述一个基于单片机的液晶显示电子密码 锁的设计与实现。系统采用美国 Atmel 公司的 AT89S52 单片机作为 系统核心,液晶显示器 LCD1602 作为输出设备显示系统提示信息, 4*4 矩阵薄膜键盘作为输入设...

用单片机设计一个时钟,可显示时和分,可以调时间,也要有闹钟功能,要有设...
for(z=0;z<100;z++){ tmp=0x01;P2=tab[h\/10];小时显示 disp();P2=tab[h%10];disp();P2=tab[m\/10];分钟显示 disp();P2=tab[m%10];disp();P2=tab[s\/10];秒显示 disp();P2=tab[s%10];disp();} s++;while(s==60)秒进一位,到60清0 { m++;s=00;} while(m==60...

利用51单片机,4个数码管设计一个计时器,要求在数码管上显示的数据从0开...
74LS273:锁存器,LED显示扩展电路中的段码和位码使用了两片74LS273,上升沿锁存。74LS02:与非门,与单片机的读写信号一起使用,选中外部的74LS273,决定LED的字段和字位的显示内容。7407:驱动门电路,提供数码管显示的驱动电流。74LS04:非门,对单片机的片选信号取反,并和读写信号一起使用,决定74LS273的片选。L1...

电压值0-5V,输出是八位二进制,也可以显示成0-255了。问题如下。
3.4 译码显示电路 译码电路的功能是将“秒”、“分”、“时” 计数器中每个计数器的输出状态(8421码),翻译成七段(或八段)数码管能显示十进制数所要求的电信号,然后再经数码管把相应的数字显示出来。译码器采用74LS248译码\/驱动器。显示器采用七段共阴极数码管。显示部分是整个电子时钟最为重要的部分,共需要6...

...并用六个共阴极数码管显示出来。用两个按键分别切换。
本题给出基于单片机的数字中的设计,设计由单片机作为核心控制器,通过频率计数实现计时功能,将实时时间经由单片机输出到显示设备——数码管上显示出来,并通过键盘来实现启动、停止、复位和调整时间的功能。关键词: 单片机、数字钟、AT89S52、LED 1 引言在单片机技术日趋成熟的今天,其灵活的硬件电路的设计和软件的设计,让...

相似回答