经过验证的,到手就可以用简单的LCD1602驱动程序
点击此处下载armok01125601.zip 好东西竟然没人顶?? 是好东西呀,这么漂亮的文件,不知是用什么软件做出来的?我只会用QuickCHM,它好像做不了这么漂亮的文件. 果然是好东西,对我等初学者很有用。谢谢!
另外题个意见: 跳到代码处时有高亮显示那就更好了。 好东西应该让更多的人看到,让更多的人分享! 收藏了,谢谢! 漂亮!!! 不错的东西,好像是使用Windows Help Workshop做出来了 更新一下代码:
点击此处下载armok01125740.zip
说明:
同时提供1602液晶和3310液晶的驱动方法,而且统一了编程接口,将液晶的操作统一为SetPort, Reset, WriteByte, WriteCommand, WriteChar, WriteString和SetXY等几个简单的操作.使得这两种液晶的操作界面完全一样.提供的源代码可以直接用Doxygen生成参考手册,同时为没有安装Doxygen朋友提供了编译好的参考手册.
代码在我自己的两块板子上均调试通过.由于这两种液晶都可以在阿莫的邮购部买到,所以暂时将函数库定名为"OurLCD",挖哈哈~~~
如果在使用是发现了什么问题,欢迎交流~
-----此内容被linhaimi于2006-08-08,23:18:49编辑过 漂亮不错的东西收藏了,谢谢! 支持!!! 对指针和结构体不太熟悉,好东西可不知如何用。
其中的结构体
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 的某管脚? 不错,支持。谢谢 好东西,顶一下,虽然很早就搞定了1602了~~~ 这个主要是C语言的位域的操作
对应的硬件连接如:
http://cache.amobbs.com/bbs_upload782111/files_6/armok01128923.PNG
另外:有人说嵌入式代码采用位域的话会影响代码的可移植性,不知道是不是这样的.
我猜可能是由于大端和小段的差异造成的.如过仅仅是由于大端和小段差异造成的话影响到不是很大,
(另外:个人认为一般的编译器都有开关选择结构体的内存对齐问题.故认为内存对齐不影响位域代码的可移植性) 好东西! 菜鸟还是不太懂硬件连接,能否给个实例啊~~ 下下来研究研究!~
谢LZ! 1.LCD1602显示模式中4bit应该是0x30,8bit 应该是0x38.
2.在采用4位显示时写数据和命令时,应把4位的输入口清零
ControlPort->DATA&= 0X0F;
ControlPort->DATA|= data&0xf0;
3.写数据时 RS=1;写命令时RS=0. 如果是8位的,怎么用这个库呢? 支持一下
顺便问一下,chm格式的文件用什么软件做出来? 谢谢分享! 这么好的东西不顶不行啊 thanks! 谢谢分享 谢谢共享 谁能给个例子谢谢! 谁能给个例子谢谢! 谢谢! 楼主是DoxyGen高手 it is so beautiful! 看一下,
哈哈...我排到盖茨后面了...容幸啊.. 谢谢
很有用 学习! 学习中,
void LCD3310_SetPort(void* Port) {
DevicePort = (LCD3310ControlPortStruct*)Port;
LCD3310_Reset();
}
初始化(PORTC)是不是只要调用
LCD3310_SetPort(0x15);
??
iom16.h中下面的语句什么意思,GCC的材料不知那儿找,看得不多,也不知道怎么理解
#define PORTC _SFR_IO8(0x15) "LCD3310_SetPort((void*)&PORTC)" @ WinAVR 有用 从
void LCD_write_byte(unsigned char data) {
ControlPort->DATA = data >> 4;
LCD_en_write();
ControlPort->DATA = data;
LCD_en_write();
}
看,数据位应该是连接到低4位吧? 能给个例子吗?好像点不起来啊? 下来看看^^^ 粗略看了一下回复,有点象是做到统一编程接口,真象还得等去下载看了再说 请问楼主,如何实现光标的灵活应用! 是好东西 收下来看看! 谢谢分享! void LCD1602_WriteString(unsigned char* s) {
while (*s != 0)
LCD1602_WriteCommand(*s++);
}
以上怎么会是写:WriteCommand(*s++)
??? 问一下各位高手,这个函数怎样调用,才能设置好端口呢?
void LCD1602_SetPort(void* Port) {
ControlPort = (LCD1602ControlPortStruct*)Port;
LCD1602_Reset();
}
还有45楼提出的那个名是写错了,不是写命令,应该是写字符(即写数据). 问下高手,他这个是用什么软件编写出,感觉好漂亮啊 !!! 哇,好啊,不错 mark,日后再看。。。 学习咯 谢谢哦 谢谢了,好用.学习了 mark~~ 好中文资料,好资料! 谢谢 标记 顶,果然是好东西 学习哈! mark 其它参考手册或电子书也能做成这样就好了,点哪就哪,不像PDF或超星那样看点东西翻来翻去找个老半天头都晕了。 如果能加上BusyFlag的检测就更好了。收藏。 谢谢LZ!已经下了,正在参考! dddddddddd!!!!好东西哈 楼主程序缺陷很多,没有读忙标志,初始化也有问题。我估计大部分人得液晶点不起来了。
初始化必须要有8线到4线的过程 标记 确实是好东西,感谢分享! 好,谢了 不错谢谢了 是啊,CHM很漂亮。
怎么做的啊。什么工具。
学学。 不错谢谢了 很不错 MARK 3Q ding hao dong xi a
ding 题目起的很好,而且程序也很好,但我相信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、初始化函数得好好改改,具体参照论坛上相关帖子。 See See! 谢谢分享 更改为
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 支持 不是文件里面写了么是doxygen制作的,stm32那个固件库的文档我猜测也是(doxygen自己上网google吧,很好的从程序自动生成文档的方法,习惯用Windows的人估计很少有接触这种东东)。
不过我非常不喜欢chm,Linux下有的看不了,电子书阅读器也看不了,还是pdf, djvu好些。 好东西顶 学习,顶 果然是好东西 下来研究 mark~~ mark 顶,利用位域(位段)来操作,这个方法好! 回复【楼主位】linhaimi
-----------------------------------------------------------------------
mark 好 MARK 学习 支持!!! mark 很牛的代码.... mark 51下貌似不管用 谢谢楼主分享 回复【11楼】lihongguang
-----------------------------------------------------------------------
这个我也一直都不明白,哪位大哥知道,请讲一下啊,感激不尽啊! 对指针和结构体不太熟悉,好东西可不知如何用。
其中的结构体
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