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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4789|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

proteus仿真msp430,實現(xiàn)一個按鍵矩陣掃描和UART發(fā)送

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:429971 發(fā)表于 2019-4-5 10:14 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
功能概述:
       實現(xiàn)一個4x4按鍵矩陣,通過按鍵掃描,當(dāng)有按鍵按下時,識別按鍵值,并通過UART串口發(fā)送,同時在lcd1602顯示。

功能實現(xiàn):
1.    按鍵掃描
  1. void keyboardScan(){
  2.   P1OUT = 0xef;//P1.4 = 0
  3.   if((P1IN & 0x0f) != 0x0f){
  4.     delay_ms8M(5);//消抖
  5.     if((P1IN & 0x0f) != 0x0f){
  6.       if((P1IN & 0x01) == 0){ keyValue = '3';while((P1IN & 0x01) == 0);};
  7.       if((P1IN & 0x02) == 0){ keyValue = '7';while((P1IN & 0x02) == 0);};
  8.       if((P1IN & 0x04) == 0){ keyValue = 'B';while((P1IN & 0x04) == 0);};
  9.       if((P1IN & 0x08) == 0){ keyValue = 'F';while((P1IN & 0x08) == 0);};
  10.       keyboard_envent = ~keyboard_envent;
  11.     }
  12.   }
  13.   P1OUT = 0xdf;//P1.5 = 0
  14.   if((P1IN & 0x0f) != 0x0f){
  15.     delay_ms8M(5);//消抖
  16.     if((P1IN & 0x0f) != 0x0f){
  17.       if((P1IN & 0x01) == 0){ keyValue = '2';while((P1IN & 0x01) == 0);};
  18.       if((P1IN & 0x02) == 0){ keyValue = '6';while((P1IN & 0x02) == 0);};
  19.       if((P1IN & 0x04) == 0){ keyValue = 'A';while((P1IN & 0x04) == 0);};
  20.       if((P1IN & 0x08) == 0){ keyValue = 'E';while((P1IN & 0x08) == 0);};
  21.       keyboard_envent = ~keyboard_envent;
  22.     }
  23.   }
  24.   P1OUT = 0xbf;//P1.6 = 0
  25.   if((P1IN & 0x0f) != 0x0f){
  26.     delay_ms8M(5);//消抖
  27.     if((P1IN & 0x0f) != 0x0f){
  28.       if((P1IN & 0x01) == 0){ keyValue = '1';while((P1IN & 0x01) == 0);};
  29.       if((P1IN & 0x02) == 0){ keyValue = '5';while((P1IN & 0x02) == 0);};
  30.       if((P1IN & 0x04) == 0){ keyValue = '9';while((P1IN & 0x04) == 0);};
  31.       if((P1IN & 0x08) == 0){ keyValue = 'D';while((P1IN & 0x08) == 0);};
  32.       keyboard_envent = ~keyboard_envent;
  33.     }
  34.   }
  35.   P1OUT = 0x7f;//P1.7 = 0
  36.   if((P1IN & 0x0f) != 0x0f){
  37.     delay_ms8M(5);//消抖
  38.     if((P1IN & 0x0f) != 0x0f){
  39.       if((P1IN & 0x01) == 0){ keyValue = '0';while((P1IN & 0x01) == 0);};
  40.       if((P1IN & 0x02) == 0){ keyValue = '4';while((P1IN & 0x02) == 0);};
  41.       if((P1IN & 0x04) == 0){ keyValue = '8';while((P1IN & 0x04) == 0);};
  42.       if((P1IN & 0x08) == 0){ keyValue = 'C';while((P1IN & 0x08) == 0);};
  43.       keyboard_envent = ~keyboard_envent;
  44.     }
  45. <div>  }</div><div>}</div>
復(fù)制代碼


2.    UART初始化
  1. void uartInit(){
  2.   DCOCTL = 0;                              
  3.   BCSCTL1 = CALBC1_1MHZ;                    // 選擇1MHZ作為波特率發(fā)生器輸入時鐘頻率
  4.   DCOCTL = CALDCO_1MHZ;
  5.   
  6.   P3SEL = 0X30;         // P3.4 TX    P3.5 RX
  7.   UCA0CTL1 |= UCSSEL_2;//clk = SMCLK 輔助時鐘   select clock source
  8.   UCA0BR0 = 104;       // 1MHZ / 9600 = 104.17
  9.   UCA0BR1 = 0;         // baud rate 9600
  10.   UCA0MCTL = UCBRS0;//波特率調(diào)整  0.17 * 8 = 1.36 取整 1
  11.   
  12.   UCA0CTL1 &= ~UCSWRST;              // 初始化USCI,復(fù)位釋放,結(jié)束初始化
  13. }
復(fù)制代碼


3.    LCD1602初始化
  1. void lcd1602Init(){
  2.   P3DIR |= BIT0 + BIT1 + BIT2;
  3.   dataout;
  4.   rst_en;
  5.   P1DIR = 0X70;

  6.   write_com(0x38);//8 bit data, doule line, 5x7 point matrix
  7.   write_com(0x0c);//open display, close cusor,close blink
  8.   write_com(0x06);//auto move to next char after write or read
  9.   write_com(0x01);//clear screen
  10. }
復(fù)制代碼


      
實現(xiàn)過程中遇到的問題:
1.    按鍵按下后會連續(xù)不斷的發(fā)送,就算以很快的速度按下還是會發(fā)送兩次。
解決辦法:等待按鍵放開。
2.    Proteus虛擬終端關(guān)閉后再也打不開。
解決辦法:感覺這是一個bug,只能重新建一個項目。

仿真圖.jpg (140.32 KB, 下載次數(shù): 188)

仿真圖.jpg
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:345368 發(fā)表于 2019-5-7 21:37 | 只看該作者
IAR和proteus文件夾里是空的
回復(fù)

使用道具 舉報

板凳
ID:429971 發(fā)表于 2019-5-8 14:29 | 只看該作者
jaedong 發(fā)表于 2019-5-7 21:37
IAR和proteus文件夾里是空的

不是吧,我傳的時候是有的,要不你留一個郵箱我發(fā)給你吧

回復(fù)

使用道具 舉報

地板
ID:304785 發(fā)表于 2020-6-18 22:00 | 只看該作者
這不是一個bug,你只要點擊菜單欄debug-》virtual儀器,就可以重新打開。
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美日韩视频 | 97国产精品视频人人做人人爱 | 亚洲精品一区二区在线观看 | 日韩视频国产 | 性欧美hd| 99久久精品国产一区二区三区 | 中文字幕成人免费视频 | 日韩男人天堂 | 亚洲日韩中文字幕一区 | 成人性生交大免费 | 网站黄色在线免费观看 | 欧美午夜视频 | 欧美舔穴 | 国产欧美日韩综合精品一区二区 | 国产成人福利视频在线观看 | 久久久久久亚洲 | 91av免费看 | 欧美成人精品二区三区99精品 | 欧美中文字幕 | 精精国产xxxx视频在线播放 | 中文字幕视频在线观看 | 国产精品视频999 | 亚洲精品欧美精品 | 日日草天天干 | 一级做a | 热99在线 | 日一区二区 | 日韩精品一区二区三区中文字幕 | 亚洲一区二区三区福利 | www.久草.com | 色综合视频| ww亚洲ww亚在线观看 | 久久男人 | 亚洲精品一区中文字幕乱码 | 亚洲成人综合在线 | 女女百合av大片一区二区三区九县 | 伊久在线| 欧美一区二区在线 | 日韩欧美精品 | 91高清免费| 91精品麻豆日日躁夜夜躁 |