文曲星读屏原理

读屏原理
读点法原理
在文曲星中,显存都是8位的,即一个显存控制8个液晶阵点的显示,8个阵点,每一个有“黑“和“白“两种状态,所以8个点就有2的8次方即256个显示效果,所以每一个显存的值为0-255共256个值。一个显存的状态可以看成把那个显存值转换为8位2进制的数字,然后1表示“黑",0表示“白“。例如:
■□■□■□■□对应的是
1 0 1 0 1 0 1 0 那么将10101010(二进制)转换为十进制就是170,即对应的显存值
那么要怎么判断制定的那一点是“黑”还是“白“呢?看下面。
我们知道,如果最后一位是1那么最后一位就是“黑“而对应的显存值必为奇数,我们的原理就是,把规定的那一位移动到最后一位,然后再判断显存值是奇还是偶就能判断那一位是“黑”还是“白“,方法就是除以2的n次方。我们知道,除以2表示现存的8个阵点的显示状态右移一位,例如上面的170 ■□■□■□■□ 除以2之后 变为 □■□■□■□■,显存值就是65了,那么170是偶数对应的最后一位就是“白“,而65是奇数对应的最后一位就是“黑“,于是我们就达到判断某一点是“黑”还是“白“,只要改变那个n值,n等于几就表示右移n位,直到把要判断的那个点移动到最后一位就可以判断,可能除以2的n次方后结果有小数,只用判断整数部分就行了
如果你不太理解上面的二进制读点原理,你可以试着用下面的方法理解:

大家都知道显存地址PEEK值是2496---4096,
总共1600个,而屏幕上有160*80个点,
也就是说,每8个点存在一个地址中。
是这样存放的:
每行的160个点8个一组共20组,
一共有80行。即:
第1行:2496----2515
第2行:2516----2535
第3行:2536----2555
。。。。。。。。。。
第79行:3876----3895
第80行:3896----4095
怎么区别每组中的八个点:
0--7,8--15,.....,152---159
每一组8个点的值分别等于128,64,32,16,8,4,2,1
哪几个点是黑的,PEEK(。。。。)所等于的值就是它们的值相加的和,
任意取几个的和都是唯一的。 (注意,每行的0和160的值为0)
如:
PEEK(3876)=0+64+0+0+0+0+0+0=64表示第79行的第二组只有第二点(即X=9,Y=79点)是黑的,
PEEK(3876)=0+64+32+0+0+0+0+0=96表示第79行的第二组第二点和第三点(即X=9,Y=79点,X=10,Y=79点)都是黑的,
所以判断点(X,Y)可用PEEK(20*Y+(X-4)/8+2496)
作者:o_o
水平有限,写得不好,各位别见笑。
哪位大侠再说清楚一点(最好让最菜的人也能看懂)。谢谢!
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值