壓力傳感器仿真程序_第1頁
壓力傳感器仿真程序_第2頁
壓力傳感器仿真程序_第3頁
壓力傳感器仿真程序_第4頁
壓力傳感器仿真程序_第5頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、# i n c l u d e <#include<intrins.h>r e g 51 h >#include <absacc.h>#include <math.h>#define uchar unsigned char#define uint unsigned int#define BUSY 0x80#define DATAPORT P0/常量定義/ADC0832的引腳sbit ADCS =P3A5;sbit ADDI =P3A7;sbit ADDO =P3A7;sbit ADCLK =P3A6;/ADC0832 chip seclect/A

2、DC0832 k in/ADC0832 k out/ADC0832 clock signalsbit LCM_RS=P2A0;sbit LCM_RW=P2A1;sbit LCM_EN=P2A2;uchar ad_data;sbit Alarm_led_red =P1A5;定義sbit Alarm_led_green=P1A6;警定義/adc采樣值存儲(chǔ)單元char press_data;unsigned char ad_alarm;unsigned char press_bai=0;unsigned char press_shi=0;unsigned char press_ge=0;unsign

3、ed char press_dot=0;uchar code str0="Press:. kpa "uchar code strl口=" Check BY Jack "/采樣值存儲(chǔ)/超過壓力表量程最大值紅色led報(bào)警/低于壓力表量程最小值綠色led報(bào)/標(biāo)度變換存儲(chǔ)單元/報(bào)警值存儲(chǔ)單元/顯示值百位/顯示值十位/顯示值個(gè)位/顯示值十分位void delay(uint);void lcd_wait(void);void delay_LCM(uint);延時(shí)子程序void initLCM( void);初始化子程序void lcd_wait(void);/LCD

4、/LCD/LCD檢測(cè)忙子程序void WriteCommandLCM(uchar WCLCM,uchar BusyC);指令到ICM子函數(shù)void WriteDataLCM(uchar WDLCM);數(shù)據(jù)到LCM子函數(shù)void DisplayOneChar(uchar X,uchar Y,uchar DData);坐標(biāo)的一個(gè)字符子函數(shù)void DisplayListChar(uchar X,uchar Y,uchar code *DData);/標(biāo)的一串字符子函數(shù)void display(void);顯示子函數(shù)uchar Adc0832(unsigned char channel);void

5、alarm(void);void data_pro(void);/寫/寫/顯示指定顯示指定坐/系統(tǒng)/*main funcation*/void main(void)delay(500);/ ad_data=0;initLCM();WriteCommandLCM(0x01,1);DisplayListChar(0,0,str0);DisplayListChar(0,1,str1);/系統(tǒng)延時(shí)500ms啟動(dòng)/采樣值存儲(chǔ)單元初始化為0/清顯示屏while(1)ad_data =Adc0832(0);/采樣值存儲(chǔ)單元初始化為 0alarm();data_pro();display。;,*延時(shí) K*1m

6、s,12.000mhz*/void delay(uint k) uint i,j;for(i=0;i<k;i+)for(j=0;j<60;j+);/*寫指令到ICM子函數(shù)*/void WriteCommandLCM(uchar WCLCM,uchar BusyC)if(BusyC)lcd_wait();DATAPORT=WCLCM;LCM_RS=0;/選中指令寄存器LCM_RW=0;/ 寫模式LCM_EN=1;_nop_();_nop_();_nop_();LCM_EN=0;/*寫數(shù)據(jù)到LCM子函數(shù)*/void WriteDataLCM(uchar WDLCM) /檢測(cè)忙信號(hào)lcd

7、_wait();DATAPORT=WDLCM;LCM_RS=1;LCM_RW=0;LCM_EN=1;_nop_();_nop_();_nop_();LCM_EN=0;/選中數(shù)據(jù)寄存器/寫模式/*lcm內(nèi)部等待函數(shù) */ void lcd_wait(void)DATAPORT=0xff; 讀LCD前若單片機(jī)輸出低電平,而讀出LCD為高電平,則沖 突,Proteus仿真會(huì)有顯示邏輯黃色LCM_EN=1;LCM_RS=0;LCM_RW=1;_nop_();_nop_();_nop_();while(DATAPORT&BUSY) LCM_EN=0;_nop_();_nop_();LCM_EN=

8、1;_nop_();_nop_(); LCM_EN=0;/*LCM初始化子函數(shù)*/void initLCM() DATAPORT=0;delay(15);WriteCommandLCM(0x38,0); /三次顯示模式設(shè)置,不檢測(cè)忙信號(hào)delay(5);WriteCommandLCM(0x38,0);delay(5);WriteCommandLCM(0x38,0);delay(5);WriteCommandLCM(0x38,1);/8bit數(shù)據(jù)傳送,2行顯示,5*7字型,檢測(cè)忙信號(hào)WriteCommandLCM(0x08,1);/關(guān)閉顯示,檢測(cè)忙信號(hào)WriteCommandLCM(0x01,1

9、);/清屏,檢測(cè)忙信號(hào)WriteCommandLCM(0x06,1);/顯示光標(biāo)右移設(shè)置,檢測(cè)忙信號(hào)WriteCommandLCM(0x0c,1);/顯示屏打開,光標(biāo)不顯示,不閃爍,檢測(cè)忙信號(hào)/*顯示指定坐標(biāo)的一個(gè)字符子函數(shù) */void DisplayOneChar(uchar X,uchar Y,uchar DData)Y&=1;X&=15;if(Y)X|=0x40;X|=0x80;WriteCommandLCM(X,0);WriteDataLCM(DData);若y為1 (顯示第二行),地址碼+0X40/指令碼為地址碼+0X80/*顯示指定坐標(biāo)的一串字符子函數(shù)*/void

10、 DisplayListChar(uchar X,uchar Y,uchar code *DData) uchar ListLength=0;Y&=0x01;X&=0x0f;while(X<16)DisplayOneChar(X,Y,DDataListLength);ListLength+;X+;/*系統(tǒng)顯示子函數(shù) */void display(void) WriteCommandLCM(0x0c,1); 測(cè)忙信號(hào)DisplayListChar(0,0,str0);DisplayListChar(0,1,str1);/顯示屏打開,光標(biāo)不顯示,不閃爍,檢DisplayOne

11、Char(7,0,press_bai+0x30);DisplayOneChar(8,0,press_shi+0x30);DisplayOneChar(9,0,press_ge +0x30);DisplayOneChar(11,0,press_dot+0x30); delay(1000);/*讀ADC0832函數(shù)*/穩(wěn)定顯示/采集并返回uchar Adc0832(unsigned char channel) /AD 轉(zhuǎn)換,返回結(jié)果 uchar i=0;uchar j;uint dat=0;uchar ndat=0;if(channel=0)channel=2;if(channel=1)chann

12、el=3;ADDI=1;_nop_();_nop_();ADCS=0; 拉低 CS 端_nop_();_nop_();ADCLK=1; 拉高 CLK 端_nop_();_nop_();ADCLK=0;/拉低CLK端,形成下降沿1_nop_();_nop_();ADCLK=1; 拉高 CLK 端ADDI=channel&0x1;_nop_();_nop_();ADCLK=0;/拉低CLK端,形成下降沿2_nop_();_nop_();ADCLK=1; 拉高 CLK 端ADDI=(channel>>1)&0x1;_nop_();_nop_();ADCLK=0;/拉低CL

13、K端,形成下降沿3ADDI=1;/ 控制命令結(jié)束_nop_();_nop_();dat=0;for(i=0;i<8;i+)dat|=ADDO; 收數(shù)據(jù)ADCLK=1;_nop_();_nop_();ADCLK=0;形成一次時(shí)鐘脈沖_nop_();_nop_();dat<<=1;if(i=7)dat|=ADDO;for(i=0;i<8;i+)j=0;j=j|ADDO;/ 收數(shù)據(jù)ADCLK=1;_nop_();_nop_();ADCLK=0;形成一次時(shí)鐘脈沖_nop_();_nop_();j=j<<7;ndat=ndat|j;if(i<7)ndat>

14、>=1;ADCS=1; 拉低 CS 端ADCLK=0;/ 拉低 CLK 端ADDO=1; 拉高數(shù)據(jù)端,回到初始狀態(tài)dat<<=8;dat|=ndat;return(dat);/return ad kvoid data_pro(void) unsigned int temp;float press;if(14<ad_data<243)時(shí),遵循線性變換int vary=ad_data;/當(dāng)壓力值介于 15kpa到115kpa之間y=(115-15)/(243-13)*X+15kpapress=(10.0/23.0)*vary)+9.3;/測(cè)試時(shí)補(bǔ)償值為9.3temp=(int)(press*10);/放大10倍,便于后面的計(jì)算/取壓力值百位/取壓力值十位/取壓力值個(gè)位/取壓

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論