Gorgon_Meducer 发表于 2005-12-2 08:53:44

[古董贴][共享]发布本人最新版本的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编辑过

Gorgon_Meducer 发表于 2005-12-2 08:59:53

示例程序片断:



一个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);

}

AVRNEWER 发表于 2005-12-2 09:00:23

谢谢,请继续

Gorgon_Meducer 发表于 2005-12-2 09:08:08

示例二: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;

}

Gorgon_Meducer 发表于 2005-12-2 09:12:27

实例三:带菜单和编辑功能的输入输出板

点击此处下载armok0190306.rar





硬件描述:4*5键盘 LCD1602

armok 发表于 2005-12-2 09:15:21

谢谢!

Gorgon_Meducer 发表于 2005-12-2 12:42:59

客气,不过是更新以前的版本,公布几个实例罢了哈。

wzhscj 发表于 2005-12-2 19:03:35

正好用的着,非常感谢!!1

SKYdai 发表于 2005-12-2 19:35:00

老大能不能加点注解呀!!

zhangna_901887 发表于 2005-12-2 22:59:47

这样的好人在国内应该属于国宝。要是国内这样的人多点,估计中国软件领域可能有很大的进步。

gongcsf 发表于 2005-12-2 23:16:13

哈哈.我一直都在用你的这个东西.是前一个版本的.一开始显示2005电子什么什么的英文.

zh1112ou 发表于 2005-12-3 13:46:19

顶!!!

zh1112ou 发表于 2005-12-3 13:50:10

顶!!!

Gorgon_Meducer 发表于 2005-12-4 21:11:51

呵呵,对不起,我写的代码不喜欢在程序体里面加注释。

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

lvlei217 发表于 2005-12-26 16:09:13

ding~!

xcm_gz 发表于 2005-12-30 03:36:05

[呵呵,对不起,我写的代码不喜欢在程序体里面加注释。

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



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

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

非常感谢。

HJJourAVR 发表于 2005-12-30 08:49:02

请问 "增加一个GIF字幕特效函数" 是解码GIF格式的图片吗?

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

Gorgon_Meducer 发表于 2005-12-30 15:49:05

呵呵,这个GIF只不过是一个类似GIF的文字效果。

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

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



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

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



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



滚屏自然就不用多说了。



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

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

Logix 发表于 2006-10-23 18:26:24

请问一下,这个驱动能在CVAVR上使用吗?

zoumulin 发表于 2006-11-9 09:10:10

顶!

mcuhost 发表于 2006-11-9 10:52:51

有没有ks0108/ks0107的12864程序啊???

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

everglen 发表于 2006-11-26 17:03:30

花了一个周末,把这个函数库基本搞懂了,附上自己的简单例子:



avrmega16L+7.37258Mhz+Lcd1602;

PN +GCC;



感谢楼主的驱动库.



点击此处下载armok01136522.rar

wf20035436 发表于 2006-12-21 16:06:48

不错哦,还是同一个学校的哦,什么时候 来交流一下哈。。。

jackrich 发表于 2006-12-21 16:34:42

谢谢。放送。

maruibing 发表于 2006-12-21 21:15:45

谢谢

nk714 发表于 2007-5-5 15:38:09

这里的人都很伟大 无私奉献,现在这样的地方不多了。

feng200808 发表于 2007-11-11 16:48:30

Gorgon Meducer的帖子很不错,很无私......

maskiss 发表于 2008-1-25 19:12:48

先项一下,反正今天就是找资料,好用的先收着,日后可以看

leo_cheung 发表于 2008-3-4 16:36:29

多谢!

Chenxg 发表于 2008-3-6 20:09:19

牛人,不知道什么时候能够做到你这样.如何周围再多一些像你这样的人的话就好了.我们能少走很多的弯路.

Yun0 发表于 2008-3-7 21:11:07

非常感谢~

Chenxg 发表于 2008-3-15 17:27:02

谢谢了.

fxt_520 发表于 2008-6-20 22:28:15

感谢楼主!!!!!

aleyn 发表于 2008-6-21 08:30:14

——请勿挖古墓   ^o^

proco 发表于 2008-10-21 16:23:53

好东西&nbsp;&nbsp;顶

cyr_hongfeng 发表于 2009-1-3 13:16:17

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

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

jiaqing 发表于 2009-1-3 16:40:44

没有古墓挖啊!!

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

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

cyr_hongfeng 发表于 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;

0620221 发表于 2009-6-12 10:46:24

mark

limzhw 发表于 2009-12-17 01:04:45

Mark

C307 发表于 2010-1-30 11:55:42

mark

XU_MAJIA 发表于 2010-1-31 00:55:27

再次刨开

RF_Xu 发表于 2010-2-3 00:21:25

remark

ZZL520 发表于 2010-5-8 09:10:59

mark

by808 发表于 2010-5-19 14:43:51

马克

382383706 发表于 2010-8-18 11:30:24

mark

papa123 发表于 2010-8-18 12:31:33

哈哈 这个古墓 被暴n遍了。。

jrcsh 发表于 2010-8-25 01:29:08

是好东西要学习一下

QQ373466062 发表于 2010-10-7 13:23:43

挖了古墓       拿点东西      谢谢

bingshuihuo888 发表于 2011-4-14 18:35:28

mark!!

www1519 发表于 2011-4-14 19:17:31

mark

sunyao125 发表于 2011-5-13 10:33:05

有没有8255a与lcd1602的接口程序啊,急需中!!!!!!
页: [1]
查看完整版本: [古董贴][共享]发布本人最新版本的LCD1602驱动程序库——请勿挖古墓