91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

超聲波測距+LCD顯示+蜂鳴器報警的代碼,沒有工程; P2^0接蜂鳴器,P1^4和P1^5接超聲波傳感器,P0接LCD;

資源截圖

代碼片段和文件信息

#include?“lcd.h“

void?Lcd1602_Delay1ms(uint?c)???//延時1ms,誤差?0us,該函數是在12MHZ晶振下,12分頻單片機的延時。
{
????uchar?ab;
for?(;?c>0;?c--)
{
?for?(b=199;b>0;b--)
?{
for(a=1;a>0;a--);
?}??????
}
????
}

//向LCD寫入一個字節的命令
#ifndef?LCD1602_4PINS//當沒有定義這個LCD1602_4PINS時
void?LcdWriteCom(uchar?com)//寫入命令
{
LCD1602_E?=?0;//使能
LCD1602_RS?=?0;//選擇發送命令
LCD1602_RW?=?0;//選擇寫入

LCD1602_DATAPINS?=?com;//放入命令
Lcd1602_Delay1ms(1);//等待數據穩定

LCD1602_E?=?1;//寫入時序
Lcd1602_Delay1ms(5);//保持時間
LCD1602_E?=?0;
}
#else?
void?LcdWriteCom(uchar?com)//寫入命令
{
LCD1602_E?=?0;//使能清零
LCD1602_RS?=?0;//選擇寫入命令
LCD1602_RW?=?0;//選擇寫入

LCD1602_DATAPINS?=?com;//由于4位的接線是接到P0口的高四位,所以傳送高四位不用改
Lcd1602_Delay1ms(1);

LCD1602_E?=?1;//寫入時序
Lcd1602_Delay1ms(5);
LCD1602_E?=?0;

LCD1602_DATAPINS?=?com?< Lcd1602_Delay1ms(1);

LCD1602_E?=?1;//寫入時序
Lcd1602_Delay1ms(5);
LCD1602_E?=?0;
}
#endif

//向LCD寫入一個字節的數據
#ifndef? LCD1602_4PINS ???
void?LcdWriteData(uchar?dat)//寫入數據
{
LCD1602_E?=?0;//使能清零
LCD1602_RS?=?1;//選擇輸入數據
LCD1602_RW?=?0;//選擇寫入

LCD1602_DATAPINS?=?dat;//寫入數據
Lcd1602_Delay1ms(1);

LCD1602_E?=?1;//寫入時序
Lcd1602_Delay1ms(10);//保持時間
LCD1602_E?=?0;
}
#else
void?LcdWriteData(uchar?dat)//寫入數據
{
LCD1602_E?=?0;//使能清零
LCD1602_RS?=?1;//選擇寫入數據
LCD1602_RW?=?0;//選擇寫入

LCD1602_DATAPINS?=?dat;//由于4位的接線是接到P0口的高四位,所以傳送高四位不用改
Lcd1602_Delay1ms(1);

LCD1602_E?=?1;//寫入時序
Lcd1602_Delay1ms(5);
LCD1602_E?=?0;

LCD1602_DATAPINS?=?dat?< Lcd1602_Delay1ms(1);

LCD1602_E?=?1;//寫入時序
Lcd1602_Delay1ms(5);
LCD1602_E?=?0;
}
#endif

//初始化LCD屏 ???
#ifndef LCD1602_4PINS
void?LcdInit()//LCD初始化子程序
{
LcdWriteCom(0x38);//開顯示
LcdWriteCom(0x0c);//開顯示不顯示光標
LcdWriteCom(0x06);//寫一個指針加1
LcdWriteCom(0x01);//清屏
LcdWriteCom(0x80);//設置數據指針起點
}
#else
void?LcdInit()//LCD初始化子程序
{
LcdWriteCom(0x32);//將8位總線轉為4位總線
LcdWriteCom(0x28);//在四位線下的初始化
LcdWriteCom(0x0c);//開顯示不顯示光標
LcdWriteCom(0x06);//寫一個指針加1
LcdWriteCom(0x01);//清屏
LcdWriteCom(0x80);//設置數據指針起點
}
#endif


void?LcdSetCursor(uchar?xuchar?y)//坐標顯示
{
????uchar?addr;
????if(y?==?0)
????????addr?=?0x00?+?x;
????else
????????addr?=?0x40?+?x;
????
????LcdWriteCom(addr|0x80);
}

//按指定位置顯示一個字符
void?DisplayOneChar(uchar?X?uchar?Y?uchar?DData)
{
Y?&=?0x1;
X?&=?0xF;//限制X不能大于15,Y不能大于1
if?(Y)?X?|=?0x40;//當要顯示第二行時地址碼+0x40;
X?|=?0x80;//算出指令碼
LcdWriteCom(X);//發命令字
LcdWriteData(DData);//發數據
}


void?LcdShowStr(uchar?xuchar?yuchar?*str)//顯示字符串
{
????LcdSetCursor(xy);//當前字符的坐標
????while(*str?!=?‘\0‘)
????{
????????LcdWriteData(*str++);
????}
}


?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件???????3102??2019-12-23?19:10??lcd.c

?????文件???????1195??2019-12-24?01:27??lcd.h

?????文件???????4752??2019-12-24?23:07??main.c

?????文件???????2985??2019-12-23?19:14??postion.c

-----------?---------??----------?-----??----

????????????????12034????????????????????4


評論

共有 條評論