根据设计4个超声波传感器检测倒车距离并采用TFT屏幕显示,不同距离显示字体颜色改变。
程序如下:
#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
上一篇:基于DS1307的可调实时时钟系统设计
下一篇:单片机浴室报警器程序
推荐阅读
史海拾趣





XC6406PP60DL






京公网安备 11010802033920号