GPS 试验卫星开创无线电导航定位新时代,用途广泛影响巨大

其片内的8K程序存储器是FLASH工艺的,这种单片机对开发设备的要求很低,开发时间也大大缩短。比较这两种方案,由于在学校期间学过数字电路、单片机原理、C语言程序设计,综合考虑单片机的各部分资源和作为学生能够获得的资源,经过对比此次设计要求,我选择用STC系列芯片完成。

目录

概括

1978年2月22日第一颗GPS试验卫星发射入轨,开创了以导航卫星为动态已知点的无线电导航定位新纪元。GPS卫星发出的导航定位信号是无数用户可共享的空间信息资源。陆地、海上和空间用户只要拥有能接收、跟踪、变换和测量GPS信号的接收机,就可以全天候、全球范围地测量运动载体的七维状态参数和三维状态参数。其用途之广、影响之大,是其它任何无线电接收设备所不能及的。此外,GPS卫星的发射入轨还为大地测量学、地球动力学、地球物理学、天体力学、载人航天、全球海洋学和全球气象学提供了一种新的高精度、全天时、全天候测量技术。

最基本的GPS技术设备就是要有一个能接收GPS信号并调制输出的装置,而该装置的最基本功能就是能显示当时所在地的经纬度。目前已经有很多基于GPS接收模块开发的产品,如GPS手持设备、车载GPS导航仪等,虽然它们功能强大,如带有大地图的车载GPS导航仪,但是它们价格相对昂贵,对于普通应用来说完全没有必要。因此本设计基于这种情况,针对普通用户使用GPS的实际需求,设计制作了一款基于单片机的GPS装置,用于采集并显示GPS定位信息。

本设计具有实时经纬度显示、短信查询定位信息、电路简单、成本低等优点,具有广阔的市场前景。

方案选择

微控制器的选择

方案一:AT89C52是美国ATMEL公司生产的一款低压高性能CMOS 8位单片机。该器件采用ATMEL公司的高密度非易失性存储技术生产,兼容标准MCS-51指令系统,内置通用8位中央处理器(CPU)和Flash存储单元,功能强大。片上8K程序存储器为FLASH技术。该类型单片机对开发设备要求极低,大大缩短了开发时间。写入单片机的程序还可以加密,很好的保护了我们的劳动成果。再者,AT89C52目前的价格比8031低,市场供应也充足。AT89C52可以构成真正的单片机最小应用系统,减小了系统体积,增加了系统的可靠性,降低了系统成本。只要程序长度小于8K,四个I/O口全部提供给用户。 可用5V电压编程,擦写时间仅需10ms。AT89C51芯片提供三级程序存储器加密,提供方便、灵活、可靠的硬加密手段,完全可以保证程序或系统不被复制。PO口是一个三态双向端口,俗称数据总线口,因为只有此端口才可以直接对外部存储器进行读/写操作。

解决方案2:STC89C52系列单片机的指令系统与AT89C52系列完全兼容,但在实际运行中存在不少问题:

(1)AT89C52没有ISP下载,所以需要一个下载器。STC89C52可以使用USB转串口进行下载。下载软件可以在STC厂家的网站上下载。

(2)STC单片机执行指令的速度非常快,大概是AT的3-30倍。速度虽然是好事,但是在AT上运行良好的程序,在STC上可能就运行不好。最典型的例子就是对时序要求严格的模块,使用STC时,需要将延时提高到AT的10-30倍左右。你自己调试一下就会发现这一点。

(3)STC单片机对工作环境的要求比较低,低于5V电压还能正常工作,甚至3V~4V之间都能工作。而AT在这样的环境下肯定不行。所以当一个系统用STC单片机能正常工作,而用AT单片机不能正常工作时,直接检查最小系统,看单片机的电源是否正常。

对比这两种方案,由于我在学校学过数字电路、单片机原理、C语言编程,考虑到单片机的各种资源以及作为学生所能获得的资源,在对比了设计要求后,我选择使用STC系列芯片。再加上学校也提供了相应的硬件操作平台,方便实际操作,所以STC是比较合理的选择。本系统选择STC89C52单片机作为主控芯片,对于设计运行来说已经足够了,而且价格便宜,程序下载方便。

显示选择程序

方案一:采用12864液晶屏。该液晶模块为128×64点阵汉字图形液晶模块,可显示汉字和图形。内置8192个汉字(16X16点阵)、128个字符(8X16点阵)和64X256点阵显示RAM(GDRAM)。可直接与CPU接口,提供两种接口连接微处理器:8位并行和串行连接方式。具有光标显示、画面移位、休眠模式等多种功能。

方案二:使用LCD1602液晶显示器,LCD1602A是工业字符液晶,可以同时显示16×02,也就是32个字符(16列2行)。1602只能显示字母、数字和符号,可以显示16*2个字符,但是寄存器多于32个,显示效果有逐个显示字符、从左到右或者从右到左显示字符等,显示效果比较简单。

总结:从编程上来说,两者难度和原理差不多,都是写指令,地址,数据等。当然12864液晶屏显示更全面,字符也更多,相比1602液晶屏,12864可以更生动,更具体实现显示功能。不过1602液晶屏也能满足设计要求。网上买比较便宜,最低六块钱左右,最便宜的12864液晶屏也要四十块钱,考虑到成本,当然是低价优先。而LCD1602A则是最佳选择。

主控模块设计

单片机是伴随着微型计算机的发展而产生和发展的。自1975年美国德州仪器公司推出第一台单片机(单片机)TMS-1000以来,单片机技术已成为计算机技术的一个独特分支,其应用领域也越来越广泛,特别是在工业控制中,经常遇到某些物理量的定时采样和控制问题。它在仪器仪表的智能化中也起着极其重要的作用。

如果以8位微控制器的推出为起点,微控制器的发展历史大致可以分为以下几个阶段:

第一阶段(1976-1978年):单片机的探索阶段。Intel公司的MCS-48就是一个代表。MCS-48的推出是工业控制领域的一次探索,其他参与这次探索的公司还有Motorola、Zilog等,都取得了令人满意的成果。这是单片机的诞生时代,“单片机”一词由此而来。

第二阶段(1978-1982年):单片机的完善阶段。Intel公司在MCS-48基础上推出了完善而典型的MCS-51系列单片机。它在以下几个方面为典型的通用总线单片机体系结构奠定了基础。

(1)齐全的外部总线。MCS-51具有经典的8位单片机总线结构,包括8位数据总线、16位地址总线、控制总线以及具有多机通信功能的串行通信接口。

(2)CPU外围功能单元集中管理模式。

(3)体现工业控制特点的地址空间和位操作方式。

(4)命令系统更加丰富完善,增加了许多突出控制功能的命令。

第三阶段(1982—1990年):8位单片机的巩固发展和16位单片机的推出,这也是单片机向微控制器发展的阶段。Intel公司推出的MCS-96系列单片机把测量、控制系统中使用的一些模数转换器、程序运行监视器、脉宽调制器等集成到芯片内,体现了单片机的微控制器特性。

第四阶段(1990-):单片机全面发展阶段。随着单片机在各个领域的全面深入发展应用,出现了速度高、寻址范围大、运算能力强的8位/16位/32位通用单片机和体积小、价格低廉的专用单片机。

单片机是一种在一块集成电路芯片上集成了各种元器件的微型计算机,包括中央处理器CPU、数据存储器RAM、程序存储器ROM、定时/计数器、中断系统、时钟元件集成以及I/O接口电路等。由于单片机具有体积小、价格低、可靠性高、开发应用方便等特点,在现代电子技术和工业领域中得到广泛的应用。在智能仪器中,单片机是应用最广泛、最活跃的领域之一。在控制领域,现在人们更加注重计算机的低成本、体积小、工作可靠性、控制灵活性等。在各类仪器仪表中引入单片机,使仪器仪表实现了智能化,提高了测试的自动化和准确性,提高了计算机的运算速度,简化了仪器仪表的硬件结构,提高了其性能价格比。

MCU 引脚介绍

单片机主要特点:

(1)优异的性价比。

(2)集成度高、体积小、可靠性高。单片机将各种功能部件集成在一块芯片上,内部采用总线结构,减少了芯片之间的连线,大大提高了单片机的可靠性和抗干扰能力。另外,其体积小,对于强磁场环境易于采取屏蔽措施,适合在恶劣环境下工作。

(3)控制功能强。为适应工业控制的要求,一般单片机的指令系统具有极其丰富的传送指令、I/O端口逻辑运算和位处理功能。单片机的逻辑控制功能和运行速度均高于同级别的微机。

(4)低功耗、低电压,容易制作便携式产品。

(5)外部总线增加了I2C(集成电路间)、SPI(串行外设接口)等串行总线方式,进一步缩小了尺寸,简化了结构。

(6)单片机的系统扩展和系统配置比较典型、标准化,容易形成各种规模的应用系统。

性价比极佳。

1.硬件解决方案

硬件组成:5V电源、单片机最小系统、GPS定位模块、按键电路、LCD1602显示电路、电源开关、GSM短信模块。

2. 设计功能

1、MCU型号:STC89C52/51、AT89C52/51、AT89S52/51均可适用。

2、采用GPS模块实现精准定位,LCD1602屏显示时间和经纬度,数据每3s切换显示一次,精确到小数点后6位,定位精准,精度高。

3、具有时间和经纬度显示功能,能准确显示各种信息。

4. 精准定位!您可以在Google地图中输入经纬度来查看位置!

5、按按钮触发GSM短信模块,将当前的经纬度发送到绑定的手机。

3.实物图片

在本次设计过程中,硬件和软件都遇到了不少问题。不过相对于软件来说,硬件还是比较快的解决办法,因为硬件中比较容易排查错误,而软件比较晦涩难懂,还是有一定的难度的。硬件调试方面,首先在焊接好元器件实物板之后,用万用表测量一下这块工控板的电源,电源是最重要的问题,应该是需要特别检查的地方,防止电源正负极短路、错误。然后仔细检查电路的连接有没有问题,有没有没焊好或者没焊好的地方,再检查元器件的安装有没有问题,安装是否符合规定。

单片机最小系统

单片机芯片的另一大特点是并行I/O口。STC89C51共有4个8位并行I/O口,记为P0、P1、P2、P3,每个端口均含有锁存器、输出驱动器和输入缓冲器。实际上它们已被归类为专用寄存器,具有字节寻址和位寻址功能。在访问片外扩展存储器时,低8位地址和数据由P0口分时传输,高8位地址由P2口传输。在没有片外扩展存储器的系统中,这4个端口均可分别作为双向I/O口使用。

单片机的4个I/O口都是8位双向端口,这些端口的结构和特性基本相同,但又各有特点。

STC89C51单片机的时钟信号通常有两种产生方式:一种是内部时钟法,一种是外部时钟法。单片机内部有振荡电路,只要在单片机的XTAL1、XTAL2引脚上接上石英晶体(简称晶振),就组成自激振荡器,在单片机内部产生时钟脉冲信号。图中电容C1、C2的作用是稳定频率、快速起振。电容值为5-30pF,典型值为30pF。晶振CYS的振荡频率范围在1.2-12MHz之间选取,典型值为12MHz、11.0592MHz。

当给STC89C51单片机的RST引脚引入高电平并维持2个机器周期时,单片机内部进行一次复位操作(如果该引脚继续维持高电平,则单片机处于循环复位状态)。

复位电路通常采用上电自动复位和按钮复位两种方式。最简单的上电自动复位电路,通过给外部复位电路电容充电实现上电自动复位,只要Vcc的上升时间不超过1ms,就能实现上电自动复位。当时钟频率为6MHZ时,C取22uF,R取1KΩ。除了上电复位,有时还需要手动按钮复位,本设计采用手动按钮复位。手动按钮复位有电平方式和脉冲方式两种,其中电平复位是通过将RST端通过电阻接到电源Vcc上实现的。

4.硬件原理图调试

在本次设计过程中,硬件和软件都遇到了不少问题。不过相对于软件来说,硬件还是比较快的解决方式,因为在硬件上检查错误比较容易,而软件比较晦涩难懂,还是有一定的难度的。在硬件调试方面,首先在焊接好元器件实物板之后,用万用表测量一下这块工控板的电源,电源是最重要的问题,应该是需要特别检查的地方,防止电源正负极短路、接错。然后仔细检查电路的连接有没有问题,有没有没焊好的地方,再检查元器件的安装有没有问题,安装是否符合规定。由于大学四年做过大量的实习,对这些还是比较放心的,但是上机调试之后还是发现了很多问题。

5. PCB 图

在本次设计过程中,硬件和软件都遇到了不少问题。不过相对于软件来说,硬件还是比较快的解决方式,因为在硬件上检查错误比较容易,而软件比较晦涩难懂,还是有一定的难度的。在硬件调试方面,首先在焊接好元器件实物板之后,用万用表测量一下这块工控板的电源,电源是最重要的问题,应该是需要特别检查的地方,防止电源正负极短路、接错。然后仔细检查电路的连接有没有问题,有没有没焊好的地方,再检查元器件的安装有没有问题,安装是否符合规定。由于大学四年做过大量的实习,对这些还是比较放心的,但是上机调试之后还是发现了很多问题。

6.在Keil中编写的程序源代码

Keil C51是美国Keil Software公司出品的一套51系列兼容单片机C语言软件开发系统。与汇编语言相比,C语言在功能、结构、可读性和可维护性等方面具有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编器、连接器、库管理和功能强大的仿真调试器在内的完整的开发解决方案,并通过集成开发环境(μVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎是你唯一的选择。即使你不使用C语言而只使用汇编语言编程,其方便易用的集成环境和功能强大的软件仿真调试工具也会使你事半功倍。

部分代码:

/****************************************
显示时间
/****************************************/
void GPS_DispTime(void)
{
    uchar i = 0;
    uchar ch;
    char time[5];
	  Int_To_Str(GPS.D.year,time);//年
    i = 0;
    while(time[i] != '')//等待字符串处理完
    {
        ch = time[i++];
      
		    send_data[send_len++] = ch;//短信内容信息装载
    }
		send_data[send_len++] = '-';
		
		
		Int_To_Str(GPS.D.month,time);//月
    i = 0;
    while(time[i] != '')//等待字符串处理完
    {
        ch = time[i++];
		    send_data[send_len++] = ch;
    }
		send_data[send_len++] = '-';
		
		
		Int_To_Str(GPS.D.day,time);//日
    i = 0;
    while(time[i] != '')//等待字符串处理完
    {
        ch = time[i++];
		    send_data[send_len++] = ch;
    }
	  send_data[send_len++] = ',';
		
		LCD1602_Set_AC(10, 0);//显示坐标
		LCD1602_write_data(' ');
		
    Int_To_Str(GPS.D.hour,time);//时
    i = 0;
    while(time[i] != '')//等待字符串处理完
    {
        ch = time[i++];
			  LCD1602_write_data(ch);//显示信息
		    send_data[send_len++] = ch;
    }
    send_data[send_len++] = ':';
		LCD1602_write_data(':');//显示信息
		
    Int_To_Str(GPS.D.minute,time);//分
    i = 0;
    while(time[i] != '')//等待字符串处理完
    {
        ch = time[i++];
			  LCD1602_write_data(ch);//显示信息
		    send_data[send_len++] = ch;
    }
		send_data[send_len++] = ':';

这些信息包括:

如果需要完整资料请点击下方名片添加我,向我索取资源压缩包的百度网盘下载地址和提取码。

单片机

Keil C51v9.0 免费汉化版:强大的单片机编程工具

2024-6-4 22:04:44

单片机

AVR 单片机编程软件(AVR fighter):免费好用的烧录工具

2024-6-4 23:03:45

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索