和hc-sr04超声波模块测距c语言程序.doc
DEFINEUCHARUNSIGNEDCHARDEFINEUINTUNSIGNEDINT/TRIG超声波传感器控制端,ECHO超声波传感器接收端。/SBITTRIGP24SBITECHOP32/LCD_RS为1602液晶数据命令选择,LCD_EN为1602液晶使能端,LCD_RW为1602液晶读写控制端。/SBITLCD_RSP25SBITLCD_RWP26SBITLCD_ENP27INCLUDEINCLUDEINCLUDE“ZNCCSB1H“VOIDINIT//函数初始化VOIDLCD_INIT//LCD的初始化VOIDLCD_WRITE_DATEUCHARDATE//LCD的写数据函数VOIDLCD_WRITE_COMUCHARCOM//LCD的写指令函数VOIDDELAYUINT//延时函数VOIDDEV_DELAY//读写延时函数VOIDDISTANCE_DISPLAY//LCD的显示函数UCHARCODENUM{ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , M }UCHARCODEWARNING{“MEASUREMENTERROR“}UCHART0_COUT,DISPLAY_FLAGUINTT0_TIMEVOIDMAIN{DELAY1500INITWHILE1{TRIG1DELAY20TRIG0WHILEECHO0TR01WHILEECHO1//TR00WHILEDISPLAY_FLAG0WHILEDISPLAY_FLAG1{DISPLAY_FLAG0LCD_INITDISTANCE_DISPLAYDELAY1500}}}VOIDDEV_DELAY{_NOP__NOP__NOP__NOP_}VOIDDELAYUINTTIME{UCHARXUINTYFORYTIMEY0YFORX220X0X}VOIDLCD_WRITE_COMUCHARCOM{LCD_EN0LCD_RS0LCD_RW0P0COMDEV_DELAYLCD_EN1DELAY1LCD_EN0DEV_DELAY}VOIDLCD_WRITE_DATEUCHARDATE{LCD_RS1LCD_RW0LCD_EN0P0DATEDEV_DELAYLCD_EN1DELAY1LCD_EN0DEV_DELAY}VOIDLCD_INIT{LCD_WRITE_COM0X38LCD_WRITE_COM0X0CLCD_WRITE_COM0X06LCD_WRITE_COM0X01}VOIDINIT{LCD_INITTMOD0X01TH00TL00EA1//总中断开启ET01//T0中断开启EX01//外部中断0IT01//下降沿触发TR00T0_TIME0T0_COUT0TRIG0ECHO0DISPLAY_FLAG0}VOIDTIME0INTERRUPT1{TH00TL00T0_COUT}VOIDINT0INTERRUPT0{TR00T0_TIMETH0256TL0DISPLAY_FLAG1TH00TL00T0_COUT0}VOIDDISTANCE_DISPLAY{UCHARI,GE,SHI,BAI,QIANUINTDISTANCE//T0_TIMET0_COUT65536TH0256TL0//TH00//TL00//T0_COUT0DISTANCET0_TIME017//距离为毫米T0_TIME0IFDISTANCE4000BAIDISTANCE1000/100SHIDISTANCE100/10GEDISTANCE10/1DISTANCE0LCD_WRITE_DATENUMQIANLCD_WRITE_DATENUMBAILCD_WRITE_DATENUMSHILCD_WRITE_DATENUMGELCD_WRITE_DATENUM10LCD_WRITE_DATENUM10}ELSE{FORI0I18I{LCD_WRITE_DATEWARNINGI}DISTANCE0}}