51单片机利用串口接收GPS信号并液晶显示C语言.doc
文本预览下载声明
#include reg52.h //89C52单片机头文件
#include LCD_code.h //液晶LCD的字模文件
#include intrins.h
//功能引脚定义
sbit A = P0^7; //数据1/命令0选择
sbit RW = P0^6; //读1/写0
sbit E1 = P0^4; //片选1(Master)
sbit E2 = P0^5; //片选2(slave)
sbit LED= P0^3; //背光
sbit up = P0^0; //向上翻页键
sbit down= P0^1; //向下翻页键
#define data P2 //液晶并行数据
//液晶显示控制命令表
#define disp_on 0xAf //显示关闭
#define disp_off 0xAe //显示打开
#define disp_start_line 0xC0 //显示起始地址(后5位-表示0-31行)
#define page_addr_set 0xB8 //页地址设置(0~3)
#define col_addr_set 0x00 //列地址设置(0~61)
#define status_busy 0x80 //0=ready
#define modeRWite 0xEE //写模式
#define dynamic_driver 0xA4 //动态驱动
#define adc_select 0xA0 //clockwise
#define clk32 0xA9 //刷新时钟设置1/32
#define clk16 0xA8 //刷新时钟设置1/16
#define reset 0xE2 //软件复位
#define uchar unsigned char
#define uint unsigned int
//全局变量,及标志位定义
uchar time_counter = 0; //定时器的软件计数器
uchar key = 0; //键盘值
uchar serial_counter; //串行计数器
bit disp_flag = 0; //显示更新标志
uchar bdata serial_byte = 0; //串行口标志位定义字节
sbit Sflag = serial_byte^0; //串行接收头部标志,一下8个都定义在serial_byte内
sbit G1flag = serial_byte^1;
sbit Pflag = serial_byte^2;
sbit G2flag = serial_byte^3;
sbit G3flag = serial_byte^4;
sbit Aflag = serial_byte^5;
sbit DFflag = serial_byte^6;
sbit ENflag = serial_byte^7;
bit r_flag = 0;
unsigned char idata serial_buff[77]; //串行接收缓冲
//uchar code head[] = {$,G,P,G,G,A,,};
//bit serial_flag = 0;
////液晶操作主要函数////////////////////////////////////////////////////////////
//void lcd_init(void)
//引用:lcd_init(); 说明:LCD初始化;
////////////////////////////////////////////////////////////////////////////////
//void lcd_clr(void)
//引用:lcd_clr(); 说明:LCD清屏;
////////////////////////////////////////////////////////////////////////////////
void lcd_init(void); //LCD初始化
void lcd_clr(void); //LCD清屏
void wait_ready(void); //等待ready
void draw_bmp(uchar col,uchar layer,uchar width,uchar *bmp); //点阵码显示输出
void ASCII2BCD(void); //ASCII码转换为BCD码
void logo(void); //开机画面显示
/*
中断程序
*/
///////////////
显示全部