搜索
bottom↓
回复: 8

[已解决]P196:关于LCD一段程序 难以明白

[复制链接]

出0入0汤圆

发表于 2008-4-16 16:29:33 | 显示全部楼层 |阅读模式
void define_char(byte flash *pc,byte char_code)
{
byte i,a;
a=(char_code<<3)|0x40;
for(i=0;i<8;i++)lcd_write_byte(a++,*pc++)
}

/*********这段程序我想了很久也想不明白,马潮老师能否详细解释一下啊*****************/【THANK YOU】

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2008-4-16 17:40:49 | 显示全部楼层
void define_char(byte flash *pc,byte char_code)/*pc是指向flash空间的字节型指针*/
{
byte i,a;
a=(char_code<<3)|0x40; /* 应该是编号,换算成LCD的地址 */
for(i=0;i<8;i++)lcd_write_byte(a++,*pc++) /* 输出字符,应为一般因为字符是8*8点阵所以输出8次 */
}
把PC指向的FLASH字符串对应的点阵数据,输出到LCD

a=(char_code<<3)|0x40;
左移3及把编号乘以8,则的字符每一列的地址
第0个字符起始地址 则LCD的地址0*8=0
第3个字符起始地址 则LCD的地址3*8=24

0x40--0b0100 0000表示这个是地址指令。要看什么LCD了。还有lcd_write_byte

出0入0汤圆

 楼主| 发表于 2008-4-16 17:58:29 | 显示全部楼层
mljda 技术是人性------------------挺喜欢帮助人的 thankyou

出0入0汤圆

发表于 2008-4-16 21:04:38 | 显示全部楼层
LZ,本专栏是讨论AVR的专栏.你问的都是C的问题.建议你把基础的东西打牢固.

出0入0汤圆

 楼主| 发表于 2008-4-16 21:20:21 | 显示全部楼层
马潮 老师啊 但是这个LCD的c涉及到硬件的问题啊 所以 真的看不明白 就算我看在学习的c语言书籍都是比较基础的 自从在这个论坛我问了问题之后啊 发觉自己懂了很多硬件配合软件的东西啊 但是我知道 有些人都同我一样有时里面的例子看不明啊 在学校没有人可以帮到我啊 所以 我将我的希望放到论坛上啊 所以马潮老师能体谅一下 我以后会注意点啊

出0入0汤圆

发表于 2009-8-15 19:23:52 | 显示全部楼层
HD44780器件手册.pdf里有相应的显示RAM地址,能说明程序中0x40的作用。


LCD 16X2 显示RAM地址 (原文件名:char.jpg)

出0入0汤圆

发表于 2009-8-16 03:48:30 | 显示全部楼层
5楼解释是错的,上面的地址是显示地址DDRAM。

lcd_write_byte()是向CGRAM中写数据,(字符点阵数据),CGRAM的地址为0x40-0x7F!


(原文件名:未标题-2 拷贝.jpg)


在下面代码中
void define_char(byte flash *pc,byte char_code)
{
   byte i,a;
   a=(char_code<<3)|0x40;
   for(i=0;i<8;i++)lcd_write_byte(a++,*pc++)
}

char_code的值只能是0-7,左移3位是图中DB5、DB4、DB3,0x40是DB6。DB2、DB1、DB0从0-7,8个字节,放一个字符的点阵图。

===============================================
为什么不认真看HD44780手册?光盘中的资料难道没有用?代码只是是参考,是帮助学习和理解的。

出0入0汤圆

发表于 2009-8-16 13:53:42 | 显示全部楼层
我错了,张冠李戴了,刚入门看datasheet没准心, 以后要更加认真看,避免这种错误!


CGRAM ADDRESS的说明 (原文件名:HD44780[1].pdf中CGRAM ADDRESS.jpg)

出0入0汤圆

发表于 2009-8-16 13:57:12 | 显示全部楼层
共64个字节放8个字符的点阵数据
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-15 21:48

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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