




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、. . . . C8051F410單片機(jī)程序/-#include <c8051f410.h> / SFR declarations#include <intrins.h>#include <stdio.h>#define uint unsigned int #define uchar unsigned charsbit Trig=P07;sbit Echo=P06;sbit lcden=P24;sbit lcdrs=P25;sbit sdi=P26;sbit clk=P27;unsigned long s;bit flag =0;unsigned char
2、code table1=" Ce De Jv Li is "unsigned char code table2="Chao Chu fan Wei"unsigned char code table3="JingQue:"unsigned char table8;/-/ Function PROTOTYPES/-void PORT_Init (void);void Oscillator_Init();void write_595(unsigned char da);void lcd_init(void);void write_(unsi
3、gned char );void write_data(unsigned char da);void delay(unsigned int z);void delaym(uchar i);void delaym(uchar i) while(i-);/-/ MAIN Routine/-void main() uchar num; PCA0MD &= 0x40;/禁止看門狗 PORT_Init (); Oscillator_Init();/時(shí)鐘初始化 lcd_init(); while(1) TMOD=0x01;/EA=1;/IE=0x80; /開啟總中斷 /TR0=0; TH0=0;
4、TL0=0;/ET0=1; /允許T0中斷 /IE=0x80; /開啟總中斷 Trig=1; delaym(200); Trig=0;while(!Echo); TR0=1; /開啟計(jì)數(shù) while(Echo);/當(dāng)RX為1計(jì)數(shù)并等待 TR0=0;/關(guān)閉計(jì)數(shù) s=(TH0*256+TL0)*0.17*4;table0=s/1000+0x30;table1=(s%1000)/100+0x30;table2=(s%100)/10+0x30;table3='.'table4=s%10+0x30;table5='c'table6='m'table7=
5、39;*' if(s>=7000|flag=1|s<5) /超出測量圍 write_(0x80+0x40);for(num=0;num<17;num+)write_data(table2num);delay(10); else write_(0x80+0x48); for(num=0;num<8;num+) write_data(tablenum); delay(10); write_(0x80+0x40); for(num=0;num<8;num+) write_data(table3num); delay(10); delay(1000); /*函數(shù)名
6、稱:void PORT_Init(void)功能描述:初始化I/O輸入:無輸出:無全局變量:XBR1調(diào)用模塊:無*/void PORT_Init (void) P2MDOUT = 0xC0; XBR1= 0x40; /*使能交叉開關(guān)和弱上拉*/*函數(shù)名稱:void Oscillator_Init()功能描述:初始化Oscillator,時(shí)鐘為片時(shí)鐘八分頻3.0625Mhz輸入:無輸出:無全局變量:無調(diào)用模塊:無*/void Oscillator_Init()OSCICN = 0x84;/ 系統(tǒng)時(shí)鐘初始化為片時(shí)鐘的8分頻,3.0625Mhz/*函數(shù)名稱:void write_595(unsign
7、ed char da)功能描述:使用MC74HC595AD將串行數(shù)據(jù)轉(zhuǎn)化為八位并行數(shù)據(jù)輸出輸入:da輸出:無全局變量:無調(diào)用模塊:無備注:使用時(shí)鐘頻率為系統(tǒng)時(shí)鐘初始化為片時(shí)鐘的8分頻,3.0625Mhz*/void write_595(unsigned char da)int i;for(i=0;i<8;i+)/先送高位,再送低位clk=0;da=_crol_(da,1);sdi=da&0x01;clk=1;clk=0;_nop_();clk=1;/*函數(shù)名稱:void lcd_init(void)功能描述:1602液晶初始化輸入:無輸出:無全局變量:無調(diào)用模塊:write_()
8、備注:無*/void lcd_init(void) uchar num;lcden=0;write_(0x38);write_(0x0C);write_(0x06);write_(0x01);write_(0x80);for(num=0;num<17;num+)write_data(table1num);delay(5);/*函數(shù)名稱:void write_(unsigned char )功能描述:1602液晶寫指令輸入:輸出:無全局變量:無調(diào)用模塊:write_595()備注:無*/void write_(unsigned char )lcdrs=0;write_595();delay
9、(15);lcden=1;delay(15);lcden=0;/*函數(shù)名稱:void write_data(unsigned char da)功能描述:1602液晶寫數(shù)據(jù)輸入:command輸出:無全局變量:無調(diào)用模塊:write_595()備注:無*/void write_data(unsigned char da)lcdrs=1;write_595(da);delay(15);lcden=1;delay(15);lcden=0;/*函數(shù)名稱:void delay(unsigned int z)功能描述:延時(shí)函數(shù)2Mhz時(shí)鐘下延時(shí)1ms輸入:z輸出:無全局變量:無調(diào)用模塊:無備注:無*/vo
10、id delay(unsigned int z) unsigned int ii,jj; for(ii=0;ii<z;ii+) for(jj=0;jj<180;jj+) _nop_(); void zd0() interrupt 1 /T0中斷用來計(jì)數(shù)器溢出,超過測距圍 flag=1; /中斷溢出標(biāo)志Echo=0;89c51或52#include <reg52.h>/器件配置文件#include <intrins.h>#include <stdio.h>sbit Rcho=P36;sbit Trig=P37;sbit LCM_RW=P25 ; /
11、定義LCD引腳sbit LCM_RS=P26;sbit LCM_E=P27;#define LCM_Data P0sbit Key_Data=P31; /定義Keyboard引腳sbit Key_CLK=P32;#define Busy 0x80 /用于檢測LCM狀態(tài)字中的Busy標(biāo)識(shí)void LCMInit(void); /LCD初始化函數(shù)void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData);/LCD顯示一個(gè)字符函數(shù)void DisplayListChar(unsigned char X, uns
12、igned char Y, unsigned char code *DData);/LCD顯示一個(gè)字符串函數(shù)void Delay5Ms(void); /延時(shí)5毫秒函數(shù)void Delay400Ms(void); /延時(shí)400毫秒函數(shù)void Decode(unsigned char ScanCode);void WriteDataLCM(unsigned char WDLCM); /LCD1602寫數(shù)據(jù)函數(shù)void WriteCommandLCM(unsigned char WCLCM,BuysC); /LCD寫命令函數(shù)/unsigned char ReadDataLCM(void);unsi
13、gned char ReadStatusLCM(void);unsigned char code Range =" Wang Li Yong" unsigned char code ASCII13 = "0123456789.-M"unsigned char code table="Jv Li = 000.0 cm"unsigned char code table1="Chao Chu fan Wei"/static unsigned char DisNum = 0; /顯示用指針 unsigned int tim
14、e=0;unsigned long S=0;bit flag =0;unsigned char disbuff4= 0,0,0,0,;/寫數(shù)據(jù)void WriteDataLCM(unsigned char WDLCM) ReadStatusLCM(); /檢測忙LCM_Data = WDLCM;LCM_RS = 1;LCM_RW = 0;LCM_E = 0; /若晶振速度太高可以在這后加小的延時(shí)LCM_E = 0; /延時(shí)LCM_E = 1;/寫指令void WriteCommandLCM(unsigned char WCLCM,BuysC) /BuysC為0時(shí)忽略忙檢測if (BuysC)
15、ReadStatusLCM(); /根據(jù)需要檢測忙LCM_Data = WCLCM;LCM_RS = 0;LCM_RW = 0;LCM_E = 0;LCM_E = 0;LCM_E = 1;/讀數(shù)據(jù)/*unsigned char ReadDataLCM(void)LCM_RS = 1; LCM_RW = 1;LCM_E = 0;LCM_E = 0;LCM_E = 1;return(LCM_Data);*/讀狀態(tài)unsigned char ReadStatusLCM(void)LCM_Data = 0xFF; LCM_RS = 0;LCM_RW = 1;LCM_E = 0;LCM_E = 0;LC
16、M_E = 1;while (LCM_Data & Busy); /檢測忙信號(hào)return(LCM_Data);void LCMInit(void) /LCM初始化LCM_Data = 0;WriteCommandLCM(0x38,0); /三次顯示模式設(shè)置,不檢測忙信號(hào)Delay5Ms(); WriteCommandLCM(0x38,0);Delay5Ms(); WriteCommandLCM(0x38,0);Delay5Ms(); WriteCommandLCM(0x38,1); /顯示模式設(shè)置,開始要求每次檢測忙信號(hào)WriteCommandLCM(0x08,1); /關(guān)閉顯示W(wǎng)r
17、iteCommandLCM(0x01,1); /顯示清屏WriteCommandLCM(0x06,1); / 顯示光標(biāo)移動(dòng)設(shè)置WriteCommandLCM(0x0c,1); / 顯示開與光標(biāo)設(shè)置/按指定位置顯示一個(gè)字符void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)Y &= 0x1;X &= 0xF; /限制X不能大于15,Y不能大于1if (Y) X |= 0x40; /當(dāng)要顯示第二行時(shí)地址碼+0x40;X |= 0x80; /算出指令碼WriteCommandLCM(X,
18、1); /發(fā)命令字WriteDataLCM(DData); /發(fā)數(shù)據(jù)/按指定位置顯示一串字符void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData)unsigned char ListLength; ListLength = 0;Y &= 0x1;X &= 0xF; /限制X不能大于15,Y不能大于1while (DDataListLength>0x19) /若到達(dá)字串尾則退出if (X <= 0xF) /X坐標(biāo)應(yīng)小于0xFDisplayOneChar(X, Y
19、, DDataListLength); /顯示單個(gè)字符ListLength+;X+;/5ms延時(shí)void Delay5Ms(void)unsigned int TempCyc = 5552;while(TempCyc-);/400ms延時(shí)void Delay400Ms(void)unsigned char TempCycA = 5;unsigned int TempCycB;while(TempCycA-)TempCycB=7269;while(TempCycB-);/*/ void Conut(void) time=TH0*256+TL0; TH0=0; TL0=0; S=(time*1.7
20、)/10; /算出來是MM if(S>=7000)|flag=1) /超出測量圍 flag=0; DisplayListChar(0, 1, table1); else disbuff0=S%10; disbuff1=S/10%10; disbuff2=S/100%10; disbuff3=S/1000; DisplayListChar(0, 1, table); DisplayOneChar(9, 1, ASCIIdisbuff3); DisplayOneChar(10, 1, ASCIIdisbuff2); DisplayOneChar(11, 1, ASCIIdisbuff1); DisplayOneChar(12, 1, ASCII10); DisplayOneChar(13, 1, ASCIIdisbuff0); /*/ void zd0() interrupt 1 /T0中斷用來計(jì)數(shù)器溢出,超過測距圍 flag=1; /中斷溢出標(biāo)志Rcho=0; /*/ void StartModule() /啟動(dòng)模塊 Trig=1; /啟動(dòng)一次模塊 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 光伏融資租賃協(xié)議合同范本
- 會(huì)員推廣合同范本
- 單位廚房用人合同范例
- 加盟合同范本在
- 產(chǎn)銷合作協(xié)議合同范本
- 水泥買賣的合同范本
- 包工簡易合同范本
- 個(gè)人店員合同范本
- 高級(jí)包間服務(wù)合同范本
- 中標(biāo)檢測儀器合同范本
- 鋼筋工工藝與實(shí)習(xí)(第二版)課件匯總?cè)珪娮咏贪竿暾嬲n件最全幻燈片(最新)課件電子教案幻燈片
- 煤礦從業(yè)人員考試題庫全答案(word版)
- 洞頂回填技術(shù)交底
- 最簡易的帕累托圖制作方法簡介PPT通用課件
- 城市軌道交通應(yīng)急處理課程標(biāo)準(zhǔn)
- 第18課 罐和壺(一)
- 初二下分式混合計(jì)算練習(xí)1(附答案)
- (完整版)振幅調(diào)制與解調(diào)習(xí)題及其解答
- 抗震支架施工安裝合同
- JJG 657-2019 呼出氣體酒精含量檢測儀 檢定規(guī)程(高清版)
- 政法書記在全縣公安工作會(huì)議上的講話
評(píng)論
0/150
提交評(píng)論