[古董贴][共享]发布本人最新版本的LCD1602驱动程序库——请勿挖古墓
发布本人最新版本的LCD1602驱动库。帮助处在困难中的大家度过难关哈。
点击此处下载armok0190286.rar
/********************************************************
*函数库说明:LCD1602B基本驱动函数库 *
*版本: v1.7b *
*作者: 傻孩子 *
*日期: 2005年9月6日 *
*修改: 傻孩子 *
*修改日期:2005年12月2日 *
* *
*说明: *
* 1、需要底层硬件驱动函数支持 *
* 基本的宏定义: *
* LCD_RS LCD_RW LCD_E *
* LCD_SetWriteDataLCD_SetReadData *
* LCD_HalfData_Port LCD_HalfData_DDR *
* LCD_SendHalfCharHigh(a) *
* LCD_SendHalfCharLow(a) *
* 2、自带基本的延时函数。需要外部提供毫秒*
* 单向增加的两个计数器用于特效显示: *
* FlashTimeCounterRunTimeCounter *
* 3、需要修改引用宏定义来指定底层硬件驱动*
* 函数库。 *
* 4、本库驱动下的LCD显示支持1602的各种连 *
* 接方法。当使用只写模式是请在引用该头*
* 文件之前加上宏定义: *
* # define _Use_LCDOnlyWrite *
* 5、在调用本库之前,定义RunStringSpeed可*
* 以设置滚屏的速度。通过在引用前定义 *
* FlashTimeOut 和 FlashGIFTimeOut 可以*
* 改变字符闪烁的频率。 *
* 6、增加一个GIF字幕特效函数。 *
* 7、确定没有LCD复位问题。 *
********************************************************/
-----此内容被Gorgon Meducer于2005-12-02,08:54:38编辑过 示例程序片断:
一个485集线器的显示部分
char DispBoundRate = {{"InBound:9600"},
{"OutBound: 9600"}};
void Welcome(void)
{
RunString("SWUST Roboteam Studio 2005 - 2006 Welcome to use ComGetWay",1,1,1,16);
FlashStringGroup(DispBoundRate,2,1,2);
} 谢谢,请继续 示例二:4位的数值输入函数(支持编辑)
/********************************************************
*函数说明:用户数据输入函数 *
*输出: 获取的数值当前的坐标 *
********************************************************/
unsigned int Input(char x,char y)
{
char InputBuff = {0x0f,0x0f,0x0f,0x0f,0x0f};
signed char Tail = 0;
signed char WritePoint = 0;
char a = 0;
char IfInputOk = False;
unsigned int TempReturn = 0;
while (IfInputOk == False)
{
KeyScan();
AddKeyCode();
if (GetKeyCode() == True)
{
switch (ReturnKeyNum)
{
case Key_1:
InputBuff = 1;
WritePoint ++;
if (WritePoint == 4)
{
WritePoint = 0;
}
if (WritePoint > Tail)
{
Tail ++;
}
break;
case Key_2:
InputBuff = 2;
WritePoint ++;
if (WritePoint == 4)
{
WritePoint = 0;
}
if (WritePoint > Tail)
{
Tail ++;
}
break;
case Key_3:
InputBuff = 3;
WritePoint ++;
if (WritePoint == 4)
{
WritePoint = 0;
}
if (WritePoint > Tail)
{
Tail ++;
}
break;
case Key_4:
InputBuff = 4;
WritePoint ++;
if (WritePoint == 4)
{
WritePoint = 0;
}
if (WritePoint > Tail)
{
Tail ++;
}
break;
case Key_5:
InputBuff = 5;
WritePoint ++;
if (WritePoint == 4)
{
WritePoint = 0;
}
if (WritePoint > Tail)
{
Tail ++;
}
break;
case Key_6:
InputBuff = 6;
WritePoint ++;
if (WritePoint == 4)
{
WritePoint = 0;
}
if (WritePoint > Tail)
{
Tail ++;
}
break;
case Key_7:
InputBuff = 7;
WritePoint ++;
if (WritePoint == 4)
{
WritePoint = 0;
}
if (WritePoint > Tail)
{
Tail ++;
}
break;
case Key_8:
InputBuff = 8;
WritePoint ++;
if (WritePoint == 4)
{
WritePoint = 0;
}
if (WritePoint > Tail)
{
Tail ++;
}
break;
case Key_9:
InputBuff = 9;
WritePoint ++;
if (WritePoint == 4)
{
WritePoint = 0;
}
if (WritePoint > Tail)
{
Tail ++;
}
break;
case Key_0:
InputBuff = 0;
WritePoint ++;
if (WritePoint == 4)
{
WritePoint = 0;
}
if (WritePoint > Tail)
{
Tail ++;
}
break;
case Key_Delete:
if ((WritePoint == 0) && (Tail == 0) && (InputBuff != 0))
{
InputBuff = 0x0f;
}
else if (Tail != 0)
{
for (a = WritePoint;a<=Tail;a++)
{
InputBuff = InputBuff;
}
InputBuff = 0x0f;
Tail --;
if (WritePoint > Tail)
{
WritePoint = Tail;
}
}
break;
case Key_Enter:
IfInputOk = True;
break;
}
switch (ReturnLongKeyPressNum)
{
case Key_Left:
WritePoint --;
if (WritePoint < 0)
{
WritePoint = Tail;
}
break;
case Key_Right:
WritePoint ++;
if (WritePoint > Tail)
{
WritePoint = 0;
}
break;
}
}
Locate(x,y)
for (a = 0;a<4;a ++)
{
if (InputBuff != 0x0f)
{
PrintN(InputBuff,1)
}
else
{
Print(" ")
}
}
Locate(WritePoint+x,y)
ShowIcon
}
HideIcon
for (a = 0;a<4;a++)
{
if (InputBuff != 0x0f)
{
TempReturn <<= 4;
TempReturn |= InputBuff;
}
}
return TempReturn;
} 实例三:带菜单和编辑功能的输入输出板
点击此处下载armok0190306.rar
硬件描述:4*5键盘 LCD1602 谢谢! 客气,不过是更新以前的版本,公布几个实例罢了哈。 正好用的着,非常感谢!!1 老大能不能加点注解呀!! 这样的好人在国内应该属于国宝。要是国内这样的人多点,估计中国软件领域可能有很大的进步。 哈哈.我一直都在用你的这个东西.是前一个版本的.一开始显示2005电子什么什么的英文. 顶!!! 顶!!! 呵呵,对不起,我写的代码不喜欢在程序体里面加注释。
原因很简单,我自信的觉得,那些代码结构很清晰了,直接就应该能看懂的。 ding~! [呵呵,对不起,我写的代码不喜欢在程序体里面加注释。
原因很简单,我自信的觉得,那些代码结构很清晰了,直接就应该能看懂的]
楼主无私奉献精神非常值得大家学习!!!
不过有劳楼主以后写程序还是应该加上注释好,这样我们这些初学者会少走很多弯路的。
非常感谢。 请问 "增加一个GIF字幕特效函数" 是解码GIF格式的图片吗?
怎么没有看到GIF解码程序? 呵呵,这个GIF只不过是一个类似GIF的文字效果。
你提供一个存有多个字符串的数组,把地址给他就行了。
让大家误解了,不好意思。
对于函数库提供的功能,主要是方便一般系统开发在显示方面的要求。
比方说文字GIF功能,主要是方便在固定的区域内显示多个状态信息而设计的。
字符串Flash功能,主要是方便菜单操作和突出显示而设计的。
滚屏自然就不用多说了。
--------------------------
头文件做的大而全,就容易产生冗余代码,对单片机系统来说,浪费太大,所以,很多其他功能,还需要大家根据需要来添加。 请问一下,这个驱动能在CVAVR上使用吗? 顶! 有没有ks0108/ks0107的12864程序啊???
我在网站上尚找了几个,好像效果不是很好。 花了一个周末,把这个函数库基本搞懂了,附上自己的简单例子:
avrmega16L+7.37258Mhz+Lcd1602;
PN +GCC;
感谢楼主的驱动库.
点击此处下载armok01136522.rar 不错哦,还是同一个学校的哦,什么时候 来交流一下哈。。。 谢谢。放送。 谢谢 这里的人都很伟大 无私奉献,现在这样的地方不多了。 Gorgon Meducer的帖子很不错,很无私...... 先项一下,反正今天就是找资料,好用的先收着,日后可以看 多谢! 牛人,不知道什么时候能够做到你这样.如何周围再多一些像你这样的人的话就好了.我们能少走很多的弯路. 非常感谢~ 谢谢了. 感谢楼主!!!!! ——请勿挖古墓 ^o^ 好东西 顶 菜鸟感言:1602我也在用啊,我觉的很简单,就是一个写命令函数,一个写数据函数,再加上一个init()。要实现菜单功能就是选择后清屏,再显示,再清屏,再显示。总共代码不过一点点,,,,,,最近看了傻孩子的程序,我想不明白了,,,怎么那么多代码??????????需要这样吗???是不是外面公司都是这样用的,跟学校不一样?? to 【36楼】 cyr_hongfeng
1602本身并不负责,之所以有那么多复杂的内容是因为应用环境可能需要一些
额外的功能。我一直提倡初学者:“理解到了才是学到了”。你应该按照你自己的
步骤来。在没有觉得有必要性的情况下,不要随意模仿别人的作法。^_^加油。
BTW,请勿挖古墓!!!!!!!!!
本贴被 Gorgon Meducer 编辑过,最后修改时间:2009-01-03,15:23:58. 没有古墓挖啊!!
- -b<font color=#699BCD>
本贴被 Gorgon Meducer 编辑过,最后修改时间:2009-01-03,18:25:11. 多谢傻孩子了,,那我一步一步来学吧,,,,,,
BTW,请勿挖古墓!!!!!!!!!?????????????????什么意思呢,如果那做错了,楼主包涵啊。前一段时间在坛
里看到有人发帖后面总会跟上一句, “阿莫,给条裤子吧”
我百思不得其解,后来终于明白了,就是置酷的意思。
mark Mark mark 再次刨开 remark mark 马克 mark 哈哈 这个古墓 被暴n遍了。。 是好东西要学习一下 挖了古墓 拿点东西 谢谢 mark!! mark 有没有8255a与lcd1602的接口程序啊,急需中!!!!!!
页:
[1]