找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3285|回复: 1
打印 上一主题 下一主题
收起左侧

msp430f149单片机+4*4键盘+1602程序

[复制链接]
跳转到指定楼层
楼主
调试好的msp430f149接4*4键盘代码

单片机源程序如下:

  1. #include "msp430x14x.h"
  2. #include "1602.h"
  3. #define  uchar unsigned char
  4. #define  uint unsigned int
  5. #define  key_DIR P5DIR
  6. #define  key_OUT P5OUT
  7. #define  key_IN  P5IN
  8. uchar keymap[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
  9. uchar i,j;
  10. uchar checkkey(void)
  11. {
  12.     return(key_IN^0xf0);
  13. }
  14. uchar getkeyvalue(void)
  15. {
  16.     uchar hang,lie,temp1,temp2;
  17.     uchar key_val;
  18.     temp1=0x08;
  19.     for(hang=0;hang<4;hang++)
  20.     {
  21.        key_OUT=0x0f;
  22.        key_OUT=~temp1;
  23.        temp1 >>=1;
  24.        if((key_IN&0xf0)!=0xf0)
  25.        {
  26.           temp2=0x10;
  27.           for(lie=0;lie<4;lie++)
  28.           {
  29.              if((key_IN & temp2) == 0x00)
  30.              {
  31.                  key_val=keymap[hang*4+lie];
  32.                  break;
  33.              }
  34.              temp2<<=1;
  35.           }
  36.        }
  37.     }
  38.     return(key_val);
  39. }
  40. int main( void )
  41. {
  42.   // Stop watchdog timer to prevent time out reset
  43.   WDTCTL = WDTPW + WDTHOLD;
  44.   uchar t,keyvalue;
  45.   LcdReset();
  46.   key_DIR=0x0f;
  47.   while(1)
  48.   {
  49.       key_OUT=0x00;
  50.       Delay5ms();
  51.       t=checkkey();
  52.       if(t)
  53.       {
  54.          keyvalue=getkeyvalue();
  55.       switch(keyvalue)
  56.       {
  57.         case 0:LcdReset();i=0;break;
  58.         case 1:Disp1Char(0,0,'1');j=1;break;
  59.         case 2:Disp1Char(2,0,'2');j=2;break;
  60.         case 3:Disp1Char(3,0,'3');j=3;break;
  61.         case 4:Disp1Char(4,0,'4');j=4;break;
  62.         case 5:Disp1Char(5,0,'5');j=5;break;
  63.         case 6:Disp1Char(6,0,'6');j=6;break;
  64.         case 7:Disp1Char(7,0,'7');j=7;break;
  65.         case 8:Disp1Char(8,0,'8');j=8;break;
  66.         case 9:Disp1Char(9,0,'9');j=9;break;
  67.         case 10:Disp1Char(10,0,'A');i=10;break;
  68.         case 11:Disp1Char(11,0,'B');i=11;break;
  69.         case 12:Disp1Char(12,0,'C');i=12;break;
  70.         case 13:Disp1Char(13,0,'D');i=13;break;
  71.         case 14:Disp1Char(14,0,'E');i=14;break;
  72.         case 15:Disp1Char(15,0,'F');i=15;break;
  73.         
  74.       }
  75.       }
  76.   }
  77.   //return 0;
  78. }
复制代码

所有程序51hei提供下载:
矩阵键盘.zip (153.83 KB, 下载次数: 44)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:915919 发表于 2021-5-13 16:05 | 只看该作者
你好,请问这里面包括preteus仿真吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表