0.png (12.72 KB, 下載次數(shù): 48)
下載附件
2017-11-7 03:36 上傳
nbctft.c:320x240TFT驅(qū)動程序,控制TFT實現(xiàn)漢字,字符顯示,畫點功能
超聲波測距主程序:
- #include"reg52.h"
- #include"DELAY.h"
- #include"NBCTFT.h"
- #include"HC-SR04.h"
- #define White 0xFFFF //LCD color
- #define Black 0x0000
- #define Blue 0x001F
- #define Blue2 0x051F
- #define Red 0xF800
- #define Magenta 0xF81F
- #define Green 0x07E0
- #define Cyan 0x7FFF
- #define Yellow 0xFFE0
- unsigned int Device_code; //TFT控制IC型號
- //**************聲明外部函數(shù)和變量********************
- extern void delayms(unsigned int count);
- //extern unsigned int HC_SR04_Distance;
- unsigned char i;
- void main(void)
- {
- Device_code=0x9328; //TFT控制IC型號
- TFT_Initial(); //初始化LCD
- HC_SR04_Init(); //初始化超聲波
- Show_RGB(0,239,0,319,Yellow);
- while(1)
- {
- //DELAY_nMS(30);
- LCD_PutChar(0,0,HC_SR04_Gets()/1000 %10+'0',Black,Yellow);
- LCD_PutChar(8,0,HC_SR04_Gets()/100 %10+'0',Black,Yellow);
- LCD_PutChar(16,0,HC_SR04_Gets()/10 %10+'0',Black,Yellow);
- LCD_PutChar(24,0,HC_SR04_Gets()/1 %10+'0',Black,Yellow);
- }
- }
復制代碼
單片機源程序如下:
- #include"reg52.h"
- #include"DELAY.h"
- #include"HC-SR04.h"
- sbit HC_SR04_Trig=P3^3;// 超聲波模塊 輸入端口 用來輸入啟動信號
- sbit HC_SR04_Echo=P3^2;// 超聲波模塊 輸出端口 用來聲波信號返回
- unsigned char HC_SR04_GetsFlag=0; // 超聲波模塊 才完成標志位
- unsigned char HC_SR04_TimeL=0; // 超聲波模塊 定時器低位
- unsigned char HC_SR04_TimeH=0; // 超聲波模塊 定時器高位
- //unsigned int HC_SR04_Distance;
- void HC_SR04_Init(void)
- {
- HC_SR04_Trig=0; // 拉低信號
- // 配置INT0外部中斷
- IT0=1; // 設置 下降沿觸發(fā)
- EX0=1;
- PX0=1;
- // 配置T0定時器
- TMOD = 0x10; // 模式1
- ET1=1;
- TL1=0; // 清除初始化時間TL
- TH1=0; // 清除初始化時間TH
- TR1=1; // 開啟定時器
- EA=1; // 打開 總中斷 開關
- }
- unsigned int HC_SR04_Gets(void)
- {
- unsigned int HC_SR04_Distance = 0;
- //--------------------------------------------------------
- // 發(fā)送超聲波啟動信號
- //--------------------------------------------------------
- EX0=0; // 關閉外部中斷0,外部中斷捕獲起始信號
- ET1=0; // 關閉定時中斷1,定時器計算時間長度
-
- HC_SR04_Trig=1; // 拉高信號
- DELAY_nUS(20); // 20us啟動時間
- HC_SR04_Trig=0; // 拉低信號,此過程為發(fā)送超聲波操作
-
- //--------------------------------------------------------
- // 若Echo未拉高 說明采集未開始
- //--------------------------------------------------------
- while(HC_SR04_Echo==0);
- HC_SR04_GetsFlag=0;
-
- //--------------------------------------------------------
- // 若拉高 說明采集開始,配置各個寄存器
- //--------------------------------------------------------
- EX0=1; // 打開外部中斷0,外部中斷捕獲起始信號,注意修改
- ET1=1; // 打開定時中斷1,定時器計算時間長度,注意修改
-
- TL1=0; // 清除初始化時間TL
- TH1=0; // 清除初始化時間TH
- TF1=0; // 清除溢出標志位
- TR1=1; // 開啟定時器
-
- //--------------------------------------------------------
- // 若拉高 說明采集開始
- //--------------------------------------------------------
- DELAY_nMS(20); // 20ms等待時間
- EX0=0; // 關閉外部中斷
- TR1=0; // 關閉定時器
- ET1=0; // 打開定時中斷1
- //--------------------------------------------------------
- // 判斷是否成功
- //--------------------------------------------------------
- if(HC_SR04_GetsFlag==1)
- {
- HC_SR04_Distance=HC_SR04_TimeH*256+HC_SR04_TimeL;
- HC_SR04_Distance=(float)(HC_SR04_Distance)*0.172; // 厘米
- }
- return HC_SR04_Distance;
- }
- void HC_SR04_EXT_IRQHandler(void) interrupt 0
- {
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
http://www.zg4o1577.cn/bbs/dpj-97776-1.html
|