搜索
bottom↓
回复: 53

[古董贴][共享]发布本人最新版本的LCD1602驱动程序库——请勿挖古墓

[复制链接]

出0入296汤圆

发表于 2005-12-2 08:53:44 | 显示全部楼层 |阅读模式
发布本人最新版本的LCD1602驱动库。

帮助处在困难中的大家度过难关哈。



点击此处下载armok0190286.rar



/********************************************************

*  函数库说明:LCD1602B基本驱动函数库                   *

*  版本:      v1.7b                                    *

*  作者:      傻孩子                                   *

*  日期:      2005年9月6日                             *

*  修改:      傻孩子                                   *

*  修改日期:  2005年12月2日                            *

*                                                       *

*  说明:                                               *

*              1、需要底层硬件驱动函数支持              *

*                 基本的宏定义:                        *

*                 LCD_RS   LCD_RW   LCD_E               *

*                 LCD_SetWriteData  LCD_SetReadData     *

*                 LCD_HalfData_Port LCD_HalfData_DDR    *

*                 LCD_SendHalfCharHigh(a)               *

*                 LCD_SendHalfCharLow(a)                *

*              2、自带基本的延时函数。需要外部提供毫秒  *

*                 单向增加的两个计数器用于特效显示:    *

*                 FlashTimeCounter  RunTimeCounter      *

*              3、需要修改引用宏定义来指定底层硬件驱动  *

*                 函数库。                              *

*              4、本库驱动下的LCD显示支持1602的各种连   *

*                 接方法。当使用只写模式是请在引用该头  *

*                 文件之前加上宏定义:                  *

*                 # define _Use_LCDOnlyWrite            *

*              5、在调用本库之前,定义RunStringSpeed可  *

*                 以设置滚屏的速度。通过在引用前定义    *

*                 FlashTimeOut 和 FlashGIFTimeOut 可以  *

*                 改变字符闪烁的频率。                  *

*              6、增加一个GIF字幕特效函数。             *

*              7、确定没有LCD复位问题。                 *

********************************************************/
-----此内容被Gorgon Meducer于2005-12-02,08:54:38编辑过

出0入296汤圆

 楼主| 发表于 2005-12-2 08:59:53 | 显示全部楼层
示例程序片断:



一个485集线器的显示部分



char DispBoundRate[2][17] = {{"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);

}

出0入0汤圆

发表于 2005-12-2 09:00:23 | 显示全部楼层
谢谢,请继续

出0入296汤圆

 楼主| 发表于 2005-12-2 09:08:08 | 显示全部楼层
示例二:4位的数值输入函数(支持编辑)

/********************************************************

*  函数说明:用户数据输入函数                           *

*  输出:    获取的数值  当前的坐标                     *

********************************************************/

unsigned int Input(char x,char y)

{

    char InputBuff[5] = {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[WritePoint] = 1;

                                WritePoint ++;

                                if (WritePoint == 4)

                                {

                                    WritePoint = 0;

                                }

                               

                                if (WritePoint > Tail)

                                {

                                    Tail ++;

                                }

                            break;

                        case Key_2:

                            InputBuff[WritePoint] = 2;

                                WritePoint ++;

                                if (WritePoint == 4)

                                {

                                    WritePoint = 0;

                                }

                               

                                if (WritePoint > Tail)

                                {

                                    Tail ++;

                                }

                            break;

                        case Key_3:

                            InputBuff[WritePoint] = 3;

                                WritePoint ++;

                                if (WritePoint == 4)

                                {

                                    WritePoint = 0;

                                }

                               

                                if (WritePoint > Tail)

                                {

                                    Tail ++;

                                }

                            break;

                        case Key_4:

                            InputBuff[WritePoint] = 4;

                                WritePoint ++;

                                if (WritePoint == 4)

                                {

                                    WritePoint = 0;

                                }

                               

                                if (WritePoint > Tail)

                                {

                                    Tail ++;

                                }

                            break;

                        case Key_5:

                            InputBuff[WritePoint] = 5;

                                WritePoint ++;

                                if (WritePoint == 4)

                                {

                                    WritePoint = 0;

                                }

                               

                                if (WritePoint > Tail)

                                {

                                    Tail ++;

                                }

                            break;

                        case Key_6:

                            InputBuff[WritePoint] = 6;

                                WritePoint ++;

                                if (WritePoint == 4)

                                {

                                    WritePoint = 0;

                                }

                               

                                if (WritePoint > Tail)

                                {

                                    Tail ++;

                                }

                            break;

                        case Key_7:

                            InputBuff[WritePoint] = 7;

                                WritePoint ++;

                                if (WritePoint == 4)

                                {

                                    WritePoint = 0;

                                }

                               

                                if (WritePoint > Tail)

                                {

                                    Tail ++;

                                }

                            break;

                        case Key_8:

                            InputBuff[WritePoint] = 8;

                                WritePoint ++;

                                if (WritePoint == 4)

                                {

                                    WritePoint = 0;

                                }

                               

                                if (WritePoint > Tail)

                                {

                                    Tail ++;

                                }

                            break;

                        case Key_9:

                            InputBuff[WritePoint] = 9;

                                WritePoint ++;

                                if (WritePoint == 4)

                                {

                                    WritePoint = 0;

                                }

                               

                                if (WritePoint > Tail)

                                {

                                    Tail ++;

                                }

                            break;

                        case Key_0:

                            InputBuff[WritePoint] = 0;

                                WritePoint ++;

                                if (WritePoint == 4)

                                {

                                    WritePoint = 0;

                                }

                               

                                if (WritePoint > Tail)

                                {

                                    Tail ++;

                                }

                            break;

                               

                        case Key_Delete:

                            if ((WritePoint == 0) && (Tail == 0) && (InputBuff[WritePoint] != 0))

                                {

                                    InputBuff[0] = 0x0f;

                                }

                                else if (Tail != 0)

                                {

                                for (a = WritePoint;a<=Tail;a++)

                                        {

                                            InputBuff[a] = InputBuff[a+1];

                                        }

                                        InputBuff[Tail] = 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[a] != 0x0f)

                        {

                        PrintN(InputBuff[a],1)

                        }

                        else

                        {

                            Print(" ")

                        }

                }

                Locate(WritePoint+x,y)

                ShowIcon

        }

   

        HideIcon

        for (a = 0;a<4;a++)

        {

            if (InputBuff[a] != 0x0f)

                {

                TempReturn <<= 4;

                    TempReturn |= InputBuff[a];

                }

        }       

        return TempReturn;

}

出0入296汤圆

 楼主| 发表于 2005-12-2 09:12:27 | 显示全部楼层
实例三:带菜单和编辑功能的输入输出板  

点击此处下载armok0190306.rar





硬件描述:4*5键盘 LCD1602
头像被屏蔽

出0入0汤圆

发表于 2005-12-2 09:15:21 | 显示全部楼层
谢谢!

出0入296汤圆

 楼主| 发表于 2005-12-2 12:42:59 | 显示全部楼层
客气,不过是更新以前的版本,公布几个实例罢了哈。

出0入0汤圆

发表于 2005-12-2 19:03:35 | 显示全部楼层
正好用的着,非常感谢!!1

出0入0汤圆

发表于 2005-12-2 19:35:00 | 显示全部楼层
老大能不能加点注解呀!!

出0入0汤圆

发表于 2005-12-2 22:59:47 | 显示全部楼层
这样的好人在国内应该属于国宝。要是国内这样的人多点,估计中国软件领域可能有很大的进步。

出0入0汤圆

发表于 2005-12-2 23:16:13 | 显示全部楼层
哈哈.我一直都在用你的这个东西.是前一个版本的.一开始显示2005电子什么什么的英文.

出0入0汤圆

发表于 2005-12-3 13:46:19 | 显示全部楼层
顶!!!

出0入0汤圆

发表于 2005-12-3 13:50:10 | 显示全部楼层
顶!!!

出0入296汤圆

 楼主| 发表于 2005-12-4 21:11:51 | 显示全部楼层
呵呵,对不起,我写的代码不喜欢在程序体里面加注释。

原因很简单,我自信的觉得,那些代码结构很清晰了,直接就应该能看懂的。

出0入0汤圆

发表于 2005-12-26 16:09:13 | 显示全部楼层
ding~!

出0入0汤圆

发表于 2005-12-30 03:36:05 | 显示全部楼层
[呵呵,对不起,我写的代码不喜欢在程序体里面加注释。

原因很简单,我自信的觉得,那些代码结构很清晰了,直接就应该能看懂的]



楼主无私奉献精神非常值得大家学习!!!

不过有劳楼主以后写程序还是应该加上注释好,这样我们这些初学者会少走很多弯路的。

非常感谢。

出0入0汤圆

发表于 2005-12-30 08:49:02 | 显示全部楼层
请问 "增加一个GIF字幕特效函数" 是解码GIF格式的图片吗?

怎么没有看到GIF解码程序?

出0入296汤圆

 楼主| 发表于 2005-12-30 15:49:05 | 显示全部楼层
呵呵,这个GIF只不过是一个类似GIF的文字效果。

你提供一个存有多个字符串的数组,把地址给他就行了。

让大家误解了,不好意思。



对于函数库提供的功能,主要是方便一般系统开发在显示方面的要求。

比方说文字GIF功能,主要是方便在固定的区域内显示多个状态信息而设计的。



字符串Flash功能,主要是方便菜单操作和突出显示而设计的。



滚屏自然就不用多说了。



--------------------------

头文件做的大而全,就容易产生冗余代码,对单片机系统来说,浪费太大,所以,很多其他功能,还需要大家根据需要来添加。

出0入0汤圆

发表于 2006-10-23 18:26:24 | 显示全部楼层
请问一下,这个驱动能在CVAVR上使用吗?

出0入0汤圆

发表于 2006-11-9 09:10:10 | 显示全部楼层
顶!

出0入0汤圆

发表于 2006-11-9 10:52:51 | 显示全部楼层
有没有ks0108/ks0107的12864程序啊???

我在网站上尚找了几个,好像效果不是很好。

出0入0汤圆

发表于 2006-11-26 17:03:30 | 显示全部楼层
花了一个周末,把这个函数库基本搞懂了,附上自己的简单例子:



avrmega16L+7.37258Mhz+Lcd1602;

PN +GCC;



感谢楼主的驱动库.



点击此处下载armok01136522.rar

出0入0汤圆

发表于 2006-12-21 16:06:48 | 显示全部楼层
不错哦,还是同一个学校的哦,什么时候 来交流一下哈。。。

出0入0汤圆

发表于 2006-12-21 16:34:42 | 显示全部楼层
谢谢。放送。

出0入0汤圆

发表于 2006-12-21 21:15:45 | 显示全部楼层
谢谢

出0入0汤圆

发表于 2007-5-5 15:38:09 | 显示全部楼层
这里的人都很伟大 无私奉献,现在这样的地方不多了。

出0入0汤圆

发表于 2007-11-11 16:48:30 | 显示全部楼层
Gorgon Meducer的帖子很不错,很无私......

出0入0汤圆

发表于 2008-1-25 19:12:48 | 显示全部楼层
先项一下,反正今天就是找资料,好用的先收着,日后可以看

出0入0汤圆

发表于 2008-3-4 16:36:29 | 显示全部楼层
多谢!

出0入0汤圆

发表于 2008-3-6 20:09:19 | 显示全部楼层
牛人,不知道什么时候能够做到你这样.如何周围再多一些像你这样的人的话就好了.我们能少走很多的弯路.

出0入0汤圆

发表于 2008-3-7 21:11:07 | 显示全部楼层
非常感谢~

出0入0汤圆

发表于 2008-3-15 17:27:02 | 显示全部楼层
谢谢了.

出0入0汤圆

发表于 2008-6-20 22:28:15 | 显示全部楼层
感谢楼主!!!!!

出0入4汤圆

发表于 2008-6-21 08:30:14 | 显示全部楼层
——请勿挖古墓   ^o^

出0入0汤圆

发表于 2008-10-21 16:23:53 | 显示全部楼层
好东西&nbsp;&nbsp;顶

出0入0汤圆

发表于 2009-1-3 13:16:17 | 显示全部楼层
菜鸟感言:1602我也在用啊,我觉的很简单,就是一个写命令函数,一个写数据函数,再加上一个init()。要实现菜单功能就是选择后清屏,再显示,再清屏,再显示。总共代码不过一点点,,,,,,最近看了傻孩子的程序,我想不明白了,,,怎么那么多代码??????????需要这样吗???是不是外面公司都是这样用的,跟学校不一样??

出0入296汤圆

 楼主| 发表于 2009-1-3 15:22:44 | 显示全部楼层
to&nbsp;【36楼】&nbsp;cyr_hongfeng&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;1602本身并不负责,之所以有那么多复杂的内容是因为应用环境可能需要一些

额外的功能。我一直提倡初学者:“理解到了才是学到了”。你应该按照你自己的

步骤来。在没有觉得有必要性的情况下,不要随意模仿别人的作法。^_^加油。


BTW,请勿挖古墓!!!!!!!!!


本贴被 Gorgon Meducer 编辑过,最后修改时间:2009-01-03,15:23:58.

出0入0汤圆

发表于 2009-1-3 16:40:44 | 显示全部楼层
没有古墓挖啊!!


-&nbsp;-b
<font color=#699BCD>

本贴被 Gorgon Meducer 编辑过,最后修改时间:2009-01-03,18:25:11.

出0入0汤圆

发表于 2009-1-4 15:24:21 | 显示全部楼层
多谢傻孩子了,,那我一步一步来学吧,,,,,,



BTW,请勿挖古墓!!!!!!!!!?????????????????什么意思呢,如果那做错了,楼主包涵啊。前一段时间在坛



&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;里看到有人发帖后面总会跟上一句,&nbsp;&nbsp;“阿莫,给条裤子吧”

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;我百思不得其解,后来终于明白了,就是置酷的意思。

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

出0入0汤圆

发表于 2009-6-12 10:46:24 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-12-17 01:04:45 | 显示全部楼层
Mark

出0入0汤圆

发表于 2010-1-30 11:55:42 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-1-31 00:55:27 | 显示全部楼层
再次刨开

出0入0汤圆

发表于 2010-2-3 00:21:25 | 显示全部楼层
remark

出0入0汤圆

发表于 2010-5-8 09:10:59 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-5-19 14:43:51 | 显示全部楼层
马克

出0入0汤圆

发表于 2010-8-18 11:30:24 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-8-18 12:31:33 | 显示全部楼层
哈哈 这个古墓 被暴n遍了。。

出0入0汤圆

发表于 2010-8-25 01:29:08 | 显示全部楼层
是好东西要学习一下

出0入0汤圆

发表于 2010-10-7 13:23:43 | 显示全部楼层
挖了古墓       拿点东西        谢谢

出0入0汤圆

发表于 2011-4-14 18:35:28 | 显示全部楼层
mark!!

出0入0汤圆

发表于 2011-4-14 19:17:31 | 显示全部楼层
mark

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-5-1 18:42

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

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