本實驗使用 :
Cypress CY8CKIT-049-42xx 開發粄 X 1
40字元 X2 行 LCM X 1
超音波感測器 HC-SR04 X 1
軟體環境 PSoC Creator 3.3
開啟 PSoC Creator 3.3
File --> New --> Project..
選擇 Target device --> PSoC4200 -->Next
選擇 Empty schematic 用空白線路圖 -->Next
選擇新的工作區,填入工作區名稱,選哲存放位置,填入專案名稱
預設就是一張空白線路圖.
要顯示距離在LCM上需要一個LCM驅動,右邊零件區 Display -> Character LCD 將這零件拉進線路圖中.
在右下角有這顆零件的Datasheet.
點兩下這個LCD_Char_1零件,將Name 改成 LCD_Char , LCD Custom Character Set 改成 Horizontal Bargraph -->OK.
超音波測距需要一個Timer Counter , 在右邊零件區 Digital --> Functions --> Timer Counter 將這零件拉進線路圖中.
點兩下這個 Timer_1 零件,將 Name 改成 Timer.
點選 Timer/Counter 將 Run mode : 改成 One shot ,
勾選 On compare/capture count, rolad
勾選 Rising edge, start 勾選 Rising edge, stop
勾選 Falling edge, capture 勾選 Falling edge.
Timer 需要一個 Clock ,在右邊零件區 System --> Clock 將這零件拉進線路圖中.
點兩下這個 Clock_1 零件,將 Frequency 改成 1Mhz,Tolerance改成 -2% +2%.
Timer 觸發後需要一個 中斷控制器 ,在右邊零件區 System -->Interrupt 將這零件拉進線路圖中.
點兩下這個 isr_1 零件,將 Name 改成 ISR.
超音波模組需要兩個信號接腳 Trig & Echo , Trig是通知超音波模組開始發送信號,Echo是超音波模組回報收到回音.
需要一輸出接腳接到超音波模組的Trig,右邊零件區 Ports & Pin -> Digital Output Pin 將這零件拉進線路圖中.
點兩下這個 Pin_1 零件,將 Name 改成 Trig,HW connection 不勾選.
需要一輸入接腳接到超音波模組的Echo,右邊零件區 Ports & Pin -> Digital Input Pin 將這零件拉進線路圖中.
點兩下這個 Pin_1 零件,將 Name 改成 Echo.
CY8CKIT-049-42xx 上有一個LED,可用來指示超音波偵測時同步點亮,確認程式運作正常
需要一輸出接腳接到 Y8CKIT-049-42xx LED,右邊零件區 Ports & Pin -> Digital Output Pin 將這零件拉進線路圖中.
點兩下這個 Pin_1 零件,將 Name 改成 LED,HW connection 不勾選. 勾選 External terminal
再來就需佈線,按 "w" 鍵 開始佈線,滑鼠在 + 形狀時點一下要接線的第一點拉到第二點再點一下,完成後如圖
滑鼠點兩下左上角的 Ultrasonic.cydwr 配置IC實際對外輸出腳位
點選右上角 port 會列出可用的Pin,綠色為可選用.
選好後中間IC圖示會標註目前指定Pin腳的功能
點選左邊 main.c 開始寫程式.
//以下為 main.c 內容
#include <project.h>
// 初始化設定
int16 i =0;
int distance=0;
// 中斷設定
CY_ISR(Timer_ISR_handler)
{
// 計時器 1Mhz 一個脈衝=1uS
Timer_ClearInterrupt(Timer_INTR_MASK_CC_MATCH);
i= Timer_ReadCounter();
// 超音波each回信號 58 uS = 1 cm
distance =i/58;
}
int main()
{
// 啟動計時器
Timer_Start();
// 啟動中斷
CyGlobalIntEnable;
ISR_StartEx(Timer_ISR_handler);
// 啟動 LCD
LCD_Char_Start();
LCD_Char_DisplayOn();
for(;;)
{
CyDelay(500); // 延遲500ms
// 啟動超音波
Trig_Write(1);
LED_Write(1);
CyDelayUs(10); //延遲10us
Trig_Write(0);
LED_Write(0);
LCD_Char_ClearDisplay();
LCD_Char_Position(0,0);
LCD_Char_PrintString("CY8CKIT-049-42xx UltraSonic");
LCD_Char_Position(1,0);
LCD_Char_PrintString("Distance: ");
LCD_Char_Position(1,10);
LCD_Char_PrintNumber(distance);
LCD_Char_Position(1,14);
LCD_Char_PrintString("cm");
LCD_Char_Position(1,25);
LCD_Char_PrintString("Story Chen");
}
}
/* [] END OF FILE */
滑鼠點Debug Program 或 快速鍵 Ctrl + F5 開始編譯燒錄
沒錯誤就可看到成果了
沒有留言:
張貼留言