mega8515的矩阵键盘与LED显示程序

发布者:创意驿站最新更新时间:2015-07-21 来源: 51hei关键字:mega8515  矩阵键盘  LED显示 手机看文章 扫描二维码
随时随地手机看文章
ATmega8515是一种与51单片机引脚相容的avr单片机,下面的程序已经通过测试可以正常使用:

/******************************************************************
//文件名称:Key4X4_Led
//功    能:4X4矩阵键盘控制LED小灯
//作    者:懒猫爱飞
//日    期:2010.05.25
*******************************************************************/
#include
#include

#define uchar unsigned char
#define uint  unsigned int

uint Key_num=20;

//宏定义左移,右移函数crol为左移,cror为右移
#define crol(a,n) a=(a<>(8-n))
#define cror(a,n) a=(a>>n)|(a<<(8-n))

/****************************************************************
//函数名称: delay(void)
//功    能:延时
//入口参数:无
//出口参数:无
*****************************************************************/
void delay(void)
{
 uint i;
 for(i=1;i<100;i++)
    ;
}

/****************************************************************
//函数名称:delay_1ms(void)
//功    能:延时1ms
//入口参数:无
//出口参数:无
*****************************************************************/
void delay_1ms(void)//1ms
{
 uint i;
 for(i=1;i<(uint)(8*143-2);i++)
    ;
}
/****************************************************************
//函数名称:delay_ms(uint time)
//功    能:延时time ms
//入口参数:time
//出口参数:无
*****************************************************************/
void delay_ms(uint time)//time*1ms
{
   uint i="0";
   while(i    {
   delay_1ms();
    i++;
   }
}
/****************************************************************
//函数名称:Port_init(void)
//功    能:端口初始化
//入口参数:无
//出口参数:无
*****************************************************************/
void Port_init(void)
{
 DDRA  = 0xff;   //A口输出口,控制LED
 PORTA = 0xff;
 
 DDRB  = 0x00;         //B口设为输出口,控制LED
 PORTB = 0x00;
 
 DDRC  = 0xff;   //C口
 PORTC = 0xff;
 
 DDRD  = 0xf0;   //D口低四位输入,置高电平,高四位输出,置低电平
 PORTD = 0x00;
}

/****************************************************************
//函数名称:uchar Key_scan(void)
//功    能:键盘扫描,读取键值
//入口参数:无
//出口参数:无
*****************************************************************/
uchar Key_scan(void)
{
    uchar i,j;
 DDRD = 0xf0;           //设置PD高四位为输出口,低四位为输入口
 PORTD = 0x00;         // 初始运行输出全为0
 if((PIND & 0x0f) == 0x0f) return 20;   // 判断有无按键动作,没有,返回0    
 else
 {
  delay_ms(10);                     //按键消抖
  if((PIND & 0x0f) == 0x0f) return 20;      //再次判断是否有按键动作
  else
  {
   for(i = 4;i < 8;i++)                //逐行输出0
   {
    PORTD = ~(1 << i) | 0x0f;      //第i行输出0
    for(j = 0;j < 4;j++)
    {
     if((PIND & (1 << j)) == 0)        //逐列检测
     Key_num= (i - 4) * 4 + j;      //计算键值
    }
   }
  return Key_num;       //
  }
 }
}
/****************************************************************
//函数名称:Led_display(void)
//功    能:Led显示控制
//入口参数:无
//出口参数:无
*****************************************************************/
void Led_display(void)
{
 switch(Key_num) //根据键码值选择控制情况
 {
  case 0:PORTA=0xfe;PORTC=0xff;break;
  case 1:PORTA=0xfc;PORTC=0xff;break;
  case 2:PORTA=0xf8;PORTC=0xff;break;
  case 3:PORTA=0xf0;PORTC=0xff;break;
  case 4:PORTA=0xe0;PORTC=0xff;break;
  case 5:PORTA=0xc0;PORTC=0xff;break;
  case 6:PORTA=0x80;PORTC=0xff;break;
  case 7:PORTA=0x00;PORTC=0xff;break;
  case 8:PORTA=0x00;PORTC=0xfe;break;
  case 9:PORTA=0x00;PORTC=0xfc;break;
  case 10:PORTA=0x00;PORTC=0xf8;break;
  case 11:PORTA=0x00;PORTC=0xf0;break;
  case 12:PORTA=0x00;PORTC=0xe0;break;
  case 13:PORTA=0x00;PORTC=0xc0;break;
  case 14:PORTA=0x00;PORTC=0x80;break;
  case 15:PORTA=0x00;PORTC=0x00;break;
  default: break;
 }
}
/****************************************************************
//函数名称:main(void)
//功    能:主程序
//入口参数:无
//出口参数:无
*****************************************************************/
void main(void)
{
 //#define debug1
 #ifdef debug1
  Key_code=2;//测试函数Led_display()是否可用
 #endif
 
 Port_init();
 while(1)
 {
  Key_scan();
  Led_display();
 }
}

关键字:mega8515  矩阵键盘  LED显示 引用地址:mega8515的矩阵键盘与LED显示程序

上一篇:Mega16按键与数码显示程序
下一篇:位域的方式做AVR的位定义

推荐阅读最新更新时间:2024-03-16 14:25

采用LED显示电流幅度的电路设计
图中led的发光强度与负载电流成正比,该电路的设计目的是提供一个非常紧凑的电路来替代某些天文学设备中12V电源线上的电表。这种设备包含工作状况不可视的小功率加热元件(防露元件)。不过,当加热器接通时,LED就会发出可见亮光,从而明确指示它们已被连接并正在工作。 电路分析非常简单。22欧电阻两端的电压与RSENSE两端的电压相同。流过22欧电阻的电流与流过LED的电流相同。因此,对于图中给出的参数值,LED电流等于负载电流的0.05/22。当负载电流从200mA变化到6.6A时,LED从微弱发光变化到满亮度(受限于680欧电阻)。 如果需要,可以加入另一个带有固定电阻的LED来作比较。另外,也可以
[电源管理]
采用<font color='red'>LED显示</font>电流幅度的电路设计
提高LED显示屏散热量的七点技巧
  在实际应用中,提高LED显示屏的散热量,不仅有效提高LED显示屏散热量的效率,也可以达到节约电量的作用,更有利于提高LED显示屏使用寿命的功效。   1、风扇散热,灯壳内部用长寿高效风扇加强散热,比较常用的方法这种方法造价低、效果好。   2、利用铝散热鳍片,这是最常见的散热方式,用铝散热鳍片做为外壳的一部分来增加散热面积。   3、空气流体力学,利用灯壳外形,制造出对流空气,这是最低成本的加强散热方法。   4、表面辐射散热处理,灯壳表面做辐射散热处理,较为简单的就是涂抹辐射散热漆,可以将热量用辐射方式带离灯壳表面。   5、导热散热一体化--高导热陶瓷的运用,灯壳散热的目的是降低led高清显示屏芯片的工作温度,由
[电源管理]
LED显示屏几种常见的故障以及处理方法!
LED显示屏出现多块模组连续不亮或有异常:检查信号方向第一块不正常模组的排线和电源线是否接触良好,如模组无LED亮,则表明无电源输入,请检查电源部分,如出现花色则表明模组无信号输入,请检查第一块不正常模组的排线的输入端是否接触紧密,可多次拔插测试,如问题依旧可以调换新的排线。 LED显示屏出现单模组不亮:检查该模组的电源供应是否良好,主要是检查模组上的电源插座是否有松动。如整块模组出现颜色混乱或者色彩不一致则为信号传输排线接触不良,重新插拔排线,或者更换测试过的排线。如更换良好的排线仍有同样问题,请察看PCB板的接口是否出现问题。 LED显示屏出现单灯不亮问题检测方法:用万用表检查LED是否损坏,如果灯坏了就按下面第5项换
[测试测量]
<font color='red'>LED显示</font>屏几种常见的故障以及处理方法!
I/O并行口直接驱动LED显示实验(含电路原理图)
I/O并行口直接驱动LED显示 1. 实验任务 如图13所示,利用AT89S51单片机的P0端口的P0.0-P0.7连接到一个共阴数码管的a-h的笔段上,数码管的公共端接地。在数码管上循环显示0-9数字,时间间隔0.2秒。 2. 电路原理图 图4.7.1 3. 系统板上硬件连线 把“单片机系统”区域中的P0.0/AD0-P0.7/AD7端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个数码管的a-h端口上;要求:P0.0/AD0与a相连,P0.1/AD1与b相连,P0.2/AD2与c相连,……,P0.7/AD7与h相连。 4. 程序设计内容 (1. LED数码显示原理 七段LED显示器内部由七个条形发光二极管和一
[单片机]
I/O并行口直接驱动<font color='red'>LED显示</font>实验(含电路原理图)
基于MSP430F169的环境光自适应LED显示屏设计
本设计主要实现LED显示屏随着环境光改变其亮度,以避免白天显示不清或黑夜因太亮而炫目;并与上位机进行通信。 本系统由MSP430F169单片机、16* 32 共阳极LED 点阵显示屏、行驱动电路、列驱动电路、环境光自适应电路、数字开关调压电路、直流稳压源电路等组成。 采用按列并行发送数据,按行扫描的方式实现LED 点阵屏内容的显示; 单片机通过数字开关调压电路实现对LED 点阵屏电源电压的自动调节,使屏幕亮度随环境光自动变化。 LED 点阵显示屏在生活中是很常见的,给我们的生活带来了很多的便利。 由于LED 显示亮度不能随外界环境光而改变,存在白天显示不清或黑夜因太亮而炫目的问题。 如果能实现控制其亮度,不仅可以节省能源,还可
[单片机]
基于MSP430F169的环境光自适应<font color='red'>LED显示</font>屏设计
浅谈开关电源中的LED显示屏设计
LED用开关电源属于电网电源供电的、额定电压不超过600V的单路输出式交流-直流外部电源,而室外用的LED开关电源比室内用的环境更严酷,所以选室外用的LED开关电源作为研究的重点,更具代表性。   LED显示屏的研究采用屏幕为8×8的点阵显示,侧重于动态处理方法,由于显示屏幕的局限性,在此次的研究设计中只能显示英文和数字。一个基本的LED屏幕由8行×8列点共64个LED组成,显示屏有共阴和共阳两种连接方式。   设计思路   对由8×8点阵构成的LED显示屏而言,一般数据端连接微处理器的8位并行数据口,而选通端则逐一使能(选通),选择需要点亮的某一列,通过分时复用方式实现动态显示效果。选通方式一般有两种:独立选通和译码选通。
[模拟电子]
浅谈开关电源中的<font color='red'>LED显示</font>屏设计
智能化和监控成LED显示屏未来发展方向
    虽然目前的电子显示屏需求已经接近饱和状态,但是随着显示屏新品的研发,以及新的需求市场和应用环境的突破,这将会给国内LED显示屏市场带去新的机遇。有机遇就有挑战,随着行业竞争的加剧,未来显示屏市场一方面还将会继续保持增长的趋势,但是另一方面也会加剧一些中小LED显示屏厂家的转型或者淘汰。     从目前国内LED电子显示屏行业的竞争层面看,国内行业的竞争还处在产品竞争层面的早期,竞争关键指标主要体现在:价格、品质、交付期、售后服务等几个方面,现阶段LED显示屏价格成为竞争的主要指标。     2012年LED显示屏价格继续下降,同比去年降幅在15%-20%。LED显示屏价格持续下降的深层原因在于,拥有实力的大厂商希望
[安防电子]
基于CH451芯片的LED显示系统的设计
0 引言 LED点阵显示是集微电子技术、计算机技术、信息处理于一体的新型显示方式。由于其具有寿命长、动态范围广、工作稳定可靠、低功耗和快速的时间响应等优点,成为众多显示媒体中的佼佼者,是户外作业显示理想的选择。用CH451芯片驱动LED点阵有以下特点:速度快,功耗小,动态显示扫描控制,直接驱动64位LED点阵,可以软件控制LED的亮度,以减小功耗。CH451可以通过1线或者可以级联的4线串行接口与单片机等控制器交换数据。CH451的串行接口是由硬件实现的,控制器可以频繁地通过串行接口进行高速操作,而绝对不会降低CH451的工作效率。用它设计的电路,不仅软硬件设计简单,而且功耗低,响应速度快,驱动能力强,占用的I/O口线较少,
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved