找回密码
 立即注册

QQ登录

只需一步,快速开始

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

MSP430F149单片机按键控制+1602lcd显示程序

[复制链接]
跳转到指定楼层
楼主
ID:756753 发表于 2022-4-27 17:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
单片机源程序如下:
  1. /********************************************************************
  2. //DM430-L型最小系统板4位独立按键测试程序,采用查询模式,键值显示到1602液晶
  3. //按四个按键S1到S4,分别对应1,2,3,4
  4. //调试环境:EW430 V5.30
  5. ********************************************************************/
  6. #include <msp430x14x.h>
  7. #include "Config.h"
  8. #include "1602.c"

  9. uchar key;

  10. //*************************************************************************
  11. //        初始化按键IO口子程序
  12. //*************************************************************************
  13. void KeyPort_init()
  14. {

  15.   P1SEL = 0x00;                   //P1普通IO功能
  16.   P1DIR = 0xF0;                   //P10~P13输入模式,外部电路已接上拉电阻
  17.   P6SEL = 0x00;                   //P6口普通IO功能
  18.   P6DIR = 0xFF;                   //P6口输出模式
  19. }

  20. //**********************************************************************
  21. //        键盘扫描子程序,采用逐键扫描的方式
  22. //**********************************************************************

  23. uchar Key_Scan(void)
  24. {
  25.   uchar key_check;
  26.   uchar key_checkin;
  27.   key_checkin=KeyPort;                  //读取IO口状态,判断是否有键按下
  28.   key_checkin&= 0x0F;                          //读取IO口状态,判断是否有键按下
  29.   if(key_checkin!=0x0F)                    //IO口值发生变化则表示有键按下
  30.     {
  31.       delay_ms(20);                          //键盘消抖,延时20MS
  32.       key_checkin=KeyPort;
  33.       if(key_checkin!=0x1F)
  34.         {  
  35.           key_check=KeyPort;
  36.           switch (key_check & 0x0F)
  37.             {
  38.               case 0x0E:key=1;break;
  39.               case 0x0D:key=2;break;
  40.               case 0x0B:key=3;break;
  41.               case 0x07:key=4;break;
  42.             }
  43.          
  44.         }
  45.       
  46.    }
  47.   else
  48.    {
  49.      key=0xFF;        
  50.    }
  51.   return key;
  52. }

  53. //***********************************************************************
  54. //     键值显示程序
  55. //***********************************************************************
  56. void LCD_DisplayKey(uchar keynum)
  57. {   
  58.   LCD_write_char(0x0e,1,0x30+keynum);
  59. }

  60. //*************************************************************************
  61. //                主程序
  62. //*************************************************************************

  63. void main(void)
  64. {     
  65.   WDT_Init();                         //看门狗设置
  66.   Clock_Init();                       //系统时钟设置
  67.   Port_init();                        //系统初始化,设置IO口属性
  68.   delay_ms(100);                      //延时100ms
  69.   LCD_init();                         //液晶参数初始化设置
  70.   LCD_clear();                        //清屏
  71.   LCD_Desk();
  72.   KeyPort_init();                     //按键IO口初始化,设置IO口属性
  73.   delay_ms(100);                      //延时100ms
  74.   while(1)
  75.     {
  76.       Key_Scan();                     //键盘扫描,看是否有按键按下
  77.       if(key!=0xff)                   //如果有按键按下,则显示该按键键值1~4
  78.         {
  79.           {
  80.             switch(key)
  81.               {
  82.                 case 1: LED8 = 0xFC;LCD_DisplayKey(1);break;     //给不同的键赋键值,键值1,亮2个LED灯
  83.                 case 2: LED8 = 0xF3;LCD_DisplayKey(2);break;     //给不同的键赋键值,键值2,亮2个LED灯
  84.                 case 3: LED8 = 0xCF;LCD_DisplayKey(3);break;         //给不同的键赋键值,键值3,亮2个LED灯
  85.                 case 4: LED8 = 0x3F;LCD_DisplayKey(4);break;         //给不同的键赋键值,键值4,亮2个LED灯
  86.               }

  87.           }
  88.         
  89.        }
  90.      else
  91.       {
  92.         //LED=key;                      //没有按键的时候显示上次的键值
  93.       }
  94.     }

  95. }
复制代码
代码下载: 4KEY_1602.7z (21.75 KB, 下载次数: 16)

评分

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

查看全部评分

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

使用道具 举报

沙发
ID:1034811 发表于 2022-6-15 09:16 | 只看该作者
对我很有帮助
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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