请高手分析如下源码,TMS320F2812驱动PCF8576,用于液晶显示

[复制链接]
2422|0
 楼主| fmcok 发表于 2008-7-20 14:38 | 显示全部楼层 |阅读模式
单步跟踪了时序,能写入PCF8576,有应答,但LCD显示不变,即PCF8576输出引脚电位保持不变,为3.3V。请高手指点:<br />#include&nbsp;&quot;DSP28_Device.h&quot;<br /><br />#define&nbsp;uint&nbsp;unsigned&nbsp;int<br />#define&nbsp;uchar&nbsp;unsigned&nbsp;char<br /><br />#define&nbsp;SDA&nbsp;GpioDataRegs.GPADAT.bit.GPIOA11<br />#define&nbsp;SCL&nbsp;GpioDataRegs.GPADAT.bit.GPIOA12<br />#define&nbsp;&nbsp;&nbsp;&nbsp;SDADIR&nbsp;&nbsp;&nbsp;&nbsp;GpioMuxRegs.GPADIR.bit.GPIOA11<br />#define&nbsp;&nbsp;&nbsp;&nbsp;SCLDIR&nbsp;&nbsp;&nbsp;&nbsp;GpioMuxRegs.GPADIR.bit.GPIOA12<br /><br />uchar&nbsp;&nbsp;&nbsp;&nbsp;SlvAdr;<br />uchar&nbsp;&nbsp;&nbsp;&nbsp;SubAdr;<br />uchar&nbsp;&nbsp;&nbsp;&nbsp;PCF8576&nbsp;;<br />uchar&nbsp;&nbsp;&nbsp;&nbsp;MODE1&nbsp;;<br />uchar&nbsp;&nbsp;&nbsp;&nbsp;MODE2;<br />uchar&nbsp;&nbsp;&nbsp;&nbsp;Digit[8];&nbsp;&nbsp;&nbsp;&nbsp;//数据发送缓冲区<br />uchar&nbsp;&nbsp;&nbsp;&nbsp;F0;<br /><br />void&nbsp;delay(uint&nbsp;time)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;uint&nbsp;i,j;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;for(i=0&nbsp;;&nbsp;i&lttime&nbsp;;&nbsp;i++&nbsp;)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(j=0&nbsp;;&nbsp;j&lt50;&nbsp;j++&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />}<br /><br />//起始条件&nbsp;&nbsp;&nbsp;&nbsp;<br />void&nbsp;start()<br />{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;SDA&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;delay(10);<br />&nbsp;&nbsp;&nbsp;&nbsp;SCL&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;delay(50);<br />&nbsp;&nbsp;&nbsp;&nbsp;SDA&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;delay(50);<br />&nbsp;&nbsp;&nbsp;&nbsp;SCL&nbsp;=&nbsp;0&nbsp;;<br />}<br /><br />//停止条件<br />void&nbsp;stop()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;SDA&nbsp;=&nbsp;0&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;delay(10);<br />&nbsp;&nbsp;&nbsp;&nbsp;SCL&nbsp;=&nbsp;1&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;delay(50);<br />&nbsp;&nbsp;&nbsp;&nbsp;SDA&nbsp;=&nbsp;1&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;delay(50);<br />}<br /><br />void&nbsp;sendbyte(uchar&nbsp;ch)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;uchar&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;uchar&nbsp;temp&nbsp;=&nbsp;ch;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;EALLOW;<br />&nbsp;&nbsp;&nbsp;&nbsp;SDADIR&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;EDIS;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;for(i=0&nbsp;;&nbsp;i&lt8&nbsp;;&nbsp;i++&nbsp;)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;(&nbsp;temp&0x80)&nbsp;==&nbsp;0x80&nbsp;)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SDA&nbsp;=&nbsp;1&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SDA&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delay(10);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SCL&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delay(50);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SCL&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delay(20);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;=&nbsp;temp&lt&lt&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;delay(1);<br />&nbsp;&nbsp;&nbsp;&nbsp;SDA&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;delay(1);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;EALLOW;<br />&nbsp;&nbsp;&nbsp;&nbsp;SDADIR&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;EDIS;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;SCL&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;delay(20);&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;F0&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;SDA&nbsp;==&nbsp;1)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;F0&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;delay(10);<br />&nbsp;&nbsp;&nbsp;&nbsp;SCL&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br /><br />void&nbsp;ClearLcd(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;start();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//启动I2C&nbsp;总线<br />&nbsp;&nbsp;&nbsp;&nbsp;sendbyte(0x1070);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//送器件地址<br />&nbsp;&nbsp;&nbsp;&nbsp;sendbyte(0x50);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//显示模式1:1/3偏压、1:4背极、节电方式及清除显示(清屏)<br />&nbsp;&nbsp;&nbsp;&nbsp;stop();<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;<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;<br />void&nbsp;PCF8576SET(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;start();<br />&nbsp;&nbsp;&nbsp;&nbsp;sendbyte(0x1070);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//送器件地址<br />&nbsp;&nbsp;&nbsp;&nbsp;sendbyte(0x58);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//显示模式2:1/3偏压、1:4背极、节电方式及允许显示<br />&nbsp;&nbsp;&nbsp;&nbsp;stop();<br />}<br /><br />void&nbsp;senddata(){<br />&nbsp;&nbsp;&nbsp;&nbsp;uchar&nbsp;i;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//ClearLcd();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;start();<br />&nbsp;&nbsp;&nbsp;&nbsp;sendbyte(&nbsp;0x1070&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;F0&nbsp;==&nbsp;1&nbsp;)&nbsp;return;<br />&nbsp;&nbsp;&nbsp;&nbsp;sendbyte(&nbsp;0x1080&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;F0&nbsp;==&nbsp;1&nbsp;)&nbsp;return;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;for(&nbsp;i=0&nbsp;;&nbsp;i&lt5&nbsp;;&nbsp;i++&nbsp;)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sendbyte(&nbsp;Digit&nbsp;)&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;F0&nbsp;==&nbsp;1&nbsp;)&nbsp;return;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;stop();<br />&nbsp;&nbsp;&nbsp;&nbsp;delay(5000);&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br /><br />void&nbsp;test_lcd()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;Digit[0]=0x71;&nbsp;&nbsp;&nbsp;&nbsp;//闪烁方式<br />&nbsp;&nbsp;&nbsp;&nbsp;Digit[1]=0x7E;&nbsp;&nbsp;&nbsp;&nbsp;//0<br />&nbsp;&nbsp;&nbsp;&nbsp;Digit[2]=0x18;&nbsp;&nbsp;&nbsp;&nbsp;//1<br />&nbsp;&nbsp;&nbsp;&nbsp;Digit[3]=0xB6;&nbsp;&nbsp;&nbsp;&nbsp;//2<br />&nbsp;&nbsp;&nbsp;&nbsp;Digit[4]=0xBC;&nbsp;&nbsp;&nbsp;&nbsp;//3<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;senddata();<br />}<br /><br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

30

主题

55

帖子

0

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