请教C源码问题,TMS320F2812驱动PCF8576,用于液晶显示(附电路图)

[复制链接]
6427|6
 楼主| fmcok 发表于 2008-7-20 18:06 | 显示全部楼层 |阅读模式
#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 /><br />static&nbsp;&nbsp;&nbsp;&nbsp;uchar&nbsp;&nbsp;&nbsp;&nbsp;Digit[5];&nbsp;&nbsp;&nbsp;&nbsp;//数据发送缓冲区<br />static&nbsp;&nbsp;&nbsp;&nbsp;uchar&nbsp;&nbsp;&nbsp;&nbsp;F0;<br /><br />void&nbsp;delay_us(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&lt15;&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_us(10);<br />&nbsp;&nbsp;&nbsp;&nbsp;SCL&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;delay_us(50);<br />&nbsp;&nbsp;&nbsp;&nbsp;SDA&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;delay_us(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_us(10);<br />&nbsp;&nbsp;&nbsp;&nbsp;SCL&nbsp;=&nbsp;1&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;delay_us(50);<br />&nbsp;&nbsp;&nbsp;&nbsp;SDA&nbsp;=&nbsp;1&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;delay_us(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_us(10);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SCL&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delay_us(50);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SCL&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delay_us(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_us(1);<br />&nbsp;&nbsp;&nbsp;&nbsp;SDA&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;delay_us(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_us(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_us(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(0x70);&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(0x70);&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 />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;start();<br />&nbsp;&nbsp;&nbsp;&nbsp;sendbyte(&nbsp;0x70&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//工作方式<br />&nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;F0&nbsp;==&nbsp;1&nbsp;)&nbsp;return;<br />&nbsp;&nbsp;&nbsp;&nbsp;sendbyte(&nbsp;0x80&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//子地址<br />&nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;F0&nbsp;==&nbsp;1&nbsp;)&nbsp;return;<br />&nbsp;&nbsp;&nbsp;&nbsp;sendbyte(&nbsp;0xC8&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//工作模式<br />&nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;F0&nbsp;==&nbsp;1&nbsp;)&nbsp;return;&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;<br />&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_us(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 />
 楼主| fmcok 发表于 2008-7-20 18:07 | 显示全部楼层

通用IO口模拟I2C总线

  
snakeemail 发表于 2008-7-20 19:37 | 显示全部楼层

冷静,仔细看资料,定有结果

  
 楼主| fmcok 发表于 2008-7-20 21:04 | 显示全部楼层

调试一天了,还没通过。???

  
 楼主| fmcok 发表于 2008-7-21 08:59 | 显示全部楼层

最新进展

LCD的COM口接地有问题,将它与PC8576背极输出BP1,BP2连接,但写入命令时有问题,&nbsp;&nbsp;&nbsp;&nbsp;sendbyte(&nbsp;0x70&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//器件地址<br />&nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;F0&nbsp;==&nbsp;1&nbsp;)&nbsp;return;<br />&nbsp;&nbsp;&nbsp;&nbsp;sendbyte(&nbsp;0xCD&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//工作模式<br />&nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;F0&nbsp;==&nbsp;1&nbsp;)&nbsp;return;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;sendbyte(&nbsp;0x10&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//数据指针<br />&nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;F0&nbsp;==&nbsp;1&nbsp;)&nbsp;return;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;sendbyte(&nbsp;0x73&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//闪烁方式<br />&nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;F0&nbsp;==&nbsp;1&nbsp;)&nbsp;return;&nbsp;&nbsp;&nbsp;&nbsp;<br />前三个命令正常,闪烁方式0x73写入后无应答。<br /><br />
 楼主| fmcok 发表于 2008-7-21 23:33 | 显示全部楼层

有人回答吗?多谢。

  
 楼主| fmcok 发表于 2008-7-22 17:59 | 显示全部楼层

终于搞定了,对这个论坛真有些失望!

终于搞定了,对这个论坛真有些失望!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

30

主题

55

帖子

0

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