完整的单片机驱动TFT彩屏的程序设计.docx

上传人:b****5 文档编号:28757332 上传时间:2023-07-19 格式:DOCX 页数:121 大小:705.09KB
下载 相关 举报
完整的单片机驱动TFT彩屏的程序设计.docx_第1页
第1页 / 共121页
完整的单片机驱动TFT彩屏的程序设计.docx_第2页
第2页 / 共121页
完整的单片机驱动TFT彩屏的程序设计.docx_第3页
第3页 / 共121页
完整的单片机驱动TFT彩屏的程序设计.docx_第4页
第4页 / 共121页
完整的单片机驱动TFT彩屏的程序设计.docx_第5页
第5页 / 共121页
点击查看更多>>
下载资源
资源描述

完整的单片机驱动TFT彩屏的程序设计.docx

《完整的单片机驱动TFT彩屏的程序设计.docx》由会员分享,可在线阅读,更多相关《完整的单片机驱动TFT彩屏的程序设计.docx(121页珍藏版)》请在冰豆网上搜索。

完整的单片机驱动TFT彩屏的程序设计.docx

完整的单片机驱动TFT彩屏的程序设计

单片机驱动TFT彩屏的程序设计

一种完整的复杂的单片机驱动TFT彩屏的程序设计。

同步显示有星期;温度;时间;遥控指示;以及强大的定时功能…

废话不多说,自已向下看吧…

显示效果图:

 

电路图:

彩屏部分数据:

(网上有资料,陶宝网上有买)

以下是汇编程序:

(本程序可直接复制使用,但请指明出处。

本程序本人用时2.5个月制作(当然是工作闲余的时候),本程序是本人为学习汇编而编写(为做到“入森而不迷”)。

其已经做过实物测试,除时间不是十分精确外,其它都没有问题(因为问题已经解决了~~)。

遥控码数请参照程序中的以下两个子程序:

子程序1:

遥控按键处理(码数这里面,很容易找的)

子程序2:

遥控外部中断处理程序(遥控器不同码数长度也不一样,这里要注意)

;制作:

王永宾

;QQ:

794576441

;Email:

wyb20090311@

 

;---------------------------------------复制以下---------------------------------------------------------

;TFT彩屏程序(STC89C52)

;制作:

王永宾

;QQ:

794576441

;Email:

wyb20090311@

LCDRSEQUP2.0

LCDRWEQUP2.1

LCDCSEQUP2.3

LCDRSTEQUP2.4

;------------------

SU00EQU30H;时间字符的地址2440(0-9)

SU01EQU31H

SU10EQU32H

SU11EQU33H

SU20EQU34H

SU21EQU35H

SU30EQU36H

SU31EQU37H

SU40EQU38H

SU41EQU39H

SU50EQU3AH

SU51EQU3BH

SU60EQU3CH

SU61EQU3DH

SU70EQU3EH

SU71EQU3FH

SU80EQU40H

SU81EQU41H

SU90EQU42H

SU91EQU43H

;--------时间寄存器定义----------

RR0EQU44H

RR1EQU45H

RR2EQU46H

RR3EQU47H

RR4EQU48H

RR5EQU49H

RR6EQU4AH

RR7EQU4BH

SUZR0EQU4DH;星期?

字符的地址(日-六)

SUZR1EQU4EH

SUZ10EQU4FH

SUZ11EQU50H

SUZ20EQU51H

SUZ21EQU52H

SUZ30EQU53H

SUZ31EQU54H

SUZ40EQU55H

SUZ41EQU56H

SUZ50EQU57H

SUZ51EQU58H

SUZ60EQU59H

SUZ61EQU5AH

WD1EQU5BH

WD2EQU5CH

WD3EQU5DH

WD4EQU5EH

;-------星期?

寄存器定义------------

RR8EQU4CH

;定时字符的地址1616(六-日)

GUAN0EQU60H

GUAN1EQU61H

SL10EQU62H

SL11EQU63H

SL20EQU64H

SL21EQU65H

SL30EQU66H

SL31EQU67H

SL40EQU68H

SL41EQU69H

SL50EQU6AH

SL51EQU6BH

SL60EQU6CH

SL61EQU6DH

SL70EQU6EH

SL71EQU6FH

;--------定时寄存器定义---第一组-------

RAEQU70H;组

RAL0EQU71H;时间

RAL1EQU72H

RAL2EQU73H

RAL3EQU74H

RAR0EQU75H

RAR1EQU76H

RAR2EQU77H

RAR3EQU78H

RA1EQU79H;星期?

RA2EQU7AH

RA3EQU7BH

RA4EQU7CH

RA5EQU7DH

RA6EQU7EH

RA7EQU7FH

;TFT彩屏程序(STC89C52)

;制作:

王永宾

;QQ:

794576441

;Email:

wyb20090311@

;===================================

;===============开始00\==========

ORG0000H

LJMPMAIN0

ORG03H

LJMPITT00;外部中断

ORG0BH

RETI;计时中断如果溢出直接

ORG1BH

LJMPTI1;走时中断

;============主程序开始=================;

ORG20H

MAIN0:

LCALLKAIJI;开机初始化

LCALLCSH0

QINGPINGHAI0:

JBP3.7,$

MOV24H,#00H;R4

MOV25H,#03FH;R4

MOV26H,#00H

MOV27H,#03FH

MOVR3,#00H

MOVR4,#00H

LCALLQINGPING

QINGPINGHAI1:

JNBP3.7,QINGPINGRED0

JNBP3.6,QINGPINGEND

AJMPQINGPINGHAI1

QINGPINGRED0:

JBP3.7,$

MOV24H,#0E0H;R4

MOV25H,#0FFH;R4

MOV26H,#0E0H

MOV27H,#0FFH

MOVR3,#00H

MOVR4,#0E0H

LCALLQINGPING

QINGPINGRED1:

JNBP3.7,QINGPINGLV0

JNBP3.6,QINGPINGEND

AJMPQINGPINGRED1

QINGPINGLV0:

JBP3.7,$

MOVR1,#00H

MOVR2,#03H

MOVR3,#10H

MOVR4,#0B0H

LCALLXML;写命令

LCALLXSJ;写数据

MOVR1,#00H

MOVR2,#22H

LCALLXML;写命令

MOV24H,#0C3H;底

MOV25H,#3FH;字

MOV26H,#0C3H;底

MOV27H,#3FH;字

MOVR3,#00H

MOVR4,#0C3H;底

LCALLQINGPING

QINGPINGLV1:

JNBP3.7,QINGPINGHAI0

JNBP3.6,QINGPINGEND

AJMPQINGPINGLV1

;=========================

QINGPINGEND:

MOVR1,#00H

MOVR2,#22H

LCALLXML;写命令

LCALLGUDING;固定字符

LCALLWINDU;温度

LCALLYAOKONG;遥控

LJMPXSU

MAIN:

LCALLDINGSHISHU;定时数

LCALLDINGSHIZU;定时组

LCALLXPX;星期几

LCALLSHIJIAN;时间

LCALLWENDUCHULI

LCALLWINDU;温度

LCALLTIR0

SETBP2.5;-----完全相等---关闹

CLRP2.6;-----完全相等---关闹

MAIN1:

CLRP2.7

LCALLSHIJIAN;时间

LCALLJP0;键盘

LCALLPOWER;遥控处理

;----------------------

MOVA,2CH

CJNEA,RR3,MAIN2;RR3为分计

LJMPMAIN3;定义十秒锺扫一次温度

MAIN2:

MOV2CH,RR3

LCALLWENDUCHULI;温度处理

LCALLWINDU;温度

MAIN3:

MOVA,RR0;分有变动就扫描定时

CJNEA,RR4,MAIN4;RR4为分

LJMPMAIN1

MAIN4:

MOVRR0,RR4

LCALLBIJIAO;定时比较

LJMPMAIN1

;=============温度处理======================

WENDUCHULI:

LCALLWENDUXS;读写子程序

MOVA,21H

MOVR0,#20H

XCHDA,@R0

ANLA,#0FH

MOV21H,A;21H小数处理

MOVA,20H

SWAPA;20整数处理

MOV20H,A

JB07H,WENDUCHULI1;是负数转

MOVWD4,26H;清除负数标示

LCALLWENDUCHULI0;写整数个位

MOVWD2,A

LCALLWENDUCHULI0;写整数十位

MOVWD1,A

MOVA,21H;写小数位

MOVB,#02

DIVAB

MOVB,A

ADDA,B

ADDA,#30H

MOVWD3,A;写小数位

RET

WENDUCHULI1:

;负数处理.....

MOVWD4,27H;负数标示

MOVA,20H;20整数处理

CPLA;取反

ANLA,#7FH;清负数位

INCA;加一

MOV20H,A;20整数处理

MOVA,21H;21H小数处理

CPLA;取反

ANLA,#0FH;清除高位

INCA;加一

MOV21H,A;21H小数处理

LCALLWENDUCHULI0;写整数个位

MOVWD2,A

LCALLWENDUCHULI0;写整数十位

MOVWD1,A

MOVA,21H;写小数位

MOVB,#02

DIVAB

MOVB,A

ADDA,B

ADDA,#30H

MOVWD3,A;写小数位

RET

;------------整数写子程序--------

WENDUCHULI0:

MOVA,20H;整数写子程序

MOVB,#10

DIVAB

MOV20H,A

MOVA,B

ADDA,B

ADDA,#30H;整数写子程序

RET

;======写数据=========

WENDUXS:

LCALLWENDURST

JB70H,WENDUXS1;检复位成功了转

RET

WENDUXS1:

MOVA,#0CCH;跳过ROM

LCALLWENDUXS_B

MOVA,#44H

LCALLWENDUXS_B;RAM温度转换

MOVR4,#50

D1:

;等待750uS转换完成

MOVR5,#13

DJNZR5,$

DJNZR6,D1

;======读数据==============

LCALLWENDURST

JB70H,WENDUDS1;检复位成功了转

RET

WENDUDS1:

MOVA,#0CCH;跳过ROM

LCALLWENDUXS_B

MOVA,#0BEH;读RAM

LCALLWENDUXS_B

LCALLWENDUDX_B;调读子程序

RET

;-----读数子程序-----------

WENDUDX_B:

MOVR0,#20H

MOVR4,#02

WENDUDX_B0:

MOVR5,#08H

WENDUDX_B1:

CLRC

SETBP3.3

NOP

NOP

NOP

NOP

CLRP3.3

NOP

NOP

NOP

NOP

NOP

NOP

SETBP3.3

MOVR6,#18

DJNZR6,$;13uS

MOVC,P3.3

MOVR6,#46

DJNZR6,$

RRCA

DJNZR5,WENDUDX_B1

MOV@R0,A

INCR0

DJNZR4,WENDUDX_B0

RET

;====写数据子程序======

WENDUXS_B:

MOVR5,#08H

CLRC

WENDUXS_B0:

CLRP3.3

MOVR6,#12

DJNZR6,$

RRCA

MOVP3.3,C

MOVR6,#49

DJNZR6,$

SETBP3.3

NOP

NOP

DJNZR5,WENDUXS_B0

SETBP3.3

RET

;===========18B20初始化子程序===============

WENDURST:

SETBP3.3

NOP

NOP

CLRP3.3

MOVR5,#255

WENDURST1:

;复位低电时间510uS

NOP

NOP

DJNZR5,WENDURST1;复位低电时间510uS

SETBP3.3

MOVR5,#60;等待检测存在脉冲15uS

DJNZR5,$;等待检测存在脉冲15uS

JNBP3.3,WENDURSTOK;有存在脉冲转

CLR70H;无存在脉冲清除标号

RET

WENDURSTOK:

MOVR5,#180;测存在脉冲240uS

DJNZR5,$

SETB70H;有存在脉冲打上标号

SETBP3.3

RET

;============遥控按键处理==========================

POWER:

MOVA,5FH

CJNEA,#0B7H,POWER1

LCALLYAOKONG1

MOV5FH,#00H

RET

POWER1:

MOVA,5FH

CJNEA,#0A7H,POWER2

LCALLYAOKONG2

MOV5FH,#00H

RET

POWER2:

MOVA,5FH

CJNEA,#97H,POWER3

LCALLYAOKONG3

MOV5FH,#00H

RET

POWER3:

MOVA,5FH

CJNEA,#0FH,POWER4

LCALLYAOKONG4

MOV5FH,#00H

RET

POWER4:

MOVA,5FH

CJNEA,#0C7H,POWER5

LCALLYAOKONG5

MOV5FH,#00H

RET

POWER5:

MOVA,5FH

CJNEA,#4FH,POWER6

LCALLYAOKONG6

MOV5FH,#00H

RET

POWER6:

MOVA,5FH

CJNEA,#0E7H,POWER7

LCALLYAOKONG7

MOV5FH,#00H

RET

POWER7:

MOVA,5FH

CJNEA,#27H,POWER8

LCALLYAOKONG8

MOV5FH,#00H

RET

POWER8:

MOVA,5FH

CJNEA,#0D7H,POWER9

LCALLYAOKONG9

MOV5FH,#00H

RET

POWER9:

MOVA,5FH

CJNEA,#47H,POWER0

LCALLYAOKONG0

MOV5FH,#00H

POWER0:

RET

;======================================

;=========定时比较====================

BIJIAO:

BJ0:

MOVA,RR8

CJNEA,#4DH,BJ1;今天星期一吗?

MOVR1,#1EH

MOVR0,#10H

LCALLBJ00

RET

BJ1:

CJNEA,#4FH,BJ2

MOVR1,#18H

MOVR0,#10H

LCALLBJ00

RET

BJ2:

CJNEA,#51H,BJ3

MOVR1,#19H

MOVR0,#10H

LCALLBJ00

RET

BJ3:

CJNEA,#53H,BJ4

MOVR1,#1AH

MOVR0,#10H

LCALLBJ00

RET

BJ4:

CJNEA,#55H,BJ5

MOVR1,#1BH

MOVR0,#10H

LCALLBJ00

RET

BJ5:

CJNEA,#57H,BJ6

MOVR1,#1CH

MOVR0,#10H

LCALLBJ00

RET

BJ6:

CJNEA,#59H,BJ7

MOVR1,#1DH

MOVR0,#10H

LCALLBJ00

RET

BJ7:

LJMPBIJIAO

;=========================

BJ00:

;是的

MOVR5,#08H

BJ001:

MOVXA,@R1

CJNEA,#60H,BJ01;第一组的星期一\开了吗?

BJ003:

MOVA,R1

ADDA,#10H

MOVR1,A

MOVA,R0

ADDA,#10H

MOVR0,A

DJNZR5,BJ001

RET

BJ01:

LCALLBJBRAL;调比较程序

INCR0

INCR0

INCR0

INCR0

LCALLBJBRAR;调比较程序

DECR0

DECR0

DECR0

DECR0

LJMPBJ003

;----------子程序-------------

BJBRAL:

PUSH00H

MOVXA,@R0

CJNEA,RR7,BJRALRET;RAL0=RR7?

不等返回

INCR0

MOVXA,@R0

CJNEA,RR6,BJRALRET;RAL1=RR6?

不等返回

INCR0

MOVXA,@R0

CJNEA,RR5,BJRALRET;RAL2=RR5?

不等返回

INCR0

MOVXA,@R0

CJNEA,RR4,BJRALRET;RAL3=RR4?

不等返回

CLRP2.5;-----完全相等---开闹

SETBP2.6;-----完全相等---开闹

LJMPBJRALRET

BJBRAR:

PUSH00H

MOVXA,@R0

CJNEA,RR7,BJRALRET;RAL0=RR7?

不等返回

INCR0

MOVXA,@R0

CJNEA,RR6,BJRALRET;RAL1=RR6?

不等返回

INCR0

MOVXA,@R0

CJNEA,RR5,BJRALRET;RAL2=RR5?

不等返回

INCR0

MOVXA,@R0

CJNEA,RR4,BJRALRET;RAL3=RR4?

不等返回

SETBP2.5;-----完全相等---关闹

CLRP2.6;-----完全相等---关闹

BJRALRET:

POP00H

RET

;========================================

;=======键盘========================

JP0:

SETBP3.4

SETBP3.5

SETBP3.6

SETBP3.7

JP:

JNBP3.4,JP1;TEST第一次检查

JNBP3.5,JP2;ALTEST第一次检查

JNBP3.6,SNOOZE

RET;返回MAIN

JP1:

;TEST第二次检查

LCALLSHIJIAN;显示时间

LCALLXPX;显示星期几

JNBP3.4,JP1

LJMPTESET

JP2:

;ALTEST第二次检查

LCALLSHIJIAN;显示时间

LCALLXPX;显示星期几

JNBP3.5,JP2

LJMPALSET

SNOOZE:

;ALTEST第二次检查

LCALLSHIJIAN;显示时间

LCALLXPX;显示星期几

JNBP3.5,SNOOZE

SETBP2.5

CLRP2.6

RET

;-------TEST处理地址---------------

TESET:

;TEST处理地址

LCALLSHIJIAN;显示时间

JNBP3.4,TESET

TESET1:

MOVR3,#70H;选定

LCALLSHIJIAN;显示时间

LCALLXPX;显示星期几

JNBP3.5,XQ0;转星期?

JNBP3.6,HR0;转时

JNBP3.7,MIN0;转分

JNBP3.4,TESETO;转返回

LJMPTESET1;重复检查

XQ0:

;星期?

二次检查

LCALLSHIJIAN;显示时间

LCALLXPX;显示星期几

JNBP3.5,XQ0

LJMPXQ

HR0:

;时二次检查

LCALLSHIJIAN;显示时间

LCALLXPX;显示星期几

JNBP3.6,HR

LJMPTESET1

MIN0:

;分二次检查

LCALLSHIJIAN;显示时间

LCALLXPX;显示星期几

JNBP3.7,MIN

LJMPTESET1

TESETO:

;返回二次检查

MOVR3,#00H

LCALLSHIJIAN;显示时间

LCALLXPX;显示星期几

JNBP3.4,TESETO

LJMPRES

XQ:

;星期?

处理程序

INCRR8

INCRR8

LCALLXQCJM

LJMPTESET1

HR:

;时处理程序

INCRR6

INCRR6

LCALLHRCJM

LJMPTESET1

MIN:

;分处理程序

INCRR4

INCRR4

LCALLMINCJM

LJMPTESET1

RES:

MOVR3,#00H;取消选定

RET;返回MAIN

;------ALTEST处理地址---------------

ALSET:

;ALTEST处理地址

LCALLSHIJIAN

LCALLXPX

JNBP3.5,ALSET

ALSET1:

MOVR3,#00H

LCALLSHIJIAN

LCALLXPX

MOVR3,#70H

MOV05H,#70H

LCALLXRXS

LCALLDINGSHISHU

LCALLDINGSHIZU

JNBP3.5,ALSETO

JNBP3.4,ALSETRRLL00

JNBP3.6

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 军事

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1