微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 求7寸pdf液晶屏资料手册

求7寸pdf液晶屏资料手册

时间:10-02 整理:3721RD 点击:
出来冒个泡,那位大虾,有7寸pdf液晶屏资料手册(中文的)呀。
发来研究下了。以前的问题终于解决了。keil3实现汇编。如果没有网上的帮助,本人也不会走到这一步。发来源代码供参考,弄得太乱,,高手勿喷。  文章有部分取自网络。stm32汇编时,先打开Option for target选项,linker选项卡 最上面的  user momeny layout ......那个勾去掉。这项尤其重要。
先发了51c  后面的是stm32汇  
LR_IROM1 0x08000000 0x00020000  {    ; load region size_region
  ER_IROM1 0x08000000 0x00020000  {  ; load address = execution address
   *.o (RESET, +First)
  
   .ANY (+RO)
  }
  RW_IRAM1 0x20000000 0x00005000  {  ; RW data
   .ANY (+RW +ZI)
  }
}
#include<reg51.h>
typedef unsigned char  uchar;
uchar data jianzhi;
uchar data shuzhi;
void yanshi(uchar i)
{
uchar jj,k;
for(jj=i;jj>0;jj--)
for(k=125;k>0;k--);
}
uchar saomiao()
{
uchar j;
j=P1;
j=j&0x0f;
return(j);
}
main()
{
jianzhi=0x0f;
shuzhi=0x00;
P1=0x0f;
jianzhi=saomiao();
if(jianzhi!=0x0f)
{
yanshi(10);
jianzhi=saomiao();
if(jianzhi!=0x0f)
      {
       switch(jianzhi)
        {
           case 0x0e:
           shuzhi=0x01;
            break;
            case 0x0d:
            shuzhi=0x02;
             break;
             case 0x0b:
             shuzhi=0x03;
               break;
             case 0x07:
             shuzhi=0x00;
             break;
             default:
             shuzhi=0x00;
             break;
         }
       }
}
}
BIT5   EQU 0X00000020
BIT8   EQU 0X00000100
BIT9   EQU 0X00000200
BIT10  EQU 0X00000400
LED1   EQU BIT8        ;LED1--PD.8
LED2   EQU BIT9     ;LED2--PD.9
LED3   EQU BIT10    ;LED3--PD.10
GPIOD      EQU 0X40011400  ;GPIOD 地址
GPIOD_CRL  EQU 0X40011400  ;低配置寄存器
GPIOD_CRH  EQU 0X40011404  ;高配置寄存器
GPIOD_ODR  EQU 0X4001140C  ;输出,偏移地址0Ch
GPIOD_BSRR EQU 0X40011410  ;低置位,高清除偏移地址10h
GPIOD_BRR  EQU 0X40011414  ;清除,偏移地址14h
IOPDEN     EQU BIT5     ;GPIOD使能位
RCC_APB2ENR EQU 0X40021018

Stack_Size       EQU     0x00000200
          AREA    STACK, NOINIT, READWRITE, ALIGN=3
Stack_Mem        SPACE   Stack_Size
__initial_sp
PRESERVE8
        THUMB
            AREA    RESET, DATA, READONLY
                EXPORT  __Vectors
   
__Vectors       DCD     __initial_sp              
                DCD     START  
   
      AREA    |.text|, CODE, READONLY
             ENTRY
START    PROC
                 EXPORT  START  [WEAK]

          BL.W   RCC_CONFIG_72MHZ
          LDR    R1,=RCC_APB2ENR
          LDR    R0,[R1]     ;读
          LDR    R2,=IOPDEN
          ORR    R0,R2  ;改
          STR    R0,[R1]  ;写,使能GPIOD时钟
         
          ;LED1--PD.8  推挽输出,50MHz
          ;LED2--PD.9  推挽输出,50MHz
          ;LED3--PD.10 推挽输出,50MHz
          MOV    R0,#0x333
          LDR    R1,=GPIOD_CRH ;PD.8\9\10均在高寄存器
          STR    R0,[R1]
          NOP
          NOP
          LDR    R1,=GPIOD_ODR
          LDR    R2,=0x00000F00
          MOV    R3,#1
LOOP
           STR    R2,[R1]
          MOV    R0,#11  ;1125/9=125ms
          BL.W   DELAY_NMS
          EOR    R2,#LED3  ;翻转LED3
          ADD    R3,#1  ;计数加1
          CMP    R3,#1
          BEQ    STATE1
          CMP    R3,#3
          BEQ    STATE2
          CMP    R3,#5
           BEQ    STATE3
          CMP    R3,#7
            BEQ    STATE4
         CMP    R3,#8
          BEQ    STATE5
          B      GOON   
STATE1    ;状态1
        EOR    R2,#LED1
        EOR    R2,#LED2
        B      GOON
STATE2    ;状态2
        EOR    R2,#LED2
        B      GOON
STATE3    ;状态3
        EOR    R2,#LED1
        EOR    R2,#LED2
        B      GOON
STATE4    ;状态4
        EOR    R2,#LED2
        B      GOON
STATE5    ;状态5
        MOV    R3,#0
GOON   
        B      LOOP    ;继续循环


RCC_CONFIG_72MHZ
        LDR    R1,=0X40021000 ;RCC_CR
        LDR    R0,[R1]
        LDR    R2,=0X00010000 ;HSEON
        ORR    R0,R2
        STR    R0,[R1]
WAIT_HSE_RDY
        LDR    R2,=0X00020000 ;HSERDY
        LDR    R0,[R1]
        ANDS   R0,R2
        CMP    R0,#0
        BEQ    WAIT_HSE_RDY
        LDR    R1,=0X40022000 ;FLASH_ACR
        MOV    R0,#0X12
        STR    R0,[R1]
        LDR    R1,=0X40021004 ;RCC_CFGR时钟配置寄存器
        LDR    R0,[R1]
;PLL倍频系数,PCLK2,PCLK1分频设置
;HSE 9倍频PCLK2=HCLK,PCLK1=HCLK/4
;HCLK=72MHz 0x001D0400
;HCLK=64MHz 0x00190400
;HCLK=48MHz 0x00110400
;HCLK=32MHz 0x00090400
;HCLK=24MHz 0x00050400
;HCLK=16MHz 0x00010400
        LDR    R2,=0x001D0400
        ORR    R0,R2
         STR    R0,[R1]
        LDR    R1,=0X40021000 ;RCC_CR  
        LDR    R0,[R1]
        LDR    R2,=0X01000000 ;PLLON
        ORR    R0,R2
        STR    R0,[R1]
WAIT_PLL_RDY
        LDR    R2,=0X02000000 ;PLLRDY
        LDR    R0,[R1]
        ANDS   R0,R2
        CMP    R0,#0
        BEQ    WAIT_PLL_RDY
        LDR    R1,=0X40021004 ;RCC_CFGR
        LDR    R0,[R1]
        MOV    R2,#0X02
        ORR    R0,R2
        STR    R0,[R1]
WAIT_HCLK_USEPLL
        LDR    R0,[R1]
        ANDS   R0,#0X08
        CMP    R0,#0X08
        BNE    WAIT_HCLK_USEPLL
        BX LR  
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;RCC  时钟配置 HCLK=48MHz=HSE*6
;;;PCLK2=HCLK  PCLK1=HCLK/2
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
RCC_CONFIG_48MHZ
        LDR    R1,=0X40021000 ;RCC_CR
        LDR    R0,[R1]
        LDR    R2,=0X00010000 ;HSEON
        ORR    R0,R2
        STR    R0,[R1]
WAIT_HSE_RDY1
        LDR    R2,=0X00020000 ;HSERDY
        LDR    R0,[R1]
        ANDS   R0,R2
        CMP    R0,#0
        BEQ    WAIT_HSE_RDY1
        LDR    R1,=0X40022000 ;FLASH_ACR
        MOV    R0,#0X12
        STR    R0,[R1]
        LDR    R1,=0X40021004 ;RCC_CFGR
        LDR    R0,[R1]
;HSE 6倍频 PCLK2=HCLK,PCLK1=HCLK/2
        LDR    R2,=0X00110400
        ORR    R0,R2
        STR    R0,[R1]
        LDR    R1,=0X40021000 ;RCC_CR  
        LDR    R0,[R1]
        LDR    R2,=0X01000000 ;PLLON
         ORR    R0,R2
        STR    R0,[R1]
WAIT_PLL_RDY1
        LDR    R2,=0X02000000 ;PLLRDY
        LDR    R0,[R1]
        ANDS   R0,R2
        CMP    R0,#0
        BEQ    WAIT_PLL_RDY1
        LDR    R1,=0X40021004 ;RCC_CFGR
        LDR    R0,[R1]
        MOV    R2,#0X02
        ORR    R0,R2
        STR    R0,[R1]
WAIT_HCLK_USEPLL1
        LDR    R0,[R1]
        ANDS   R0,#0X08
        CMP    R0,#0X08
        BNE    WAIT_HCLK_USEPLL1
        BX LR
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;RCC  时钟配置 HCLK=24MHz=HSE*3
;;;PCLK2=HCLK  PCLK1=HCLK/2
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
RCC_CONFIG_24MHZ
         LDR    R1,=0X40021000 ;RCC_CR
         LDR    R0,[R1]
         LDR    R2,=0X00010000 ;HSEON
         ORR    R0,R2
         STR    R0,[R1]
WAIT_HSE_RDY2
         LDR    R2,=0X00020000 ;HSERDY
         LDR    R0,[R1]
         ANDS   R0,R2
         CMP    R0,#0
         BEQ    WAIT_HSE_RDY2
         LDR    R1,=0X40022000 ;FLASH_ACR
         MOV    R0,#0X12
         STR    R0,[R1]
         LDR    R1,=0X40021004 ;RCC_CFGR
         LDR    R0,[R1]
;HSE 3倍频PCLK2=HCLK,PCLK1=HCLK/2
         LDR    R2,=0X00050400
         ORR    R0,R2
         STR    R0,[R1]
         LDR    R1,=0X40021000 ;RCC_CR  
         LDR    R0,[R1]
         LDR    R2,=0X01000000 ;PLLON
         ORR    R0,R2
         STR    R0,[R1]
WAIT_PLL_RDY2
         LDR    R2,=0X02000000 ;PLLRDY
         LDR    R0,[R1]
         ANDS   R0,R2
         CMP    R0,#0
         BEQ    WAIT_PLL_RDY2
         LDR    R1,=0X40021004 ;RCC_CFGR
         LDR    R0,[R1]
         MOV    R2,#0X02
         ORR    R0,R2
          STR    R0,[R1]
WAIT_HCLK_USEPLL2
         LDR    R0,[R1]
         ANDS   R0,#0X08
         CMP    R0,#0X08
         BNE    WAIT_HCLK_USEPLL2
         BX LR
   
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;延时R0(ms),误差((R0-1)*4+12)/8 us
;延时较长时,误差小于0.1%
DELAY_NMS
        PUSH   {R1}   ;2个周期
DELAY_NMSLOOP
        SUB    R0,#1
         MOV    R1,#10
DELAY_ONEUS
        SUB    R1,#1
        NOP
         NOP
        NOP
        CMP    R1,#0
        BNE    DELAY_ONEUS
        CMP    R0,#0
        BNE    DELAY_NMSLOOP
        POP    {R1}
        BX     LR
  ENDP
        END

希望,学stm32的朋友能从这里入门

液晶嘛  得看是什么驱动 不用的驱动 实现起来是不一样的 只看尺寸是没法开发的

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top