




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、C8051F410單片機程序/ -#include / SFR聲明#include #include #定義uint無符號整數(shù)#定義uchar無符號字符sbit trig=p07;sbit echo=p06;sbit lcden=p24;sbit lcdrs=p25;sbit sdi=p26;sbit clk=p27;無符號長s;位標志= 0;無符號char代碼table 1= Ce De Jv Li is ;無符號char code table2= 朝楚范偉;無符號字符代碼table 3= Jing que:;無符號字符表8;/ -/函數(shù)原型/ -void PORT _ Init(void)
2、;void Oscillator _ Init();void write_595(無符號char da);void LCD _ init(void);void write_(無符號字符);void write_data(無符號char da);無效延遲(無符號整數(shù)z);void delay m(uchar I);無效延遲(uchar i)while(I-);/ -/主例程/ -void main()uchar編號;PCA0MD & = 0 x40/禁止看門狗PORT _ Init();振蕩器_初始化();/時鐘初始化LCD _ init();while(1)TMOD = 0 x 01;/EA
3、= 1;/IE = 0 x 80;/打開總中斷/TR0 = 0;TH0 = 0;TL0 = 0;/ET0 = 1;/允許T0中斷/IE = 0 x 80;/打開總中斷trig = 1;德萊姆(200);trig = 0;而(!回聲);TR0 = 1;/打開計數(shù)while(回聲);/當RX為1時計數(shù)并等待TR0 = 0;/關閉計數(shù)s =(TH0 * 256+TL0)* 0.17 * 4;表0= s/1000+0 x 30;table1=(s % 1000)/100+0 x 30;table2=(s % 100)/10+0 x 30;表3= . ;表4= s % 10+0 x 30;表5= c ;
4、表6= m ;表7= * ;如果(s=7000|flag=1|s5) /超出測量范圍write _(0 x 80+0 x 40);for(num = 0;num 17num+)write _ data(table 2num);延遲(10);其他write _(0 x 80+0 x 48);for(num = 0;num 8;num+)write _ data(tablenum);延遲(10);write _(0 x 80+0 x 40);for(num = 0;num 8;num+)write _ data(table 3num);延遲(10);延時(1000);/*函數(shù)名:void PORT
5、_Init(void)功能描述:輸入輸出初始化輸入:沒有輸出:沒有全局變量:XBR1調用模塊:沒有*/void PORT_Init (void)P2MDOUT = 0 xC0XBR1 = 0 x40/*縱橫開關和弱上拉功能已啟用*/*函數(shù)名:void Oscillator_Init()功能描述:初始化振蕩器,時鐘被芯片時鐘的8分頻至3.0625Mhz輸入:沒有輸出:沒有全局變量:沒有調用模塊:沒有*/void振蕩器_Init()OSCICN = 0 x84/系統(tǒng)時鐘初始化為芯片時鐘的8分頻,即3.0625Mhz/*函數(shù)名:void write_595(無符號字符da)功能描述:MC74HC59
6、5AD用于將串行數(shù)據(jù)轉換為8位并行數(shù)據(jù)輸出?;剀?da輸出:沒有全局變量:沒有調用模塊:沒有備注:使用時鐘頻率將系統(tǒng)時鐘初始化為芯片時鐘的8分頻,即3.0625Mhz*/void write_595(無符號字符da)int I;for(I = 0;I 8;+)/先發(fā)送高位,再發(fā)送低位。clk = 0;da=_crol_(da,1);sdi = da & 0 x01clk = 1;clk = 0;_ nop _();clk = 1;/*函數(shù)名:void lcd_init(void)描述:1602 LCD初始化輸入:沒有輸出:沒有全局變量:沒有調用模塊:write_()備注:沒有*/void lc
7、d_init(void)uchar編號;LC den = 0;write _(0 x 38);write _(0 x0C);write _(0 x 06);write _(0 x 01);write _(0 x 80);for(num = 0;num 17num+)write _ data(table 1num);延遲(5);/*函數(shù)名:void write_(無符號字符)描述:1602液晶書寫說明輸入:輸出:沒有全局變量:沒有調用模塊:write_595()備注:沒有*/void write_(無符號字符)LCD RS = 0;write _ 595();延遲(15);LC den = 1;
8、延遲(15);LC den = 0;/*函數(shù)名:void write_data(無符號字符da)描述:1602液晶寫數(shù)據(jù)?;剀?命令輸出:沒有全局變量:沒有調用模塊:write_595()備注:沒有*/void write_data(無符號字符da)LCD RS = 1;write _ 595(da);延遲(15);LC den = 1;延遲(15);LC den = 0;/*函數(shù)名:void delay(無符號整數(shù)z)功能描述:延時功能2Mhz,時鐘下延時1ms回車:z輸出:沒有全局變量:沒有調用模塊:沒有備注:沒有*/無效延遲(無符號整數(shù)z)無符號int ii,jj;for(ii = 0;
9、ii z;ii+)for(jj = 0;jj 180jj+)_ nop _();Voizd0()中斷1/t0中斷用于使計數(shù)器溢出,超出量程范圍。flag = 1;/中斷溢出標志回聲= 0;89c51或52#include /設備配置文件#include #include sbit rcho=p36;sbit trig=p37;sbit lcm_rw=p25;/定義LCD引腳sbit lcm_rs=p26;sbit lcm_e=p27;#定義LCM_Data P0sbit key_data=p31;/定義鍵盤pinsbit key_clk=p32;#定義Busy 0 x80 /用于檢測LCM狀態(tài)
10、字中的Busy IDvoid LCM init(void);/LCD初始化功能void DisplayOneChar(無符號char X,無符號char Y,無符號char DData);/LCD顯示字符功能。void DisplayListChar(無符號char X,無符號char Y,無符號char code * DData);/LCD顯示一個字符串函數(shù)。void delay 5 ms(void);/延時5ms功能void Delay400Ms(無效);/延時400 ms功能無效解碼(無符號字符掃描碼);void WriteDataLCM(無符號字符wd LCM);/LCD1602寫數(shù)據(jù)
11、功能void writecommandcm(unsigned char wcl cm,BuysC);/LCD寫命令功能/無符號char read datalcm(void);無符號char ReadStatusLCM(void);無符號字符代碼范圍 = 王立勇;無符號字符代碼ASCII13 = 0123456789。-M ;無符號字符代碼表= Jv Li = 000.0cm ;無符號char代碼table1= 朝楚范偉;/靜態(tài)無符號char DisNum = 0;/用于顯示的指針無符號int time = 0;無符號長S = 0;位標志= 0;unsigned char disbuff4= 0
12、,0,0,0,;/寫入數(shù)據(jù)void WriteDataLCM(無符號字符WDLCM)ReadStatusLCM();/檢測繁忙LCM _ Data = WDLCMLCM _ RS = 1;LCM _ RW = 0;LCM _ E = 0;/如果晶體振蕩器速度太高,可以在此之后添加一個小延遲。LCM _ E = 0;/延遲LCM _ E = 1;/寫指令voidwritecommandcm(unsigned char wcl cm,buysc)/當buysc為0時,忽略繁忙檢測。if(BuysC)ReadStatusLCM();/根據(jù)需要檢測忙LCM _ Data = WCLCMLCM _ RS
13、 = 0;LCM _ RW = 0;LCM _ E = 0;LCM _ E = 0;LCM _ E = 1;/讀取數(shù)據(jù)/*無符號字符ReadDataLCM(void)LCM _ RS = 1;LCM _ RW = 1;LCM _ E = 0;LCM _ E = 0;LCM _ E = 1;return(LCM _ Data);*/讀取狀態(tài)無符號字符ReadStatusLCM(void)LCM _ Data = 0 xFFLCM _ RS = 0;LCM _ RW = 1;LCM _ E = 0;LCM _ E = 0;LCM _ E = 1;while(LCM _ Data & Busy);/
14、檢測占線信號return(LCM _ Data);Void LCMInit(void) /LCM初始化LCM _ Data = 0;writecommandcm(0 x 38,0);/顯示模式設置三次,沒有檢測到占線信號。delay 5 ms();writecommandcm(0 x 38,0);delay 5 ms();writecommandcm(0 x 38,0);delay 5 ms();writecommandcm(0 x 38,1);/設置顯示模式,每次開始詢問忙信號檢測。writecommandcm(0 x 08,1);/關閉顯示器writecommandcm(0 x 01,1)
15、;/顯示清晰的屏幕writecommandcm(0 x 06,1);/顯示光標移動設置writecommandcm(0 x0c,1);/顯示打開和光標設置/在指定位置顯示字符void DisplayOneChar(無符號字符X,無符號字符Y,無符號字符DData)Y & = 0 x1X & = 0 xF/限制X不能大于15,Y不能大于1if(Y)X | = 0 x 40;/要顯示第二行時地址碼+0 x 40;X | = 0 x80/計算腳本writecommandcm(X,1);/發(fā)送一個命令字writedatalacm(DData);/發(fā)送數(shù)據(jù)/在指定位置顯示字符串void DisplayL
16、istChar(無符號字符X,無符號字符Y,無符號字符代碼*DData)無符號字符列表長度;list length = 0;Y & = 0 x1X & = 0 xF/限制X不能大于15,Y不能大于1while(ddatalist length 0 x 19)/到達字符串末尾時退出。If (X =7000)|flag=1) /超出測量范圍flag = 0;DisplayListChar(0,1,table 1);其他disbuff0= S % 10;disbuff1= S/10% 10;disbuff2= S/100% 10;disbuff3= S/1000;DisplayListChar(0,
17、1,table);DisplayOneChar(9,1,ASCIIdisbuff3);DisplayOneChar(10,1,ASCIIdisbuff2);DisplayOneChar(11,1,ASCIIdisbuff1);DisplayOneChar(12,1,ASCII10);DisplayOneChar(13,1,ASCIIdisbuff0);/*/Voizd0()中斷1/t0中斷用于使計數(shù)器溢出,超出量程范圍。flag = 1;/中斷溢出標志rcho = 0;/*/Void StartModule() /啟動模塊trig = 1;/啟動模塊一次。_ nop _();_ nop _()
18、;_ nop _();_ nop _();_ nop _();_ nop _();_ nop _();_ nop _();_ nop _();_ nop _();_ nop _();_ nop _();_ nop _();_ nop _();_ nop _();_ nop _();/*_ nop _();_ nop _();_ nop _();_ nop _();_ nop _();*/trig = 0;/*/*void延遲符號(無符號整數(shù)毫秒)無符號字符i=100,j;for(;ms;ms -)while( - i)j = 10while(-j);*/void計時器計數(shù)(void)TR0 = 1;/打開計數(shù)while(Rcho);/當RX為1時計數(shù)并等待TR0 = 0;/關閉計數(shù)conut();/計算/*/無效總管(無效)無符號int valAdelay 400 ms();/開始等待,等待LCM工作。LCM init();/LCM初始化delay 5 ms();/延遲片刻DisplayListChar(0,0,Range);
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 建筑裝飾施工中的質量保證措施考核試卷
- 中藥材種植的農業(yè)生態(tài)環(huán)境保護法制建設考核試卷
- 批發(fā)業(yè)務會計與財務管理考核試卷
- 文化空間營造考核試卷
- 體育運動訓練中的運動康復技術考核試卷
- 體育航空運動飛行器空中交通管制操作考核試卷
- 寵物友好郵輪旅行船上寵物友好娛樂活動策劃分享考核試卷
- 走路的安全課件
- 勞動合同補充合同范本
- 綠化租賃合同范本
- 筋膜刀的臨床應用
- DB32-T 4790-2024建筑施工特種作業(yè)人員安全操作技能考核標準
- 2022年安徽阜陽太和縣人民醫(yī)院本科及以上學歷招聘筆試歷年典型考題及考點剖析附帶答案詳解
- 2024-2030年中國反芻動物飼料行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略分析報告
- 護理團體標準解讀-成人氧氣吸入療法護理
- 幼兒園大班《識字卡》課件
- 2024-2030全球與中國寵物醫(yī)院市場現(xiàn)狀及未來發(fā)展趨勢
- 《研學旅行課程設計》課件-2認識研學旅行的參與方
- 安全警示教育的會議記錄內容
- 夫妻異地辭職信
- 2024年度-銀行不良清收技巧培訓課件(學員版)
評論
0/150
提交評論