久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9936|回復: 0
收起左側

MSP430單片機控制LED數碼管顯示4X4矩陣鍵盤鍵值C語言程序

[復制鏈接]
ID:51773 發表于 2013-7-14 04:54 | 顯示全部樓層 |閱讀模式
MSP430F149單片機開發板矩陣鍵盤控制程序,通過數碼管顯示按鍵值,采用逐行掃描,4X4鍵盤接在P1口,通過控制IO口狀態變化,逐行掃描按鍵是否按下。調試環境:EW430 V5.30
  1. Config.h頭文件
  2. #define CPU_F ((double)8000000)
  3. #define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))
  4. #define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))

  5. #define uchar unsigned char
  6. #define uint  unsigned int
  7. #define ulong unsigned long

  8. /*當BRCLK=CPU_F時用下面的公式可以計算,否則要根據設置加入分頻系數*/
  9. #define baud           9600                                //設置波特率的大小
  10. #define baud_setting   (uint)((ulong)CPU_F/((ulong)baud))  //波特率計算公式
  11. #define baud_h         (uchar)(baud_setting>>8)            //提取高位
  12. #define baud_l         (uchar)(baud_setting)               //低位

  13. #define LED8PORT        P2OUT                   //P2接8個LED燈
  14. #define LED8SEL         P2SEL                   //P2接8個LED燈
  15. #define LED8DIR         P2DIR                   //P2接8個LED燈

  16. #define DATAPORT        P4OUT                   //數據口所在端口P4
  17. #define DATASEL         P4SEL                   //數據口功能寄存器,控制功能模式
  18. #define DATADIR         P4DIR                   //數據口方向寄存器

  19. #define CTRPORT                P6OUT                   //控制線所在的端口P6
  20. #define CTRSEL          P6SEL                   //控制口功能寄存器,控制功能模式
  21. #define CTRDIR          P6DIR                   //控制口方向寄存器

  22. #define DCTR0                P6OUT &= ~BIT4          //數碼管段控制位信號置低
  23. #define DCTR1           P6OUT |=  BIT4          //數碼管段控制位信號置高
  24. #define WCTR0                P6OUT &= ~BIT3          //數碼管位控制位信號置低
  25. #define WCTR1           P6OUT |=  BIT3          //數碼管位控制位信號置高

  26. #define KEYPORT                P1OUT                   //按鍵所在的端口P1
  27. #define KEYSEL          P1SEL                   //控制口功能寄存器,控制功能模式
  28. #define KEYDIR          P1DIR                   //控制口方向寄存器
  29. #define KEYIN           P1IN                    //鍵盤掃描判斷需要讀取IO口狀態值

  30. uchar key;                                        //鍵值變量

  31. //***********************************************************************
  32. //                        共陰數碼管顯示的斷碼表
  33. //***********************************************************************

  34. uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
  35.                0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

  36. //***********************************************************************
  37. //                   系統時鐘初始化
  38. //***********************************************************************
  39. void Clock_Init()
  40. {
  41.   uchar i;
  42.   BCSCTL1&=~XT2OFF;                 //打開XT2振蕩器
  43.   BCSCTL2|=SELM1+SELS;              //MCLK為8MHZ,SMCLK為8MHZ
  44.   do{
  45.     IFG1&=~OFIFG;                   //清楚振蕩器錯誤標志
  46.     for(i=0;i<100;i++)
  47.        _NOP();
  48.   }
  49.   while((IFG1&OFIFG)!=0);           //如果標志位1,則繼續循環等待
  50.   IFG1&=~OFIFG;
  51. }
  52. //***********************************************************************
  53. //               MSP430內部看門狗初始化
  54. //***********************************************************************
  55. void WDT_Init()
  56. {
  57.    WDTCTL = WDTPW + WDTHOLD;       //關閉看門狗
  58. }

  59. //***********************************************************************
  60. //                關閉數碼管
  61. //***********************************************************************
  62. void Close_LED()
  63. {
  64.   DATASEL  = 0x00;                      //設置IO口為普通I/O模式,此句可省
  65.   DATADIR  = 0xFF;                      //設置IO口方向為輸出
  66.   DATAPORT = 0xFF;                      //P4口初始設置為FF
  67.    
  68.   CTRSEL  =  0x00;                      //設置IO口為普通I/O模式,此句可省
  69.   CTRDIR |=  BIT3 + BIT4;               //設置IO口方向為輸出,控制口在P63,P64
  70.   CTRPORT =  0xFF;                      //P6口初始設置為FF  
  71.    
  72.   DCTR1;                                //關掉數碼管,以免顯示亂碼                  
  73.   WCTR1;                     
  74.   DATAPORT=0xFF;                        //關數碼管            
  75.   WCTR0;
  76. }
復制代碼
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲一区成人 | 国产在线小视频 | 成人精品一区亚洲午夜久久久 | 男女爱爱网站 | 久久国产高清 | 一区二区三区四区在线 | 粉嫩粉嫩芽的虎白女18在线视频 | 国产a区| 成人免费网站视频 | 日韩欧美手机在线 | 欧美寡妇偷汉性猛交 | 懂色一区二区三区免费观看 | 91啪亚洲精品 | 中文字幕在线免费观看 | 欧美a∨| 国产精品网址 | 成年人网站免费 | 日韩激情视频一区 | 91在线精品一区二区 | 欧美男人天堂 | 免费久久网| 国产亚洲精品一区二区三区 | 特级丰满少妇一级aaaa爱毛片 | 女同久久 | 亚洲精品国产一区 | 欧美精品一区二区三区四区 在线 | 午夜精品久久 | 亚洲欧美日韩在线不卡 | 亚洲国产精品人人爽夜夜爽 | 亚洲国产成人精品女人久久久 | 日韩国产一区二区三区 | 国产成人免费视频网站高清观看视频 | 国产精品高潮呻吟 | 国产精品视屏 | 欧美成人一级 | 夜夜操av | a级片网站| 国产精品欧美一区二区三区不卡 | 在线中文字幕av | 日韩欧美第一页 | 综合精品在线 |