12864液晶显示串行程序调试总结.doc
文本预览下载声明
12864液晶显示串行程序调试总结
??? 先说说我的调试初衷
??? 前一阵看实验室的兄弟姐妹们都闲的无聊,就有人DIY了,有人个BF做电子时钟,一个液晶30多,一个12C887 20多,板子加器件还有单片机算下来少说也有70大洋。感觉实在不划算,但是对液晶还是蛮感兴趣的,一方面熟悉一下串行设备,一方面为以后做准备,毕竟液晶显示操作起来要比LED简单,而且能实时显示,到什么时候都能用上。所以,这次液晶屏的调试,我就想搜集一些常用的程序,适当的修改,让液晶屏达到“拿来就能用上”的目的。
??? 先说说我这次调试的液晶屏,12864,带子库的,蓝色屏幕。就是这张图了
1201_181323.jpg (155.6 KB)
2010-12-1 18:59
??? 单片机我选的是英飞凌xc824,新出的哦。不是有啥特殊偏好,手头就有这个,就先用这个吧,主要是我对这个最小系统板上的触摸按键比较感兴趣。当然了,它也有缺点,内存太小,连一个12864的图片都装不下。:Q
?
??? 闲话少说,先从最基本的数据手册开始吧
中显液晶12864.pdf (1.31 MB)
中显液晶12864.pdf (1.31 MB)下载次数: 91
2010-12-1 18:59
??? 这是中文资料,因为这种东西已经被使用的多的不能再多了,而且厂家众多,但是有细微差别,比如串行和并行,有的是焊点切换的,有的是软件切换的。我这个是后者。
刚接线的时候还出了个笑话,太相信实物和datasheet和对应的了,结果屏幕的背光接反了,幸好没烧。
?
??? 硬件方面,我选串行是因为它用线少,我很懒的。?? P1.0口对应CS,P1.1口对应SID,P1.2口对应CLK.
??? 参考时序在datasheet上写的很清楚
?
?
?
时序.jpg (74.63 KB)
2010-12-1 18:59
有这个当指导思想,照着写程序吧.动手之前,要先弄明白液晶屏是如何控制的,它内部也有控制芯片,这款的芯片是ST7920,对液晶的操作分为控制指令部分和数据传送部分。
指令呢,数据手册给了很多。用到再看吧。
指令.jpg (76.27 KB)
2010-12-1 18:59
?
??? 做了这么多铺垫,该说说程序了。下面以子程序的形式逐一贴出来,这里面有的是我找的,有的是我自己编写的,就一个目的,好用。
??? //-----------------发送命令子程序----------------------- P1.0(cs),P1.1(SID),P1.2(CLK)void send_command(unsigned char command_data)?//发送命令{unsigned char i;unsigned char i_data;i_data=0xf8;?? //串行方式,数据从MCU到LCD,倒数第二位L代表数据控制指令,H代表显示数据P1_0=1;P1_2=0;for(i=0;i8;i++)????? {???????? P1_1=(bit)(i_data0x80);???????? P1_2=0;???????? P1_2=1;???????? i_data=i_data1;?????? }?? i_data=command_data;??? //发送用户指定指令?? i_data=0xf0;?? for(i=0;i8;i++)???? //发送高位??????? {???????? P1_1=(bit)(i_data0x80);???????? P1_2=0;???????? P1_2=1;???????? i_data=i_data1;??????? }?? i_data=command_data;?? i_data=4;?? for(i=0;i8;i++)???? //发送低位??????? {???????? P1_1=(bit)(i_data0x80);???????? P1_2=0;???????? P1_2=1;???????? i_data=i_data1;??????? }???? P1_0=0;???? delay_1ms(10);???? }
?
//-----------------发送数据子程序-----------------------void send_data(unsigned char command_data)? {?unsigned char i;?unsigned char i_data;?i_data=0xfa;??? P1_0=1;?? for(i=0;i8;i++)??????? {???????? P1_1=(bit
显示全部