t6963c 液晶屏绘点请教(240x128点),谢谢!

[复制链接]
2469|0
 楼主| 8xujun 发表于 2007-7-9 11:09 | 显示全部楼层 |阅读模式
****************************************************<br />读状态字<br />cd_flag&nbsp;=&nbsp;1&nbsp;读命令通到&nbsp;=&nbsp;0&nbsp;读数据通到<br />w&nbsp;=&nbsp;0&nbsp;指令读写状态&nbsp;返回1&nbsp;准备好&nbsp;返回0&nbsp;忙<br />w&nbsp;=&nbsp;1&nbsp;数据读写状态&nbsp;返回1&nbsp;准备好&nbsp;返回0&nbsp;忙<br />w&nbsp;=&nbsp;2&nbsp;数据自动读状态&nbsp;返回1&nbsp;准备好&nbsp;返回0&nbsp;忙<br />w&nbsp;=&nbsp;3&nbsp;数据自动写状态&nbsp;返回1&nbsp;准备好&nbsp;返回0&nbsp;忙<br />w&nbsp;=&nbsp;5&nbsp;控制运行检测可能性返回1&nbsp;准备好&nbsp;返回0&nbsp;忙<br />w&nbsp;=&nbsp;6&nbsp;屏读/栲贝出错状态&nbsp;返回1&nbsp;正确&nbsp;返回0&nbsp;出错<br />w&nbsp;=&nbsp;7&nbsp;闪烁状态检测&nbsp;返回1&nbsp;正常显示&nbsp;返回0&nbsp;关显示<br />******************************************************/<br />void&nbsp;r_st&nbsp;(uchar&nbsp;w)//判忙<br />{<br />uchar&nbsp;data&nbsp;i&nbsp;=&nbsp;0;<br />uchar&nbsp;data&nbsp;c;<br />cd&nbsp;=&nbsp;1;&nbsp;lcdbus&nbsp;=&nbsp;0xff;&nbsp;ce&nbsp;=&nbsp;0;<br />while&nbsp;(--i)<br />{<br />rd&nbsp;=&nbsp;0;&nbsp;c&nbsp;=&nbsp;lcdbus;&nbsp;rd&nbsp;=&nbsp;1;&nbsp;ce&nbsp;=&nbsp;1;<br />if&nbsp;((w&nbsp;==&nbsp;1)&nbsp;&&&nbsp;((c&nbsp;&&nbsp;3)&nbsp;==&nbsp;3))&nbsp;return;<br />if&nbsp;((w&nbsp;==&nbsp;3)&nbsp;&&&nbsp;(c&nbsp;&&nbsp;8))&nbsp;return;<br />}<br />}<br />void&nbsp;wdata(bit&nbsp;cd_flag,uchar&nbsp;d)&nbsp;/*数据写操作*/<br />{<br />cd&nbsp;=&nbsp;cd_flag;<br />lcdbus&nbsp;=&nbsp;d;<br />ce&nbsp;=&nbsp;0;&nbsp;wr&nbsp;=&nbsp;0;&nbsp;wr&nbsp;=&nbsp;1;&nbsp;ce&nbsp;=&nbsp;1;&nbsp;cd&nbsp;=&nbsp;0;<br />}<br />/*双参数指令*/<br />void&nbsp;dmod(uchar&nbsp;x0,uchar&nbsp;x1,uchar&nbsp;c)<br />{<br />r_st(1);&nbsp;wdata(0,x0);<br />r_st(1);&nbsp;wdata(0,x1);<br />r_st(1);&nbsp;wdata(1,c);<br />}<br />/*单参数指令*/<br />void&nbsp;smod(uchar&nbsp;x1,uchar&nbsp;c)<br />{<br />r_st(1);&nbsp;wdata(0,x1);<br />r_st(1);&nbsp;wdata(1,c);<br />}<br />/*无参数指令*/<br />void&nbsp;nmod(uchar&nbsp;c)<br />{<br />r_st(1);&nbsp;wdata(1,c);<br />}<br /><br />绘点函数:<br />void&nbsp;wri_d(uchar&nbsp;o_y,uchar&nbsp;o_x)<br />{<br />uint&nbsp;c;<br />c&nbsp;=&nbsp;o_y&nbsp;*&nbsp;0x1e;<br />dmod(c&nbsp;+&nbsp;(o_x&nbsp;/&nbsp;8),(c&nbsp;+&nbsp;(o_x&nbsp;/&nbsp;8)&nbsp;+&nbsp;0x0800)&nbsp;&gt&gt&nbsp;8,0x24);//双参数指令<br /><br />nmod((~(o_x&nbsp;%&nbsp;8))&nbsp;|&nbsp;0xf8);//无参数指令<br />}<br /><br />请问:如上函数,“nmod((~(o_x&nbsp;%&nbsp;8))&nbsp;|&nbsp;0xf8);//无参数指令”,这行应该是写指令,它是怎么实现绘点的?为什么要先按8取余,再取反,然后位或0xf8?<br />&nbsp;<br />&nbsp;<br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

23

帖子

0

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