[ZLG-ARM] 一个简单的液晶问题!!

[复制链接]
 楼主| yanis2 发表于 2007-1-8 08:37 | 显示全部楼层 |阅读模式
一个初始化HT1621的小程序!初学ARM不知道怎么回事液晶总是不亮,请各位帮帮我<br /><br /><br />*&nbsp;File:SPIDISP.C<br />*&nbsp;功能:使用硬件SPI接口输出显示。(硬件:HT1621输出控制液晶显示)<br />*&nbsp;说明:将跳线器JP9短接。<br />****************************************************************************/<br />#include&nbsp;&nbsp;&quot;config.h&quot;&nbsp;<br /><br />#define&nbsp;&nbsp;&nbsp;CS&nbsp;&nbsp;&nbsp;&nbsp;0x00002000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;P0.13&nbsp;*/<br />#define&nbsp;&nbsp;&nbsp;WR&nbsp;&nbsp;&nbsp;&nbsp;0x00001000&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;P0.12&nbsp;*/<br /><br />#define&nbsp;&nbsp;&nbsp;CLK&nbsp;&nbsp;&nbsp;&nbsp;0x00000800&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;P0.11&nbsp;*/<br />#define&nbsp;&nbsp;&nbsp;SPI_IOCON&nbsp;&nbsp;&nbsp;&nbsp;0x00003800&nbsp;&nbsp;&nbsp;&nbsp;<br />#define&nbsp;BIAS&nbsp;0x52&nbsp;&nbsp;&nbsp;&nbsp;<br />#define&nbsp;SYSEN&nbsp;0x02<br />#define&nbsp;LCDON&nbsp;0x06<br /><br />#define&nbsp;LCDOFF&nbsp;0x04<br />#define&nbsp;uchar&nbsp;unsigned&nbsp;char<br />#define&nbsp;uint&nbsp;unsigned&nbsp;int<br />/****************************************************************************<br />*&nbsp;名称:DelayNS()<br />*&nbsp;功能:长软件延时<br />*&nbsp;入口参数:dly&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;延时参数,值越大,延时越久<br />*&nbsp;出口参数:无<br />****************************************************************************/<br />void&nbsp;&nbsp;DelayNS(uint32&nbsp;&nbsp;dly)<br />{&nbsp;&nbsp;uint32&nbsp;&nbsp;i;<br /><br />&nbsp;&nbsp;&nbsp;for(;&nbsp;dly&gt0;&nbsp;dly--)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;&nbsp;i&lt50000;&nbsp;i++);<br />}<br /><br /><br /><br />/****************************************************************************/<br />void&nbsp;SendBit_1621(uchar&nbsp;id,uchar&nbsp;cnt)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//data的高cnt位写入HT1621,高位在前<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;uchar&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;//har&nbsp;y;<br />&nbsp;&nbsp;&nbsp;&nbsp;for(i&nbsp;=0;&nbsp;i&nbsp;&ltcnt;&nbsp;i&nbsp;++)<br />&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if((id&0x80)==0)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IOCLR=CLK;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;IOSET=CLK;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IOCLR=WR;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DelayNS(1);&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IOSET=WR;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id&lt&lt=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br />/****************************************************************************/<br />void&nbsp;SendDataBit_1621(uchar&nbsp;id,uchar&nbsp;cnt)&nbsp;&nbsp;&nbsp;&nbsp;//data的低cnt位写入HT1621,低位在前<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;uchar&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;for(i&nbsp;=0;&nbsp;i&nbsp;&ltcnt;&nbsp;i&nbsp;++)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if((id&0x01)==0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IOCLR=CLK;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;IOSET=CLK;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IOCLR=WR;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DelayNS(1);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IOSET=WR;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id&gt&gt=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br />/****************************************************************************/<br />void&nbsp;SendCmd(uchar&nbsp;command)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;IOCLR=CS;<br />&nbsp;&nbsp;&nbsp;&nbsp;SendBit_1621(0x80,4);&nbsp;&nbsp;&nbsp;&nbsp;//写入标志码&quot;100&quot;和9位command命令<br />&nbsp;&nbsp;&nbsp;&nbsp;SendBit_1621(command,8);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;IOSET=CS;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//直接将command的最高位写&quot;0&quot;<br />}<br />/****************************************************************************/<br />void&nbsp;Write_1621(uchar&nbsp;addr,uchar&nbsp;id)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;IOCLR=CS;<br />&nbsp;&nbsp;&nbsp;&nbsp;SendBit_1621(0xa0,3);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//写入标志码&quot;101&quot;<br />&nbsp;&nbsp;&nbsp;&nbsp;SendBit_1621(addr,6);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//写入addr的高6位<br />&nbsp;&nbsp;&nbsp;&nbsp;SendDataBit_1621(id,4);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//写入data的低4位<br />&nbsp;&nbsp;&nbsp;&nbsp;IOSET=CS;<br />}<br />/****************************************************************************/<br /><br />&nbsp;<br />/****************************************************************************<br />*&nbsp;名称:main()<br />&nbsp;<br />****************************************************************************/<br />int&nbsp;&nbsp;main(void)<br />{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;PINSEL0&nbsp;=&nbsp;0x00000000;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;设置spi<br />&nbsp;&nbsp;&nbsp;PINSEL1&nbsp;=&nbsp;0x00000000;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;IODIR&nbsp;=&nbsp;SPI_IOCON;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;SendCmd(BIAS);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//设置偏压和占空比<br />&nbsp;&nbsp;&nbsp;&nbsp;SendCmd(SYSEN);&nbsp;&nbsp;&nbsp;&nbsp;//打开系统振荡器<br />&nbsp;&nbsp;&nbsp;&nbsp;SendCmd(LCDON);&nbsp;&nbsp;&nbsp;&nbsp;//打开LCD偏压发生器<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Write_1621(0x08,0xaa);&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;发送显示数据<br />&nbsp;&nbsp;<br />SendCmd(LCDOFF);<br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

4

帖子

0

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