⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rd_lcd1602b.lis

📁 移动机器人(小车)的物理坐标和逻辑坐标的转换源码
💻 LIS
📖 第 1 页 / 共 5 页
字号:
                        .module RD_LCD1602B.c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\单片机\ROOBCO~1\全向定位系统\坐标转换模块\相对定位模块应用版\Relative_Locate_Module\RD_LCD1602B.c
                        .area data(ram, con, rel)
 0000                   .dbfile E:\单片机\ROOBCO~1\全向定位系统\坐标转换模块\相对定位模块应用版\Relative_Locate_Module\RD_LCD1602B.c
 0000           _CHR:
 0000                   .blkb 2
                        .area idata
 0000 3031              .byte 48,49
                        .area data(ram, con, rel)
 0002                   .dbfile E:\单片机\ROOBCO~1\全向定位系统\坐标转换模块\相对定位模块应用版\Relative_Locate_Module\RD_LCD1602B.c
 0002                   .blkb 2
                        .area idata
 0002 3233              .byte 50,51
                        .area data(ram, con, rel)
 0004                   .dbfile E:\单片机\ROOBCO~1\全向定位系统\坐标转换模块\相对定位模块应用版\Relative_Locate_Module\RD_LCD1602B.c
 0004                   .blkb 2
                        .area idata
 0004 3435              .byte 52,53
                        .area data(ram, con, rel)
 0006                   .dbfile E:\单片机\ROOBCO~1\全向定位系统\坐标转换模块\相对定位模块应用版\Relative_Locate_Module\RD_LCD1602B.c
 0006                   .blkb 2
                        .area idata
 0006 3637              .byte 54,55
                        .area data(ram, con, rel)
 0008                   .dbfile E:\单片机\ROOBCO~1\全向定位系统\坐标转换模块\相对定位模块应用版\Relative_Locate_Module\RD_LCD1602B.c
 0008                   .blkb 2
                        .area idata
 0008 3839              .byte 56,57
                        .area data(ram, con, rel)
 000A                   .dbfile E:\单片机\ROOBCO~1\全向定位系统\坐标转换模块\相对定位模块应用版\Relative_Locate_Module\RD_LCD1602B.c
 000A                   .blkb 2
                        .area idata
 000A 6162              .byte 'a,'b
                        .area data(ram, con, rel)
 000C                   .dbfile E:\单片机\ROOBCO~1\全向定位系统\坐标转换模块\相对定位模块应用版\Relative_Locate_Module\RD_LCD1602B.c
 000C                   .blkb 2
                        .area idata
 000C 6364              .byte 'c,'d
                        .area data(ram, con, rel)
 000E                   .dbfile E:\单片机\ROOBCO~1\全向定位系统\坐标转换模块\相对定位模块应用版\Relative_Locate_Module\RD_LCD1602B.c
 000E                   .blkb 2
                        .area idata
 000E 6566              .byte 'e,'f
                        .area data(ram, con, rel)
 0010                   .dbfile E:\单片机\ROOBCO~1\全向定位系统\坐标转换模块\相对定位模块应用版\Relative_Locate_Module\RD_LCD1602B.c
 0010           _LCD_Temp:
 0010                   .blkb 1
                        .area idata
 0010 00                .byte 0
                        .area data(ram, con, rel)
 0011                   .dbfile E:\单片机\ROOBCO~1\全向定位系统\坐标转换模块\相对定位模块应用版\Relative_Locate_Module\RD_LCD1602B.c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\单片机\ROOBCO~1\全向定位系统\坐标转换模块\相对定位模块应用版\Relative_Locate_Module\RD_LCD1602B.c
 0000                   .dbfunc s LCDDelay _LCDDelay fV
 0000           ;   TimeCounter1 -> R20,R21
 0000           ;           Time -> R10,R11
                        .even
 0000           _LCDDelay:
 0000 00D0              rcall push_xgset300C
 0002 5801              movw R10,R16
 0004                   .dbline -1
 0004                   .dbline 211
 0004           ; /***********************************************************
 0004           ; *   函数库说明:LCD1602B基本驱动函数库                     *
 0004           ; *   版本:      v2.11                                      *
 0004           ; *   作者:      傻孩子                                     *
 0004           ; *   创建日期:  2005年9月6日                               *
 0004           ; * -------------------------------------------------------- *
 0004           ; *  [支 持 库]                                              *
 0004           ; * -------------------------------------------------------- *
 0004           ; *  [版本更新]                                              *
 0004           ; *   修改:      傻孩子                                     *
 0004           ; *   修改日期:  2006年6月8日                               *
 0004           ; *   版本:      v2.11                                      *
 0004           ; * -------------------------------------------------------- *
 0004           ; *  [版本历史]                                              *
 0004           ; * -------------------------------------------------------- *
 0004           ; *  [使用说明]                                              *
 0004           ; *              1、需要底层硬件驱动函数支持                 *
 0004           ; *                 基本的宏定义:                           *
 0004           ; *                 LCD_RS   LCD_RW   LCD_E                  *
 0004           ; *                 LCD_SET_WRITE_DATA  LCD_SET_READ_DATA    *
 0004           ; *                 LCD_SEND_HALF_CHAR_HIGH(a)               *
 0004           ; *                 LCD_SEND_HALF_CHAR_LOW(a)                *
 0004           ; *                 当处于串行状态下时,只定义LCD_RS         *
 0004           ; *                 LCD_E LCD_SEND_HALF_CHAR_HIGH(a)         *
 0004           ; *                 LCD_SEND_HALF_CHAR_LOW(a)                *
 0004           ; *              2、如果采用8数据位连接,则需要定义数据端口  *
 0004           ; *                 LCD_DATA_PORT,同时需要定义宏来开启该功  *
 0004           ; *                 能:_LCD1602_FULL_DATA_MODEL             *
 0004           ; *              3、需要修改引用宏定义来指定底层硬件驱动     *
 0004           ; *                 函数库。                                 *
 0004           ; *              4、本库驱动下的LCD显示支持1602的各种连      *
 0004           ; *                 接方法。当使用只写模式是请在引用该头     *
 0004           ; *                 文件之前加上宏定义:                     *
 0004           ; *                 # define _USE_LCD_ONLY_WRITE             *
 0004           ; *              5、在调用本库之前,定义RunStringSpeed可     *
 0004           ; *                 以设置滚屏的速度。通过在引用前定义       *
 0004           ; *                 FlashTimeOut 和 FlashGIFTimeOut 可以     *
 0004           ; *                 改变字符闪烁的频率。                     *
 0004           ; *              6、增加一个GIF字幕特效函数。                *
 0004           ; *              7、确定没有LCD复位问题。                    *
 0004           ; *              8、增加对595串行转并行连接的支持。          *
 0004           ; *                 需要头文件SerialToCollateral.h           *
 0004           ; ***********************************************************/
 0004           ; 
 0004           ; /********************
 0004           ; * 头 文 件 配 置 区 *
 0004           ; ********************/
 0004           ; # include "RD_MacroAndConst.h"
 0004           ; # include "LIB_Config.h"
 0004           ; # include "RD_LCD1602B.h"
 0004           ; 
 0004           ; 
 0004           ; /********************
 0004           ; *   系 统 宏 定 义  *
 0004           ; ********************/
 0004           ; 
 0004           ; /*------------------*
 0004           ; *   常 数 宏 定 义  *
 0004           ; *------------------*/
 0004           ; # define LCD_CMD_DISP_CTR   0x0c
 0004           ; # define LCD_CMD_CLS        0x01
 0004           ; # define LCD_CMD_ENTER_SET  0x02
 0004           ; # define LCD_CMD_ICON_SHOW  0x0f
 0004           ; # define LCD_CMD_ICON_HIDE  0x0c
 0004           ; # define LCD_CMD_NOT_MOVE   0x14
 0004           ; 
 0004           ; 
 0004           ; # define LCD_WRITE          0x00
 0004           ; # define LCD_READ           0x01
 0004           ; # define LCD_COMMAND        0x00
 0004           ; # define LCD_DATA           0x01
 0004           ; 
 0004           ; #ifndef LCD_RUN_STRING_SPEED
 0004           ;     # define LCD_RUN_STRING_SPEED 100
 0004           ; #endif
 0004           ; 
 0004           ; #ifndef LCD_FLASH_TIME_OUT
 0004           ;     # define LCD_FLASH_TIME_OUT   0x03ff
 0004           ; #endif
 0004           ; #ifndef LCD_FLASH_STRING_GROUP_TIME_OUT
 0004           ;     # define LCD_FLASH_STRING_GROUP_TIME_OUT  0x03ff
 0004           ; #endif
 0004           ; 
 0004           ; /*------------------*
 0004           ; *   动 作 宏 定 义  *
 0004           ; *------------------*/
 0004           ; 
 0004           ; #if defined(_USE_LCD_ONLY_WRITE) || defined(_Use_LCD1602B_Serial)
 0004           ;     #ifndef LCD_SET_WRITE_DATA
 0004           ;         # define LCD_SET_WRITE_DATA
 0004           ;     #endif
 0004           ;     #ifndef LCD_SET_READ_DATA
 0004           ;         # define LCD_SET_READ_DATA
 0004           ;     #endif
 0004           ;     #ifndef LCD_RW
 0004           ;         # define LCD_RW   LCD_Temp 
 0004           ;     #endif
 0004           ;     
 0004           ;     #ifndef LCD_BF
 0004           ;           # define LCD_BF   LCD_Temp
 0004           ;     #endif
 0004           ; #else
 0004           ;     #ifndef LCD_SET_WRITE_DATA
 0004           ;         # error No define LCD_SET_WRITE_DATA
 0004           ;     #endif
 0004           ;     #ifndef LCD_SET_READ_DATA
 0004           ;         # error No define LCD_SET_READ_DATA
 0004           ;     #endif
 0004           ;     #ifndef LCD_RW
 0004           ;         # error No define LCD_RW
 0004           ;     #endif
 0004           ;     #ifndef LCD_BF
 0004           ;           # error No define LCD_BF
 0004           ;     #endif
 0004           ; #endif
 0004           ; 
 0004           ; #ifndef LCD_RS
 0004           ;     # error Need define LCD_RS
 0004           ; #endif
 0004           ; 
 0004           ; #ifndef _Use_LCD1602B_Serial
 0004           ;     # define SetReadState       LCD_SET_READ_DATA;LCD_RS = LCD_COMMAND;LCD_RW = LCD_READ;
 0004           ;     # define SetRead            LCD_SET_READ_DATA;LCD_RW = LCD_READ;
 0004           ;     # define SetWrite           LCD_SET_WRITE_DATA;LCD_RW = LCD_WRITE;
 0004           ;     # define SetCommand         LCD_RS = LCD_COMMAND;
 0004           ;     # define SetData            LCD_RS = LCD_DATA;
 0004           ; #else
 0004           ;     # define _USE_LCD_ONLY_WRITE
 0004           ;     # define SetReadState
 0004           ;       # define SetRead
 0004           ;       # define SetWrite
 0004           ;       # define SetCommand         LCD_RS = LCD_COMMAND;refreshVirtualPORT();
 0004           ;       # define SetData            LCD_RS = LCD_DATA;refreshVirtualPORT();   
 0004           ;       # define SetEnable          LCD_E = High;refreshVirtualPORT();
 0004           ;       # define SetDisable         LCD_E = Low;refreshVirtualPORT();
 0004           ; #endif
 0004           ; 
 0004           ; #ifdef _LCD1602_FULL_DATA_MODEL
 0004           ;     #ifndef LCD_DATA_PORT
 0004           ;         #error Need for macro: LCD_DATA_PORT
 0004           ;     #endif
 0004           ; #endif
 0004           ; /********************
 0004           ; *  用户变量类型定义 *
 0004           ; ********************/
 0004           ; 
 0004           ; /********************
 0004           ; *  模块结构体定义区 *
 0004           ; ********************/
 0004           ; 
 0004           ; /********************
 0004           ; *   模块函数声明区  *
 0004           ; ********************/
 0004           ; static void LCDDelay(UINT16 Time);
 0004           ; static void LCDDelayUs(UINT16 Time);
 0004           ; 
 0004           ; 
 0004           ; /********************
 0004           ; *   全局函数声明区  *
 0004           ; ********************/
 0004           ; void LCDInit(void);
 0004           ; void LCDSetXY(UINT8 X,UINT8 Y);
 0004           ; void LCDDisplayString(UINT8 *String);
 0004           ; void LCDDisplayNum(unsigned long Num,UINT8 BitCount);
 0004           ; void RunString(UINT8 *String,UINT8 Y,UINT8 StartX,UINT8 EndX);
 0004           ; UINT8 StringLength(UINT8 *String);
 0004           ; void Flash(UINT8 *String,UINT8 Icon,UINT8 X,UINT8 Y);
 0004           ; void FlashStringGroup(UINT8 String[][17],UINT8 StringCounter,UINT8 X,UINT8 Y);
 0004           ; void LCDWaitForReady(void);
 0004           ; void LCDSendCommand(UINT8 Command);
 0004           ; void LCDSendData(UINT8 Data);
 0004           ; void PrintD(INT32 nNumber,UINT8 chCounter);
 0004           ; 
 0004           ; /********************
 0004           ; *   全局函数引用区  *
 0004           ; ********************/
 0004           ; #ifdef _Use_LCD1602B_Serial
 0004           ;     extern void refreshVirtualPORT(void);
 0004           ; #endif
 0004           ; 
 0004           ; /********************
 0004           ; *   模块变量声明区  *
 0004           ; ********************/
 0004           ; const static UINT8 CHR[16] = {'0','1','2','3','4','5','6','7','8'
 0004           ;                      ,'9','a','b','c','d','e','f'};
 0004           ;                      
 0004           ; /********************
 0004           ; *   全局变量声明区  *
 0004           ; ********************/
 0004           ; static UINT8 LCD_Temp = 0;
 0004           ; 
 0004           ; /********************
 0004           ; *   全局变量引用区  *
 0004           ; ********************/
 0004           ; #ifndef SYS_TIMER_MS_ADD_UNTILL_OVF
 0004           ; extern UINT16 g_wSystemTimer;
 0004           ;     #define SYS_TIMER_MS_ADD_UNTILL_OVF g_wSystemTimer
 0004           ; #else
 0004           ; extern UINT16 SYS_TIMER_MS_ADD_UNTILL_OVF;
 0004           ; #endif  
 0004           ; 
 0004           ; 
 0004           ; 
 0004           ; /***********************************************************
 0004           ; *   函数说明:LCD驱动类毫秒延时函数                        *
 0004           ; *   输入:    需要延时的大体毫秒数                         *
 0004           ; *   输出:    无                                           *
 0004           ; *   调用函数:LCDDelayUs()                                 *
 0004           ; ***********************************************************/
 0004           ; static void LCDDelay(UINT16 Time)
 0004           ; {
 0004                   .dbline 212
 0004           ;     UINT16 TimeCounter = 0;
 0004                   .dbline 214
 0004           ;       
 0004           ;       for (TimeCounter = 0;TimeCounter < Time;TimeCounter ++)
 0004 4427              clr R20
 0006 5527              clr R21
 0008 05C0              rjmp L5
 000A           L2:
 000A                   .dbline 215
 000A           ;       {
 000A                   .dbline 216
 000A           ;           LCDDelayUs(255);
 000A 0FEF              ldi R16,255
 000C 10E0              ldi R17,0
 000E 06D0              rcall _LCDDelayUs
 0010                   .dbline 217
 0010           ;       }
 0010           L3:
 0010                   .dbline 214
 0010 4F5F              subi R20,255  ; offset = 1
 0012 5F4F              sbci R21,255
 0014           L5:
 0014                   .dbline 214
 0014 4A15              cp R20,R10
 0016 5B05              cpc R21,R11

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -