历史上的今天

今天是:2025年08月17日(星期日)

2020年08月17日 | 基于51单片机倒车雷达设计(超声波,TFT屏)

发布者:yanfeng00 来源: 51hei关键字:51单片机  倒车雷达  超声波  TFT屏 手机看文章 扫描二维码
随时随地手机看文章

根据设计4个超声波传感器检测倒车距离并采用TFT屏幕显示,不同距离显示字体颜色改变。
51hei.png?imageView2/2/w/550
程序如下:

#include

#include

#include

#include

#include

#include



sbit TX = P2^1;

sbit RX = P2^0;



unsigned char dspflag;

unsigned char cnt;

unsigned char tflag;



void display(unsigned int d);

void init_t(void);



void Pulse()

{

        unsigned char i;

        for (i =0 ;i<10; ++i) {

                _nop_();

                _nop_();

                _nop_();

                _nop_();

                _nop_();

                _nop_();

                _nop_();

                _nop_();

                _nop_();

//                _nop_();                 //延时,调整发射频



                TX = ~TX;

        }

        

}

unsigned int sonic()

{

        unsigned int n;

        RX=1;

        TR1=0;

        TH1=TL1=0;

        Pulse();

        TR1=1;

        TF1=0;

        for(n=0;n<160;n++);                        // 排出相邻干扰

        while( RX ==1 && TF1 == 0 ) ;

        TR1=0;

        if ( TF1 ) {

                n=9999;

        }else{

                n=(TH1<<8)+TL1;

                n=(unsigned int) ( n*0.017);//0.018446);           //   0.017*12/11.0592

        }

        return n;

}



//测试硬件平台:STC12C5A60S2/STC12LE5A60S2

//主频:12MHZ

//单片机IO推挽输出设置定义

#define USE_LANDSCAPE//测试程序横竖屏切换,横屏请开启此宏,竖屏请屏蔽

#define MCU_STC12//如果您使用的单片机不是STC12系列(如STC89C52)请屏蔽此宏定义

#ifdef MCU_STC12

sfr P3M1  = 0xB1;        //P3M1.n,P3M0.n         =00--->Standard,        01--->push-pull

sfr P3M0  = 0xB2;        //                                        =10--->pure input,        11--->open drain

sfr P1M1  = 0x91;

sfr P1M0  = 0x92;

#endif





//---------------------------液晶屏接线说明-------------------------------------//

//接线前请参考液晶屏说明书第10页引脚定义

sbit bl        =P1^5;//接模块BL引脚,背光可以采用IO控制或者PWM控制,也可以直接接到高电平常亮

sbit scl       =P1^0;//接模块CLK引脚,接裸屏Pin9_SCL

sbit sda       =P1^1;//接模块DIN/MOSI引脚,接裸屏Pin8_SDA

sbit rs        =P1^2;//接模块D/C引脚,接裸屏Pin7_A0

sbit cs        =P1^4;//接模块CE引脚,接裸屏Pin12_CS

sbit reset     =P1^3;//接模块RST引脚,接裸屏Pin6_RES

//---------------------------End of液晶屏接线---------------------------------//



//定义常用颜色

#define RED                  0xf800

#define GREEN                0x07e0

#define BLUE                 0x001f

#define WHITE                0xffff

#define BLACK                0x0000

#define YELLOW  0xFFE0

#define GRAY0   0xEF7D   

#define GRAY1   0x8410              

#define GRAY2   0x4208

  



void  Contrast_Adjust();



code  typFNT_GBK16 hz16[];



void Output_Pixel(uint x,uint y);





void delay1us(uint x)    //     12.000MHz??

{

          while(x--)                     //     x*1 us

          {

              _nop_();

              _nop_();

              _nop_();

              _nop_();

           }

}



void delay_ms(uint time)

{

uint i,j;

  for(i=0;i   for(j=0;j<250;j++);

}





//向SPI总线传输一个8位数据

void  SPI_WriteData(uchar Data)

{

        unsigned char i=0;

        for(i=8;i>0;i--)

        {

                if(Data&0x80)        

                sda=1; //输出数据

                else sda=0;

                scl=0;

                scl=1;

                Data<<=1;

        }

}

//向液晶屏写一个8位指令

void  Lcd_WriteIndex(uchar Data)

{

               

                cs=0;

                rs=0;

                SPI_WriteData(Data);                 

                cs=1;

}

//向液晶屏写一个8位数据

void  Lcd_WriteData(uchar Data)

{        

                unsigned char i=0;

                cs=0;

                rs=1;

                SPI_WriteData(Data);         

                cs=1;

}

//向液晶屏写一个16位数据

void  LCD_WriteData_16Bit(unsigned int Data)

{

        unsigned char i=0;

        cs=0;

        rs=1;

        SPI_WriteData(Data>>8);         //写入高8位数据

        SPI_WriteData(Data);                         //写入低8位数据

        cs=1;



}



void Reset()

{

    reset=0;

    delay_ms(100);

    reset=1;

    delay_ms(100);

}

//////////////////////////////////////////////////////////////////////////////////////////////

//液晶屏初始化 for S6D02A1

void lcd_initial()

{        Reset();//Reset before LCD Init.

               

        //LCD Init For 1.44Inch LCD Panel with ST7735R.

        Lcd_WriteIndex(0x11);//Sleep exit

        delay_ms (120);

               

        //ST7735R Frame Rate

        Lcd_WriteIndex(0xB1);

        Lcd_WriteData(0x01);

        Lcd_WriteData(0x2C);

        Lcd_WriteData(0x2D);



        Lcd_WriteIndex(0xB2);

        Lcd_WriteData(0x01);

        Lcd_WriteData(0x2C);

        Lcd_WriteData(0x2D);



        Lcd_WriteIndex(0xB3);

        Lcd_WriteData(0x01);

        Lcd_WriteData(0x2C);

        Lcd_WriteData(0x2D);

        Lcd_WriteData(0x01);

        Lcd_WriteData(0x2C);

        Lcd_WriteData(0x2D);

        

        Lcd_WriteIndex(0xB4); //Column inversion

        Lcd_WriteData(0x07);

        

        //ST7735R Power Sequence

        Lcd_WriteIndex(0xC0);

        Lcd_WriteData(0xA2);

        Lcd_WriteData(0x02);

        Lcd_WriteData(0x84);

        Lcd_WriteIndex(0xC1);

        Lcd_WriteData(0xC5);



        Lcd_WriteIndex(0xC2);

        Lcd_WriteData(0x0A);

        Lcd_WriteData(0x00);



        Lcd_WriteIndex(0xC3);

        Lcd_WriteData(0x8A);

        Lcd_WriteData(0x2A);

        Lcd_WriteIndex(0xC4);

        Lcd_WriteData(0x8A);

        Lcd_WriteData(0xEE);

        

        Lcd_WriteIndex(0xC5); //VCOM

        Lcd_WriteData(0x0E);

        

        Lcd_WriteIndex(0x36); //MX, MY, RGB mode

Lcd_WriteData(0xC0);         

#ifdef USE_LANDSCAPE

        Lcd_WriteData(0xA8); //竖屏C8 横屏08 A8

#else

        Lcd_WriteData(0xC8); //竖屏C8 横屏08 A8

#endif               

        //ST7735R Gamma Sequence

        Lcd_WriteIndex(0xe0);

        Lcd_WriteData(0x0f);

        Lcd_WriteData(0x1a);

        Lcd_WriteData(0x0f);

        Lcd_WriteData(0x18);

        Lcd_WriteData(0x2f);

        Lcd_WriteData(0x28);

        Lcd_WriteData(0x20);

[1] [2] [3] [4]
关键字:51单片机  倒车雷达  超声波  TFT屏 引用地址:基于51单片机倒车雷达设计(超声波,TFT屏)

上一篇:基于DS1307的可调实时时钟系统设计
下一篇:单片机浴室报警器程序

推荐阅读

纽约创业者兼加密货币投资者迈克尔·特品(Michael Terpin)周三起诉美国电信运营商AT&T,指控其欺诈并存在重大过失,导致他的个人账户中的数字加密货币丢失。特品希望索赔2.24亿美元。 这份69页的起诉书提交给美国洛杉矶地方法院,特品在其中表示,他的数字货币在2018年1月7日通过针对其手机账号的“数字身份盗窃”展开的。他在起诉书中表示,AT&T是他...
北京国望光学科技有限公司增资项目在北京产权交易所完成。通过此次增资,国望光学引入中国科学院长春光学精密机械与物理研究所(简称“长春光机所”)和中国科学院上海光学精密机械研究所(简称:上海光机所)作为战略投资者,两家机构以无形资产作价10亿元入股。据北京商报报道,这意味着亦庄在推动国产光刻机核心部件研发和生产方面迈出实质性步伐。本次...
据PatentlyApple报道,日前美国专利商标局发布了苹果公司的一项延续专利申请,该专利涉及用于自动驾驶汽车的VR头戴式耳机,该耳机旨在为驾驶员提供娱乐、工作、虚拟会议等体验。 苹果在专利文件中指出,汽车的窗户是不安全的,并且增加了成本。通过提供真实环境或模拟环境的虚拟视...
1. 需求分析使用220-9V的电源适配器进行供电输出2-5V可调,并且可以监控输出电流带oled屏幕显示电压电流等信息带MCU主控可做通信或测试功能使用2. 硬件设计2.1 硬件选型及原理图设计MCU部分原理图设计如下,主要参考的是我之前买的一个STM32F103的一个核心板提供的原理图,主要部分有USB接口、9.6英寸OLED屏幕接口(SPI通信)、SWD及UART接口、按键及指...

史海拾趣

小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved