找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3909|回复: 0
收起左侧

(C与汇编语言)ARM9之LPC2132控制LCD1602显示字符串

[复制链接]
ID:113276 发表于 2016-4-10 17:33 | 显示全部楼层 |阅读模式
本帖最后由 51黑小牛 于 2016-4-10 17:34 编辑

GPADIR             EQU            0xE0028008

GPASET             EQU            0xE0028004
GPACLR             EQU            0xE002800C
                        EXPORT xmain
                        AREA    Init,CODE,READONLY
                        ENTRY
xmain
                        ldr r0,=GPADIR
                        ldr r1,=0x3ff
                        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

                          ldr r9,=dat
                          mov r6,#0
loop1                 ldr r4,[r9,r6]
                          bl w1602D
                          ADD r6,r6,#1
                          BL delay
                          cmp r6,#15

                          bne loop1

                          mov r4,#0xc0
                          bl w1602C

                          ldr r9,=ttt
                          mov r6,#0
loop2                  ldr r4,[r9,r6]
                          bl w1602D
                          ADD r6,r6,#1
                          BL delay
                          cmp r6,#15

                          bne loop2
                          B loop
;===================================
w1602C           ldr r1,=0x3ff
                        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
                        ldr r0,=GPACLR
                        mov r1,#0x200
                        str r1,[r0]
                        mov pc,lr
;======================================
w1602D            ldr r1,=0x3ff
                        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
                        ldr r0,=GPACLR
                        mov r1,#0x200
                        str r1,[r0]
                        mov pc,lr
;===================================
delay                   mov r5,#0xff00
delay1                  sub r5,r5,#1
                          cmp r5,#0
                          bne delay1
                          mov pc,lr
;====================================
dat                    DCB " China  Dianzi"
ttt                      DCB "  Keji Xueyuan"
                        end



  1. #define rGPACON     (*(volatile unsigned *)0xE0028008)        //Port A in/out0x56000000
  2. #define rGPADAT1    (*(volatile unsigned *)0xE0028004)        //Port A =10x56000004
  3. #define rGPADAT0    (*(volatile unsigned *)0xE002800C)        //Port A =0   0x56000008
  4. const unsigned char dd[]="Shanxi Dianzi";
  5. const unsigned char tt[]="gongchengxueyuan";
  6. void xmain()
  7. {
  8.         unsigned int i,k;

  9.         rGPACON  = 0x7ff;  //A11-A0=out
  10.         
  11.                 rGPADAT1 |= 0x38;
  12.                 k=4;
  13.                 while(k--);
  14.                 rGPADAT1 |= 0x100;
  15.                 k=7;
  16.                 while(k--);
  17.                 rGPADAT0 |= 0x100;
  18.                 k=10;
  19.                 while(k--);
  20.                 rGPADAT0 |= 0x7ff;
  21.                 //============
  22.                 rGPADAT1 |= 0x06;
  23.                 k=4;
  24.                 while(k--);
  25.                 rGPADAT1 |= 0x100;
  26.                 k=7;
  27.                 while(k--);
  28.                 rGPADAT0 |= 0x100;
  29.                 k=10;
  30.                 while(k--);
  31.                 rGPADAT0 |= 0x7ff;
  32.                 //============
  33.                 rGPADAT1 |= 0x0c;
  34.                 k=4;
  35.                 while(k--);
  36.                 rGPADAT1 |= 0x100;
  37.                 k=7;
  38.                 while(k--);
  39.                 rGPADAT0 |= 0x100;
  40.                 k=10;
  41.                 while(k--);
  42.                 rGPADAT0 |= 0x7ff;
  43.                 //============
  44.                 rGPADAT1 |= 0x01;
  45.                 k=4;
  46.                 while(k--);
  47.                 rGPADAT1 |= 0x100;
  48.                 k=7;
  49.                 while(k--);
  50.                 rGPADAT0 |= 0x100;
  51.                 k=10;
  52.                 while(k--);
  53.                 rGPADAT0 |= 0x7ff;
  54.                
  55.                 while(1)
  56.                         {
  57.                                 //============
  58.                                         rGPADAT1 |= 0x80;
  59.                                         k=4;
  60.                                         while(k--);
  61.                                         rGPADAT1 |= 0x100;
  62.                                         k=7;
  63.                                         while(k--);
  64.                                         rGPADAT0 |= 0x100;
  65.                                         k=10;
  66.                                         while(k--);
  67.                                         rGPADAT0 |= 0x7ff;
  68.                                 //=============
  69.                                 for(i=0;i<13;i++)
  70.                                 {
  71.                                  rGPADAT1 |= 0x400;
  72.                                        
  73.                                  rGPADAT1 |=dd[i];
  74.                                         k=4;
  75.                                         while(k--);
  76.                                         rGPADAT1 |= 0x100;
  77.                                         k=7;
  78.                                         while(k--);
  79.                                         rGPADAT0 |= 0x100;
  80.                                         k=10;
  81.                                         while(k--);
  82.                                         rGPADAT0 |= 0x7ff;
  83.                                 }
  84.                                 //========================//
  85.                                 //============
  86.                                         rGPADAT1 |= 0xc0;
  87.                                         k=4;
  88.                                         while(k--);
  89.                                         rGPADAT1 |= 0x100;
  90.                                         k=7;
  91.                                         while(k--);
  92.                                         rGPADAT0 |= 0x100;
  93.                                         k=10;
  94.                                         while(k--);
  95.                                         rGPADAT0 |= 0x7ff;
  96.                                 //=============
  97.                                 for(i=0;i<16;i++)
  98.                                 {
  99.                                  rGPADAT1 |= 0x400;
  100.                                        
  101.                                  rGPADAT1 |=tt[i];
  102.                                         k=4;
  103.                                         while(k--);
  104.                                         rGPADAT1 |= 0x100;
  105.                                         k=7;
  106.                                         while(k--);
  107.                                         rGPADAT0 |= 0x100;
  108.                                         k=10;
  109.                                         while(k--);
  110.                                         rGPADAT0 |= 0x7ff;
  111.                                 }
  112.                         }
  113. }
复制代码

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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