
3.2 单片机程序单片机程序主要包括主程序、单片机发送子程序、单片机接收子程序、液晶显示子程序、键盘输入子程序五部分,均采用c语言进行模块化编程。[0013]设计上位机界面并编写串口通信程序,实时接收单片机发送的温度值并显示曲线,以直观反映出控制效果并作出分析。通信任务完成,关接收和发送允许 要实现单片机与pc 机间的数据通讯,不仅是要连接硬件电路和对单片机进行编程单片机gps模块有什么用,同时还需要在pc上编写数据收发的程序。
大神懂GPS定位的可以帮下忙吗?
//--------------------------------------------------------------------------------//LCD1602地址表
/*
0X800X810X820X830X840X850X860X870X880X890X8A0X8B0X8C0X8D0X8E0X8F
0XC00XC10XC20XC30X0XC50XC60XC70XC80XC90XCA0XCB0XCC0XCD0XCE0XCF
*/
#include<reg52.h>
#defineTS1602_DATAP0
//lcd与单片机引脚连接
sbitRS=P2^3;//指令或数据
sbitRW=P2^4;//读或写
sbitE=P2^5;//使能端
//unsignedchar--无符号字符型
unsignedcharcodelcd_code[]="0123456789";
unsignedcharcaToneAdd1[]={0x14,0x18,0x1c,0x1f,0x26,0x28,0x30,0x35,0x36,0x38,0x39,0x44,
//012345
0x46,0x49,0x50,0x53,0x58,0x60,0x61,0x64,0x69,0x70,0x74,0x77,
//6789十教
0x79,0x80,0x85,0x89,0x97,0x9b,0xa1,0xa5,0xab,0xae,0xb2,0xba,
//百度东经北纬点科技楼
0xc0,0xc9,0xcd,0xd4};
//实训楼校门口
unsignedcharmessage[6];//存放"$GPRMC"
unsignedcharstatus[1];//状态A为数据OK;V为警告
unsignedcharlatitude[9]={0};//纬度
unsignedcharN_S[1];//N(北纬)或S(南纬)
unsignedcharlongitude[10]={0};//经度
unsignedcharE_W[1];//E(东经)或W(西经)
unsignedcharcount_1=0;//数据类型累加变量
unsignedcharcount_2=0;//数组下标累加变量
bitbegin=0;//起始标志
//--------------------------------------------------------------------------------
//*****************************************************
//函数功能:延时程序
//使用说明:注意参数范围
//****************************************************
voiddelay_500ms(unsignedchartime)//延时500us
{
unsignedchara,b,c;
for(;time>0;time--)
for(c=18;c>0;c--)
for(b=152;b>0;b--)
for(a=28;a>0;a--);
}
/***************************************************

//函数功能:LCD1602驱动函数
*****************************************************/
voiddelay(unsignedintx)
{
unsignedinti;
for(;x>0;x--)
for(i=0;i<4;i++)
;
}
//************************************************
//函数功能:写指令
//使用说明:无
//************************************************
voidwrite_com(unsignedcharcom)
{
RW=0;
RS=0;
TS1602_DATA=com;
delay(1);
E=1;
delay(1);
E=0;
}
//***************************************************
//函数功能:写数据
//使用说明:无
//****************************************************
voidwrite_date(unsignedchardate)
{
RW=0;
RS=1;
TS1602_DATA=date;
delay(1);
E=1;
delay(1);
E=0;
}
//***************************************************
//函数功能:液晶初始化
//使用说明:无
//****************************************************
voidTS1602_INIT(void)
{
RS=0;
RW=0;
write_com(0x38);

write_com(0x0C);//设置液晶光标不显示
write_com(0x06);
write_com(0x01);//清屏
write_com(0x80);//光标的位置
}
//函数功能:显示一位数字
voiddisplay_a_num(unsignedcharnum)
{
write_date(lcd_code[num]);
}
//函数功能:显示字符串
voiddisplay_string(unsignedchar*P)
{
while(*P)
{
write_date(*P);
P++;
}
}
//================以上为LCD1602的驱动函数
//****************************************************
//函数功能:判断地点
//使用说明:返回值为地点代号
//****************************************************
unsignedcharget_place(void)
{
floateast=longitude[0]*100+longitude[1]*10+longitude[2]+longitude[3]*0.1+longitude[4]*0.01+longitude[6]*0.001+longitude[7]*0.0001+longitude[8]*0.00001;
0.1,0.01,0.001,0.0001,0.00001等 祖冲之...,父亲学识渊博。换算关系:0.0001千米=1分米0.1 米为:cm.有关厘米的单位转换:1厘米=10毫米=0.1分米=0.01米=0.00001千米。一般有ro反渗透(过滤精度在0.00001微米)、纳滤(过滤精度在0.001-0.00001微米之间)超滤膜(过滤精度在0.01-0.001微米之间)、精滤(过滤精度在0.01微米以下,如陶瓷过滤、pp棉过滤等)。
//判断地点
if(east>=110.24825&&east<=110.24936)//科技楼
{
if(north>=25.19037&&north<=25.19167)
return1;
}
if(east>=110.24943&&east<=110.25041)//实训楼
{
if(north>=25.18703&&north<=25.18799)
return2;
}
50 and cost(85)<,0),1) and 现价>,stick,nodraw:= sma (现价:if(现价<,0)*200,1) and 现价>,13。为何不可>. 摇滚怎么了 <. 童年的时光机 <>>. 记念 <林俊杰>. 超级喜欢
{
if(north>=25.18440&&north<=25.18449)
return3;
}
if(east>=110.24739&&east<=110.24774)//四教
{

if(north>=25.19019&&north<=25.19061)
return4;
}
if(east>=110.24706&&east<=110.24751)//五教
{
if(north>=25.19000&&north<=25.19038)
return5;
}
if(east>=110.24687&&east<=110.24740)//六教
{
if(north>=25.18980&&north<=25.19006)
return6;
}
return0;
}
//****************************************************************
//函数功能:LCD显示
//参数说明:参数为地点代号
//****************************************************************
voidLCD1602_display(unsignedcharplace)
{
write_com(0x80);//设置液晶光标起始位置第一行起点
write_date(N_S[0]+48);//显示"N"或"S"
write_date(':');
display_a_num(latitude[0]);//显示十位
display_a_num(latitude[1]);//显示个位
write_date(latitude[4]+48);//显示小数点
display_a_num(latitude[2]);//显示小数点后第一位
display_a_num(latitude[3]);
display_a_num(latitude[5]);
display_a_num(latitude[6]);
display_a_num(latitude[7]);
write_com(0x8b);//设置液晶光标起始位置
write_date(status[0]+48);//显示'A'或'V'
write_com(0xc0);//0xa8//设置光标位置第二行起点
write_date(E_W[0]+48);//显示"E"或"W"
write_date(':');
display_a_num(longitude[0]);//百位
display_a_num(longitude[1]);//十位
display_a_num(longitude[2]);//个位
write_date(longitude[5]+48);//显示小数点
display_a_num(longitude[3]);//显示小数点后第一位
display_a_num(longitude[4]);
display_a_num(longitude[6]);
display_a_num(longitude[7]);
display_a_num(longitude[8]);

//*************显示地点****************************
switch(place)
{
第二个函数一开始由于没有设置break语句导致其无法跳出循环,显示结果为五个“,” 设置break语句后让其得以跳出循环才改正确。byte szmsgmgrrealcode[] = {0x59, 0x5f, 0x5e, 0x5b, 0x8b, 0xe5, 0x5d, 0xc3, 0xcc, 0xcc,。0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x55, 0x8b, 0xec, 0x6a, 0xff,。
桂林航天工业学院实习(实训)总结报告报告题目 关于电子工程实习的实训报告 开课学期 2014-2015第二学期 班 级 通信工程一班 姓 名 曹静 学 号 座机电话号码b0137 地 点 南校区实训楼 报告日期 2015 年 7月3日 成绩(五级记分制): 指导教师(签字):_____________________实训成绩评定表序号 实训名称:电子工程实习 1实训态度: □严谨认真 □循规蹈矩 □ 敷衍应付2制板过程: □严格规范 □基本正确 □马虎有误3电路板外观:□美观合理 □基本规范 □杂乱堆砌 □错漏不合格4调试结果: □正确 □部分正确 □ 错误5报告内容: □丰富充实 □合理规范 □ 枯燥欠缺6文字表述: □简明通顺 □重复冗长 □逻辑性差 □有语病7综合评价:□优秀 □良好 □中 □及格 □不及格指导教师签名指导教师: 年 月 日前 言电子工程实习是通信工程本科生实践类教学的重要环节,是培养工程师的重要组成部分。按照计划,用于经管类和医学类实训室建设,该建设项目位于我院新校区2#实训楼和3#实训楼,建筑面积约1700平方米,新建实训室17个。该经管类实训室建设项目和医学类实训室建设项目,属于2013年“民生八大工程”支持实训基地建设项目,位于我院新校区2#实训楼和3#实训楼,建筑面积约1700平方米。
case3:{write_com(0xcc);display_string("XMK");}break;//显示校门口
case4:{write_com(0xcc);display_string("4J");}break;//显示4教
0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x55, 0x8b, 0xec, 0x6a, 0xff,。第二个函数一开始由于没有设置break语句导致其无法跳出循环,显示结果为五个“,” 设置break语句后让其得以跳出循环才改正确。0xcc, 0xcc, 0xcc, 0x55}。
case6:{write_com(0xcc);display_string("6J");}break;//显示6教
][default: 语句块n+1] 注意有break和没有break的区别。ta-bd-imgshare-binded="1" ="" skin="" default="" image="" no-repeat="" scroll="" style="word-break: break-all。0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x55, 0x8b, 0xec, 0x6a, 0xff,。
}
}
voidmain()//主函数
{
unsignedchari=0;
unsignedcharaddr=0;
unsignedcharplace=0;
delay(1000);
TS1602_INIT();//液晶初始化
TMOD=0X20;//单片机晶振11.0592M
TL1=0XFD;//256-253=3波特率:9600bps
TH1=0XFD;
SCON=0X50;//SM0SM1SM2RENTB8RB8TIRI串行方式1
PCON=0X00;//SMOD=0
IE=0X90;//EA=1;ET1=1;
TR1=1;//开定时器1
delay(100);
while(1)//死循环单片机gps模块有什么用,程序一直在里面运行
{
place=get_place();//调用判断地点的函数
LCD1602_display(place);//液晶显示
}
}
//**********************************************************************
//中断服务程序
//系统自动调用
//当串口接收完一帧(一串二进制数字)数据的时候,则产生中断进入下面的程序
//**********************************************************************
voidT_R()interrupt4
{
while(RI==0);//RI==1表示接收好一帧数据
if(SBUF=='$')//判断数据起点
{
begin=1;//开始接收
count_1=0;
}
if(begin==1)//开始接收GPRMC数据
{
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shumachanpin/article-116694-1.html
最新法规发布了