資源簡介
智能小車尋跡(含霍爾測速)程序,用L5261602液晶動態(tài)顯示速度,路程
代碼片段和文件信息
#include?
#include?
/////////////////////////////////////////////////////////////////////
#define?U8?unsigned?char
#define?U16?unsigned?int
////////////////電機運動方式定義////////////////////////////////////
#define?Zrun?{int1=1;int2=0;int3=1;int4=0;} //直走
#define?Rz?{int1=0;int2=0;int3=1;int4=0;} //左轉(zhuǎn)
#define?Lz?{int1=1;int2=0;int3=0;int4=0;} //右轉(zhuǎn)
/*-----------------------端口命名------------------------*/
sbit?rs=P1^0; //LCD的數(shù)據(jù)/命令選擇端
sbit?rw=P1^1; //LCD的讀寫選擇端
sbit?lcdcs=P1^2;//LCD的使能信號端
sbit?int1=P2^0;
sbit?int2=P2^1;
sbit?int3=P2^2;
sbit?int4=P2^3;
sbit?in1?=P2^4;
sbit?in2=P2^5;
sbit?in3=P2^6;
sbit?in4=P2^7;
///////////////函索聲明///////////////////////////////////////////
void?DelayMs(U8?ms);
void?xz();
/*-------------------------------------------------------*/
/*-----------------------定義參數(shù)------------------------*/
U16?ijzzhuanmsecx=0s=0; //定義參數(shù)
U8?display[]={“?Vs=??cm/500ms“}; ? //定義顯示參數(shù)
U8?display1[]={“?s=?????cm“}; ? //定義顯示參數(shù)
/*-------------------------------------------------------*/
////////////////////主函數(shù)入口////////////////////////////
sfr?CCON?????=?0xD8;?//PCA控制寄存器
sfr?CMOD?????=?0xD9;?//PCA模式寄存器
sfr?CCAPM0???=?0xDA;?//PCA模塊0模式寄存器?//模塊0對應(yīng)P1.3/CEX0/PCA0/PWM0(STC12C5A60S2系列)???
sfr?CCAPM1???=?0xDB;?//PCA模塊1模式寄存器?//模塊1對應(yīng)P1.4/CEX1/PCA1/PWM1(STC12C5A60S2系列)
sfr?CL???????=?0xE9;????//PCA?定時寄存器?低位
sfr?CH???????=?0xF9;?//PCA?定時寄存器?高位
sfr?CCAP0L???=?0xEA;?//PCA模塊0的?捕獲寄存器?低位
sfr?CCAP0H???=?0xFA;????//PCA模塊0的?捕獲寄存器?高位
sfr?CCAP1L???=?0xEB;?//PCA模塊1的?捕獲寄存器?低位
sfr?CCAP1H???=?0xFB;?//PCA模塊1的?捕獲寄存器?高位
sfr?PCA_PWM0?=?0xF2;?//PCA?PWM?模式輔助寄存器0
sfr?PCA_PWM1?=?0xF3;?//PCA?PWM?模式輔助寄存器1
sbit?CF???=?0xDF;?????//PCA計數(shù)溢出標(biāo)志位
sbit?CR???=?0xDE;?????//PCA計數(shù)器?運行控制位
sbit?CCF1?=?0xD9;?????//PCA模塊1中斷標(biāo)志
sbit?CCF0?=?0xD8;?????//PCA模塊0中斷標(biāo)志
//*?CCAPOH?=?CCAPOL?=?0XC0;?//模塊0輸出?占空因數(shù)為25%
//*?CCAPOH?=?CCAPOL?=?0X80;?//模塊0輸出?占空因數(shù)為50%
//*?CCAPOH?=?CCAPOL?=?0X40;?//模塊0輸出?占空因數(shù)為75%
/*-----------------------毫秒延時------------------------*/
void?DelayMs(U8?ms)?//在12M晶振下,stc10f系列(單周期指令)的ms級延時
{??????
U16?i;
while(ms--)
{
???for(i=0;i<850;i++);
}
}
void?delay(U8?ms)
{
U8?ij; //為延時引入ij兩參數(shù)
for?(j=0;j for?(i=0;i<120;i++); //延時第二循環(huán)
}
/*-------------------------------------------------------*/
/*--------------------向LCD1602寫命令--------------------*/
void?write_command(U16?command)
{
rs=0; //選擇寫命令
P0=command; //向LCD寫命令
lcdcs=1; //信號使能端高電平
lcdcs=0; //信號使能端低電平
}
/*-------------------------------------------------------*/
/*--------------------向LCD1602寫數(shù)據(jù)--------------------*/
void?write_data(U16?data0)
{
rs=1; //選著寫數(shù)據(jù)
P0=data0; //向LCD寫數(shù)據(jù)
lcdcs=1; //信號使能端高電平
lcdcs=0; //信號使能端低電平
}
/*-------------------------------------------------------*/
/*-------------------外部中斷0計數(shù)程序-------------------*/
void?counter(void)?interrupt?0
{
EX0=0; //關(guān)外部中斷0
//初始化計數(shù)
z++; //轉(zhuǎn)圈計數(shù)加1
- 上一篇:485門禁例程
- 下一篇:基于51單片機的數(shù)字頻率計課程設(shè)計
評論
共有 條評論