文档详情

单片机连接串口液晶屏C语言程序.pdf

发布:2017-09-03约1.33万字共9页下载文档
文本预览下载声明
单片机连接串口液晶屏(ATPAD)C 语言实例 工业串口液晶屏 ATPad 是一款主动式串口液晶屏,其界面和人机交互都不需要单片机 参与,只需要 2 条简单的指令进行数据交互即可完成系统设计,使用非常简单。 本实例程序是基于 ATPAD 串口屏一个典型的应用:串口液晶屏显示单片机采集到的 8 路 AD 值并存储到文件系统中;串口液晶屏显示单片机采集到的一个实时波形;串口液晶屏上 的 4 个按钮控制单片机的 4 路输出; 串口液晶屏将用户设置的 2 个参数传给单片机。 使用的 2 条指令定义如下: 1,液晶屏发送数据给单片机(发送一个寄存器数据): 发送:| EID |0X06 |addrH |addrL |val1H |val1L |crcL |crcH 共8 个字节 EID: 单片机ID 0X06:命令字,固定为 0x06 addrH,addrL: 寄存器地址高 8 位,寄存器地址低 8 位 val1H,val1L: 寄存器值高 8 位, 寄存器值低 8位 crcL, crcH : 前面所有数据的 CRC校验低 8 位和高 8 位(可设置为忽略) 2, 单片机发送数据给 ATPAD(发送若干个寄存器数据): 发送:| ID |0X10 |addrH |addrL |Num |val1H |val1L | |crcL |crcH 总长度为 Num*2+7 个字节 ID: 串口液晶屏的 ID 0x10: 命令字,固定为 0x10 addrH addrL: 写入寄存器地址的高 8 位和低8 位 Num: 写入的寄存器数, 1~125, 一个寄存器 16 位(2 个字节) val1H val1L: 第一个寄存器的高 8位和低 8 位值 crcL crcH : 前面所有数据的 CRC 校验低 8 位和高 8 位(可设置为忽略) 以下是使用 C 语言的单片机程序: // 是否需要做 CRC 校验,1 校验,0,不需要校验 #define CRC_CHECK_UART 1 // 定义该单片机的 id,必须和液晶屏端定义的一致 int MY_ID=3; // 定义串口液晶屏的 id,必须和液晶屏端定义的一致 int ATPAD_ID=1; //寄存器定义,必须和液晶屏端定义一致// //[1-8]: 8路模拟量值的 100 倍 //[9],[10]: 2 个参数 //[11]: 4 路输出状态, BIT0~BIT3 分别代表输出 1~输出 4, 为 1 打开,0关闭 //[20]~[619]: 波形数据, 共600 个点 #define ATPAD_UART_WAVLENGTH 600 #define ATPAD_REG_AD1 1 #define ATPAD_REG_AD2 2 #define ATPAD_REG_AD3 3 #define ATPAD_REG_AD4 4 #define ATPAD_REG_AD5 5 #define ATPAD_REG_AD6 6 #define ATPAD_REG_AD7 7 #define ATPAD_REG_AD8 8 #define ATPAD_REG_PARAM1 9 #define ATPAD_REG_PARAM2 10 #define ATPAD_REG_OUTPUT 11 #define ATPAD_REG_WAV 20 // 接收数据缓存定义, 液晶屏写单片机命令字指令只有 8字节 #define COMMADN_MAXLENGTH 8 char rCommand[COMMADN_MAXLENGTH]; int rCommandLength=0; // 发送数据缓存定义,本例中一次最多发 30 个寄存器,故长度为 30*2+7=67 #define DATA_MAXLENGTH 67 char sCommand[DATA_MAXLENGTH]; int param1; // 参数1 是串口屏通过写寄存器 9 设置给单片机的参数 int param2; // 参数2 是串口屏通过写寄存器 10 设置给单片机的参数 int outstatus; // 输出控制是串口屏通过写寄存器 11 设置给单片机的输出控制状态 static float CosineTable[91] = { { 1.000000 },{ 0.9998
显示全部
相似文档