linhaimi 发表于 2006-8-7 23:11:15

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

点击此处下载armok01125601.zip

violit 发表于 2006-8-8 00:07:22

好东西竟然没人顶??

passerby 发表于 2006-8-8 08:49:02

是好东西呀,这么漂亮的文件,不知是用什么软件做出来的?

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

huangdongle 发表于 2006-8-8 09:04:30

果然是好东西,对我等初学者很有用。谢谢!

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

sonic 发表于 2006-8-8 09:35:02

好东西应该让更多的人看到,让更多的人分享!

hackerboygn 发表于 2006-8-8 09:37:40

收藏了,谢谢!

gxf0505 发表于 2006-8-8 10:57:16

漂亮!!!

Gorgon_Meducer 发表于 2006-8-8 15:50:24

不错的东西,好像是使用Windows Help Workshop做出来了

linhaimi 发表于 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编辑过

xzw168 发表于 2006-8-9 10:30:50

漂亮不错的东西收藏了,谢谢!

okay51 发表于 2006-8-10 02:09:58

支持!!!

lihongguang 发表于 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引脚

} LCD1602ControlPortStruct;



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

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

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

kalon00 发表于 2006-9-16 16:25:30

不错,支持。谢谢

bg6agb 发表于 2006-9-16 18:50:45

好东西,顶一下,虽然很早就搞定了1602了~~~

linhaimi 发表于 2006-9-16 21:16:48

这个主要是C语言的位域的操作

对应的硬件连接如:

http://cache.amobbs.com/bbs_upload782111/files_6/armok01128923.PNG



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

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

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

undercooling 发表于 2006-9-16 23:39:30

好东西!

hackerboygn 发表于 2006-10-31 22:16:56

菜鸟还是不太懂硬件连接,能否给个实例啊~~

ntkz 发表于 2006-11-1 08:55:57

下下来研究研究!~

谢LZ!

siman 发表于 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.

chopin1998 发表于 2006-11-1 20:17:04

如果是8位的,怎么用这个库呢?

dx9782 发表于 2006-11-1 21:10:07

支持一下

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

linmch 发表于 2006-11-4 12:39:23

谢谢分享!

figoxwm 发表于 2007-1-2 16:19:38

这么好的东西不顶不行啊

marco2000 发表于 2007-1-29 23:35:48

thanks!

fuanzwg 发表于 2007-1-30 09:26:31

谢谢分享

wentao 发表于 2007-1-31 10:26:50

谢谢共享

wowotou 发表于 2007-5-9 22:04:02

谁能给个例子谢谢!

wowotou 发表于 2007-5-9 22:04:38

谁能给个例子谢谢!

maruibing 发表于 2007-5-9 23:08:54

谢谢!

ghost2 发表于 2007-5-10 13:27:41

楼主是DoxyGen高手

yyw794 发表于 2007-6-5 13:25:19

it is so beautiful!

asd_lkj 发表于 2008-3-25 15:10:33

看一下,

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

abcdezh 发表于 2008-3-25 16:15:39

谢谢
很有用

bjj9217 发表于 2008-3-25 18:45:42

学习!

fjzslin 发表于 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)

linhaimi 发表于 2008-3-25 20:28:31

"LCD3310_SetPort((void*)&PORTC)" @ WinAVR

525133174 发表于 2008-3-26 00:47:18

有用

bjj9217 发表于 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位吧?

bjj9217 发表于 2008-3-26 22:38:55

能给个例子吗?好像点不起来啊?

chp1669 发表于 2008-3-27 14:19:35

下来看看^^^

lzlym182 发表于 2008-3-27 14:30:37

粗略看了一下回复,有点象是做到统一编程接口,真象还得等去下载看了再说

yaodongliang 发表于 2008-4-1 18:57:29

请问楼主,如何实现光标的灵活应用!

xingzhang 发表于 2008-4-6 02:50:06

是好东西

tianjing324 发表于 2008-4-7 10:53:22

收下来看看!

heizi302 发表于 2008-4-7 12:11:06

谢谢分享!

fjzslin 发表于 2008-4-7 23:43:16

void LCD1602_WriteString(unsigned char* s) {
        while (*s != 0)
                LCD1602_WriteCommand(*s++);
}

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

starsun 发表于 2008-8-7 01:55:52

问一下各位高手,这个函数怎样调用,才能设置好端口呢?
void LCD1602_SetPort(void* Port) {
        ControlPort = (LCD1602ControlPortStruct*)Port;
        LCD1602_Reset();
}

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

whuctx 发表于 2008-8-7 09:42:50

问下高手,他这个是用什么软件编写出,感觉好漂亮啊 !!!

kerwin 发表于 2008-8-7 10:26:38

哇,好啊,不错

apcfy 发表于 2008-8-7 10:50:14

mark,日后再看。。。

knight_avr 发表于 2008-8-16 09:59:06

学习咯

zhong110109 发表于 2008-9-8 23:08:45

谢谢哦

winmcu 发表于 2008-9-9 09:36:56

谢谢了,好用.学习了

pally2004 发表于 2008-9-9 16:48:31

mark~~

lzf713 发表于 2008-9-9 18:58:37

好中文资料,好资料!

hebin939 发表于 2008-9-29 11:25:47

谢谢 &nbsp;

chigaoyuan 发表于 2008-9-29 15:01:41

标记

apple3417 发表于 2008-10-31 15:43:46

顶,果然是好东西

dengxiaofeng 发表于 2009-3-11 22:08:22

学习哈!

wmsky 发表于 2009-3-22 09:16:58

mark

jsjjccc 发表于 2009-3-22 09:48:54

其它参考手册或电子书也能做成这样就好了,点哪就哪,不像PDF或超星那样看点东西翻来翻去找个老半天头都晕了。

coorme 发表于 2009-4-3 21:28:59

如果能加上BusyFlag的检测就更好了。收藏。

yunlongAVR 发表于 2009-4-4 01:19:31

谢谢LZ!已经下了,正在参考!

linjinhai126 发表于 2009-4-29 13:31:07

dddddddddd!!!!好东西哈

fengzhijie 发表于 2009-4-29 14:57:06

楼主程序缺陷很多,没有读忙标志,初始化也有问题。我估计大部分人得液晶点不起来了。
初始化必须要有8线到4线的过程

z_zt 发表于 2009-4-29 20:24:46

标记

17flash 发表于 2009-4-30 00:16:53

确实是好东西,感谢分享!

weimenlove 发表于 2009-5-13 16:47:21

好,谢了

markloveyou 发表于 2009-5-13 17:15:00

不错谢谢了

blues0763 发表于 2009-5-13 20:17:45

是啊,CHM很漂亮。
怎么做的啊。什么工具。
学学。

ytgui 发表于 2009-5-13 21:03:23

不错谢谢了

C.Ronaldo 发表于 2009-5-13 23:23:53

很不错

xieguangye 发表于 2009-5-14 09:12:19

MARK 3Q

xyz2008 发表于 2009-5-14 09:21:23

ding

wc19880911 发表于 2009-5-14 12:12:23

hao dong xi a
ding

erlengzi 发表于 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引脚
} 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引脚
} LCD1602ControlPortStruct;
2、这一点是最最重要的,把编译的优化选项改为-00,因为默认选项-0s把好多语句优化掉了。
3、初始化函数得好好改改,具体参照论坛上相关帖子。

Swallow 发表于 2009-8-11 14:12:20

See See!

hm_huang 发表于 2009-8-18 22:06:34

谢谢分享

erlengzi 发表于 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引脚
} LCD1602ControlPortStruct;
即可,
无需改优化为00

keyman 发表于 2009-8-23 00:52:19

支持

minux 发表于 2009-8-25 03:23:06

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

wuxinping 发表于 2010-2-9 13:36:42

好东西顶

lin2266286 发表于 2010-2-10 11:44:08

学习,顶

lf8013 发表于 2010-2-10 12:49:34

果然是好东西

asj1989 发表于 2010-6-22 00:06:59

下来研究

mavericklx 发表于 2010-7-8 12:29:51

mark~~

guhenggao 发表于 2010-7-21 10:15:51

mark

wukaka 发表于 2010-7-25 18:39:30

顶,利用位域(位段)来操作,这个方法好!

heyking 发表于 2010-7-25 20:19:48

回复【楼主位】linhaimi
-----------------------------------------------------------------------

mark

tangwei039 发表于 2010-7-25 20:46:32

djl310 发表于 2010-10-18 17:50:06

MARK

wcm_e 发表于 2010-10-18 17:52:38

学习

pynueve 发表于 2010-11-2 22:37:52

支持!!!

www1519 发表于 2010-11-8 22:46:34

mark

gtzhangzr 发表于 2010-11-14 19:58:10

很牛的代码....

zbazba 发表于 2010-11-14 21:11:56

mark

chenerbox 发表于 2010-11-19 11:22:54

51下貌似不管用

zuogm 发表于 2010-11-19 13:06:30

谢谢楼主分享

chkmsfc 发表于 2010-11-19 13:46:46

回复【11楼】lihongguang
-----------------------------------------------------------------------

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

chkmsfc 发表于 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引脚
} LCD1602ControlPortStruct;

RS :1   RW:1不知如何连接到液晶的RS引脚,
还有static LCD1602ControlPortStruct* ControlPort; 不知如何使用,
能否举例说明一下如何连接到atmega16 的某管脚?
页: [1] 2
查看完整版本: 经过验证的,到手就可以用简单的LCD1602驱动程序