您的当前位置:首页正文

12864串口显示

2021-03-15 来源:欧得旅游网
/******************************************************************** * 描述 : 该程序实现了12864以串行的方式进行通信。

***********************************************************************/ #include #include

#define uchar unsigned char #define uint unsigned int

sbit CS = P2^4; //片选信号 sbit SID = P2^5; //数据信号 sbit SCLK= P2^6; //时钟信号 //sbit RST = P2^3; //复位信号 //sbit CH = P2^1; //并行、串行选择信号

/******************************************************************** * 名称 : delay()

* 功能 : 延时,延时时间为 100us * t。这是通过软件延时,有一定误差。 * 输入 : t * 输出 : 无

***********************************************************************/ void delay(unsigned int t) { unsigned int i,j; for(i=0; i/******************************************************************** * 名称 : sendbyte()

* 功能 : 按照液晶的串口通信协议,发送数据 * 输入 : zdata * 输出 : 无

***********************************************************************/ void sendbyte(unsigned char zdata) { unsigned int i; for(i=0; i<8; i++) { if((zdata << i) & 0x80) { SID = 1; } else {

SID = 0; } SCLK = 0; SCLK = 1; } }

/******************************************************************** * 名称 : write_com() * 功能 : 写串口指令 * 输入 : cmdcode * 输出 : 无

***********************************************************************/ void write_com(unsigned char cmdcode) { CS = 1; sendbyte(0xf8); sendbyte(cmdcode & 0xf0); sendbyte((cmdcode << 4) & 0xf0); delay(2); }

/******************************************************************** * 名称 : write_data() * 功能 : 写串口指令 * 输入 : cmdcode * 输出 : 无

***********************************************************************/ void write_data(unsigned char Dispdata) { CS = 1; sendbyte(0xfa); sendbyte(Dispdata & 0xf0); sendbyte((Dispdata << 4) & 0xf0); delay(2); }

/******************************************************************** * 名称 : lcdinit()

* 功能 : 初始化函数 * 输入 : cmdcode * 输出 : 无

***********************************************************************/ void lcdinit()

{

// RST = 0; // delay(100); // RST = 1; // delay(200); write_com(0x30); delay(50); write_com(0x0c); delay(50); }

/******************************************************************** * 名称 : hzkdis() * 功能 : 显示字符串 * 输入 : *s * 输出 : 无

***********************************************************************/ void hzkdis(unsigned char code *s) { while(*s > 0) { write_data(*s); s++; delay(50); } }

/******************************************************************** * 名称 : Test()

* 功能 : 显示子函数 * 输入 : 无 * 输出 : 无

***********************************************************************/ void Test() { write_com(0x03); delay(5); write_com(0x80); hzkdis(\"当前区: 错误数 \"); write_com(0x83); hzkdis(\":B\"); write_com(0x87); hzkdis(\"08\"); write_com(0x90);

hzkdis(\"T:00.0S I:00.0mA\"); write_com(0x88); hzkdis(\"潜伏期:00.0S\"); write_com(0x98); hzkdis(\"是否打印:Y/N\"); }

/******************************************************************** * 名称 : Main() * 功能 : 主函数 * 输入 : 无 * 输出 : 无

***********************************************************************/ void Main() { CH = 0; delay(1); lcdinit(); delay(10); while(1) { Test(); delay(100); } }

因篇幅问题不能全部显示,请点此查看更多更全内容