搜索
bottom↓
回复: 131

经过验证的,到手就可以用简单的LCD1602驱动程序

[复制链接]

出0入0汤圆

发表于 2006-8-7 23:11:15 | 显示全部楼层 |阅读模式
点击此处下载armok01125601.zip

出0入0汤圆

发表于 2006-8-8 00:07:22 | 显示全部楼层
好东西竟然没人顶??

出0入0汤圆

发表于 2006-8-8 08:49:02 | 显示全部楼层
是好东西呀,这么漂亮的文件,不知是用什么软件做出来的?

我只会用QuickCHM,它好像做不了这么漂亮的文件.

出0入0汤圆

发表于 2006-8-8 09:04:30 | 显示全部楼层
果然是好东西,对我等初学者很有用。谢谢!

另外题个意见: 跳到代码处时有高亮显示那就更好了。

出0入0汤圆

发表于 2006-8-8 09:35:02 | 显示全部楼层
好东西应该让更多的人看到,让更多的人分享!

出0入0汤圆

发表于 2006-8-8 09:37:40 | 显示全部楼层
收藏了,谢谢!

出0入0汤圆

发表于 2006-8-8 10:57:16 | 显示全部楼层
漂亮!!!

出0入296汤圆

发表于 2006-8-8 15:50:24 | 显示全部楼层
不错的东西,好像是使用Windows Help Workshop做出来了

出0入0汤圆

 楼主| 发表于 2006-8-8 23:15:04 | 显示全部楼层
更新一下代码:

点击此处下载armok01125740.zip

说明:

同时提供1602液晶和3310液晶的驱动方法,而且统一了编程接口,将液晶的操作统一为SetPort, Reset, WriteByte, WriteCommand, WriteChar, WriteString和SetXY等几个简单的操作.使得这两种液晶的操作界面完全一样.提供的源代码可以直接用Doxygen生成参考手册,同时为没有安装Doxygen朋友提供了编译好的参考手册.



代码在我自己的两块板子上均调试通过.由于这两种液晶都可以在阿莫的邮购部买到,所以暂时将函数库定名为"OurLCD",挖哈哈~~~



如果在使用是发现了什么问题,欢迎交流~
-----此内容被linhaimi于2006-08-08,23:18:49编辑过

出0入0汤圆

发表于 2006-8-9 10:30:50 | 显示全部楼层
漂亮不错的东西收藏了,谢谢!

出0入0汤圆

发表于 2006-8-10 02:09:58 | 显示全部楼层
支持!!!

出0入0汤圆

发表于 2006-8-23 17:46:59 | 显示全部楼层
对指针和结构体不太熟悉,好东西可不知如何用。

其中的结构体

typedef struct {

        unsigned char RS                : 1; ///<brief 连接到液晶的RS引脚

        unsigned char RW                : 1; ///<brief 连接到液晶的RW引脚

        unsigned char EN                : 1; ///<brief 连接到液晶的EN引脚

        unsigned char DATA                : 4; ///<brief 连接到液晶的DATA[4..7]引脚

} LCD1602ControlPortStruct;



RS :1   RW:1  不知如何连接到液晶的RS引脚,

还有  static LCD1602ControlPortStruct* ControlPort; 不知如何使用,

能否举例说明一下如何连接到atmega16 的某管脚?

出0入0汤圆

发表于 2006-9-16 16:25:30 | 显示全部楼层
不错,支持。谢谢

出0入0汤圆

发表于 2006-9-16 18:50:45 | 显示全部楼层
好东西,顶一下,虽然很早就搞定了1602了~~~

出0入0汤圆

 楼主| 发表于 2006-9-16 21:16:48 | 显示全部楼层
这个主要是C语言的位域的操作

对应的硬件连接如:





另外:有人说嵌入式代码采用位域的话会影响代码的可移植性,不知道是不是这样的.

我猜可能是由于大端和小段的差异造成的.如过仅仅是由于大端和小段差异造成的话影响到不是很大,

(另外:个人认为一般的编译器都有开关选择结构体的内存对齐问题.故认为内存对齐不影响位域代码的可移植性)

出0入0汤圆

发表于 2006-9-16 23:39:30 | 显示全部楼层
好东西!

出0入0汤圆

发表于 2006-10-31 22:16:56 | 显示全部楼层
菜鸟还是不太懂硬件连接,能否给个实例啊~~

出0入0汤圆

发表于 2006-11-1 08:55:57 | 显示全部楼层
下下来研究研究!~

谢LZ!

出0入0汤圆

发表于 2006-11-1 19:58:02 | 显示全部楼层
1.LCD1602显示模式中4bit应该是0x30,8bit 应该是0x38.

2.在采用4位显示时写数据和命令时,应把4位的输入口清零

  ControlPort->DATA  &= 0X0F;

  ControlPort->DATA  |= data&0xf0;

3.写数据时 RS=1;写命令时RS=0.

出0入0汤圆

发表于 2006-11-1 20:17:04 | 显示全部楼层
如果是8位的,怎么用这个库呢?

出0入0汤圆

发表于 2006-11-1 21:10:07 | 显示全部楼层
支持一下

顺便问一下,chm格式的文件用什么软件做出来?

出0入0汤圆

发表于 2006-11-4 12:39:23 | 显示全部楼层
谢谢分享!

出0入0汤圆

发表于 2007-1-2 16:19:38 | 显示全部楼层
这么好的东西不顶不行啊

出0入0汤圆

发表于 2007-1-29 23:35:48 | 显示全部楼层
thanks!

出0入0汤圆

发表于 2007-1-30 09:26:31 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2007-1-31 10:26:50 | 显示全部楼层
谢谢共享

出0入0汤圆

发表于 2007-5-9 22:04:02 | 显示全部楼层
谁能给个例子  谢谢!

出0入0汤圆

发表于 2007-5-9 22:04:38 | 显示全部楼层
谁能给个例子  谢谢!

出0入0汤圆

发表于 2007-5-9 23:08:54 | 显示全部楼层
谢谢!

出0入0汤圆

发表于 2007-5-10 13:27:41 | 显示全部楼层
楼主是DoxyGen高手

出0入0汤圆

发表于 2007-6-5 13:25:19 | 显示全部楼层
it is so beautiful!

出0入0汤圆

发表于 2008-3-25 15:10:33 | 显示全部楼层
看一下,

哈哈...我排到盖茨后面了...容幸啊..

出0入0汤圆

发表于 2008-3-25 16:15:39 | 显示全部楼层
谢谢
很有用

出0入46汤圆

发表于 2008-3-25 18:45:42 | 显示全部楼层
学习!

出0入0汤圆

发表于 2008-3-25 20:00:20 | 显示全部楼层
学习中,
void LCD3310_SetPort(void* Port) {
        DevicePort = (LCD3310ControlPortStruct*)Port;
        LCD3310_Reset();
}
初始化(PORTC)是不是只要调用
LCD3310_SetPort(0x15);
??
iom16.h中下面的语句什么意思,GCC的材料不知那儿找,看得不多,也不知道怎么理解
#define PORTC   _SFR_IO8(0x15)

出0入0汤圆

 楼主| 发表于 2008-3-25 20:28:31 | 显示全部楼层
"LCD3310_SetPort((void*)&PORTC)" @ WinAVR

出0入0汤圆

发表于 2008-3-26 00:47:18 | 显示全部楼层
有用

出0入46汤圆

发表于 2008-3-26 22:18:38 | 显示全部楼层

void LCD_write_byte(unsigned char data) {
        ControlPort->DATA = data >> 4;
        LCD_en_write();
        ControlPort->DATA = data;
        LCD_en_write();
}
看,数据位应该是连接到低4位吧?

出0入46汤圆

发表于 2008-3-26 22:38:55 | 显示全部楼层
能给个例子吗?好像点不起来啊?

出0入0汤圆

发表于 2008-3-27 14:19:35 | 显示全部楼层
下来看看^^^

出0入0汤圆

发表于 2008-3-27 14:30:37 | 显示全部楼层
粗略看了一下回复,有点象是做到统一编程接口,真象还得等去下载看了再说

出0入0汤圆

发表于 2008-4-1 18:57:29 | 显示全部楼层
请问楼主,如何实现光标的灵活应用!

出0入0汤圆

发表于 2008-4-6 02:50:06 | 显示全部楼层
是好东西

出0入0汤圆

发表于 2008-4-7 10:53:22 | 显示全部楼层
收下来看看!

出0入0汤圆

发表于 2008-4-7 12:11:06 | 显示全部楼层
谢谢分享!

出0入0汤圆

发表于 2008-4-7 23:43:16 | 显示全部楼层
void LCD1602_WriteString(unsigned char* s) {
        while (*s != 0)
                LCD1602_WriteCommand(*s++);
}

以上怎么会是写:WriteCommand(*s++)
???

出0入0汤圆

发表于 2008-8-7 01:55:52 | 显示全部楼层
问一下各位高手,这个函数怎样调用,才能设置好端口呢?
void LCD1602_SetPort(void* Port) {
        ControlPort = (LCD1602ControlPortStruct*)Port;
        LCD1602_Reset();
}

还有45楼提出的那个名是写错了,不是写命令,应该是写字符(即写数据).

出0入0汤圆

发表于 2008-8-7 09:42:50 | 显示全部楼层
问下高手,他这个是用什么软件编写出,感觉好漂亮啊 !!!

出0入0汤圆

发表于 2008-8-7 10:26:38 | 显示全部楼层
哇,好啊,不错

出0入0汤圆

发表于 2008-8-7 10:50:14 | 显示全部楼层
mark,日后再看。。。

出0入0汤圆

发表于 2008-8-16 09:59:06 | 显示全部楼层
学习咯

出0入0汤圆

发表于 2008-9-8 23:08:45 | 显示全部楼层
谢谢哦

出0入0汤圆

发表于 2008-9-9 09:36:56 | 显示全部楼层
谢谢了,好用.学习了

出0入0汤圆

发表于 2008-9-9 16:48:31 | 显示全部楼层
mark~~

出0入0汤圆

发表于 2008-9-9 18:58:37 | 显示全部楼层
好中文资料,好资料!

出0入0汤圆

发表于 2008-9-29 11:25:47 | 显示全部楼层
谢谢 &nbsp;

出0入0汤圆

发表于 2008-10-31 15:43:46 | 显示全部楼层
顶,果然是好东西

出0入0汤圆

发表于 2008-9-29 15:01:41 | 显示全部楼层
标记

出0入18汤圆

发表于 2009-3-11 22:08:22 | 显示全部楼层
学习哈!

出0入0汤圆

发表于 2009-3-22 09:16:58 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-3-22 09:48:54 | 显示全部楼层
其它参考手册或电子书也能做成这样就好了,点哪就哪,不像PDF或超星那样看点东西翻来翻去找个老半天头都晕了。

出0入0汤圆

发表于 2009-4-3 21:28:59 | 显示全部楼层
如果能加上BusyFlag的检测就更好了。收藏。

出0入0汤圆

发表于 2009-4-4 01:19:31 | 显示全部楼层
谢谢LZ!已经下了,正在参考!

出0入0汤圆

发表于 2009-4-29 13:31:07 | 显示全部楼层
dddddddddd!!!!好东西哈

出0入0汤圆

发表于 2009-4-29 14:57:06 | 显示全部楼层
楼主程序缺陷很多,没有读忙标志,初始化也有问题。我估计大部分人得液晶点不起来了。
初始化必须要有8线到4线的过程

出0入0汤圆

发表于 2009-4-29 20:24:46 | 显示全部楼层
标记

出0入0汤圆

发表于 2009-4-30 00:16:53 | 显示全部楼层
确实是好东西,感谢分享!

出0入0汤圆

发表于 2009-5-13 16:47:21 | 显示全部楼层
好,谢了

出0入0汤圆

发表于 2009-5-13 17:15:00 | 显示全部楼层
不错  谢谢了

出0入0汤圆

发表于 2009-5-13 20:17:45 | 显示全部楼层
是啊,CHM很漂亮。
怎么做的啊。什么工具。
学学。

出0入0汤圆

发表于 2009-5-13 21:03:23 | 显示全部楼层
不错  谢谢了

出0入0汤圆

发表于 2009-5-13 23:23:53 | 显示全部楼层
很不错

出0入0汤圆

发表于 2009-5-14 09:12:19 | 显示全部楼层
MARK 3Q

出0入0汤圆

发表于 2009-5-14 09:21:23 | 显示全部楼层
ding

出0入0汤圆

发表于 2009-5-14 12:12:23 | 显示全部楼层
hao dong xi a
ding

出0入0汤圆

发表于 2009-8-10 20:05:57 | 显示全部楼层
题目起的很好,而且程序也很好,但我相信99%的人是没有应用成功的~

小弟不才,替楼主具体介绍下:

1、如果你的电路用4位数据线且连接如下:PA0-->RS
                                      PA1-->RW
                                      PA2-->EN
                                      PA4-7-->DATA
那么:LCD1602.h中
typedef struct {
        unsigned char RS                : 1; ///<brief 连接到液晶的RS引脚
        unsigned char RW                : 1; ///<brief 连接到液晶的RW引脚
        unsigned char EN                : 1; ///<brief 连接到液晶的EN引脚
        unsigned char DATA                : 4; ///<brief 连接到液晶的DATA[4..7]引脚
} LCD1602ControlPortStruct;
应改为:
typedef struct {
         unsigned char RS                : 1; ///<brief 连接到液晶的RS引脚
         unsigned char RW                : 1; ///<brief 连接到液晶的RW引脚
         unsigned char EN                : 1; ///<brief 连接到液晶的EN引脚
         unsigned char NC                : 1; ///第4脚悬空
         unsigned char DATA        : 4; ///<brief 连接到液晶的DATA[4..7]引脚
} LCD1602ControlPortStruct;
2、这一点是最最重要的,把编译的优化选项改为-00,因为默认选项-0s把好多语句优化掉了。
3、初始化函数得好好改改,具体参照论坛上相关帖子。

出0入0汤圆

发表于 2009-8-11 14:12:20 | 显示全部楼层
See See!

出0入0汤圆

发表于 2009-8-18 22:06:34 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2009-8-23 00:27:29 | 显示全部楼层
更改为
volatile typedef struct {
unsigned char RS : 1; ///<brief 连接到液晶的RS引脚
unsigned char RW : 1; ///<brief 连接到液晶的RW引脚
unsigned char EN : 1; ///<brief 连接到液晶的EN引脚
unsigned char NC : 1; ///第4脚悬空
unsigned char DATA : 4; ///<brief 连接到液晶的DATA[4..7]引脚
} LCD1602ControlPortStruct;
即可,
无需改优化为00

出0入0汤圆

发表于 2009-8-23 00:52:19 | 显示全部楼层
支持

出0入0汤圆

发表于 2009-8-25 03:23:06 | 显示全部楼层
不是文件里面写了么是doxygen制作的,stm32那个固件库的文档我猜测也是(doxygen自己上网google吧,很好的从程序自动生成文档的方法,习惯用Windows的人估计很少有接触这种东东)。
不过我非常不喜欢chm,Linux下有的看不了,电子书阅读器也看不了,还是pdf, djvu好些。

出0入0汤圆

发表于 2010-2-9 13:36:42 | 显示全部楼层
好东西  顶

出0入0汤圆

发表于 2010-2-10 11:44:08 | 显示全部楼层
学习,顶

出0入0汤圆

发表于 2010-2-10 12:49:34 | 显示全部楼层
果然是好东西

出0入131汤圆

发表于 2010-6-22 00:06:59 | 显示全部楼层
下来研究

出0入0汤圆

发表于 2010-7-8 12:29:51 | 显示全部楼层
mark~~

出0入0汤圆

发表于 2010-7-21 10:15:51 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-7-25 18:39:30 | 显示全部楼层
顶,利用位域(位段)来操作,这个方法好!

出0入0汤圆

发表于 2010-7-25 20:19:48 | 显示全部楼层
回复【楼主位】linhaimi
-----------------------------------------------------------------------

mark

出0入0汤圆

发表于 2010-7-25 20:46:32 | 显示全部楼层

出0入0汤圆

发表于 2010-10-18 17:50:06 | 显示全部楼层
MARK

出0入0汤圆

发表于 2010-10-18 17:52:38 | 显示全部楼层
学习

出0入0汤圆

发表于 2010-11-2 22:37:52 | 显示全部楼层
支持!!!

出0入0汤圆

发表于 2010-11-8 22:46:34 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-11-14 19:58:10 | 显示全部楼层
很牛的代码....

出0入0汤圆

发表于 2010-11-14 21:11:56 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-11-19 11:22:54 | 显示全部楼层
51下貌似不管用

出0入0汤圆

发表于 2010-11-19 13:06:30 | 显示全部楼层
谢谢楼主分享

出0入0汤圆

发表于 2010-11-19 13:46:46 | 显示全部楼层
回复【11楼】lihongguang
-----------------------------------------------------------------------

这个我也一直都不明白,哪位大哥知道,请讲一下啊,感激不尽啊!

出0入0汤圆

发表于 2010-11-19 13:47:41 | 显示全部楼层
对指针和结构体不太熟悉,好东西可不知如何用。
其中的结构体
typedef struct {
unsigned char RS : 1; ///<brief 连接到液晶的RS引脚
unsigned char RW : 1; ///<brief 连接到液晶的RW引脚
unsigned char EN : 1; ///<brief 连接到液晶的EN引脚
unsigned char DATA : 4; ///<brief 连接到液晶的DATA[4..7]引脚
} LCD1602ControlPortStruct;

RS :1   RW:1  不知如何连接到液晶的RS引脚,
还有  static LCD1602ControlPortStruct* ControlPort; 不知如何使用,
能否举例说明一下如何连接到atmega16 的某管脚?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-19 08:18

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

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