历史上的今天
今天是:2024年12月06日(星期五)
2019年12月06日 | 2864串口接线方式与实例程序
2019-12-06 来源:51hei
百度了好长时间都没有找到带字库的12864使用串口如何接线,后来参阅了一下12864的产品说明,终于摸索出来了,本人是刚入门单片机,还有好多的不懂的,我把接线的方式还有实例程序分享出来,只要对大家有一丁点的帮助就满足了。首先看引脚定义
RS=CS; R/W=SID; E=CLK; FSB高电平为并行接口,用并口时接高电平,FSB接低电平时为串口,高低电平可以直接接VCC或者GND也可以用软件去控制,实现并口和串口的切换。RET不接线也能使用,用串口时除了DB0--DB7就不再使用外,其他的接口按手册上说明使用。下面是测试代码,也是参阅从51黑电子论坛的不过有些错误无法显示,已经更改。
#include #include #define uchar unsigned char #define uint unsigned int sbit CS=P3^5; //片选信号 sbit SID=P3^6; //数据信号 sbit SCLK=P3^4; //时钟信号 sbit RST=P2^2; //复位信号 sbit CH = P3^7; //并行、串行选择信号 /******************************************************************** * 名称 : 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(20000); 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(50); write_com(0x80); hzkdis("铅酸电池放电仪"); write_com(0x90); hzkdis("电压"); write_com(0x92); hzkdis("16.8v 13.2v"); write_com(0x98); hzkdis(" 电子爱好者"); } /******************************************************************** * 名称 : Main() * 功能 : 主函数 * 输入 : 无 * 输出 : 无 ***********************************************************************/ void Main() { CH = 0; delay(1); lcdinit(); delay(10); while(1) { Test(); a++; delay(5000); } }
史海拾趣
|
郑铁职院无线电协会09年全国大学生电子设计竞赛全纪录——《破茧成蝶》 本帖最后由 paulhyde 于 2014-9-15 09:00 编辑 郑州铁路职业技术学院无线电协会在07年“全国大学生电子设计竞赛”中获得最高奖“索尼杯”、 “全国一等奖”后,在09年度“全国大学生电子设计竞赛”中再创佳绩:荣获全国一等奖一个、全国二等奖一个 ...… 查看全部问答> |
|
短信猫在气象行业应用 气象信息采集系统利用实时采集的气象资料,对未来一定时段内的气象情况作出较为精确的预测和报警,包括进行短期的降雨预报、中期降水预报和洪水的预警预报,是防汛工作中非常重要的环节构建气象信息采集传输系统要求数据通信 ...… 查看全部问答> |
|
函数原型 DWORD RasSetEntryProperties( LPWSTR lpszPhoneBook, LPWSTR szEntry, LPRASENTRY lpbEntry, DWORD dwEntrySize, LPBYTE lpb, DWORD dwSize ); ...… 查看全部问答> |
|
由于我要采样11路,所以问两个问题: 一\\\\请帮忙推荐一个比较适合的AD采样芯片 二,AD采样结果用SPI接收好,还是多通道缓冲接收好呢… 查看全部问答> |
|
小弟做毕设遇到个棘手问题,望各位好心人帮助小弟用的arm开发板是友坚恒天的S3C6410,将GPIO的GPK的15-8位和GPL的7-0位从高到低组合成16位数据,但在编写驱动时报错,可能是XXX_read函数有问题,代码如下:驱动部分代码:DWORD GIO_Init(LPCTSTR PC ...… 查看全部问答> |
|
昨天更换了最新的ccs3.3。奇怪的是这个编译器没有把我用来做二级引导的boot.c文件生成在out文件中。 因为看.map文件时,内存的0至0x400没有使用。请问这是什么情况。 不能自启动很是着急,请问各位高手这应该怎么处理? 是不是编译器优化的问题 ...… 查看全部问答> |




