|
|
nbctft.c:320x240TFT驅(qū)動(dòng)程序,控制TFT實(shí)現(xiàn)漢字,字符顯示,畫點(diǎ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型號(hào)
- //**************聲明外部函數(shù)和變量********************
- extern void delayms(unsigned int count);
- //extern unsigned int HC_SR04_Distance;
- unsigned char i;
- void main(void)
- {
- Device_code=0x9328; //TFT控制IC型號(hào)
- 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);
- }
- }
復(fù)制代碼
單片機(jī)源程序如下:
- #include"reg52.h"
- #include"DELAY.h"
- #include"HC-SR04.h"
- sbit HC_SR04_Trig=P3^3;// 超聲波模塊 輸入端口 用來輸入啟動(dòng)信號(hào)
- sbit HC_SR04_Echo=P3^2;// 超聲波模塊 輸出端口 用來聲波信號(hào)返回
- unsigned char HC_SR04_GetsFlag=0; // 超聲波模塊 才完成標(biāo)志位
- unsigned char HC_SR04_TimeL=0; // 超聲波模塊 定時(shí)器低位
- unsigned char HC_SR04_TimeH=0; // 超聲波模塊 定時(shí)器高位
- //unsigned int HC_SR04_Distance;
- void HC_SR04_Init(void)
- {
- HC_SR04_Trig=0; // 拉低信號(hào)
- // 配置INT0外部中斷
- IT0=1; // 設(shè)置 下降沿觸發(fā)
- EX0=1;
- PX0=1;
- // 配置T0定時(shí)器
- TMOD = 0x10; // 模式1
- ET1=1;
- TL1=0; // 清除初始化時(shí)間TL
- TH1=0; // 清除初始化時(shí)間TH
- TR1=1; // 開啟定時(shí)器
- EA=1; // 打開 總中斷 開關(guān)
- }
- unsigned int HC_SR04_Gets(void)
- {
- unsigned int HC_SR04_Distance = 0;
- //--------------------------------------------------------
- // 發(fā)送超聲波啟動(dòng)信號(hào)
- //--------------------------------------------------------
- EX0=0; // 關(guān)閉外部中斷0,外部中斷捕獲起始信號(hào)
- ET1=0; // 關(guān)閉定時(shí)中斷1,定時(shí)器計(jì)算時(shí)間長度
-
- HC_SR04_Trig=1; // 拉高信號(hào)
- DELAY_nUS(20); // 20us啟動(dòng)時(shí)間
- HC_SR04_Trig=0; // 拉低信號(hào),此過程為發(fā)送超聲波操作
-
- //--------------------------------------------------------
- // 若Echo未拉高 說明采集未開始
- //--------------------------------------------------------
- while(HC_SR04_Echo==0);
- HC_SR04_GetsFlag=0;
-
- //--------------------------------------------------------
- // 若拉高 說明采集開始,配置各個(gè)寄存器
- //--------------------------------------------------------
- EX0=1; // 打開外部中斷0,外部中斷捕獲起始信號(hào),注意修改
- ET1=1; // 打開定時(shí)中斷1,定時(shí)器計(jì)算時(shí)間長度,注意修改
-
- TL1=0; // 清除初始化時(shí)間TL
- TH1=0; // 清除初始化時(shí)間TH
- TF1=0; // 清除溢出標(biāo)志位
- TR1=1; // 開啟定時(shí)器
-
- //--------------------------------------------------------
- // 若拉高 說明采集開始
- //--------------------------------------------------------
- DELAY_nMS(20); // 20ms等待時(shí)間
- EX0=0; // 關(guān)閉外部中斷
- TR1=0; // 關(guān)閉定時(shí)器
- ET1=0; // 打開定時(shí)中斷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
- {
- ……………………
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
http://www.raoushi.com/bbs/dpj-97776-1.html
|
|