資源簡介
基于51的壓力傳感器C語言實現代碼,非常不錯,絕對可以運行得通

代碼片段和文件信息
#include
#include
#include?
#include?
#define?uchar?unsigned?char
#define?uint???unsigned?int
#define?BUSY??0x80???????????????????????????????//常量定義
#define?DATAPORT?P0
//ADC0832的引腳
sbit?ADCS?=P3^5;??//ADC0832?chip?seclect
sbit?ADDI?=P3^7;??//ADC0832?k?in
sbit?ADDO?=P3^7;??//ADC0832?k?out
sbit?ADCLK?=P3^6;??//ADC0832?clock?signal
sbit?LCM_RS=P2^0;
sbit?LCM_RW=P2^1;
sbit?LCM_EN=P2^2;
uchar?ad_data;????????????????????????????????????//采樣值存儲
sbit?Alarm_led_red?=P1^5;?????????????????????????//超過壓力表量程最大值紅色led報警定義
sbit?Alarm_led_green=P1^6;????????????????????????//低于壓力表量程最小值綠色led報警定義
??????????????????????????//adc采樣值存儲單元
char?press_data;??????????????????????????????????//標度變換存儲單元
unsigned?char?ad_alarm;???????????????????????????//報警值存儲單元
unsigned?char?press_bai=0;????????????????????????//顯示值百位
unsigned?char?press_shi=0;????????????????????????//顯示值十位
unsigned?char?press_ge=0;?????????????????????????//顯示值個位
unsigned?char?press_dot=0;????????????????????????//顯示值十分位
uchar?code?str0[]={“Press:????.?kpa.?“};
uchar?code?str1[]={“?Check?BY?Jack?“};
void?delay(uint);
void?lcd_wait(void);
void?delay_LCM(uint);????????????????????????//LCD延時子程序
void?initLCM(?void);??????????????????????????//LCD初始化子程序
void?lcd_wait(void);?????????????????????????//LCD檢測忙子程序
void?WriteCommandLCM(uchar?WCLCMuchar?BusyC);??????????????????????????????//寫指令到ICM子函數
void?WriteDataLCM(uchar?WDLCM);?????????????????????????????????????????????//寫數據到LCM子函數
void?DisplayOneChar(uchar?Xuchar?Yuchar?DData);???????????????????????????//顯示指定坐標的一個字符子函數
void?DisplayListChar(uchar?Xuchar?Yuchar?code?*DData);????????????????????//顯示指定坐標的一串字符子函數
void?display(void);?????????????????????????????????????????????????????????//系統顯示子函數
uchar?Adc0832(unsigned?char?channel);???????????????
void?alarm(void);
void?data_pro(void);
/**********main?funcation************/
void?main(void)
{?
????delay(500);??????????????????????//系統延時500ms啟動
//?ad_data=0;???????????????????????//采樣值存儲單元初始化為0
????initLCM(?);
????????
????WriteCommandLCM(0x011);??????//清顯示屏
????DisplayListChar(00str0);
????DisplayListChar(01str1);
?
?while(1)
????{
????ad_data?=Adc0832(0);????//采樣值存儲單元初始化為0
????
?????alarm();
?
??data_pro();
??
??display();
?????
?}
}
/*********延時K*1ms12.000mhz**********/
void?delay(uint?k)
{
????uint?ij;
????for(i=0;i ????{
????????for(j=0;j<60;j++)
?????????{;}
????}
}???
/**********寫指令到ICM子函數************/
void?WriteCommandLCM(uchar?WCLCMuchar?BusyC)
{
????if(BusyC)lcd_wait();
?DATAPORT=WCLCM;
????LCM_RS=0;???????????????????//?選中指令寄存器
????LCM_RW=0;????????????????//?寫模式?
????LCM_EN=1;????
?_nop_();???
?_nop_();
?_nop_();?
????LCM_EN=0;
???
}
/**********寫數據到LCM子函數************/
void?WriteDataLCM(uchar?WDLCM)
{?
????lcd_wait(?);?????????????//檢測忙信號????
?DATAPORT=WDLCM;
????LCM_RS=1;????????????????//?選中數據寄存器
????LCM_RW=0;???
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2015-03-31?22:23??yl\
?????文件????????6376??2009-05-07?14:37??yl\STARTUP.A51
?????文件???????14048??2011-11-16?22:05??yl\STARTUP.LST
?????文件?????????758??2011-11-16?22:05??yl\STARTUP.OBJ
?????文件???????17018??2011-11-16?22:05??yl\ylcg
?????文件???????14428??2011-11-16?22:05??yl\ylcg.LST
?????文件???????19478??2011-11-16?22:05??yl\ylcg.M51
?????文件???????17528??2011-11-16?22:05??yl\ylcg.OBJ
?????文件????????8262??2011-11-16?22:05??yl\ylcg.c
?????文件????????5385??2011-11-16?22:05??yl\ylcg.hex
?????文件??????????41??2011-11-16?22:05??yl\ylcg.lnp
?????文件?????????590??2011-11-16?22:05??yl\ylcg.plg
?????文件???????55655??2011-11-16?22:34??yl\ylcg.uvopt
?????文件???????13396??2011-11-16?22:34??yl\ylcg.uvproj
?????文件???????????0??2011-11-16?22:04??yl\ylcg_uvproj.bak
- 上一篇:工程規劃(project)
- 下一篇:C++Primer中文版第五版
評論
共有 條評論