DSP281X之LCD12864 C++程序代码

[复制链接]
 楼主| 发表于 2008-4-17 02:24 | 显示全部楼层 |阅读模式
//本程序在<a href="http://www.study-kit.com/list.asp?ProdId=NO052" target=_blank>http://www.study-kit.com/list.asp?ProdId=NO052</a>上通过测试<br />//HotPower@126.com&nbsp;2008.4.17&nbsp;2:28<br /><br />#include&nbsp;&quot;lcd.h&quot;<br /><br />LcdObj::LcdObj(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;Init();<br />}<br /><br />void&nbsp;LcdObj::Init(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;SendCommand(0x30);//发送功能设定控制命令(8位)<br />&nbsp;&nbsp;&nbsp;&nbsp;SendCommand(0x30);//发送功能设定控制命令(8位)<br />&nbsp;&nbsp;&nbsp;&nbsp;SendCommand(0x01);//发送清除显示命令&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;SendCommand(0x06);//发送进入点命令0x06&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;SendCommand(0x0a);//发送开关显示关光标命令<br />&nbsp;&nbsp;&nbsp;&nbsp;SendCommand(0x0c);//发送开显示关光标命令<br />&nbsp;&nbsp;&nbsp;&nbsp;SendCommand(0x02);//发送位址归位命令,设定DDRAM位址计数器为0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SendCommand(0x17);//游标或显示移位控制<br />&nbsp;&nbsp;&nbsp;&nbsp;SendCommand(0x80);//发送设定DDRAM地址0x00命令,光标定位到(0,0)<br />&nbsp;&nbsp;&nbsp;&nbsp;ClearBuffer();//清空LCD显示缓冲区<br />&nbsp;&nbsp;&nbsp;&nbsp;DisplayBuffer();<br />}<br /><br />void&nbsp;LcdObj::delay(unsigned&nbsp;int&nbsp;t)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(t&gt0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t--;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt&nbsp;150;&nbsp;i++);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br />void&nbsp;LcdObj::SendCommand(char&nbsp;cCommand)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;LcdComH&nbsp;=&nbsp;cCommand;<br />&nbsp;&nbsp;&nbsp;&nbsp;LcdComL&nbsp;=&nbsp;cCommand;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(cCommand&nbsp;==&nbsp;0x01)//清除显示命令,需要等待时间相对较长<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delay(1600);//st7920要求等待1.6mS<br />//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DSP28x_usDelay(1600);//st7920要求等待1.6mS<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delay(72);//st7920要求等待72uS<br />//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DSP28x_usDelay(72);//st7920要求等待72uS<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br />void&nbsp;LcdObj::SendData(char&nbsp;cData)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;LcdDatH&nbsp;=&nbsp;cData;<br />&nbsp;&nbsp;&nbsp;&nbsp;LcdDatL&nbsp;=&nbsp;cData;<br />&nbsp;&nbsp;&nbsp;&nbsp;delay(72);//st7920要求等待72uS<br />//&nbsp;&nbsp;&nbsp;&nbsp;DSP28x_usDelay(72);//st7920要求等待72uS<br />}<br /><br />void&nbsp;LcdObj::ClearBuffer(void)<br />{<br />unsigned&nbsp;char&nbsp;i,&nbsp;j;<br />&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(i&nbsp;=&nbsp;0;i&nbsp;&lt&nbsp;4;i&nbsp;++)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(j&nbsp;=&nbsp;0;j&nbsp;&lt&nbsp;16;&nbsp;j&nbsp;++)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Buffer[j]&nbsp;=&nbsp;'&nbsp;';<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RowWriteEnable&nbsp;=&nbsp;1;//允许此行刷新汉字显示<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;Row&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;Col&nbsp;=&nbsp;0;<br />}<br /><br />void&nbsp;LcdObj::DisplayBuffer(void)<br />{<br />unsigned&nbsp;char&nbsp;i,&nbsp;j;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt&nbsp;4;&nbsp;i&nbsp;++)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{//4行汉字<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(RowWriteEnable)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{//允许此行刷新汉字显示<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SendCommand(0x80&nbsp;+&nbsp;(i&nbsp;&&nbsp;1)&nbsp;*&nbsp;16&nbsp;+&nbsp;(i&nbsp;&gt&gt&nbsp;1)&nbsp;*&nbsp;8);//移动光标<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(j&nbsp;=&nbsp;0;&nbsp;j&nbsp;&lt&nbsp;16;&nbsp;j&nbsp;++)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{//每行8个汉字16个字符<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SendData(Buffer[j]);//刷新显示字符<br />&nbsp;&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;&nbsp;&nbsp;RowWriteEnable&nbsp;=&nbsp;0;//过后不允许此行刷新汉字显示<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br />void&nbsp;LcdObj::SetDisplayPos(unsigned&nbsp;char&nbsp;row,&nbsp;unsigned&nbsp;char&nbsp;col)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;Row&nbsp;=&nbsp;row&nbsp;&&nbsp;0x03;//4行<br />&nbsp;&nbsp;&nbsp;&nbsp;Col&nbsp;=&nbsp;col&nbsp;&&nbsp;0x0f;//16列<br />}<br /><br />void&nbsp;LcdObj::Display(const&nbsp;char&nbsp;*string)<br />{<br />char&nbsp;len,&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;len&nbsp;=&nbsp;strlen(string);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;((Row&nbsp;&lt&nbsp;4)&nbsp;&&&nbsp;((Col&nbsp;+&nbsp;len)&nbsp;&lt=&nbsp;16))&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(len&nbsp;==&nbsp;0)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(Col&nbsp;&lt&nbsp;16)&nbsp;<br />&nbsp;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Buffer[Row][Col&nbsp;++]&nbsp;=&nbsp;'&nbsp;';<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt&nbsp;len;&nbsp;i&nbsp;++)&nbsp;Buffer[Row][Col&nbsp;++]&nbsp;=&nbsp;string;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RowWriteEnable[Row]&nbsp;=&nbsp;1;//需要显示刷新<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br />#include&nbsp;&quot;main.h&quot;<br /><br />class&nbsp;SystemObj&nbsp;System;<br />class&nbsp;TimerObj&nbsp;Timer;//系统时间类<br />class&nbsp;LcdObj&nbsp;Lcd;<br />class&nbsp;KeyboardObj&nbsp;Keyboard;<br /><br /><br />int&nbsp;main(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;Lcd.SetDisplayPos(0,&nbsp;0);//汉字定位到上行左端<br />&nbsp;&nbsp;&nbsp;&nbsp;Lcd.Display(&quot;汉字显示演示12&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;Lcd.SetDisplayPos(1,&nbsp;0);//汉字定位到上行左端<br />&nbsp;&nbsp;&nbsp;&nbsp;Lcd.Display(&quot;汉字显示演示34&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;Lcd.SetDisplayPos(2,&nbsp;0);//汉字定位到上行左端<br />&nbsp;&nbsp;&nbsp;&nbsp;Lcd.Display(&quot;汉字显示演示56&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;Lcd.SetDisplayPos(3,&nbsp;0);//汉字定位到上行左端<br />&nbsp;&nbsp;&nbsp;&nbsp;Lcd.Display(&quot;汉字显示演示78&quot;);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;EALLOW;<br />//&nbsp;&nbsp;&nbsp;&nbsp;PieCtrlRegs.PIEACK.all&nbsp;=&nbsp;0xFFFF;//PIEACK_GROUP1;<br />&nbsp;&nbsp;&nbsp;&nbsp;PieCtrlRegs.PIEACK.bit.ACK7&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;EDIS;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;EINT;&nbsp;&nbsp;&nbsp;//&nbsp;Enable&nbsp;Global&nbsp;interrupt&nbsp;INTM<br />&nbsp;&nbsp;&nbsp;&nbsp;ERTM;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Enable&nbsp;Global&nbsp;realtime&nbsp;interrupt&nbsp;DBGM<br />&nbsp;&nbsp;&nbsp;&nbsp;for(;;)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;asm(&quot;&nbsp;nop&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Reset&nbsp;the&nbsp;watchdog&nbsp;counter<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;KickDog();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br /><br />interrupt&nbsp;void&nbsp;ISRTimer0(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;Lcd.DisplayBuffer();//定时刷新LCD显示(只刷新新行字符)<br />&nbsp;&nbsp;&nbsp;&nbsp;PieCtrlRegs.PIEACK.bit.ACK7&nbsp;=&nbsp;1;<br />//&nbsp;&nbsp;&nbsp;&nbsp;PieCtrlRegs.PIEIFR1.bit.INTx7&nbsp;=&nbsp;1;<br />//&nbsp;&nbsp;&nbsp;&nbsp;PieCtrlRegs.PIEACK.all&nbsp;=&nbsp;PIEACK_GROUP1;<br />}<br /> 相关链接:<a href='http://www.study-kit.com/list.asp?ProdId=NO052'>http://www.study-kit.com/list.asp?ProdId=NO052</a>
发表于 2008-4-17 08:45 | 显示全部楼层

垃圾

真垃圾
发表于 2008-4-17 15:49 | 显示全部楼层

哈哈

说我们hotpower大叔垃圾,可见其人一定很。。。。。。。。
发表于 2008-4-17 15:50 | 显示全部楼层

re

有这个谈吐的人,也不用去理他。
发表于 2008-4-17 20:27 | 显示全部楼层

顶 hotpower

2&nbsp;楼的雪山飞鸽的人品实在不厚道,鄙视之。
发表于 2008-4-17 23:52 | 显示全部楼层

事出有因

他可能受过伤害
 楼主| 发表于 2008-4-17 23:56 | 显示全部楼层

哈哈~~~没什么~~~俺会把ARM/DSP都倒塌成"尿童"系列的~~~

  
发表于 2008-4-18 17:07 | 显示全部楼层

不知道发这个程序的目的是什么

  
 楼主| 发表于 2008-4-18 20:50 | 显示全部楼层

哈哈~~~在做菜鸟的作业~~~

  
 楼主| 发表于 2008-4-18 23:23 | 显示全部楼层

说实话九天同志还需继续努力才是~~~

  
发表于 2008-4-21 16:18 | 显示全部楼层

学习。。。

  
发表于 2008-4-22 10:42 | 显示全部楼层

 楼主| 发表于 2008-5-1 20:57 | 显示全部楼层

哈哈~~~说实话---九天的CPLD程序太倒塌~~~

有时间批评几句~~~
发表于 2008-5-1 23:36 | 显示全部楼层

呵呵,有广告图片的不能穿裤子了……

  
 楼主| 发表于 2008-5-2 01:01 | 显示全部楼层

哈哈~~~等俺家网管不上网了再批斗九天的CPLD程序~~~

哈哈~~~应该不加裤子~~~<br /><br />可这是九天友情提供给菜农玩DSP2812的~~~<br /><br />在此特别感谢!!!<br /><br />不过俺玩DSP2812,做作业也是为了广大的DSP菜鸟们~~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1460

主题

21619

帖子

508

粉丝
快速回复 返回顶部 返回列表