教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 基础教育 >

89c52的单片机自动往返电动小汽车设计报告 - 图文(9)

来源:网络收集 时间:2026-05-25
导读: //所有菜单项已经显示完毕,返回主菜单 ReturnMain=False; ReturnSelection=False; if (TotalDistanceShow==True) { } ReturnMain=True; //最后一个选项已经显示完毕,返回主菜单 if (SelectedShow==True) { } whil

//所有菜单项已经显示完毕,返回主菜单

ReturnMain=False; ReturnSelection=False; if (TotalDistanceShow==True) { }

ReturnMain=True;

//最后一个选项已经显示完毕,返回主菜单

if (SelectedShow==True) { }

while(1) { }

if (Next==True)

26

if (Next==True)

break; break;

if (SelectedShow==True) SelectedShow=False; SelectedReturn=False; Selected=False;

if (ReturnSelection==True) { }

if (TotalDistanceShow==True) { }

WriteCmd(LCD_CLS);

DisplayString(0,0,\); DisplayDistance();

DisplayString(0x0A,1,\); ReturnSelection=True; Delay(250);

//按下了确定键,那么这个时候开启返回键的功能

//延时消除抖动

ReturnMain=True;

if (ReturnSelection==False)

//按下的是返回键

/*------------------------------------第六次按键--------------------------------------*/

}

}

{ }

if (SelectedShow==True) { }

continue;

SelectedShow=False; SelectedReturn=False; Selected=False; Next=False; ReturnMain=False; ReturnSelection=False;

while(1);

/****************************************************************************************\\ **

/*--------------------------------- LCD初始化函数--------------------------------------*/

void LCDInit(void) {

//三次显示模式设置 }

/*--------------------------------- LCD模式设置函数--------------------------------------*\\

27

WriteCmd(LCD_Init); WriteCmd(LCD_CLS);

//初始化 //关显示 //清屏幕 //光标移动设置 //显示开以及光标设置

WriteCmd(LCD_CloseCtr); WriteCmd(LCD_EnterSet); WriteCmd(LCD_DispCtr);

LCD_Data=0; LCD_E=Disable; Delay(5);

WriteCmd(LCD_Init); Delay(5);

WriteCmd(LCD_Init); Delay(5);

WriteCmd(LCD_Init);

LCD驱动模块

**

\\****************************************************************************************/

SetWriteCmd() SetReadCmd() SetWriteData()

设置LCD为写命令模式 设置LCD为读命令模式 设置LCD为写数据模式

\\*----------------------------------------------------------------------------------------*/ void SetWriteCmd(void) { }

void SetReadCmd(void) { }

void SetWriteData(void) { }

/*--------------------------------- LCD功能执行函数--------------------------------------*\\

WriteCmd()

写命令 写数据 执行命令 显示定位 显示单个字符 显示一串字符 忙标志检测

WriteData() ExecuteCmd() SetXY()

LCD_RW=Write; LCD_RS=Data; LCD_RW=Read; LCD_RS=Cmd; LCD_RW=Write; LCD_RS=Cmd;

DisplaySingleChar() DisplayString() IsBusy()

\\*----------------------------------------------------------------------------------------*/ void WriteCmd(char cmd) { }

void WriteData(char ddata) {

while(IsBusy()); LCD_Data=ddata;

28

while(IsBusy()); LCD_Data=cmd; SetWriteCmd(); ExecuteCmd();

}

SetWriteData(); ExecuteCmd();

void ExecuteCmd(void) { }

void SetXY(char x,char y) { }

void DisplaySingleChar(char x,char y,char cchar) { }

void DisplayString(char x,char y,char *str) { }

bit IsBusy(void) { }

/*------------------------------------- 延时函数 -------------------------------------*/

29

LCD_Data=0xFF; SetReadCmd(); ExecuteCmd();

return (bit)(P1 & 0x80);

while(*str) { }

Delay(5);

DisplaySingleChar(x++,y,*str); str++; SetXY(x,y); WriteData(cchar); if (y)

x|=0x40; x|=0x80; Delay(5); WriteCmd(x); LCD_E=Enable; LCD_E=Disable;

void Delay(unsigned int time) {

unsigned int timeCounter = 0; }

void DelayUs(unsigned int time) { }

/*******************************************************************************************\\ ** LCD显示模块 ** \\*******************************************************************************************/

void ComputeTime(void) { }

void ComputeSpeedANDDistance(void) { }

/*------------------------------------- 显示时间 ----------------------------------------*/ void DisplayTime(void) {

char PassTime1=0x30; char PassTime2=0x30; char PassTime3=0x30; char PassTime4=0x30;

if ((int)PassTime*100<100) { }

30

PassTime1+=0;

PassTime2+=(int)(PassTime*100)/10; PassTime3+=(int)(PassTime*100);

//时间未够1s

Speed=SpeedCount/4*CircleLength; Distance+=Speed; SpeedCount=0;

//计算瞬时速度 //计算距离

if (Area0 < 5)

PassTime+=0.5;

unsigned int timeCounter = 0;

for (timeCounter = 0;timeCounter < time;timeCounter ++)

_nop_();

for (timeCounter = time;timeCounter > 0 ;timeCounter --)

DelayUs(255);

…… 此处隐藏:1801字,全部文档内容请下载后查看。喜欢就下载吧 ……
89c52的单片机自动往返电动小汽车设计报告 - 图文(9).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/565337.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)