多功能小车的设计Word下载.docx

上传人:b****3 文档编号:7189522 上传时间:2023-05-08 格式:DOCX 页数:14 大小:104.08KB
下载 相关 举报
多功能小车的设计Word下载.docx_第1页
第1页 / 共14页
多功能小车的设计Word下载.docx_第2页
第2页 / 共14页
多功能小车的设计Word下载.docx_第3页
第3页 / 共14页
多功能小车的设计Word下载.docx_第4页
第4页 / 共14页
多功能小车的设计Word下载.docx_第5页
第5页 / 共14页
多功能小车的设计Word下载.docx_第6页
第6页 / 共14页
多功能小车的设计Word下载.docx_第7页
第7页 / 共14页
多功能小车的设计Word下载.docx_第8页
第8页 / 共14页
多功能小车的设计Word下载.docx_第9页
第9页 / 共14页
多功能小车的设计Word下载.docx_第10页
第10页 / 共14页
多功能小车的设计Word下载.docx_第11页
第11页 / 共14页
多功能小车的设计Word下载.docx_第12页
第12页 / 共14页
多功能小车的设计Word下载.docx_第13页
第13页 / 共14页
多功能小车的设计Word下载.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

多功能小车的设计Word下载.docx

《多功能小车的设计Word下载.docx》由会员分享,可在线阅读,更多相关《多功能小车的设计Word下载.docx(14页珍藏版)》请在冰点文库上搜索。

多功能小车的设计Word下载.docx

温度显示器模块的电路图:

●应用程序的设计

接线:

模块TRIG接P2.6ECH0接P2.7

[注:

AT89x51使用12M或11.0592M晶振,实测使用11.0592M]

=============================================================*/

#include<

AT89x51.H>

//器件配置文件

intrins.h>

#include"

18b20.h"

#defineRXP2_7

#defineTXP2_6

sbitLCD_RS=P2^0;

sbitLCD_RW=P2^1;

sbitLCD_EN=P2^2;

sbitfeng=P1^1;

sbitdeng=P1^0;

sbitP36=P3^6;

sbitP35=P3^5;

sbitP34=P3^4;

sbitP33=P3^3;

sbitP27=P2^7;

#defineLCD_DataP0

 

/******************************************

函数功能:

测试LCD忙碌状态

入口参数:

出口参数:

result

*******************************************/

bitLCD_Busy()

{

bitresult;

LCD_RS=0;

LCD_RW=1;

LCD_EN=1;

delay_ms(5);

//此处延时特别重要(必不可少)

result=(bit)(LCD_Data&

0x80);

LCD_EN=0;

returnresult;

}

写指令数据到LCD子程序

要写入的指令

voidLCD_Write_Command(unsignedcharcmd)

while(LCD_Busy());

//判断LCD是否忙碌

LCD_RW=0;

LCD_Data=cmd;

写入显示数据到LCD子程序

要写入的数据

voidLCD_Write_Data(unsignedchardat)

LCD_RS=1;

LCD_Data=dat;

设定显示位置子程序

pos

voidLCD_Position(unsignedcharpos)

LCD_Write_Command(pos|0x80);

LCD初始化子程序

voidLCD_Init()

delay_ms(15);

LCD_Write_Command(0x38);

//显示模式设置

LCD_Write_Command(0x0c);

//显示光标设置,开显示

LCD_Write_Command(0x06);

//显示光标移动(右移)

LCD_Write_Command(0x01);

//清屏

显示自定义字符

x坐标值,y坐标值,显示的字符数据

voidLCD_Display_Bmp(unsignedcharx,unsignedchary,unsignedchar*mytab)

unsignedchari=0;

LCD_Write_Command(0x40);

//写CGRAM

for(i=0;

i<

8;

i++)

LCD_Write_Data(mytab[i]);

if(y==0)LCD_Position(x);

elseLCD_Position(x+0x40);

//设置显示位置

LCD_Write_Data(0);

/*******************************************

显示字符串程序

备注1:

0<

=x<

=15

备注2:

=y<

=1

voidLCD_Display(unsignedcharx,unsignedchary,unsignedchar*words)

if(y==0)LCD_Position(x);

//设置显示位置

elseLCD_Position(x+0x40);

while(words[i]!

='

\0'

{

LCD_Write_Data(words[i]);

//显示字符

i++;

}

显示一个ASCII码程序

voidLCD_Display_Char(unsignedcharx,unsignedchary,unsignedcharword)

LCD_Write_Data(word);

unsignedcharReadDataLCM(void);

unsignedcharReadStatusLCM(void);

unsignedcharcodemcustudio[]={"

jilinuniversity"

};

unsignedcharcodeemail[]={"

hhhhhhhh"

unsignedcharcodeCls[]={"

"

unsignedcharcodeASCII[15]={'

0'

'

1'

2'

3'

4'

5'

6'

7'

8'

9'

.'

-'

M'

staticunsignedcharDisNum=0;

//显示用指针

unsignedinttime=0;

unsignedlongS=0;

bitflag=0;

unsignedchardisbuff[4]={0,0,0,0,};

voidConut(void)

time=TH0*256+TL0;

TH0=0;

TL0=0;

S=(time*1.7)/100;

//算出来是CM

if((S>

=700)||flag==1)//超出测量范围显示“-”

{

flag=0;

LCD_Display_Char(0,1,ASCII[11]);

LCD_Display_Char(1,1,ASCII[10]);

//显示点

LCD_Display_Char(2,1,ASCII[11]);

LCD_Display_Char(3,1,ASCII[11]);

LCD_Display_Char(4,1,ASCII[12]);

//显示M

else

disbuff[0]=S%1000/100;

disbuff[1]=S%1000%100/10;

disbuff[2]=S%1000%10%10;

LCD_Display_Char(0,1,ASCII[disbuff[0]]);

LCD_Display_Char(2,1,ASCII[disbuff[1]]);

LCD_Display_Char(3,1,ASCII[disbuff[2]]);

/********************************************************/

voidzd0()interrupt1//T0中断用来计数器溢出,超过测距范围

{TL0=0;

flag=1;

//中断溢出标志

voidStartModule()//启动模块

TX=1;

//启动一次模块

_nop_();

TX=0;

voidmain(void)

{unsignedintj,k;

LCD_Init();

//初始化LCD

LCD_Display(0,0,"

51090210Jlu"

);

LCD_Display_Char(15,1,0x43);

//0x43对应ASCII码为"

C"

LCD_Display_Bmp(14,1,tab);

while

(1){

TMOD=0x01;

//设T0为方式1,GATE=1;

ET0=1;

//允许T0中断

EA=1;

//开启总中断

while

(1)

StartModule();

while(!

RX);

//当RX为零时等待

TR0=1;

//开启计数

while(RX);

//当RX为1计数并等待

TR0=0;

//关闭计数

Conut();

//计算

Read_Temperature();

j=temp_data[0];

k=temp_data[1];

k=k<

<

//开始计算实际温度

j|=k;

j*=0.625;

LCD_Display_Char(10,1,j/100+0x30);

//加上0x30转换为ASCII码

LCD_Display_Char(11,1,j%100/10+0x30);

LCD_Display(12,1,"

."

LCD_Display_Char(13,1,j%10+0x30);

if(j>

250){deng=0;

elsedeng=1;

if(S<

10)feng=0;

elsefeng=1;

//P27=1;

//

P33=0;

P34=1;

P35=0;

P36=1;

//

while

(1){if(S<

=10)

{P33=1;

P34=0;

}

else{P33=0;

}

三、总结

我们制作这次设计一切都是从零开始,从最简单的画流程图起步。

在整个过程当中,遇到很多困难,由于时间紧迫,起步时间较晚,还有其他一些财力方面的原因,本来打算实现的烟雾探测和小车的寻迹等其他功能未能实现,虽然有些遗憾,但是在整个设计过程中,我们充分发挥人的主观能动性,学会了自主学习,学到了许多课本上学不到的知识。

较好的完成了设计,初步达到了预期的目的,部分实现了最初的设想。

我们由此得出:

对电路的设计、布局要先有一个好的构思,才显得电路板美观、大方。

程序编写中,由于思路不清晰,开始时遇到了很多的问题,经过静下心来思考,和同学讨论,理清了思路,反而得心应手。

在此次设计中,知道了凡事要有一颗不畏困难、积极进取、勇于探索的精神,不要想着走捷径,一步一脚印。

同时也练就了我们的耐心、细心、恒心,无论如何,此次课程设计中学到了很多很多东西,这才是最重要的。

总之,此次电子设使我们的能力得到了全方位的提高,使得我的操作能力和专业技能都有了很大的提高,从而为将来的进一步学习和工作奠定了良好的基础。

(注:

专业文档是经验性极强的领域,无法思考和涵盖全面,素材和资料部分来自网络,供参考。

可复制、编制,期待你的好评与关注)

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2