English 简体 繁體

  首 页     公司简介     产品展示     人才招聘     企业荣誉     新闻中心     联系我们  
Loading...
  • ok
  • ok
  • ok
  • ok
  • ok
  • ok
 您的位置:  深圳VA黑膜,黑膜LCD,PMVA液晶屏,黑膜生产厂家,BTN黑膜,LCD液晶显示屏--中山宇辉电子->资讯详细
文章类别
还没有文章类别
TFT-LCD彩屏驱动
 

;**********************************************************************
;**********************************************************************
;** 文件名:  TFT驱动            
;** Copyright(c): 徐军然           
;** 创建人:  徐军然           
;** 日期:   2012年1月9日         
;** 修改人:  徐军然             
;** 日期:   2012年1月9日         
;** 描述:   TFT驱动 芯片为宏晶的STC90C516RD+ 
;** 版本:   1.0.0            
;**                   
;**                 
;**********************************************************************
;**********************************************************************
;;;;;;;;;;;;;;;;;;;;;;TFT屏幕;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
P0  DATA  80H
P2     DATA  0A0H
P3     DATA  0B0H
COLOR_H DATA  11H
COLOR_L DATA  10H

TCON DATA  88H
TR0  BIT   TCON.4

IE  DATA  0A8H
EA  BIT   IE.7
ET0  BIT   IE.1


TMOD DATA  89H
TH0  DATA  8CH
TL0  DATA  8BH

X1  EQU   R2
X2  EQU   R3
Y1  EQU   R4
Y2  EQU   R5
  
CS  BIT   P2.6
RESET BIT   P2.7
RS  BIT   P2.5     ;RS为1时写数据  RS为0时写命令
WR  BIT   P3.3
RD  BIT   P3.2
;;;;;;;;;;;;;;;;;;;;;;TFT屏幕;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


/*;;;;;;;;;;;;;;;;;;;;;;I2C总线;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SCL  BIT   P2.1
SDA  BIT   P2.0
ACK  EQU   012H
;;;;;;;;;;;;;;;;;;;;;;I2C总线;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; */
  
ORG  0000H
LJMP INIT

ORG  00BH
  LJMP MAIN

ORG  0030H
INIT:
  SETB  RESET
  LCALL  DELAY
  LCALL  DELAY
  CLR  RESET
  LCALL  DELAY
  LCALL  DELAY
  SETB RESET
  LCALL  DELAY
  LCALL  DELAY
           ;R0命令,R1数据
  MOV  R0,#01H
  LCALL  WR_CMD        ;软件复位
  LCALL  DELAY
  LCALL  DELAY


  MOV  R0,#11H      ;退出休眠
  LCALL  WR_CMD      
  LCALL  DELAY
  LCALL  DELAY

 

  MOV  R0,#3AH      ;设置显示像素
  LCALL  WR_CMD
  MOV  R1,#05H      ;16 bit/pixel
  LCALL  WR_DATA
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;定时器初始化;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

  MOV R0,#20       ;R0用作定时用 T0设置延时为50ms*10=0.5s R0里放10
  MOV 20H,#00H      ;20H地址处用来暂存A的值
  MOV A,20H       ;用20H地址的值为A赋初值
  MOV P0,#00H       ;为P0口赋初值
  MOV TMOD,#01H   ;T0工作在方式1 赋初值 延时50ms
  MOV TH0,#3CH
  MOV TL0,#0B0H
  SETB EA     ;开全局中断
  SETB ET0    ;开定时器中断
  SETB TR0    ;启动定时器0
TIMER0:  
  AJMP $     ;等待中断


MAIN:
  MOV  X1,#0H
  MOV  X2,#127
  MOV  Y1,#0H
  MOV  Y2,#159
  LCALL SET_POS      ;设置显示范围
  
  

  MOV  R0,#36H      ;设置扫描方向
  LCALL  WR_CMD
  MOV    R1,#0C0H     
  LCALL WR_DATA
   
  MOV  R0,#29H      ;开显示
  LCALL WR_CMD

  MOV  R0,#2CH       ;写内存
  LCALL WR_CMD

  MOV  COLOR_H,#07H     ;设置显示颜色
  MOV  COLOR_L,#0E0H
  LCALL DISPLAY_BACK_COLOR

     
     
     
     
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;红色;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  
  MOV  A,P0
    
  CPL  80H
  JNB  80H,GAODIANPING
  MOV  X1,#10
  MOV  X2,#60
  MOV  Y1,#90
  MOV  Y2,#130
  LCALL SET_POS
  
  

  MOV  R0,#36H      ;设置扫描方向
  LCALL  WR_CMD
  MOV    R1,#0C0H     
  LCALL WR_DATA
   
  MOV  R0,#29H      ;开显示
  LCALL WR_CMD

  MOV  R0,#2CH       ;写内存
  LCALL WR_CMD

  MOV  COLOR_H,#0F8H
  MOV  COLOR_L,#00H
  LCALL DISPLAY_BACK_COLOR

GAODIANPING:
  MOV  X1,#60
  MOV  X2,#110
  MOV  Y1,#50
  MOV  Y2,#90
  LCALL SET_POS
  
  

  MOV  R0,#36H      ;设置扫描方向
  LCALL  WR_CMD
  MOV    R1,#0C0H     
  LCALL WR_DATA
   
  MOV  R0,#29H      ;开显示
  LCALL WR_CMD

  MOV  R0,#2CH       ;写内存
  LCALL WR_CMD

  MOV  COLOR_H,#0F8H
  MOV  COLOR_L,#00H
  LCALL DISPLAY_BACK_COLOR

 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

  
  LJMP  TIMER0
   
  


  

  
DISPLAY_BACK_COLOR:  
  MOV  A,Y2      ;设置显示的区域 (X1,X2)->(Y1,Y2)
  SUBB A,Y1
  INC  A
  MOV  R6,A
    
  MOV  A,X2      
  SUBB A,X1
  INC  A
  
 LOOP1:
   MOV  R7,A
   MOV  R1,COLOR_H
   LCALL WR_DATA
   MOV  R1,COLOR_L
   LCALL WR_DATA
   
 LOOP2:
   MOV  R1,COLOR_H
   LCALL WR_DATA
   MOV  R1,COLOR_L
   LCALL WR_DATA
   DJNZ R7,LOOP2
   DJNZ R6,LOOP1
   
   RET

 

SET_POS:
  MOV  R0,#2AH      ;设置x坐标
  LCALL WR_CMD

  MOV  R1,#00H
  LCALL WR_DATA

  MOV  A,X1
  MOV  R1,A
  LCALL WR_DATA

  MOV  R1,#00H
  LCALL WR_DATA

  MOV  A,X2
  MOV  R1,A
  LCALL WR_DATA
  
  MOV  R0,#2BH      ;设y置坐标
  LCALL WR_CMD

  MOV  R1,#00H
  LCALL WR_DATA

  MOV  A,Y1
  MOV  R1,A
  LCALL WR_DATA

  MOV  R1,#00H
  LCALL WR_DATA

  MOV  A,Y2
  MOV  R1,A
  LCALL WR_DATA 

  RET
    
WR_CMD:
  CLR  CS
  CLR  RS       ;写命令
  MOV  P0,R0
  MOV  R0,#0H
  CLR  WR
  SETB WR         
  SETB CS

  
  RET         ;写入数据

WR_DATA:
  CLR  CS
  SETB RS
  MOV  P0,R1
  MOV  R1,#0H
  CLR  WR
  SETB WR
  SETB  CS

   
  RET

/*;;;;;;;;;;;;;;;;;;;;;;I2C总线;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;读写的数据都放在A里

START_I2C:     ;启动I2C总线
  SETB SDA
  NOP
  SETB SCL   ;起始建立时间要大于4.7us
  NOP
  NOP
  NOP
  NOP
  NOP
  CLR SDA    ;建立保持时间要大于4.0us
  NOP
  NOP
  NOP
  NOP
  CLR SCL    ;钳住总线 准备
  NOP
RET       ;子程序结束 返回

STOP_I2C:     ;结束总线
  CLR SDA
  NOP
  SETB SCL
  NOP
  NOP
  NOP
  NOP
  NOP
  SETB SDA   ;结束总线
  NOP     ;保证终止信号和起始信号之间的空闲时间大于4.7秒
  NOP
  NOP
  NOP
  NOP
RET

YES_ACK:     ;发送应答信号
  CLR SDA
  NOP
  NOP
  SETB SCL
  NOP
  NOP
  NOP
  NOP
  NOP
  CLR SCL
  NOP
  NOP
RET

NO_ACK:      ;发送非应答信号
  SETB SDA
  NOP
  NOP
  SETB SCL
  NOP
  NOP
  NOP
  NOP
  NOP
  CLR SCL
  NOP
  NOP
RET

CHECK_ACK:     ;测是否应答
  SETB SDA
  NOP
  NOP
  SETB SCL
  CLR ACK
  NOP
  NOP
  NOP
  MOV C,SDA
  JC NOTACK
  SETB ACK   ;应答
 NOTACK:     ;不应答
   NOP
   CLR SCL
RET

WRITE_BYTE:     ;写一个字节
  MOV R0,#08H
 LOOP1:
   RLC A
   JC WRITE_1
   LJMP WRITE_0
 LOOP2:
   DJNZ R0,LOOP1
   NOP
RET
 WRITE_0:
   CLR SDA   
   NOP
   NOP
   SETB SCL
   NOP
   NOP
   NOP
   NOP
   NOP
   CLR SCL
   lJMP LOOP2
 WRITE_1:
   SETB SDA
   NOP
   NOP
   SETB SCL
   NOP
   NOP
   NOP
   NOP
   NOP
   CLR SCL
   LJMP LOOP2

READ_BYTE:     ;读数据到A、R1
   MOV R0,#08H
   MOV R1,#00H
 NEXT1:
   SETB SDA
   NOP
   SETB SCL
   NOP
   NOP
   MOV C,SDA
   MOV A,R1
   CLR SCL   ;保持需大于4.7us
   RLC A
   MOV R1,A
   NOP
   NOP
   NOP
   DJNZ R0,NEXT1
   
   RET
;;;;;;;;;;;;;;;;;;;;;;I2C总线;;;;;;;;;;;;;;;;;;;;;;
               */
DELAY:             ;延时
  MOV R7,#250
 D1: MOV R6,#250
 D2: DJNZ R6,D2
  DJNZ R7,D1
 
  RET

 
END 
 
 
 
 
 
 
 

发布人:TFT-LCD彩屏驱动 发布时间:2015年10月23日 已被浏览 1134

  客服信箱:JRZB1420@163.com  电话:18807609590  传真:0760-88486694  地址:广东省中山市港口镇群富工业区1号A座六楼  邮编:528400   Copyright© 中山宇辉电子   管理进入
   粤ICP备2022015562号