找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3207|回复: 0
打印 上一主题 下一主题
收起左侧

ARM之LPC2132流水灯LCD1602

[复制链接]
跳转到指定楼层
楼主
ID:113276 发表于 2016-4-10 17:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1、汇编程序
GPADIR             EQU            0xE0028008
GPASET            EQU            0xE0028004


GPACLR            EQU            0xE002800C


                        EXPORT xmain
                        AREA    Init,CODE,READONLY
                        ENTRY

xmain
                        ldr r0,=GPADIR
                        orr r1,r1,#0x0ff
                        orr r1,#0x300
                        str r1,[r0]    ;A=out
;===========init1602=================

                        mov r4,#0x38
                        BL  w1602C
                        mov r4,#0x06
                        BL  w1602C
                        mov r4,#0x0c
                        BL  w1602C
                        mov r4,#0x01
                        BL  w1602C
;============main=================
loop                 mov r4,#0x80

                        bl w1602C
                        mov r7,#0x30
loop1               mov r4,r7
                        bl w1602D
                        add r7,r7,#1
                        cmp r7,#0x3A
                        bne loop1

mov r4,#0xc0
                        bl w1602C
                        mov r7,#0x41
loop2               mov r4,r7
                        bl w1602D
                        add r7,r7,#1
                        cmp r7,#0x4f
                        bne loop2

                        B loop
;===================================




w1602C           orr r1,r1,#0x0ff
                        orr r1,#0x300
                        ldr r0,=GPACLR
                        str r1,[r0]
                        mov r1,#0
                        ORR r1,r1,r4
                        ldr r0,=GPASET
                        str r1,[r0]
                        nop
                        nop
                        orr r1,r1,#0x200
                        str r1,[r0]
                        nop
                        nop
                        nop
                        nop
                        ldr r0,=GPACLR
                        mov r1,#0x200
                        str r1,[r0]
                        mov pc,lr
;======================================

w1602D            orr r1,r1,#0x0ff
                        orr r1,#0x300
                        ldr r0,=GPACLR
                        str r1,[r0]
                        mov r1,#0x100
                        ORR r1,r1,r4
                        ldr r0,=GPASET
                        str r1,[r0]
                        nop
                        nop
                        orr r1,r1,#0x200
                        str r1,[r0]
                        nop
                        nop
                        nop
                        nop
                        ldr r0,=GPACLR
                        mov r1,#0x200
                        str r1,[r0]
                        mov pc,lr
;===================================

delay                mov r5,#3
delay1              sub r5,r5,#1
                        cmp r5,#0
                        bne delay1
                        mov pc,lr
                        end
2、以下为C程序
//GPIO0=32Pin;(Pin0----Pin31)
#define GPIO0IN               (*(volatile unsigned long *) 0xE0028000)//输入寄存器
#define GPIO0SET               (*(volatile unsigned long *) 0xE0028004)//输出1,那位为1,管脚输出1
#define GPIO0CLR               (*(volatile unsigned long *) 0xE002800C)//输出0,那位为1,管脚输出0
#define GPIO0DIR               (*(volatile unsigned long *) 0xE0028008)//方向控制,1为输出,0输入
//GPIO0=16Pin;(Pin16----Pin31)
#define GPIO1IN               (*(volatile unsigned long *) 0xE0028010)//输入寄存器
#define GPIO1SET               (*(volatile unsigned long *) 0xE0028014)//输出1,那位为1,管脚输出1
#define GPIO1CLR               (*(volatile unsigned long *) 0xE002801C)//输出0,那位为1,管脚输出0
#define GPIO1DIR               (*(volatile unsigned long *) 0xE0028018)//方向控制,1为输出,0输入
void xmain()
{
            unsigned short n,m;
             GPIO1DIR =0xffff0000;
             while(1)
                 {
                   for(n=16;n<32;n++)
{
   GPIO1CLR=0xffff0000;   
for(m=0;m<30000;m++)
   GPIO1SET=1<<n;
}
                 }

}



//GPIO0=32Pin;(Pin0----Pin31)
#define GPIO0IN               (*(volatile unsigned long *) 0xE0028000)//1ü½ÅÖμ
#define GPIO0SET               (*(volatile unsigned long *) 0xE0028004)//êä3ö1¼Ä′æÆ÷
#define GPIO0CLR               (*(volatile unsigned long *) 0xE002800C)//êä3ö0¼Ä′æÆ÷
#define GPIO0DIR               (*(volatile unsigned long *) 0xE0028008)//fangx
//GPIO0=16Pin;(Pin16----Pin31)
#define GPIO1IN               (*(volatile unsigned long *) 0xE0028010)//1ü½ÅÖμ
#define GPIO1SET               (*(volatile unsigned long *) 0xE0028014)//êä3ö1¼Ä′æÆ÷
#define GPIO1CLR               (*(volatile unsigned long *) 0xE002801C)//êä3ö0¼Ä′æÆ÷
#define GPIO1DIR               (*(volatile unsigned long *) 0xE0028018)//fangx

void xmain()
{
             unsigned short n,m,k;
           
              GPIO1DIR   =0xff030000;

              GPIO1CLR  |=0xff030000;
              GPIO1SET  |=0x38000000;
              for(n=0;n<8;n++);           
              GPIO1SET  |=0x00020000;
              for(n=0;n<12;n++);
              GPIO1CLR  |=0x00020000;


              GPIO1CLR  |=0xff030000;
              GPIO1SET  |=0x06000000;
              for(n=0;n<8;n++);
              GPIO1SET  |=0x00020000;
              for(n=0;n<12;n++);
              GPIO1CLR  |=0x00020000;


              GPIO1CLR  |=0xff030000;
              GPIO1SET  |=0x0c000000;
              for(n=0;n<8;n++);
              GPIO1SET  |=0x00020000;
              for(n=0;n<12;n++);
              GPIO1CLR  |=0x00020000;

              GPIO1CLR  |=0xff030000;
              GPIO1SET  |=0x01000000;
              for(n=0;n<8;n++);
              GPIO1SET  |=0x00020000;
              for(n=0;n<12;n++);
              GPIO1CLR  |=0x00020000;


              while(1)
                  {
                      GPIO1CLR  |=0xff030000;
                      GPIO1SET  |=0x80000000;
                      for(n=0;n<8;n++);
                      GPIO1SET  |=0x00020000;
                      for(n=0;n<12;n++);
                      GPIO1CLR  |=0x00020000;   
                      for(m=0;m<10;m++)
                              {
                                     GPIO1CLR  |=0xff030000;
                                     GPIO1SET  |=(0x30010000 +(m<<24));
                                     for(n=0;n<5;n++);
                                     GPIO1SET  |=(0x00030000 + (m<<24));
                                     for(n=0;n<8;n++);
                                     GPIO1CLR  |=0x00020000;
                                     k=30000;
                                     while(k--);
                              }

                       GPIO1CLR  |=0xff030000;

                       GPIO1SET  |=0xc0000000;
                       for(n=0;n<8;n++);
                       GPIO1SET  |=0xc0020000;
                       for(n=0;n<12;n++);
                       GPIO1CLR  |=0x00020000;
   
                       for(m=0;m<16;m++)
                           {
                                   GPIO1CLR  |=0xff030000;
                                   GPIO1SET  |=(0x41010000 +(m<<24));
                                   for(n=0;n<8;n++);
                                   GPIO1SET  |=(0x41030000 + (m<<24));
                                   for(n=0;n<12;n++);
                                   GPIO1CLR  |=0x00020000;
                                   k=30000;
                                   while(k--);
                            }

                        k=60000;
                        while(k--);
              
                        GPIO1CLR  |=0xff030000;
                        GPIO1SET  |=0x01000000;
                        for(n=0;n<8;n++);
                        GPIO1SET  |=0x01020000;
                        for(n=0;n<12;n++);
                        GPIO1CLR  |=0x00020000;
              }         
}






//GPIO0=32Pin;(Pin0----Pin31)
#define GPIO0IN               (*(volatile unsigned long *) 0xE0028000)//1ü½ÅÖμ
#define GPIO0SET               (*(volatile unsigned long *) 0xE0028004)//êä3ö1¼Ä′æÆ÷
#define GPIO0CLR               (*(volatile unsigned long *) 0xE002800C)//êä3ö0¼Ä′æÆ÷
#define GPIO0DIR               (*(volatile unsigned long *) 0xE0028008)//fangx
unsigned char tt[13]="Shanxi Dianzi";
void xmain()
{
            unsigned short n,m;
           
            GPIO0DIR   =0x3ff;
            GPIO0CLR  |=0x3ff;           
            for(n=0;n<12;n++)
              GPIO0SET  |=0x38;            
            GPIO0SET  |=0x200;
            for(n=0;n<12;n++);
            GPIO0CLR  |=0x200;

            GPIO0CLR  |=0x3ff;           
            for(n=0;n<12;n++)
            GPIO0SET  |=0x06;           
            GPIO0SET  |=0x200;
            for(n=0;n<12;n++);
            GPIO0CLR  |=0x200;

            GPIO0CLR  |=0x000003ff;           
            for(n=0;n<12;n++)
                    GPIO0SET  |=0x0c;           
            GPIO0SET  |=0x00000200;
            for(n=0;n<12;n++);
            GPIO0CLR  |=0x00000200;

            GPIO0CLR  |=0x000003ff;           
            for(n=0;n<12;n++)
                    GPIO0SET  |=0x01;           
            GPIO0SET  |=0x00000200;
            for(n=0;n<12;n++);
            GPIO0CLR  |=0x00000200;
            while(1)
                 {
                        GPIO0CLR  |=0x000003ff;
                        GPIO0SET  |=0x80;
                        for(n=0;n<12;n++);           
                        GPIO0SET  |=0x00000200;
                        for(n=0;n<12;n++);
                        GPIO0CLR  |=0x00000200;

                        for(m=0;m<10;m++)
                          {
                                GPIO0CLR  |=0x3ff;
                                 GPIO0SET  |=0x100;
                                GPIO0SET  |=0x30 + m;
                                or(n=0;n<12;n++);           
                                GPIO0SET  |=0x300;
                                for(n=0;n<12;n++);
                                GPIO0CLR  |=0x200;
                         }

                        GPIO0CLR  |=0x3ff;
                        GPIO0SET  |=0xc0;
                        for(n=0;n<12;n++);           
                        GPIO0SET  |=0x200;
                        for(n=0;n<12;n++);
                        GPIO0CLR  |=0x200;
                        for(m=0;m<13;m++)
                            {
                                GPIO0CLR  |=0x3ff;
                                GPIO0SET  |=0x100;
                                GPIO0SET  |=0x41+m;
                                for(n=0;n<5;n++);
                                GPIO0SET  |=0x300;
                                for(n=0;n<8;n++);
                                GPIO0CLR  |=0x200;
                            }  
             }
}










分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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