完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
只需要2跟线就可以实现12864的串行显示,节约了io口,不过提醒大家,要串行显示首先要对液晶做手术,一般买来的都是默认的并行显示,要串行显示就要接上一个零欧姆电阻,我也不知道0欧姆电阻和没接有什么区别,但是就是必须焊接上去,具体哪个不同的液晶可能不同,不过应该都差不多的,我的液晶是R10.焊上去后就可以啦
下面是.c文件,另外还有两个.h文件,.h文件在下面 #include "lcd12864.h" uchar table0[16]="您好,欢迎光临!"; uchar table1[16]="电子信息工程学院"; uchar table2[16]="创新实验室 sj618"; uchar table3[16]="这是12864 液晶屏"; void main() { // Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; //主系统时钟切换为外部高速晶振 if (CALBC1_8MHZ == 0xFF || CALDCO_8MHZ == 0xFF) { while(1); // If calibration constants erased, trap CPU!! } // Configure Basic Clock BCSCTL1 = CALBC1_8MHZ; // Set range DCOCTL = CALDCO_8MHZ; // Set DCO step + modulation*/ init_lcd();//初始化液晶屏 delay(10); while(1) { display_12864(1,0,table0); display_12864(2,0,table1); display_12864(3,0,table2); display_12864(4,0,table3); } } #ifndef __LCD12864_H__ #define __LCD12864_H__ #include "msp430g2553.h" #include "delay.h" #define rw_out P1DIR|=BIT0 #define rw_h P1OUT|=BIT0 #define rw_l P1OUT&=~BIT0 #define en_out P1DIR|=BIT1 #define en_h P1OUT|=BIT1 #define en_l P1OUT&=~BIT1 uint Strlen(uchar *p) { uint i; for(i=0;*(p+i);i++); return i; } void WriteBytes(uchar *p) { uchar i,j,temp; en_out; rw_out; en_l; for(j=0;j<3;j++) { temp=p[j]; for(i=0;i<8;i++) { if(temp & 0x80) rw_h; else rw_l; en_h; delay(1); en_l; temp<<=1; } } rw_h; } void SerialWriteData(uchar send) { uchar data[3]; data[0]=0xfa ; //1111 1010向液晶写数据 data[1]=send & 0xf0; //取高4位 data[2]=(send<<4)&0xf0; //取低4位 WriteBytes(data); } void SerialWriteCmd(uchar send) { uchar data[3]; data[0]=0xf8 ; //1111 1000向液晶写命令 data[1]=send & 0xf0; //取高4位 data[2]=(send<<4) & 0xf0; //取低4位 WriteBytes(data); } void init_lcd() { en_out; rw_out; SerialWriteCmd(0x0C);//显示开,关闭游标和游标位置 SerialWriteCmd(0x06); SerialWriteCmd(0x01);//清除显示,等待命令 } void display_12864(uchar hang,uchar lie,uchar *p) { uchar i; switch(hang) { case 1:SerialWriteCmd(0x80+lie);break; case 2:SerialWriteCmd(0x90+lie);break; case 3:SerialWriteCmd(0x88+lie);break; case 4:SerialWriteCmd(0x98+lie);break; } for(i=0;i<16;i++) { SerialWriteData(p); } } #endif #ifndef __DELAY_H__ #define __DELAY_H__ #define uchar unsigned char #define uint unsigned int //1ms延时程序 8M晶振 void delay(uint z) { unsigned int i,j; for(i = 0;i<2200;i++) for(j=0;j } #endif |
|
相关推荐
|
|
|
|
|
|
|
|
好用。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
请问一个迭代法图形二值化的程序代码把宽改成240之后整个屏幕不显示是什么原因?
2649 浏览 0 评论
2637 浏览 1 评论
1876 浏览 1 评论
2028 浏览 2 评论
2594 浏览 2 评论
684浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-29 08:14 , Processed in 0.639459 second(s), Total 79, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号