我的工作是修理船舶的通讯导航设备,很多设备都输出rs232和rs485的数字信号,工作中常用万用表指针的摆幅,来判断有没有信号传过来,但并不能区分是哪一种信号,如gps,罗经等,有时只能用笔记本串口去测试,搬来搬去很是不方便,甚至还不小心摔过笔记本。
在本区,看过bg4uvr老师的关于gps单片机显示制作后,就萌生一个念头,做一个几种常用语句信号的单片机检测显示电路,我的构思电路很简单(参考bg4uvr老师的电路),会做pcb板可是不会编程(单片机编程初学),因此求一个c语言程序(c语言还能看懂一些,汇编绕来绕去看得头晕,俺可没有受过高等教育)
要求再1602的屏上显示,测试时要在屏上显示所测信号的语句(按语句去判断是什么设备的信号),没有信号或者乱码时显示no signal
gps,要显示测的语句(gga gll rmc rmb),并显示经纬度
罗经,要显示测的语句hdt,还要显示度数(和语句里的数相同)
计程仪,要显示测的语句vbw,还要显示速度值(和语句里的数相同)
ais,要求只显示vdm vdo语句名
ais设备
!aivdm,1,1,,a,169p5@001w8gb1<a6b0eqdj00<4n,0*32
!aivdm,1,1,,b,169p0p80008gmtda7?o2tr800=vc,0*03
!aivdo,1,1,,,18iklv1p008g04ta32h:kgv60000,0*64(语句vdm vdo,ais设备,要求只显示vdm vdo)
罗经 有两种语句字头
$aghdt,285.4,t*2f 显示 hdt 285.4
$hehdt,227.8,t*20 显示hdt 227.8 范围0.0-360.0 (语句hdt,罗经 船头相对北的方向 单位度)
计程仪
$bsvbw,003.5,,a,,,v*6d 显示vbw 003.5
$bsvbw,003.4,,a,,,v*6c 显示vbw 003.4 范围0-35(语句vbw,计程仪 速度,单位海里)
gps
$gprmb,a,3.46,r,0462,0461,2953.500,n,12210.900,e,006.88,030.,00.0,v*1e
$gpgga,034203,2947.557,n,12206.928,e,2,06,01.0,+0032,m,+012,m,06,0626*7d
$gprmc,034203,a,2947.557,n,12206.928,e,00.0,137.,170107,00.,w*6c
$gpgll,2947.557,n,12206.928,e,034203,a*27
显示语句gga gll rmc bmb 及经纬度
我附上bg4uvr老师的gps程序,和另一位老师的程序,以作参考