51/AVR单片机技术驿站!  <在线翻译> 淘宝店    便利工具    特色网址   打造无弹窗、无插件的绿色站点...  英才招聘   学历查询  喜欢>>收藏我站 

 首页>> 常规知识 电路图集 学习MCU 单片机文章 查器件PDF 下载中心 单片机教程 学习产品 购买联系 在线留言 RRS
当前位置:首页 > ◆本站实例 > 详细内容
4x4矩阵键盘-数码显示键值[M8515]
发布时间:2010-3-5  阅读次数:567  字体大小: 【】 【】【

/*************************************************
程序名称:4x4矩阵键盘-数码显示键值
编译环境:CVAVR / 基于AVR
单 片 机:ATmega8515
实验对象:XY900_USB型学习开放系统板
月夜听风 http://www.mcusy.cn
*************************************************/
#include <mega8515.h>
#include <delay.h>
#define duan PORTD.3 //定义段选
#define wei  PORTD.4 //定义位选
unsigned char table[]=
{0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
//--------------------------------------------------------
unsigned char Keyscan() //键盘扫描函数
{
    DDRB=0x0f; //高四位输入,低四位输出 00001111
    PORTB=0xfe; //11111110
    delay_ms(2);
    switch(PINB)
    {
        case 0xee:return 'D';
        case 0xde:return '#';
        case 0xbe:return 0 ; 
        case 0x7e:return '*';
        default:break;        
    }       
    PORTB=0xfd; //11111101
    delay_ms(2);
    switch(PINB)
    {
        case 0xed:return 'C';
        case 0xdd:return 9;
        case 0xbd:return 8;
        case 0x7d:return 7;
        default:break;        
    }       
    PORTB=0xfb; //11111011
    delay_ms(2);
    switch(PINB)
    {
        case 0xeb:return 'B';   
        case 0xdb:return 6;
        case 0xbb:return 5;
        case 0x7b:return 4;
        default:break;        
    }          
    PORTB=0xf7;//11110111
    delay_ms(2);
    switch(PINB)
    {
        case 0xe7:return 'A';
        case 0xd7:return  3;
        case 0xb7:return  2;
        case 0x77:return  1;    ;
        default:break;        
    }
    return;
}

//--------------------------------------------------------
void display(unsigned char num)
{
    DDRD=0x18;
    DDRA=0xff;
    duan=1;PORTA=table[num];duan=0;//送显示段码
    delay_ms(2);  //
    wei=1;PORTA=0X40;wei=0; //开显示位码
    delay_ms(2);   
}
//--------------------------------------------------------
void main()
{
    unsigned char num;
    while(1)
    {
    num=Keyscan() ; //键值赋予num
    if(num>=0&&num<=9) //显示0~9
    display(num);
    }
}

 

我要评论
  • 匿名发表
  • [添加到收藏夹]
  • 发表评论:(匿名发表无需登录,已登录用户可直接发表。) 登录状态:未登录
最新评论
所有评论[0]
    暂无已审核评论!

网站导航 管理登陆 ┊ 免责声明 问题反馈  友链说明
本站部分内容来自网络共享资源,如有冒犯您的权利请来信告之删除或纠正!
不得对本站进行复制、盗链或镜像,转载内容须获得同意或授权;欢迎友情链接、站务合作!

    我要报警 Alexa
 mcusy_cn#126.com (请把#改成@) 交流:479780666 522422171 86-0755-28650237
本站学习交流群:138..158(高级群1-)、77930286(高级群2)、61804809(群3)
Copyright© MCUSY All Rights Reserved
本站网警备案号: WZ36040002485
  ICP备案证书号:粤ICP备09034963号