6. 最终PCB板图: 该最小系统的最终PCB板图(包括LCD接口以及其他的外部扩展电路部分,考虑到最小系统的简洁以及容易看懂,外部扩展电路不在最小系统图上显示。)分别如(图11)、(图12)所示: 内容来自论文无忧网 www.paper51.com
paper51.com (图11) http://www.paper51.com
paper51.com (图12) 内容来自论文无忧网 www.paper51.com 7.系统程序: copyright paper51.com 按照预定的功能,系统实现预定的功能的程序如下所示: paper51.com #include <intrins.h> copyright paper51.com
#include <AT89X52.h> http://www.paper51.com
/********************************************************************************\ 内容来自论文无忧网 www.paper51.com ** 宏定义区 ** paper51.com
\********************************************************************************/ copyright paper51.com /*------------------------------- LCD模块------------------------------------*/ paper51.com #define LCD_RW P2_6 //读写控制端 http://www.paper51.com #define LCD_RS P2_7 //数据命令选择端 copyright paper51.com #define LCD_E P2_5 //执行使能端 http://www.paper51.com
#define LCD_Data P1 //P1口 内容来自www.paper51.com #define Write 0x00 //低电平写入 copyright paper51.com #define Read 0x01 //高电平读出 内容来自论文无忧网 www.paper51.com #define Data 0x01 //高电平选择数据 内容来自www.paper51.com #define Cmd 0x00 //低电平选择命令 http://www.paper51.com #define Enable 0x00 //跃变到低电平时执行命令 copyright paper51.com #define Disable 0x01 内容来自论文无忧网 www.paper51.com #define True 0x01 内容来自论文无忧网 www.paper51.com
#define False 0x00 内容来自论文无忧网 www.paper51.com
#define LCD_Init 0x38 //初始化模式 内容来自论文无忧网 www.paper51.com
#define LCD_DispCtr 0x0C //开显示及光标设置 内容来自www.paper51.com #define LCD_CloseCtr 0x08 //关显示 copyright paper51.com
#define LCD_CLS 0x01 //清屏幕 copyright paper51.com #define LCD_EnterSet 0x06 //显示光标 copyright paper51.com #define Busy P1_7 //忙信号 copyright paper51.com /*-------------------------- 测速/测距/测时模块 -------------------------------*/ copyright paper51.com #define CircleLength 0.132 //小车转一轮的长度为.132m http://www.paper51.com /*-------------------------------- 控速模块-----------------------------------*/ 内容来自www.paper51.com #define P03 P0_3 //后电机 copyright paper51.com #define P04 P0_4 //后电机 http://www.paper51.com #define P01 P0_1 //前电机 http://www.paper51.com #define P02 P0_2 //前电机 http://www.paper51.com #define P31 P0_5 //控制液晶背光 内容来自www.paper51.com
#define P33 P3_3 copyright paper51.com /*------------------------------ 菜单选择模块 ---------------------------------*/ 内容来自论文无忧网 www.paper51.com #define Line 0x00 //0代表直线模式 内容来自论文无忧网 www.paper51.com
#define Curve 0x01 //1代表S型模式 copyright paper51.com
#define Normal 0x00 //0 代表正常速度 内容来自论文无忧网 www.paper51.com #define Low 0x01 //1 代表低速 内容来自论文无忧网 www.paper51.com #define High 0x02 //2 代表高速 内容来自论文无忧网 www.paper51.com /*********************************************************************************\ 内容来自论文无忧网 www.paper51.com ** 全局函数声明区 ** 内容来自论文无忧网 www.paper51.com \*********************************************************************************/ paper51.com /*------------------------------- LCD模块-------------------------------------*/ 内容来自论文无忧网 www.paper51.com void LCDInit(void); //LCD初始化 copyright paper51.com void SetWriteCmd(void); //设置写命令模式 内容来自论文无忧网 www.paper51.com
void SetReadCmd(void); //设置读命令模式 paper51.com void SetWriteData(void); //设置写数据模式 copyright paper51.com void WriteCmd(char cmd); //写命令 http://www.paper51.com
void WriteData(char ddata); //写数据 paper51.com void ExecuteCmd(void); //执行命令 http://www.paper51.com void SetXY(char x,char y); //定位显示地址 内容来自www.paper51.com void DisplaySingleChar(char x,char y,char cchar); //显示单个字符 内容来自论文无忧网 www.paper51.com void DisplayString(char x,char y,char *str); //显示一段字符串 http://www.paper51.com void Delay(unsigned int time); //延时主程序 内容来自论文无忧网 www.paper51.com
void DelayUs(unsigned int time); //延时子程序 内容来自www.paper51.com bit IsBusy(void); //判断忙标志函数 http://www.paper51.com void DisplayTime(void); //显示时间 copyright paper51.com void DisplayAVGSpeed(void); //显示平均速度 copyright paper51.com void DisplayDistance(void); //显示路程 内容来自论文无忧网 www.paper51.com /*-------------------------- 测速/测距/测时模块 -------------------------------*/ http://www.paper51.com void INTInit(void); //所有中断初始化 内容来自www.paper51.com void SpeedINT(void); //测速中断 copyright paper51.com void ComputeTime(void); 内容来自论文无忧网 www.paper51.com void ComputeSpeedANDDistance(void); //计算速度和距离 copyright paper51.com /*-------------------------------- 控速模块-----------------------------------*/ 内容来自论文无忧网 www.paper51.com void CtrSpeedINT(void); //控速中断 paper51.com void Time0INT(void); copyright paper51.com void Time1INT(void); //控速单位时间中断 内容来自www.paper51.com void Clock0_Init(void); //时钟中断初始化 http://www.paper51.com
void Clock1_Init(void); //时钟中断初始化 内容来自www.paper51.com
void CtrSpeed(void); paper51.com
/********************************************************************************\ copyright paper51.com ** 全局变量区 ** paper51.com \********************************************************************************/ copyright paper51.com
float SpeedCount = 0; //测速计数脉冲 paper51.com float Speed = 0.0; copyright paper51.com float Distance = 0.0; 内容来自www.paper51.com
char Time1INTCount=0; //T1中断时间计时 http://www.paper51.com
float PassTime=0.00; //小车行走的时间 paper51.com short IsT0INT=1; 内容来自www.paper51.com bit IsT1INT; //判断T1是否已经响应中断 copyright paper51.com short IsT0INT2=1; http://www.paper51.com
char Thx[5]={0xf4,0xf4,0xc5,0xf4,0xff}; //3ms,3ms,15ms,3ms 内容来自www.paper51.com char Tlx[5]={0x48,0x48,0x68,0x48,0xff}; http://www.paper51.com char Thx0=0xd8; 内容来自www.paper51.com char Tlx0=0xf0; 内容来自论文无忧网 www.paper51.com char Thx1=0xb1; //20ms 内容来自www.paper51.com char Tlx1=0xe0; 内容来自www.paper51.com
short Round=0; 内容来自论文无忧网 www.paper51.com short Back=0; 内容来自www.paper51.com short Back0=0; copyright paper51.com bit Backid; copyright paper51.com
bit Stop=0; http://www.paper51.com char Area0=0; copyright paper51.com char Area1=0; //区域变量 http://www.paper51.com
char LowSpeedArea1StartTime; paper51.com char LowSpeedArea1EndTime; 内容来自www.paper51.com
char HighSpeedAreaEndTime; paper51.com char LowSpeedArea2EndTime; 内容来自www.paper51.com char LowSpeedArea1PassTime=0; //第一个低速区通过时间 copyright paper51.com
char HighSpeedAreaPassTime=0; //高速区通过时间 paper51.com
char LowSpeedArea2PassTime=0; //第二个低速区通过时间 paper51.com char ReadyToGo=4; //倒计时 内容来自论文无忧网 www.paper51.com char flag; copyright paper51.com bit Roundid=0; copyright paper51.com
char Nocurve=0; http://www.paper51.com
char ChangeFlag; paper51.com char Mode; 内容来自论文无忧网 www.paper51.com |