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

📄 lcd1602.lis

📁 用AVR单片机做的一些程序,包括跑马灯显示,PWM产生,ADC转换等
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module lcd1602.c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\ICCAVR\project\AVRMEG~3\icc\015-DS1302-LCD1602\lcd1602.c
 0000                   .dbfunc e delay_us _delay_us fV
 0000           ;              n -> R16,R17
                        .even
 0000           _delay_us::
 0000                   .dbline -1
 0000                   .dbline 25
 0000           ; /*
 0000           ;       LCD1602液晶屏驱动模块
 0000           ;       1、可直接嵌入到项目中使用
 0000           ;       2、晶振频率:1M
 0000           ;       3、如晶振提高低层驱动延时要作相应修改
 0000           ; 
 0000           ;       AVR_AFA
 0000           ;       www.iccavr.com
 0000           ;       程序编写过程中参照了peak的4线显示程序
 0000           ;       peak:AVR论坛技术版版主
 0000           ; */
 0000           ; 
 0000           ; #include <iom128v.h>
 0000           ; 
 0000           ; #define RS_CLR        PORTC &= ~(1 << PC2)
 0000           ; #define RS_SET        PORTC |= (1 << PC2)
 0000           ; 
 0000           ; #define RW_CLR        PORTC &= ~(1 << PC3)
 0000           ; #define RW_SET        PORTC |= (1 << PC3)
 0000           ; 
 0000           ; #define EN_CLR        PORTC &= ~(1 << PC4)
 0000           ; #define EN_SET        PORTC |= (1 << PC4)
 0000           ; 
 0000           ; /*延时函数*/
 0000           ; void delay_us(unsigned int n) {
 0000                   .dbline 27
 0000           ; 
 0000           ;       if (n == 0) {
 0000 0030              cpi R16,0
 0002 0107              cpc R16,R17
 0004 09F4              brne L5
 0006           X0:
 0006                   .dbline 27
 0006                   .dbline 28
 0006           ;               return ;
 0006 06C0              xjmp L1
 0008           L4:
 0008                   .dbline 30
 0008           L5:
 0008                   .dbline 30
 0008           ;               }
 0008           ;       while (--n);
 0008 C801              movw R24,R16
 000A 0197              sbiw R24,1
 000C 8C01              movw R16,R24
 000E 0030              cpi R16,0
 0010 0107              cpc R16,R17
 0012 D1F7              brne L4
 0014           X1:
 0014                   .dbline -2
 0014           L1:
 0014                   .dbline 0 ; func end
 0014 0895              ret
 0016                   .dbsym r n 16 i
 0016                   .dbend
 0016                   .dbfunc e delay_ms _delay_ms fV
 0016           ;              a -> R20
 0016           ;              b -> R22
 0016           ;              i -> R16
                        .even
 0016           _delay_ms::
 0016 0E940000          xcall push_gset2
 001A                   .dbline -1
 001A                   .dbline 34
 001A           ; }
 001A           ; 
 001A           ; /*延时函数*/
 001A           ; void delay_ms(unsigned char i) {
 001A                   .dbline 37
 001A 41E0              ldi R20,1
 001C 06C0              xjmp L11
 001E           L8:
 001E                   .dbline 37
 001E           ; 
 001E           ;       unsigned char a, b;
 001E           ;       for (a = 1; a < i; a++) {
 001E                   .dbline 38
 001E 61E0              ldi R22,1
 0020 01C0              xjmp L15
 0022           L12:
 0022                   .dbline 38
 0022                   .dbline 39
 0022                   .dbline 40
 0022           L13:
 0022                   .dbline 38
 0022 6395              inc R22
 0024           L15:
 0024                   .dbline 38
 0024 6623              tst R22
 0026 E9F7              brne L12
 0028                   .dbline 41
 0028           L9:
 0028                   .dbline 37
 0028 4395              inc R20
 002A           L11:
 002A                   .dbline 37
 002A 4017              cp R20,R16
 002C C0F3              brlo L8
 002E                   .dbline -2
 002E           L7:
 002E 0E940000          xcall pop_gset2
 0032                   .dbline 0 ; func end
 0032 0895              ret
 0034                   .dbsym r a 20 c
 0034                   .dbsym r b 22 c
 0034                   .dbsym r i 16 c
 0034                   .dbend
 0034                   .dbfunc e LCD_write_com _LCD_write_com fV
 0034           ;            com -> R20
                        .even
 0034           _LCD_write_com::
 0034 0E940000          xcall push_gset1
 0038 402F              mov R20,R16
 003A                   .dbline -1
 003A                   .dbline 45
 003A           ;               for (b = 1; b; b++) {
 003A           ;                       ;
 003A           ;                       }
 003A           ;               }
 003A           ; }
 003A           ; 
 003A           ; /*显示屏命令写入函数*/
 003A           ; void LCD_write_com(unsigned char com) {
 003A                   .dbline 47
 003A           ;       
 003A           ;       RS_CLR;
 003A AA98              cbi 0x15,2
 003C                   .dbline 48
 003C           ;       RW_CLR;
 003C AB98              cbi 0x15,3
 003E                   .dbline 49
 003E           ;       EN_SET;
 003E AC9A              sbi 0x15,4
 0040                   .dbline 50
 0040           ;       PORTA = com;
 0040 4BBB              out 0x1b,R20
 0042                   .dbline 51
 0042           ;       delay_us(5);
 0042 05E0              ldi R16,5
 0044 10E0              ldi R17,0
 0046 DCDF              xcall _delay_us
 0048                   .dbline 52
 0048           ;       EN_CLR;
 0048 AC98              cbi 0x15,4
 004A                   .dbline -2
 004A           L16:
 004A 0E940000          xcall pop_gset1
 004E                   .dbline 0 ; func end
 004E 0895              ret
 0050                   .dbsym r com 20 c
 0050                   .dbend
 0050                   .dbfunc e LCD_write_data _LCD_write_data fV
 0050           ;           data -> R20
                        .even
 0050           _LCD_write_data::
 0050 0E940000          xcall push_gset1
 0054 402F              mov R20,R16
 0056                   .dbline -1
 0056                   .dbline 56
 0056           ; }
 0056           ; 
 0056           ; /*显示屏命令写入函数*/
 0056           ; void LCD_write_data(unsigned char data) {
 0056                   .dbline 58
 0056           ; 
 0056           ;       RS_SET;
 0056 AA9A              sbi 0x15,2
 0058                   .dbline 59
 0058           ;       RW_CLR;
 0058 AB98              cbi 0x15,3
 005A                   .dbline 60
 005A           ;       EN_SET;
 005A AC9A              sbi 0x15,4
 005C                   .dbline 61
 005C           ;       PORTA = data;
 005C 4BBB              out 0x1b,R20
 005E                   .dbline 62
 005E           ;       delay_us(5);
 005E 05E0              ldi R16,5
 0060 10E0              ldi R17,0
 0062 CEDF              xcall _delay_us
 0064                   .dbline 63
 0064           ;       EN_CLR;
 0064 AC98              cbi 0x15,4
 0066                   .dbline -2
 0066           L17:
 0066 0E940000          xcall pop_gset1
 006A                   .dbline 0 ; func end
 006A 0895              ret
 006C                   .dbsym r data 20 c
 006C                   .dbend
 006C                   .dbfunc e LCD_clear _LCD_clear fV
                        .even
 006C           _LCD_clear::
 006C                   .dbline -1
 006C                   .dbline 67
 006C           ; }
 006C           ; 
 006C           ; /*显示屏清空显示*/
 006C           ; void LCD_clear(void) {
 006C                   .dbline 69
 006C           ; 

⌨️ 快捷键说明

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