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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9948|回復: 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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 99热久| 国产一级黄色录像 | 成人亚洲视频 | 丁香六月激情 | 一区二区三区成人 | 亚洲欧美中文字幕 | 国产色网站 | 久久久久毛片 | 一区二区三区四区在线播放 | 黄色大片在线 | 中文字幕亚洲欧美 | 亚洲成肉网 | 亚洲香蕉视频 | 中文字幕影院 | 日韩综合一区 | 一区二区三区四区国产 | 蜜臀久久99精品久久久久宅男 | 亚洲一区二区国产精品 | 青青草伊人网 | 福利小视频在线观看 | 国产黄色片网站 | 国产一区二区三区久久 | 成人免费网站在线观看 | 在线观看黄色小视频 | 欧美日本一区 | 欧美激情一区 | www.久久爱 | 黄色一级视频免费看 | xxxx色| 成年人网站在线免费观看 | 亚洲精彩视频 | 国产午夜视频在线观看 | 久久综合久 | 欧美性猛交99久久久久99按摩 | 婷婷久久五月天 | 久久国产精品免费视频 | 中国极品少妇xxxx做受 | 久久机热这里只有精品 | 亚洲小视频在线观看 | 欧美日韩精品在线 | 中文字幕在线观看免费视频 |