多功能小车的设计Word下载.docx
《多功能小车的设计Word下载.docx》由会员分享,可在线阅读,更多相关《多功能小车的设计Word下载.docx(14页珍藏版)》请在冰点文库上搜索。
温度显示器模块的电路图:
●应用程序的设计
接线:
模块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;
}
三、总结
我们制作这次设计一切都是从零开始,从最简单的画流程图起步。
在整个过程当中,遇到很多困难,由于时间紧迫,起步时间较晚,还有其他一些财力方面的原因,本来打算实现的烟雾探测和小车的寻迹等其他功能未能实现,虽然有些遗憾,但是在整个设计过程中,我们充分发挥人的主观能动性,学会了自主学习,学到了许多课本上学不到的知识。
较好的完成了设计,初步达到了预期的目的,部分实现了最初的设想。
我们由此得出:
对电路的设计、布局要先有一个好的构思,才显得电路板美观、大方。
程序编写中,由于思路不清晰,开始时遇到了很多的问题,经过静下心来思考,和同学讨论,理清了思路,反而得心应手。
在此次设计中,知道了凡事要有一颗不畏困难、积极进取、勇于探索的精神,不要想着走捷径,一步一脚印。
同时也练就了我们的耐心、细心、恒心,无论如何,此次课程设计中学到了很多很多东西,这才是最重要的。
总之,此次电子设使我们的能力得到了全方位的提高,使得我的操作能力和专业技能都有了很大的提高,从而为将来的进一步学习和工作奠定了良好的基础。
(注:
专业文档是经验性极强的领域,无法思考和涵盖全面,素材和资料部分来自网络,供参考。
可复制、编制,期待你的好评与关注)