資源簡介
比較好霍爾傳感器資料比較好霍爾傳感器資料比較好霍爾傳感器資料

代碼片段和文件信息
#include?“d:\c51\reg51.h“
#include?“d:\c51\intrins.h“
sbit?LCM_RS=P3^0;
sbit?LCM_RW=P3^1;
sbit?LCM_EN=P3^7;
#define?BUSY?? 0x80??????????????//常量定義
#define?DATAPORT? P1
#define?uchar? unsigned?char
#define?uint??? unsigned?int
#define?L 50
uchar?str0[16]str1[16]count;
uint?speed;
unsigned?long?time;
void?ddelay(uint);
void?lcd_wait(void);
void?display();
void?initLCM();
void?WriteCommandLCM(uchar?WCLCMuchar?BusyC);
void?STR();
void?account();
/*********延時K*1ms12.000mhz**********/
void?int0_isr(void)?interrupt?0?????????/*遙控使用外部中斷0接P3.2口*/
{
????unsigned?int?temp;
time=count;
????TR0=0;
temp=TH0;
temp=((temp?<8)?|?TL0);
????TH0=0x3c;
????TL0=0xaf;
count=0;
????TR0=1;
time=time*50000+temp;
}
void?time0_isr(void)?interrupt?1????????/*遙控使用定時計數器1?*/
{
???TH0?=0x3c;
???TL0?=0xaf;
???count++;
}
void?main(void)
{
??? TMOD=0x01;???????????????????????/*TMOD?T0選用方式1(16位定時)?*/
????IP|=0x01;???????????????????????????/*INT0?中斷優先*/
????TCON|=0x11;?????????????????????????/*TCON??EX0下降沿觸發啟動T0*/
????IE|=0x83;??
????TH0=0x3c;
????TL0=0xaf;
??
initLCM();
??? WriteCommandLCM(0x011); ????//清顯示屏
for(;;)
{
account();
display();
}
}
void?account()
{
unsigned?long?a;?
if?(time!=0)
{
a=L*360000000/time;
}
speed=a;
}
void?STR()
{
str0[0]=‘S‘;
str0[1]=‘p‘;
str0[2]=‘e‘;
????str0[3]=‘e‘;
str0[4]=‘d‘;
str0[5]=‘?‘;
str0[6]=(speed%100000)/10000+0x30;
str0[7]=(speed%10000)/1000+0x30;
str0[8]=(speed%1000)/100+0x30;
str0[9]=‘.‘;
str0[10]=(speed%100)/10+0x30;
str0[11]=speed%10+0x30;
str0[12]=‘k‘;
str0[13]=‘m‘;
str0[14]=‘/‘;
str0[15]=‘h‘;
}
void?ddelay(uint?k)
{
????uint?ij;
????for(i=0;i ????{
????????for(j=0;j<60;j++)
???????? {;}
????}
}
/**********寫指令到LCD子函數************/
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;
}
/**********寫數據到LCD子函數************/
void?WriteDataLCM(uchar?WDLCM)
{
????lcd_wait(?);????????????//檢測忙信號
DATAPORT=WDLCM;
????LCM_RS=1;???????????????/*?選中數據寄存器??*/
????LCM_RW=0;??????????? //?寫模式
????LCM_EN=1;
????_nop_();
_nop_();
_nop_();
????LCM_EN=0;
}
/***********lcd內部等待函數*************/
void?lcd_wait(void)
{
????DATAPORT=0xff; ?????//讀LCD前若單片機輸出低電平而讀出LCD為高電平則沖突Proteus仿真會有顯示邏輯黃色
LCM_EN=1;
????LCM_RS=0;
????LCM_RW=1;
????_nop_();
????_nop_();
_nop_();
????while(DATAPORT&BUSY)
{??LCM_EN=0;
???_nop_();
???_nop_();
???LCM_EN=1;
???_nop_();
???_nop_();
}
??? LCM_EN=0;
}
/**********LCD初始化子函數***********/
void?initLCM(?)
{
DATAPORT=0;
ddelay(15);
WriteCommandLCM(0x380);????//三次顯示模式設置,不檢測忙信號
????ddelay(5);
????WriteCommandLCM(0x380);
????ddelay(5);
????WriteCommandLCM(0x380);
????ddelay(5);
????WriteCommandLCM(0x381
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????91704??2008-12-03?10:24??Speed\Last?Loaded?speed.DBK
?????文件??????10647??2007-04-25?10:41??Speed\Speed
?????文件???????4123??2007-04-25?10:37??Speed\Speed.c
?????文件??????91704??2008-12-03?10:24??Speed\speed.DSN
?????文件???????3630??2007-04-25?10:41??Speed\Speed.hex
?????文件?????????27??2007-04-25?10:41??Speed\Speed.lnp
?????文件???????8746??2007-04-25?10:41??Speed\Speed.LST
?????文件??????14264??2007-04-25?10:41??Speed\Speed.M51
?????文件??????12068??2007-04-25?10:41??Speed\Speed.OBJ
?????文件???????1283??2008-12-03?10:24??Speed\Speed.Opt
?????文件????????176??2008-12-03?10:22??Speed\Speed.plg
?????文件???????1277??2008-12-03?10:24??Speed\speed.PWI
?????文件???????2132??2008-12-03?10:24??Speed\Speed.Uv2
????.......??????1157??2007-04-26?15:52??Speed\Speed_Opt.Bak
????.......??????2166??2007-04-24?16:42??Speed\Speed_Uv2.Bak
?????目錄??????????0??2008-12-03?10:24??Speed
-----------?---------??----------?-----??----
???????????????245104????????????????????16
- 上一篇:dxflib在VS2013的使用
- 下一篇:51做的比較好的計算器
評論
共有 條評論