基于AT89C51单片机的电机控制系统设计_课程设计报告 下载本文

7.参考文献

[1]杨永辉.现代电子技术[J] .智能小车的多传感器数据融合.2005, (6) :3-6. [2]何立民.单片机与嵌入式系统应用[J]. 基于HCS12的小车智能控制系统设计.2007,(3) :51-53,57.

[3]方建军.何广平.智能机器人[M].北京:化学工业出版社.2004 :5-9. [4]张立.电子世界[J].电动小车的循迹. 2004,(6):45.

[5] http://club.china.alibaba.com/forum/thread/view/99_22334448_1.html. [6]滕志军.今日电子[J].基于超声波检测的倒车雷达设计.2006,(9):15-17. [7]徐科军.传感器与检测技术[M].北京:电子工业出版社,2007:110-113,160-161. [8]潘新民.王燕芳.微型计算机控制技术实用教程[M].北京:电子工业出版社,2007:75-76,118-119.

8.附录

8.1 程序清单

8.1.1 LCD驱动程序

/* */

#ifndef LCD_H_ #define LCD_H_

#include

sbit LCD_BL=P1^4; //定义背光控制信号 void LcdLightOn(); //点亮背光灯 void LcdLightOff(); //熄灭背光灯 void LcdClear(); //清屏 void LcdInit();

//初始化

LCD.C

128×64 LCD驱动程序头文件

void LcdPutChar(unsigned char c); //显示ASCⅡ码 void LcdPuts(unsigned char*s);

#endif //LCD_H_ /* */ LCD.C

128×64 LCD驱动程序

//显示字符串

#include #include

unsigned char LcdCursor; //定义屏幕光标(取值0~63,光标本身不可见)

int i,j;

void LcdLightOn() //功能:点亮背光灯 { }

void LcdLightOff() //功能:熄灭背光灯 { } /*

函数:LcdGetBF() 返回: */

bit LcdGetBF()//功能:读出状态位BF {

unsigned char dat; dat = XBYTE[0xD002];

//XBYTE的定义见

BF=1,表示忙,不可进行任何操作 BF=0,表示不忙,可以进行正常操作 LCD_BL = 0; LCD_BL = 1;

}

return (bit)(dat & 0x80);

void LcdWriteCmd(unsigned char cmd) //功能:向LCD发送命令 { }

void LcdWriteDat(unsigned char dat) { }

unsigned char LcdReadDat() { 数据

}

return dat;

volatile unsigned char dat; while ( LcdGetBF() ); dat = XBYTE[0xD003]; dat = XBYTE[0xD003];

//需要连续执行两次才能够读出真正的

//功能:从LCD读出数据

while ( LcdGetBF() ); XBYTE[0xD001] = dat;

// 功能:向LCD写入数据

while ( LcdGetBF() ); XBYTE[0xD000] = cmd;

/*

函数:LcdSetAC()

功能:设置DDRAM(显示数据RAM)的AC(地址计数器)值 */

void LcdSetAC(unsigned char ac) { }

void LcdClear() { }

void LcdDelay(unsigned char t) //功能:延时(t*100)个机器周期 { }

unsigned char n; do {

n = 49;

while ( --n != 0 ); LcdWriteCmd(0x01); LcdCursor = 0;

//清屏命令

//功能:LCD清屏,并使光标回到0

ac &= 0x3F; ac |= 0x80; LcdWriteCmd(ac);

} while ( --t != 0 );