[ZLG-ARM] ks0108 12864液晶驱动问题?

[复制链接]
3393|5
 楼主| graby 发表于 2008-3-21 13:02 | 显示全部楼层 |阅读模式
&nbsp;&nbsp;&nbsp;这几天一直在用周工的EASYARM2131调这块液晶,代码是原来在51用过的,移植上来的,感觉上没什么问题,用示波器测试电平也很好,液晶没有问题,在51上调出来正常,是ARM上的驱动电流不够,还是程序有问题,搞了好几天都没有结果,请高人指点,以下为我的代码。<br />#include&nbsp;&quot;config.h&quot;<br /><br />#ifndef&nbsp;__LCD12864_H&nbsp;<br />#define&nbsp;__LCD12864_H<br /><br />#define&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCD_DI&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&lt&lt&nbsp;8<br />#define&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCD_RW&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&lt&lt&nbsp;9<br />#define&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCD_E&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&lt&lt&nbsp;10<br />#define&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCD_CSA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&lt&lt&nbsp;11<br />#define&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCD_CSB&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&lt&lt&nbsp;12<br />#define&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCD_RST&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&lt&lt&nbsp;13<br />#define&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCD_BUSY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x00000080<br />#define&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCD_DAT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0xff<br /><br />#define&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCD_ALL_DIR()&nbsp;&nbsp;IO0DIR&nbsp;=&nbsp;IO0DIR&nbsp;|&nbsp;(LCD_DI&nbsp;&nbsp;|&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCD_RW&nbsp;&nbsp;|&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCD_E&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCD_CSA&nbsp;|&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCD_CSB&nbsp;|&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCD_RST)&nbsp;&nbsp;&nbsp;<br /><br />#define&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCD_ALL_CLR()&nbsp;&nbsp;IO0CLR&nbsp;=&nbsp;0x00003fff&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />#define&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DI_H()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IO0SET&nbsp;=&nbsp;LCD_DI<br />#define&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DI_L()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IO0CLR&nbsp;=&nbsp;LCD_DI<br />#define&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RW_H()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IO0SET&nbsp;=&nbsp;LCD_RW<br />#define&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RW_L()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IO0CLR&nbsp;=&nbsp;LCD_RW<br />#define&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;E_H()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IO0SET&nbsp;=&nbsp;LCD_E<br />#define&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;E_L()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IO0CLR&nbsp;=&nbsp;LCD_E<br />#define&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CSA_H()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IO0SET&nbsp;=&nbsp;LCD_CSA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />#define&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CSA_L()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IO0CLR&nbsp;=&nbsp;LCD_CSA<br />#define&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CSB_H()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IO0SET&nbsp;=&nbsp;LCD_CSB<br />#define&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CSB_L()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IO0CLR&nbsp;=&nbsp;LCD_CSB<br />#define&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RST_H()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IO0SET&nbsp;=&nbsp;LCD_RST<br />#define&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RST_L()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IO0CLR&nbsp;=&nbsp;LCD_RST<br />&nbsp;<br />extern&nbsp;&nbsp;void&nbsp;LCD_Init(void);<br />extern&nbsp;&nbsp;void&nbsp;LCD_CLR(uint8&nbsp;dat);<br />extern&nbsp;&nbsp;void&nbsp;LCD_Delay(uint32&nbsp;dly);<br />extern&nbsp;&nbsp;void&nbsp;SendData(uint8&nbsp;data);<br />extern&nbsp;&nbsp;void&nbsp;Write_Cmd_L(uint8&nbsp;cmd);<br />extern&nbsp;&nbsp;void&nbsp;Write_Cmd_R(uint8&nbsp;cmd);<br />extern&nbsp;&nbsp;void&nbsp;Write_Dat_L(uint8&nbsp;dat);<br />extern&nbsp;&nbsp;void&nbsp;Write_Dat_R(uint8&nbsp;dat);&nbsp;<br />extern&nbsp;&nbsp;void&nbsp;write_data(uint8&nbsp;xpos,uint8&nbsp;ypos,uint8&nbsp;lcddata);<br />extern&nbsp;&nbsp;void&nbsp;lcd_putchar8x8(&nbsp;uint8&nbsp;x,uint8&nbsp;y,uint8&nbsp;ch&nbsp;);<br /><br />#endif<br />#include&nbsp;&quot;config.h&quot;<br />#include&nbsp;&quot;zifu8_8.h&quot;<br /><br />/*********LCD初始化*****************/<br />void&nbsp;LCD_Init(void)<br />{<br />&nbsp;uint32&nbsp;i;<br />&nbsp;PINSEL0=0x00000000;<br />&nbsp;LCD_ALL_DIR();<br />&nbsp;LCD_ALL_CLR();<br />&nbsp;RST_L();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;for(i=0;&nbsp;i&lt10000;&nbsp;i++);<br />&nbsp;RST_H();&nbsp;&nbsp;&nbsp;<br />&nbsp;for(i=0;&nbsp;i&lt10000;&nbsp;i++);&nbsp;<br />&nbsp;CSA_H();<br />&nbsp;CSB_H();<br />&nbsp;LCD_Delay(30);<br />&nbsp;Write_Cmd_L(0x3e);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//关显示<br />&nbsp;Write_Cmd_R(0x3e);<br />&nbsp;Write_Cmd_L(0xc0);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//起始行<br />&nbsp;Write_Cmd_R(0xc0);&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;Write_Cmd_L(0x3f);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//开显示<br />&nbsp;Write_Cmd_R(0x3f);<br />&nbsp;LCD_CLR(0x00);<br />&nbsp;LCD_Delay(2000);<br />}<br />/***********************************/<br />/***********************************/<br />void&nbsp;LCD_CLR(uint8&nbsp;dat)<br />{&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;uint8&nbsp;i,j,page;<br />&nbsp;&nbsp;&nbsp;&nbsp;for(&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt&nbsp;8;&nbsp;i++&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;page&nbsp;=&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;page&nbsp;|=&nbsp;0xb8;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Write_Cmd_L(&nbsp;page&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCD_Delay(10);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Write_Cmd_L(&nbsp;0x40&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(&nbsp;j&nbsp;=&nbsp;0;&nbsp;j&nbsp;&lt&nbsp;64;&nbsp;j++&nbsp;){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Write_Dat_L(dat);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCD_Delay(10);}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Write_Cmd_R(&nbsp;page&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCD_Delay(10);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Write_Cmd_R(&nbsp;0x40&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(&nbsp;j&nbsp;=&nbsp;0;&nbsp;j&nbsp;&lt&nbsp;64;&nbsp;j++&nbsp;){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Write_Dat_R(dat);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCD_Delay(10);}<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br /><br />/***********************************/<br /><br />/***********延时********************/<br />void&nbsp;LCD_Delay(uint32&nbsp;dly)<br />{<br />&nbsp;uint16&nbsp;i;<br />&nbsp;for(i=0;i&ltdly;i++);&nbsp;<br />}<br />/***********************************/<br /><br />/**********命令数据写出**************/<br />void&nbsp;SendData(uint8&nbsp;dat)<br />{<br />&nbsp;IO0CLR&nbsp;=&nbsp;0xff;&nbsp;//先清零,在送数据<br />&nbsp;IO0SET&nbsp;=&nbsp;dat&0xff;<br />}<br />/***********************************/<br /><br />/**********写左命令*****************/<br />void&nbsp;Write_Cmd_L(uint8&nbsp;cmd)<br />{&nbsp;<br />&nbsp;uint32&nbsp;bak;<br />&nbsp;CSB_H();<br />&nbsp;CSA_L();<br />&nbsp;RW_H();<br />&nbsp;DI_L();<br />&nbsp;IO0DIR&nbsp;=&nbsp;0x00003f00&nbsp;;&nbsp;<br />&nbsp;LCD_Delay(10);<br />&nbsp;do{<br />&nbsp;E_H();&nbsp;<br />&nbsp;LCD_Delay(100);<br />&nbsp;bak&nbsp;=&nbsp;IO0PIN;<br />&nbsp;E_L();<br />&nbsp;}while(bak&LCD_BUSY);<br />&nbsp;IO0DIR&nbsp;=&nbsp;0x00003fff;<br />&nbsp;LCD_Delay(10);<br />&nbsp;RW_L();<br />&nbsp;LCD_Delay(10);<br />&nbsp;SendData(cmd);<br />&nbsp;LCD_Delay(100);<br />&nbsp;E_H();&nbsp;<br />&nbsp;LCD_Delay(100);<br />&nbsp;E_L();&nbsp;<br />}<br />/************************************/<br /><br />/**********写右命令*****************/<br />void&nbsp;Write_Cmd_R(uint8&nbsp;cmd)<br />{<br />&nbsp;uint32&nbsp;bak;<br />&nbsp;CSB_L();<br />&nbsp;CSA_H();<br />&nbsp;RW_H();<br />&nbsp;DI_L();<br />&nbsp;IO0DIR&nbsp;=&nbsp;0x00003f00&nbsp;;//定义数据口为输入方式<br />&nbsp;LCD_Delay(10);<br />&nbsp;do{<br />&nbsp;E_H();&nbsp;<br />&nbsp;LCD_Delay(100);<br />&nbsp;bak&nbsp;=&nbsp;IO0PIN;<br />&nbsp;E_L();<br />&nbsp;}while(bak&LCD_BUSY);<br />&nbsp;IO0DIR&nbsp;=&nbsp;0x00003fff;//定义数据口为输出方式<br />&nbsp;LCD_Delay(10);<br />&nbsp;RW_L();<br />&nbsp;LCD_Delay(10);<br />&nbsp;SendData(cmd);<br />&nbsp;LCD_Delay(100);<br />&nbsp;E_H();&nbsp;<br />&nbsp;LCD_Delay(100);<br />&nbsp;E_L();<br />}<br />/************************************/<br /><br />/**********写左数据*****************/<br />void&nbsp;Write_Dat_L(uint8&nbsp;dat)<br />{<br />&nbsp;uint32&nbsp;bak;<br />&nbsp;CSB_H();<br />&nbsp;CSA_L();<br />&nbsp;RW_H();<br />&nbsp;DI_L();<br />&nbsp;IO0DIR&nbsp;=&nbsp;0x00003f00&nbsp;;<br />&nbsp;LCD_Delay(10);<br />&nbsp;do{<br />&nbsp;E_H();&nbsp;<br />&nbsp;LCD_Delay(100);<br />&nbsp;bak&nbsp;=&nbsp;IO0PIN;<br />&nbsp;E_L();<br />&nbsp;}while(bak&LCD_BUSY);<br />&nbsp;IO0DIR&nbsp;=&nbsp;0x00003fff&nbsp;;<br />&nbsp;LCD_Delay(10);<br />&nbsp;DI_H();<br />&nbsp;LCD_Delay(10);<br />&nbsp;RW_L();<br />&nbsp;LCD_Delay(10);<br />&nbsp;SendData(dat);<br />&nbsp;RW_H();<br />&nbsp;E_H();&nbsp;<br />&nbsp;LCD_Delay(100);<br />&nbsp;E_L();<br />}<br />/************************************/<br /><br />/**********写右数据*****************/<br />void&nbsp;Write_Dat_R(uint8&nbsp;dat)<br />{<br />&nbsp;uint32&nbsp;bak;<br />&nbsp;CSB_L();<br />&nbsp;CSA_H();<br />&nbsp;RW_H();<br />&nbsp;DI_L();<br />&nbsp;IO0DIR&nbsp;=&nbsp;0x00003f00&nbsp;;<br />&nbsp;LCD_Delay(10);<br />&nbsp;do{<br />&nbsp;E_H();&nbsp;<br />&nbsp;LCD_Delay(100);<br />&nbsp;bak&nbsp;=&nbsp;IO0PIN;<br />&nbsp;E_L();<br />&nbsp;}while(bak&LCD_BUSY);<br />&nbsp;IO0DIR&nbsp;=&nbsp;0x00003fff&nbsp;;<br />&nbsp;LCD_Delay(10);<br />&nbsp;DI_H();<br />&nbsp;LCD_Delay(10);<br />&nbsp;RW_L();<br />&nbsp;LCD_Delay(10);<br />&nbsp;SendData(dat);<br />&nbsp;LCD_Delay(100);<br />&nbsp;E_H();&nbsp;<br />&nbsp;LCD_Delay(100);<br />&nbsp;E_L();<br />}<br />/************************************/<br /><br />/************写数据*****************/<br />void&nbsp;write_data(uint8&nbsp;xpos,uint8&nbsp;ypos,uint8&nbsp;lcddata)<br />{&nbsp;&nbsp;&nbsp;&nbsp;if(xpos&lt128)<br />&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;(&nbsp;xpos&nbsp;&&nbsp;0xc0&nbsp;)==&nbsp;0&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Write_Cmd_L(&nbsp;0xb8&nbsp;|&nbsp;ypos&nbsp;);&nbsp;&nbsp;&nbsp;//写页命令<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCD_Delay(10);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Write_Cmd_L(&nbsp;0x40&nbsp;|&nbsp;xpos);&nbsp;&nbsp;&nbsp;&nbsp;//写行命令<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCD_Delay(10);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Write_Dat_L(&nbsp;lcddata&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//写左边数据<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCD_Delay(10);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if(&nbsp;(&nbsp;xpos&nbsp;&&nbsp;0xc0&nbsp;)==&nbsp;0x40&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Write_Cmd_R(&nbsp;0xb8&nbsp;|&nbsp;ypos&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCD_Delay(10);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Write_Cmd_R(&nbsp;0x40&nbsp;|&nbsp;xpos&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCD_Delay(10);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Write_Dat_R(&nbsp;lcddata&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCD_Delay(10);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br />/************************************/<br />/************显示一个字符************/<br />void&nbsp;lcd_putchar8x8(&nbsp;uint8&nbsp;x,uint8&nbsp;y,uint8&nbsp;ch&nbsp;)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;uint8&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;for(&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt&nbsp;8;&nbsp;i&nbsp;++&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;write_data(&nbsp;x+i,&nbsp;y,&nbsp;zifu[(ch&nbsp;-&nbsp;0x20)*8&nbsp;+&nbsp;i]&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCD_Delay(10);<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br />
zlgarm 发表于 2008-3-21 14:15 | 显示全部楼层

12864

graby&nbsp;您好!<br />&nbsp;&nbsp;&nbsp;&nbsp;在EasyARM2131开发板配套光盘中专门针对LCD12864的Demo程序路径为:EasyARM2131_V1.4下册实验例程第9章-ZLGGUI应用实例。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;On&nbsp;duty&nbsp;zlgarm_lijintao
 楼主| graby 发表于 2008-3-22 10:16 | 显示全部楼层

ks0108

例程出来的程序,液晶也没有反应,所以怀疑的2131的驱动能力
zlgarm 发表于 2008-3-24 15:29 | 显示全部楼层

LPC2131

graby&nbsp;&nbsp;您好:<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;LPC2131正常工作时,I/O口可以输入/输出4mA电流,驱动能力上应该没有问题。<br />&nbsp;&nbsp;&nbsp;请看看您的程序,其它地方有没有对引脚连接设置过。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;on&nbsp;duty:zlgarm_zhanghuping<br />&nbsp;&nbsp;&nbsp;
yuzhuju 发表于 2008-3-24 17:35 | 显示全部楼层

MCU的驱动肯定是没问题.

LCD&nbsp;DRIVER&nbsp;IC输入状态时,IO都是高阻抗,驱动怎么会有问题.<br /><br />怀疑是2131的速度比较快.<br /><br />你在每个写指令写数据的TIMING里面多加些DELAY.<br />
silentband 发表于 2008-3-25 23:03 | 显示全部楼层

我也正在用LPC213x调试液晶,关注ing

原来51上的程序已经测试过,移植到arm上的确容易出问题<br />速度因素可能比较大,建议加delay~<br />再看看液晶手册及其厂家提供的例程,把读写时序再看看<br />一起讨论!silentband@163.com
您需要登录后才可以回帖 登录 | 注册

本版积分规则

24

主题

59

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部