基于单片机的TFT液晶显示设计
完整的单片机驱动TFT彩屏的程序设计

完整的单片机驱动TFT彩屏的程序设计单片机驱动TFT彩屏的程序设计一种完整的复杂的单片机驱动TFT彩屏的程序设计。
同步显示有星期;温度;时间;遥控指示;以及强大的定时功能…废话不多说,自已向下看吧…显示效果图:电路图:彩屏部分数据:(网上有资料,陶宝网上有买)以下是汇编程序:(本程序可直接复制使用,但请指明出处。
)本程序本人用时2. 5个月制作(当然是工作闲余的时候),本程序是本人为学习汇编而编写(为做到“入森而不迷”)。
其已经做过实物测试,除时间不是十分精确外,其它都没有问题(因为问题已经解决了~~)。
遥控码数请参照程序中的以下两个子程序:子程序1:遥控按键处理(码数这里面,很容易找的)子程序2:遥控外部中断处理程序(遥控器不同码数长度也不一样,这里要注意);制作:王永宾;QQ:794576441;Email:*******************;---------------------------------------复制以下------------------------ ---------------------------------;TFT彩屏程序(STC89C52);制作:王永宾;QQ:794576441;Email:*******************LCDRS EQU P2.0LCDRW EQU P2.1LCDRST EQU P2.4;------------------SU00 EQU 30H ;时间字符的地址2440(0-9)SU01 EQU 31HSU10 EQU 32HSU11 EQU 33HSU20 EQU 34HSU21 EQU 35HSU30 EQU 36HSU31 EQU 37HSU40 EQU 38HSU41 EQU 39HSU50 EQU 3AHSU60 EQU 3CHSU61 EQU 3DHSU70 EQU 3EHSU71 EQU 3FHSU80 EQU 40HSU81 EQU 41HSU90 EQU 42HSU91 EQU 43H;--------时间寄存器定义----------RR0 EQU 44HRR1 EQU 45HRR2 EQU 46HRR3 EQU 47HRR4 EQU 48HRR5 EQU 49HRR6 EQU 4AHRR7 EQU 4BHSUZR0 EQU 4DH ;星期?字符的地址(日-六)SUZR1 EQU 4EH SUZ10 EQU 4FHSUZ11 EQU 50HSUZ20 EQU 51HSUZ30 EQU 53HSUZ31 EQU 54HSUZ40 EQU 55HSUZ41 EQU 56HSUZ50 EQU 57HSUZ51 EQU 58HSUZ60 EQU 59HSUZ61 EQU 5AHWD2 EQU 5CHWD3 EQU 5DHWD4 EQU 5EH;-------星期?寄存器定义------------ RR8 EQU 4CH ;定时字符的地址1616(六-日)GUAN0 EQU 60H GUAN1 EQU 61HSL10 EQU 62HSL11 EQU 63HSL20 EQU 64HSL21 EQU 65HSL30 EQU 66HSL31 EQU 67HSL40 EQU 68HSL41 EQU 69HSL50 EQU 6AHSL51 EQU 6BHSL60 EQU 6CHSL61 EQU 6DHSL70 EQU 6EHSL71 EQU 6FH;--------定时寄存器定义---第一组-------RA EQU 70H ;组RAL0 EQU 71H ;时间RAL2 EQU 73HRAL3 EQU 74HRAR0 EQU 75HRAR1 EQU 76HRAR2 EQU 77HRAR3 EQU 78HRA1 EQU 79H ;星期?RA2 EQU 7AHRA3 EQU 7BHRA4 EQU 7CHRA5 EQU 7DHRA6 EQU 7EHRA7 EQU 7FH;TFT彩屏程序(STC89C52);制作:王永宾;QQ:794576441;Email:*******************;===================================;===============开始00\==========ORG 0000HLJMP MAIN0ORG 03HLJMP ITT00 ;外部中断ORG 0BHRETI ;计时中断如果溢出直接ORG 1BHLJMP TI1 ;走时中断;============主程序开始=================; ORG 20HMAIN0:LCALL KAIJI ;开机初始化LCALL CSH0QINGPINGHAI0:JB P3.7,$MOV 24H,#00H ;R4 MOV 25H,#03FH ;R4 MOV 26H,#00HMOV 27H,#03FHMOV R3,#00HMOV R4,#00HLCALL QINGPING QINGPINGHAI1:JNB P3.7,QINGPINGRED0 JNB P3.6,QINGPINGEND AJMP QINGPINGHAI1QINGPINGRED0:JB P3.7,$MOV 24H,#0E0H ;R4 MOV 25H,#0FFH ;R4 MOV 26H,#0E0H MOV 27H,#0FFHMOV R3,#00HMOV R4,#0E0HLCALL QINGPING QINGPINGRED1:JNB P3.7,QINGPINGLV0 JNB P3.6,QINGPINGEND AJMP QINGPINGRED1QINGPINGLV0:JB P3.7,$MOV R1,#00HMOV R2,#03HMOV R3,#10HMOV R4,#0B0HLCALL XML ;写命令LCALL XSJ ;写数据MOV R1,#00HMOV R2,#22HLCALL XML ;写命令MOV 24H,#0C3H ;底MOV 25H,#3FH ;字MOV 26H,#0C3H ;底MOV 27H,#3FH ;字MOV R3,#00HMOV R4,#0C3H ;底LCALL QINGPING QINGPINGLV1:JNB P3.7,QINGPINGHAI0JNB P3.6,QINGPINGENDAJMP QINGPINGLV1;========================= QINGPINGEND:MOV R1,#00HMOV R2,#22HLCALL XML ;写命令LCALL GUDING ;固定字符LCALL WINDU ;温度LCALL YAOKONG ;遥控LJMP XSUMAIN:LCALL DINGSHISHU ;定时数LCALL DINGSHIZU ;定时组LCALL XPX ;星期几LCALL SHIJIAN ;时间LCALL WENDUCHULILCALL WINDU ;温度LCALL TIR0SETB P2.5 ;-----完全相等---关闹CLR P2.6 ;-----完全相等---关闹MAIN1:CLR P2.7LCALL SHIJIAN ;时间LCALL JP0 ;键盘LCALL POWER ;遥控处理;----------------------MOV A,2CHCJNE A,RR3,MAIN2 ;RR3为分计LJMP MAIN3 ;定义十秒锺扫一次温度MAIN2:MOV 2CH,RR3LCALL WENDUCHULI ;温度处理LCALL WINDU ;温度MAIN3:MOV A,RR0 ;分有变动就扫描定时CJNE A,RR4,MAIN4 ;RR4为分LJMP MAIN1MAIN4:MOV RR0,RR4LCALL BIJIAO ;定时比较LJMP MAIN1;=============温度处理====================== WENDUCHULI:LCALL WENDUXS ;读写子程序MOV A,21HMOV R0,#20HXCHD A,@R0ANL A,#0FHMOV 21H,A ;21H小数处理MOV A,20HSWAP A ;20整数处理MOV 20H,AJB 07H,WENDUCHULI1;是负数转MOV WD4,26H ;清除负数标示LCALL WENDUCHULI0 ;写整数个位MOV WD2,ALCALL WENDUCHULI0 ;写整数十位MOV WD1,AMOV A,21H ;写小数位MOV B,#02DIV ABMOV B,AADD A,BADD A,#30HMOV WD3,A ;写小数位RETWENDUCHULI1:;负数处理.....MOV WD4,27H ;负数标示MOV A,20H ;20整数处理CPL A ;取反ANL A,#7FH ;清负数位INC A ;加一MOV 20H,A ;20整数处理MOV A,21H ;21H小数处理CPL A ;取反ANL A,#0FH ;清除高位INC A ;加一MOV 21H,A ;21H小数处理LCALL WENDUCHULI0 ;写整数个位MOV WD2,A LCALL WENDUCHULI0 ;写整数十位MOV WD1,A MOV A,21H ;写小数位MOV B,#02DIV ABMOV B,AADD A,BADD A,#30HMOV WD3,A ;写小数位RET;------------整数写子程序-------- WENDUCHULI0: MOV A,20H ;整数写子程序MOV B,#10DIV ABMOV 20H,AMOV A,BADD A,BADD A,#30H ;整数写子程序;======写数据========= WENDUXS: LCALL WENDURSTJB 70H,WENDUXS1 ;检复位成功了转RET WENDUXS1:MOV A,#0CCH ;跳过ROMLCALL WENDUXS_BMOV A,#44HLCALL WENDUXS_B ;RAM温度转换MOV R4,#50 D1: ;等待750uS转换完成MOV R5,#13DJNZ R5,$DJNZ R6,D1;======读数据==============LCALL WENDURSTJB 70H,WENDUDS1 ;检复位成功了转RET WENDUDS1:MOV A,#0CCH ;跳过ROMLCALL WENDUXS_BMOV A,#0BEH ;读RAMLCALL WENDUXS_BLCALL WENDUDX_B ;调读子程序RET;-----读数子程序-----------WENDUDX_B:MOV R0,#20HMOV R4,#02WENDUDX_B0:MOV R5,#08HWENDUDX_B1:CLR CSETB P3.3NOPNOPNOPCLR P3.3NOPNOPNOPNOPNOPNOPSETB P3.3MOV R6,#18DJNZ R6,$ ;13uSMOV C,P3.3MOV R6,#46DJNZ R6,$RRC ADJNZ R5,WENDUDX_B1 MOV @R0,AINC R0DJNZ R4,WENDUDX_B0 RET;====写数据子程序====== WENDUXS_B:MOV R5,#08HCLR CWENDUXS_B0:CLR P3.3MOV R6,#12RRC AMOV P3.3,CMOV R6,#49DJNZ R6,$SETB P3.3NOPNOPDJNZ R5,WENDUXS_B0SETB P3.3RET;===========18B20初始化子程序=============== WENDURST:SETB P3.3NOPNOPCLR P3.3MOV R5,#255WENDURST1: ;复位低电时间510uSNOPNOPDJNZ R5,WENDURST1;复位低电时间510uSSETB P3.3MOV R5,#60 ;等待检测存在脉冲15uSDJNZ R5,$ ;等待检测存在脉冲15uSJNB P3.3,WENDURSTOK ;有存在脉冲转CLR 70H ;无存在脉冲清除标号RETWENDURSTOK:MOV R5,#180 ;测存在脉冲240uSSETB 70H ;有存在脉冲打上标号SETB P3.3RET;============遥控按键处理========================== POWER:MOV A,5FHCJNE A,#0B7H,POWER1LCALL YAOKONG1MOV 5FH,#00HRETPOWER1:MOV A,5FHCJNE A,#0A7H,POWER2LCALL YAOKONG2MOV 5FH,#00HRETPOWER2:MOV A,5FHCJNE A,#97H,POWER3LCALL YAOKONG3MOV 5FH,#00HRETPOWER3:MOV A,5FHCJNE A,#0FH,POWER4LCALL YAOKONG4MOV 5FH,#00HRETPOWER4:MOV A,5FHCJNE A,#0C7H,POWER5 LCALL YAOKONG5 MOV 5FH,#00H RETPOWER5:MOV A,5FHCJNE A,#4FH,POWER6 LCALL YAOKONG6 MOV 5FH,#00HRETPOWER6:MOV A,5FHCJNE A,#0E7H,POWER7 LCALL YAOKONG7 MOV 5FH,#00H RETPOWER7:MOV A,5FHCJNE A,#27H,POWER8 LCALL YAOKONG8 MOV 5FH,#00HRETPOWER8:MOV A,5FHCJNE A,#0D7H,POWER9 LCALL YAOKONG9 MOV 5FH,#00H RETPOWER9:MOV A,5FHCJNE A,#47H,POWER0 LCALL YAOKONG0 MOV 5FH,#00H POWER0:RET;====================================== ;=========定时比较==================== BIJIAO: BJ0:MOV A,RR8CJNE A,#4DH,BJ1 ;今天星期一吗?MOV R1,#1EHMOV R0,#10H LCALL BJ00 RETBJ1:CJNE A,#4FH,BJ2 MOV R1,#18H MOV R0,#10H LCALL BJ00 RETBJ2:CJNE A,#51H,BJ3 MOV R1,#19H MOV R0,#10H LCALL BJ00 RETBJ3:CJNE A,#53H,BJ4 MOV R1,#1AH MOV R0,#10H LCALL BJ00 RETBJ4:CJNE A,#55H,BJ5 MOV R1,#1BH MOV R0,#10H LCALL BJ00 RET。
单片机学习项目 (19) 彩屏液晶TFT的原理与应用

单片机学习项目项目19-彩屏液晶TFT的原理与应用一:参考电路电路原理图如下图6.3.3所示。
要求叙述电路组成。
二:程序设计程序主函数/********************************************************** * 程序主函数 ***********************************************************/ #include <reg52.h>#include <intrins.h>#include "LCD.h"char code reserve[3]_at_ 0x3b; //保留0x3b开始的3个字节void main(void){P2= 0xff;P0= 0xff;LCD_init(); //LCD初始化LCD_clear(6); //清屏LCDpic_play(7,61,8,74); //显示第1幅图片pic_play(68,122,8,74); //显示第2幅图片pic_play(7,61,82,148); //显示第3幅图片pic_play(68,122,82,148); //显示第4幅图片while(1) ;}/********************************************************** * TFT彩屏的头文件 ***********************************************************/#ifndef __LCD_H__ //头文件声明#define __LCD_H__#define TYPE_LCD_DATA 1#define TYPE_LCD_COMMAND 0#define uchar unsigned char#define uint unsigned int#define DATA P0//定义彩屏和单片机的管脚连接情况sbit LCD_RST = P2^7;// sbit LCD_RST = P2^0;sbit LCD_RD = P3^2; // sbit LCD_RD = P2^1;sbit LCD_WR = P3^3; // sbit LCD_WR = P2^2;sbit LCD_RS = P2^5; // sbit LCD_RS = P2^3;sbit LCD_CS = P2^6; // sbit LCD_CS = P2^4;//声明要调用的子函数extern uint colors[];extern void delay_ms(uint ms);extern void LCD_Write(uchar type, uintvalue);extern void LCD_SendData8(uchar value);extern void LCD_Wirte_Data16(uintvalue);extern void Reg_Write(uint reg,uint value);extern void LCD_SetRamAddr(uint xStart,uint xEnd, uint yStart, uint yEnd); extern void LCD_init(void);extern void pic_play(uint Start_X, uintEnd_X,uint Start_Y,uint End_Y); extern void LCD_clear(uchar n);#endif/*********************************************************** 彩屏驱动程序 ***********************************************************/#include <reg52.h>#include <intrins.h>#include "LCD.h"#include"hist2.h"#define NOP() _nop_() /* 定义空指令 *///定义设置彩屏颜色的数组unsigned int colors[]={0xf800,0x07e0,0x001f,0xffe0,0x0000,0x07ff,0xf81f,0xffff};//延时子函数void delay_ms(uint ms){unsigned char k;while (ms--){for (k = 0; k < 228; k++) ;}}//写命令与数据子函数void LCD_Write(uchar type, uint value){LCD_CS= 0;LCD_RS = type; //0: 命令 1:数据 LCD_WR = 0;DATA = (uchar)value;LCD_WR = 1;LCD_CS= 1;}//写8位数据子函数void LCD_Write_Data8(uchar value){LCD_CS= 0;LCD_RS = 1;LCD_WR = 0;DATA = value;LCD_WR = 1;LCD_CS = 1;}//写16位数据子函数void LCD_Wirte_Data16(uint value){LCD_CS= 0;LCD_RS = 1;LCD_WR = 0;DATA = (uchar)value;LCD_WR = 1;LCD_WR = 0;DATA = (uchar)(value>>8) ;LCD_WR = 1;LCD_CS= 1;}//写寄存器子函数void Reg_Write(uint reg,uint value){LCD_Write(TYPE_LCD_COMMAND,reg);LCD_Write(TYPE_LCD_DATA,value);}//设置显示窗口子函数void LCD_SetRamAddr(uint xStart, uint xEnd,uint yStart, uint yEnd) {uint VerPos,HorPos,StartAddr;HorPos = (uint)(xStart |(xEnd<<8));VerPos = (uint)(yStart |(yEnd<<8));StartAddr = (uint)(xStart |(yStart<<8));Reg_Write(0x09, xStart);Reg_Write(0x10,yStart);Reg_Write(0x11,xEnd);Reg_Write(0x12,yEnd);Reg_Write(0x18, xStart);Reg_Write(0x19, yStart);LCD_Write(TYPE_LCD_COMMAND,0x22); //0x22}//液晶屏初始化void LCD_init(void){uint num;Reg_Write(0x0001,0x0002); //模式选择1Reg_Write(0x0002,0x0012); //模式选择2Reg_Write(0x0003,0x0000); //模式选择3Reg_Write(0x0004,0x0010); //模式选择4LCD_SetRamAddr(0,127,0,159);for(num=20480;num>0;num--)LCD_Wirte_Data16(0xffff);Reg_Write(0x0005,0x0008);Reg_Write(0x0007,0x007f);Reg_Write(0x0008,0x0017);Reg_Write(0x0009,0x0000); //从X坐标开始,写SRAMReg_Write(0x0010,0x0000); //从Y坐标开始,写SRAMReg_Write(0x0011,0x0083); //写SRAM,X坐标结束Reg_Write(0x0012,0x009f); //写SRAM,Y坐标结束Reg_Write(0x0017,0x0000); //控制SRAMReg_Write(0x0018,0x0000); //SRAM中X的位置Reg_Write(0x0019,0x0000); //SRAM中Y的位置Reg_Write(0x0006,0x00c5);delay_ms(10);//延时}//图片显示子函数void pic_play(uint Start_X, uint End_X,uint Start_Y,uint End_Y){uint num,m;uint dx,dy;dx= (End_X+1)-Start_X; //计算写入数据的总数dy= (End_Y+1)-Start_Y;num = dx*dy<<1;LCD_CS = 0;LCD_SetRamAddr(Start_X,End_X-1,Start_Y,End_Y-1); LCD_RS = 1;for(m=0; m<6156; m++){LCD_Write_Data8(Image_pic[m]);}LCD_CS = 1;}// 清屏子函数void LCD_clear(uchar n){uint num;LCD_SetRamAddr(0,127, 0,159);for(num=20480;num>0;num--) //160*128=20480{LCD_Wirte_Data16(colors[n]);}}(2)图形库设计步骤用Image2Lcd软件提取图片如图6.3.5所示。
基于单片机的液晶显示教具设计

基于单片机的液晶显示教具设计摘要:近年来,随着社会的发展,人们的生活越来越便利,电子产品在人们的日常生活中起着越来越重要的作用。
例如字符显示器,可以为监控系统信息提供完整的方案,通过指令方便地修改,可以真正实现信息发布无纸化。
与此同时,社会对电类的人才需求越来越强烈,学校相应加开了电类及机电一体化类的课程,而此类专业学习过于抽象,常常是学生没有学习兴趣,理论与实践脱节。
文章正是结合学生的学习特点及教学内容,设计了基于单片机的液晶显示教具。
关键词:单片机;液晶;显示器对于机电一体化的高职学生来说,建立一体化产品通讯、电路、硬件软件一体化的概念、培养设备改造能力尤其重要。
本教具以“单片机原理与系统设计”为基础理论,重点强调系统的设计及改造。
使学生通过应用单片机及控制系统设计的基本理论与基本技能,掌握应用系统各主要环节的设计选用方法,初步了解电路控制系统,并具备设备技术改造和开发的能力,培养学生分析问题、解决问题的能力及创新意识,提高学生的动手能力。
LCD显示教具平板由显示模块、控制模块、键盘、电源、震荡复位电路构成,如图1所示。
单片机作为整个控制模块的核心,起着处理输入的程序及信号、输出显示内容的重要作用。
显示模块即为液晶显示屏,可以显示广告语。
振荡复位电路将直流电转变为一定频率的交流信号,作用是产生交流电信号,作为信号源。
程序主要在计算机上完成,然后下载到控制模块。
显示模块是整个电路板的终端,通过程序控制显示的内容和方式。
教具的设计分为CPU选用、液晶显示器选用、电源设计、CPU 与显示器接口设计及软件设计,如图1所示。
1 CPU的选用微处理器问世后不久,便出现了以一个大规模集成电路为主组成的微型计算机――单片微型计算机(Micro Computer Unit简称单片机),又称为嵌入式微控制器(Embedded Microcontroller)。
一般分为通用型、总线型和控制型。
单片机存在我们生活的各个领域,大到飞机、工业自动化过程的实时控制和数据处理,小到智能IC卡,录像机、摄像机的控制等等。
【免费下载】基于TFT LCD显示屏的MSP430单片机实验

B. TM1638.........................................................................................................................4 二、 实验程序 ...................................................................................................................................... 5
三、 感想与思考 ..................................................................................................................................8 附页(实验程序代码) ........................................................................................................................ 9
1、概述
本次课程设计是在 MSP430 单片机液晶屏字符显示功能的基础上,编程设计游戏。程 序的设计基于《F6638 实验指导手册》中,“TFT-LCD 实验--字符显示”的程序点亮 TFTLCD 屏幕,编写游戏程序,与 IO 控制结合,实现游戏的可视化和游戏操作。由于 Code Composer Studio v5.5.0 难以对该程序样例实现编译,采用的开发工具为 Code Composer Studio v6.0。
2、 应用模块................................................................................................................................2 A. LCD 模块 .......................................................................................................................2
基于单片机的液晶显示系统方案设计书

设计(论文)题目:单片机控制液晶显示系统设计(论文)主要内容和要求:1. 掌握89C52 单片机工作原理、软/硬件资源2.掌握中文液晶显示屏的结构及工作原理3.完成系统硬件设计4.完成系统软件设计摘要本文主要对AT89C52 控制的液晶显示系统进行了研究。
文章首先对单片机AT89C52 的结构、功能、特点进行了简要的介绍;然后介绍了液晶显示控制器KS0108 的结构功能,并对液晶模块LG128643 的结构、功能做了详细的说明;之后,着重分析了液晶显示系统的硬件实现方案,包括键盘的设计、液晶显示接口的设计。
文章的最后提出系统的软件设计方案,设计了各个功能模块的软件流程图。
关键词:单片机AT89C52 控制器KS0108 液晶模块LG128643ABSTRACTThis paper is main the LCD that control to the AT89C52 manifestation the system proceeded the research.The article preceded the introduction of the synopsis to the construction, function, characteristics of the single a machine AT89C52 first. Then introduced the LCD show the construction function of the controller KS0108, And did the expatiationto the construction, function of the LCD mold a LG128643。
After, emphasized to analyze the LCD show that the hardware of the system realizes project, The design, LCD manifestation that include the keyboard connects design. The article puts forward the software design project of the system finally, designed the software flow chart of the each function mold piece.Keywords: Single a machine AT89C52、controller KS0108、LCD mold a LG128643目录1.概论11.1 人类与显示技术11.2 液晶和液晶显示31.3LCD 发展史41.4 液晶显示器发展史72. 液晶显示系统原理92.1AT89C52单片机功能原理92.1.1A TMEL公司介绍92.1.2A T89系列单片机的特点102.1.389C52单片机结构112 . 2液晶显示器件原理202.2.1 液晶简介20 2.2.2液晶电光特性202.2.3液晶显示模块原理212.2.4LCD 的基本构造222.2.5LCD 的驱动方式242.2.6LCD 的显示原理252.2.7液晶控制器KS0108结构及功能262.2.8 液晶显示模块的结构特点293.单片机控制液晶显示模块电路设计333.1单片机控制板电路设计要求333.2单片机控制板原理框图及功能333.3单片机AT89C52对非编码键盘接口设计333.4单片机AT89C52 对液晶显示器的控制364.液晶显示系统软件设计434.1 液晶显示软件设计要求434.2 液晶显示软件主要内容434.3 液晶显示软件流程图435.硬件调试分析515.1 实验调试525.2 设计体会536.结束语546.1毕业设计总结556.2 进一步的工作展望56致谢57 参考文献581.概论液晶显示器件如春风早以吹入人们的各个领域。
基于单片机的TFT液晶显示系统设计

基于单片机的TFT液晶显 示系统设计
目录
1
研究背景
2
ห้องสมุดไป่ตู้
研究目的
4
3 系统的实现过程 4 研究结论和分析 7 8
选题意义及其背景
设置完成后的界面
研究结果
液晶彩屏实际显示效果图
研究结果分析
本研究主要介绍了设计TFT彩色液晶屏简单显示系 统的设计流程和内容。整个系统采用简单的显示电路结 构降低了设计复杂程度,也为TFT液晶彩屏的成本降低 方面的研究拓宽了思路,从而能够让更多的人享受到液 晶显示带来的视觉享受,同时具有良好的移植性和方便 调用。但现有的系统还是存在一些不足的,主要包括系 统的不稳定抗干扰能力差,不能显示大容量的图片,传 输的速率有限等。
系统的硬件设计
硬件设计主要有最 小系统,TFT液晶彩屏 显示电路,单片机输入 电源电路三个部分。
硬件原理设计构图
程序流程图
主程序流程图
显示子程序流程图
图片取模
本文使用Image2Lcd 2.9软件提取一幅 学校的校徽图像的图片数据。在软件的设 置界面首先要把图片取模的扫描格式设置 为水平扫描,输出灰度调整到16位真彩色。 输出数据类型为C语言数组,注意最后在要 把最大宽度和高度调整为62和62,就是将 来图片显示出来的大小。按提示把图像提 取出来的点阵文件保存在数gImage_wy[]中, 供显示子程序调用。
从而不利于推广和普及
研究目的
本研究是在AT89S51单片机控制的基础上,设计出一个用C51语言运 行的液晶显示系统可以显示彩色图像。而且能从中取得详细的显示控制
一种基于STM32的控制TFT-LCD显示的设计方法

一种基于STM32的控制TFT-LCD显示的设计方法摘要:TFT-LCD 即薄膜晶体管液晶显示器。
其英文全称为: Thin Film Transistor-Liquid CrystalDisplay。
TFT-LCD 与无源TN-LCD、 STN-LCD 的简单矩阵不同,它在液晶显示屏的每一个象素上都设置有一个薄膜晶体管(TFT),可有效地克服非选通时的串扰,使显示液晶屏的静态特性与扫描线数无关,因此大大提高了图像质量。
本文设计了一种基于STM32开发板的ILI9341芯片控制液晶屏的方法。
摘要:STM32,LCD, ILI9341,TFT一、开发硬件介绍本设计开发板使用的屏幕是3.2寸TFT液晶彩屏,分辨率为320x240,并使用ILI9341芯片控制液晶屏。
液晶屏的控制芯片内部结构非常复杂,最主要的是位于中间的GRAM(Graphics RAM),可以理解为显存。
GRAM 中每个存储单元都对应着液晶面板的一个像素点。
芯片内部有电路把 GRAM存储单元的数据转化成液晶面板的控制信号,使每个像素点呈现特定的亮度和颜色,这些点组合起来则成为显示界面。
所用液晶屏模块原理图如图所示:从模块接口电路可以看出,LCD采用16位的并方式与外部连接,之所以不采用8位的方式,是因为彩屏的数据量比较大,尤其在显示图片的时候,如果用8位数据线,就会比16位方式慢一倍以上,我们当然希望速度越快越好,所以我们选择16位的接口。
二、用STM32驱动LCDILI9341的 8080 通讯接口时序可以由 STM32 使用普通 I/O 接口进行模拟,但这样效率较低,它提供了一种特别的控制方法——使用FSMC接口。
根据STM32对寻址空间的地址映射,地址0x6000 0000 ~0x9FFF FFFF是映射到外部存储器的,而其中的0x60000000 ~0x6FFF FFFF 则是分配给 NOR FLASH、PSRAM这类可直接寻址的器件。
基于TFT_LCD显示屏的MSP430单片机实验

太空大战小游戏——基于TFT_LCD显示屏的MSP430单片机实验SJTU ME 5120209353目录一、实验硬件 (1)1、概述 (1)2、应用模块 (2)A. LCD模块 (2)B. TM1638 (4)二、实验程序 (5)1、程序实现效果 (5)2、程序封装模块 (5)1、图形产生与移动 (5)2、我方战机的控制 (5)3、敌机与奖励的产生及移动 (6)4、击落敌机与获得奖励 (7)5、关卡升级 (7)6、施放大招: (7)三、感想与思考.................................................................................................. 错误!未定义书签。
附页(实验程序代码) (8)一、实验硬件1、概述本次课程设计是在MSP430单片机液晶屏字符显示功能的基础上,编程设计游戏。
程序的设计基于《F6638实验指导手册》中,“TFT-LCD 实验--字符显示”的程序点亮TFT-LCD 屏幕,编写游戏程序,与IO控制结合,实现游戏的可视化和游戏操作。
由于Code Composer Studio v5.5.0难以对该程序样例实现编译,采用的开发工具为Code Composer Studio v6.0。
MSP430系列单片机是由美国TI公司生产的新一代16位单片机,因以其集成密度高、运算速度快、外设接口丰富等优势受到越来越多的产品开发人员的青睐,是当前使用最多的单片机之一。
在很多具体应用中,甚至只利用一片MSP430单片机,就可以完成一个系统的全部功能。
下面给出实验中使用的MSP430F66单片机的封装图和功能框图。
图1-MSP430F6638封装图图2-MSP430F6638功能框图2、应用模块A. LCD模块本次编写的程序所用的主要模块为LCD模块,在功能框图中显示为 LCD_B。
硬件电路设计如下所示。
tft模块程序设计

tft模块程序设计
一、概述
TFT模块是一种基于液晶显示技术的显示器件,具有高分辨率、色彩
鲜艳、反应速度快等特点。
本文将介绍TFT模块程序设计的相关内容。
二、硬件要求
1. TFT模块
2. 单片机
3. 电源
三、软件要求
1. Keil C编译器
2. TFT驱动库
四、TFT模块程序设计流程
1. 初始化TFT模块:包括设置分辨率、颜色深度等参数。
2. 显示图像:将需要显示的图像数据写入TFT模块的显存中,并刷新
显示屏幕。
3. 控制光标位置:通过控制光标位置,可以在屏幕上实现文字和图形
的精确定位。
4. 清屏:清除屏幕上所有的内容,准备下一次显示。
五、具体实现步骤
1. 在Keil C中新建工程,并添加TFT驱动库文件。
2. 在main函数中初始化TFT模块,设置分辨率和颜色深度等参数。
3. 加载需要显示的图像数据到显存中,并刷新屏幕。
4. 控制光标位置,实现文字和图形的精确定位。
5. 清屏,准备下一次显示。
六、注意事项
1. 在使用TFT模块时,需要注意电源的稳定性,以免影响显示效果。
2. 在程序设计中,需要根据具体的TFT模块型号和驱动库进行相应的
设置。
3. 在图像数据加载和刷新过程中,需要保证数据传输的正确性和速度。
七、总结
TFT模块程序设计是一项基于液晶显示技术的开发工作,需要掌握相
关的硬件和软件知识。
通过本文介绍的流程和实现步骤,可以更好地
理解TFT模块程序设计的相关内容,并在实际开发中得到应用。
STM32单片机对TFTLCD的驱动设计

STM32单片机对TFTLCD的驱动设计STM32单片机对TFTLCD(TFT液晶屏)的驱动设计是一种基于STM32单片机的液晶显示技术。
TFTLCD是一种高分辨率、高色彩鲜艳的显示技术,常用于嵌入式设备的显示界面。
在设计STM32单片机对TFTLCD的驱动时,需要考虑到单片机的硬件资源和软件设计。
一、硬件设计:1.接口设计:根据TFTLCD的规格书,确定TFTLCD的接口类型(如SPI、RGB等),然后根据接口类型选择合适的引脚来连接TFTLCD与STM32单片机。
2.时钟设计:TFTLCD需要一个稳定的时钟信号来提供时序控制,可以使用STM32单片机的定时器来生成时钟信号。
3.电源设计:TFTLCD需要一定的电压供应,可以通过外部的电源模块提供合适的电压给TFTLCD。
二、软件设计:1.初始化:在驱动设计的开始阶段,需要初始化TFTLCD的相关参数,如分辨率、颜色格式等。
2.数据传输:根据TFTLCD的接口类型,使用合适的通信协议进行数据传输。
如果是SPI接口,可以使用STM32的SPI外设来传输数据;如果是RGB接口,可以通过GPIO口来控制数据线的高低电平。
3.显示控制:通过向TFTLCD发送相应的控制指令,来实现对显示内容的控制,如清屏、画点、画线、显示图像等。
4.刷新机制:TFTLCD的驱动需要实现刷新机制,即在TFTLCD的刷新周期内,不断向TFTLCD发送新的数据。
可以使用双缓冲机制,先将数据写入一个缓冲区,再将缓冲区的数据一次性发送给TFTLCD,以提高刷新效率。
在STM32单片机对TFTLCD的驱动设计中,需要根据具体的TFTLCD型号和规格书来进行具体的硬件和软件设计。
每个TFTLCD的驱动设计都是独特的,需要根据具体的需求和要求来进行设计。
同时,也需要根据单片机的性能和资源来进行合理的设计,以确保驱动的效率和稳定性。
总结来说,STM32单片机对TFTLCD的驱动设计需要同时考虑硬件和软件的设计。
完整的单片机驱动TFT彩屏的程序设计

单片机驱动TFT彩屏的程序设计一种完整的复杂的单片机驱动TFT彩屏的程序设计。
同步显示有星期;温度;时间;遥控指示;以及强大的定时功能…废话不多说,自已向下看吧…显示效果图:彩屏部分数据:(网上有资料,陶宝网上有买)以下是汇编程序:(本程序可直接复制使用,但请指明出处。
)本程序本人用时2. 5个月制作(当然是工作闲余的时候),本程序是本人为学习汇编而编写(为做到“入森而不迷”)。
其已经做过实物测试,除时间不是十分精确外,其它都没有问题(因为问题已经解决了~~)。
遥控码数请参照程序中的以下两个子程序:子程序1:遥控按键处理(码数这里面,很容易找的)子程序2:遥控外部中断处理程序(遥控器不同码数长度也不一样,这里要注意);制作:王永宾;QQ:794576441;Email:*******************;---------------------------------------复制以下------------------------ ---------------------------------;TFT彩屏程序(STC89C52);制作:王永宾;QQ:794576441;Email:*******************LCDRS EQU P2.0LCDRW EQU P2.1LCDRST EQU P2.4;------------------SU00 EQU 30H ;时间字符的地址2440(0-9)SU01 EQU 31HSU10 EQU 32HSU11 EQU 33HSU20 EQU 34HSU21 EQU 35HSU30 EQU 36HSU31 EQU 37HSU40 EQU 38HSU41 EQU 39HSU50 EQU 3AHSU51 EQU 3BHSU60 EQU 3CHSU61 EQU 3DHSU70 EQU 3EHSU71 EQU 3FHSU80 EQU 40HSU81 EQU 41HSU90 EQU 42HSU91 EQU 43H;--------时间寄存器定义----------RR0 EQU 44HRR1 EQU 45HRR2 EQU 46HRR3 EQU 47HRR4 EQU 48HRR5 EQU 49HRR6 EQU 4AHRR7 EQU 4BHSUZR0 EQU 4DH ;星期?字符的地址(日-六)SUZR1 EQU 4EHSUZ10 EQU 4FHSUZ11 EQU 50HSUZ20 EQU 51HSUZ30 EQU 53HSUZ31 EQU 54HSUZ40 EQU 55HSUZ41 EQU 56HSUZ50 EQU 57HSUZ51 EQU 58HSUZ60 EQU 59HSUZ61 EQU 5AHWD1 EQU 5BHWD2 EQU 5CHWD3 EQU 5DHWD4 EQU 5EH;-------星期?寄存器定义------------ RR8 EQU 4CH;定时字符的地址1616(六-日)GUAN0 EQU 60HGUAN1 EQU 61HSL10 EQU 62HSL11 EQU 63HSL20 EQU 64HSL21 EQU 65HSL30 EQU 66HSL31 EQU 67HSL40 EQU 68HSL41 EQU 69HSL50 EQU 6AHSL51 EQU 6BHSL60 EQU 6CHSL61 EQU 6DHSL70 EQU 6EHSL71 EQU 6FH;--------定时寄存器定义---第一组-------RA EQU 70H ;组RAL0 EQU 71H ;时间RAL2 EQU 73HRAL3 EQU 74HRAR0 EQU 75HRAR1 EQU 76HRAR2 EQU 77HRAR3 EQU 78HRA1 EQU 79H ;星期?RA2 EQU 7AHRA3 EQU 7BHRA4 EQU 7CHRA5 EQU 7DHRA6 EQU 7EHRA7 EQU 7FH;TFT彩屏程序(STC89C52);制作:王永宾;QQ:794576441;Email:*******************;===================================;===============开始00\==========ORG 0000HLJMP MAIN0ORG 03HLJMP ITT00 ;外部中断ORG 0BHRETI ;计时中断如果溢出直接ORG 1BHLJMP TI1 ;走时中断;============主程序开始=================; ORG 20HMAIN0:LCALL KAIJI ;开机初始化LCALL CSH0QINGPINGHAI0:JB P3.7,$MOV 24H,#00H ;R4 MOV 25H,#03FH ;R4 MOV 26H,#00HMOV 27H,#03FHMOV R3,#00HMOV R4,#00HLCALL QINGPING QINGPINGHAI1:JNB P3.7,QINGPINGRED0 JNB P3.6,QINGPINGEND AJMP QINGPINGHAI1QINGPINGRED0:JB P3.7,$MOV 24H,#0E0H ;R4 MOV 25H,#0FFH ;R4 MOV 26H,#0E0HMOV 27H,#0FFHMOV R3,#00HMOV R4,#0E0HLCALL QINGPING QINGPINGRED1:JNB P3.7,QINGPINGLV0 JNB P3.6,QINGPINGEND AJMP QINGPINGRED1QINGPINGLV0:JB P3.7,$MOV R1,#00HMOV R2,#03HMOV R3,#10HMOV R4,#0B0HLCALL XML ;写命令LCALL XSJ ;写数据MOV R1,#00HMOV R2,#22HLCALL XML ;写命令MOV 24H,#0C3H ;底MOV 25H,#3FH ;字MOV 26H,#0C3H ;底MOV 27H,#3FH ;字MOV R3,#00HMOV R4,#0C3H ;底LCALL QINGPING QINGPINGLV1:JNB P3.7,QINGPINGHAI0JNB P3.6,QINGPINGENDAJMP QINGPINGLV1;========================= QINGPINGEND:MOV R1,#00HMOV R2,#22HLCALL XML ;写命令LCALL GUDING ;固定字符LCALL WINDU ;温度LCALL YAOKONG ;遥控LJMP XSUMAIN:LCALL DINGSHISHU ;定时数LCALL DINGSHIZU ;定时组LCALL XPX ;星期几LCALL SHIJIAN ;时间LCALL WENDUCHULILCALL WINDU ;温度LCALL TIR0SETB P2.5 ;-----完全相等---关闹CLR P2.6 ;-----完全相等---关闹MAIN1:CLR P2.7LCALL SHIJIAN ;时间LCALL JP0 ;键盘LCALL POWER ;遥控处理;----------------------MOV A,2CHCJNE A,RR3,MAIN2 ;RR3为分计LJMP MAIN3 ;定义十秒锺扫一次温度MAIN2:MOV 2CH,RR3LCALL WENDUCHULI ;温度处理LCALL WINDU ;温度MAIN3:MOV A,RR0 ;分有变动就扫描定时CJNE A,RR4,MAIN4 ;RR4为分LJMP MAIN1MAIN4:MOV RR0,RR4LCALL BIJIAO ;定时比较LJMP MAIN1;=============温度处理====================== WENDUCHULI:LCALL WENDUXS ;读写子程序MOV A,21HMOV R0,#20HXCHD A,@R0ANL A,#0FHMOV 21H,A ;21H小数处理MOV A,20HSWAP A ;20整数处理MOV 20H,AJB 07H,WENDUCHULI1;是负数转MOV WD4,26H ;清除负数标示LCALL WENDUCHULI0 ;写整数个位MOV WD2,ALCALL WENDUCHULI0 ;写整数十位MOV WD1,AMOV A,21H ;写小数位MOV B,#02DIV ABMOV B,AADD A,BADD A,#30HMOV WD3,A ;写小数位RETWENDUCHULI1:;负数处理.....MOV WD4,27H ;负数标示MOV A,20H ;20整数处理CPL A ;取反ANL A,#7FH ;清负数位INC A ;加一MOV 20H,A ;20整数处理MOV A,21H ;21H小数处理CPL A ;取反ANL A,#0FH ;清除高位INC A ;加一MOV 21H,A ;21H小数处理LCALL WENDUCHULI0 ;写整数个位MOV WD2,ALCALL WENDUCHULI0 ;写整数十位MOV WD1,AMOV A,21H ;写小数位MOV B,#02DIV ABMOV B,AADD A,BADD A,#30HMOV WD3,A ;写小数位RET;------------整数写子程序-------- WENDUCHULI0:MOV A,20H ;整数写子程序MOV B,#10DIV ABMOV 20H,AMOV A,BADD A,BADD A,#30H ;整数写子程序RET;======写数据========= WENDUXS:LCALL WENDURSTJB 70H,WENDUXS1 ;检复位成功了转RETWENDUXS1:MOV A,#0CCH ;跳过ROMLCALL WENDUXS_BMOV A,#44HLCALL WENDUXS_B ;RAM温度转换MOV R4,#50D1: ;等待750uS转换完成MOV R5,#13DJNZ R5,$DJNZ R6,D1;======读数据==============LCALL WENDURSTJB 70H,WENDUDS1 ;检复位成功了转RETWENDUDS1:MOV A,#0CCH ;跳过ROMLCALL WENDUXS_BMOV A,#0BEH ;读RAMLCALL WENDUXS_BLCALL WENDUDX_B ;调读子程序RET;-----读数子程序-----------WENDUDX_B:MOV R0,#20HMOV R4,#02WENDUDX_B0:MOV R5,#08HWENDUDX_B1:CLR CSETB P3.3NOPNOPNOPNOPCLR P3.3NOPNOPNOPNOPNOPNOPSETB P3.3MOV R6,#18DJNZ R6,$ ;13uSMOV C,P3.3MOV R6,#46DJNZ R6,$RRC ADJNZ R5,WENDUDX_B1MOV @R0,AINC R0DJNZ R4,WENDUDX_B0RET;====写数据子程序======WENDUXS_B:MOV R5,#08HCLR CWENDUXS_B0:CLR P3.3MOV R6,#12DJNZ R6,$RRC AMOV P3.3,CMOV R6,#49DJNZ R6,$SETB P3.3NOPNOPDJNZ R5,WENDUXS_B0SETB P3.3RET;===========18B20初始化子程序=============== WENDURST:SETB P3.3NOPNOPCLR P3.3MOV R5,#255WENDURST1: ;复位低电时间510uSNOPNOPDJNZ R5,WENDURST1;复位低电时间510uSSETB P3.3MOV R5,#60 ;等待检测存在脉冲15uSDJNZ R5,$ ;等待检测存在脉冲15uSJNB P3.3,WENDURSTOK ;有存在脉冲转CLR 70H ;无存在脉冲清除标号RETWENDURSTOK:MOV R5,#180 ;测存在脉冲240uSDJNZ R5,$SETB 70H ;有存在脉冲打上标号SETB P3.3RET;============遥控按键处理========================== POWER:MOV A,5FHCJNE A,#0B7H,POWER1LCALL YAOKONG1MOV 5FH,#00HRETPOWER1:MOV A,5FHCJNE A,#0A7H,POWER2LCALL YAOKONG2MOV 5FH,#00HRETPOWER2:MOV A,5FHCJNE A,#97H,POWER3LCALL YAOKONG3MOV 5FH,#00HRETPOWER3:MOV A,5FHCJNE A,#0FH,POWER4LCALL YAOKONG4MOV 5FH,#00HRETPOWER4:MOV A,5FHCJNE A,#0C7H,POWER5 LCALL YAOKONG5 MOV 5FH,#00HRETPOWER5:MOV A,5FHCJNE A,#4FH,POWER6 LCALL YAOKONG6 MOV 5FH,#00HRETPOWER6:MOV A,5FHCJNE A,#0E7H,POWER7 LCALL YAOKONG7 MOV 5FH,#00HRETPOWER7:MOV A,5FHCJNE A,#27H,POWER8 LCALL YAOKONG8 MOV 5FH,#00HRETPOWER8:MOV A,5FHCJNE A,#0D7H,POWER9 LCALL YAOKONG9 MOV 5FH,#00HRETPOWER9:MOV A,5FHCJNE A,#47H,POWER0 LCALL YAOKONG0 MOV 5FH,#00H POWER0:RET;====================================== ;=========定时比较==================== BIJIAO:BJ0:MOV A,RR8CJNE A,#4DH,BJ1 ;今天星期一吗?MOV R1,#1EHMOV R0,#10HLCALL BJ00RETBJ1:CJNE A,#4FH,BJ2MOV R1,#18HMOV R0,#10HLCALL BJ00RETBJ2:CJNE A,#51H,BJ3MOV R1,#19HMOV R0,#10HLCALL BJ00RETBJ3:CJNE A,#53H,BJ4MOV R1,#1AHMOV R0,#10HLCALL BJ00RETBJ4:CJNE A,#55H,BJ5MOV R1,#1BHMOV R0,#10HLCALL BJ00RETBJ5:CJNE A,#57H,BJ6MOV R1,#1CHMOV R0,#10HLCALL BJ00RETBJ6:CJNE A,#59H,BJ7MOV R1,#1DHMOV R0,#10HLCALL BJ00RETBJ7:LJMP BIJIAO;=========================BJ00: ;是的MOV R5,#08HBJ001:MOVX A,@R1CJNE A,#60H,BJ01 ;第一组的星期一\开了吗? BJ003:MOV A,R1ADD A,#10HMOV R1,AMOV A,R0ADD A,#10HMOV R0,ADJNZ R5,BJ001RETBJ01:LCALL BJBRAL ;调比较程序INC R0INC R0INC R0INC R0LCALL BJBRAR ;调比较程序DEC R0DEC R0DEC R0DEC R0LJMP BJ003;----------子程序-------------BJBRAL:PUSH 00HMOVX A,@R0CJNE A,RR7,BJRALRET ;RAL0=RR7?,不等返回INC R0MOVX A,@R0CJNE A,RR6,BJRALRET ;RAL1=RR6?,不等返回INC R0MOVX A,@R0CJNE A,RR5,BJRALRET ;RAL2=RR5?,不等返回INC R0MOVX A,@R0CJNE A,RR4,BJRALRET ;RAL3=RR4?,不等返回CLR P2.5 ;-----完全相等---开闹SETB P2.6 ;-----完全相等---开闹LJMP BJRALRETBJBRAR:PUSH 00HMOVX A,@R0CJNE A,RR7,BJRALRET ;RAL0=RR7?,不等返回INC R0MOVX A,@R0CJNE A,RR6,BJRALRET ;RAL1=RR6?,不等返回INC R0MOVX A,@R0CJNE A,RR5,BJRALRET ;RAL2=RR5?,不等返回INC R0MOVX A,@R0CJNE A,RR4,BJRALRET ;RAL3=RR4?,不等返回SETB P2.5 ;-----完全相等---关闹CLR P2.6 ;-----完全相等---关闹BJRALRET:POP 00HRET;======================================== ;=======键盘========================JP0:SETB P3.4SETB P3.5SETB P3.6SETB P3.7JP:JNB P3.4,JP1 ;TEST第一次检查JNB P3.5,JP2 ;ALTEST第一次检查JNB P3.6,SNOOZERET ;返回MAINJP1: ;TEST第二次检查LCALL SHIJIAN ;显示时间LCALL XPX ;显示星期几JNB P3.4,JP1LJMP TESETJP2: ;ALTEST第二次检查LCALL SHIJIAN ;显示时间LCALL XPX ;显示星期几JNB P3.5,JP2LJMP ALSETSNOOZE: ;ALTEST第二次检查LCALL SHIJIAN ;显示时间LCALL XPX ;显示星期几JNB P3.5,SNOOZESETB P2.5CLR P2.6RET;-------TEST处理地址--------------- TESET: ;TEST处理地址LCALL SHIJIAN ;显示时间JNB P3.4,TESETTESET1:MOV R3,#70H ;选定LCALL SHIJIAN ;显示时间LCALL XPX ;显示星期几JNB P3.5,XQ0 ;转星期?JNB P3.6,HR0 ;转时JNB P3.7,MIN0 ;转分JNB P3.4,TESETO ;转返回LJMP TESET1 ;重复检查XQ0: ;星期?二次检查LCALL SHIJIAN ;显示时间LCALL XPX ;显示星期几JNB P3.5,XQ0LJMP XQHR0: ;时二次检查LCALL SHIJIAN ;显示时间LCALL XPX ;显示星期几JNB P3.6,HRLJMP TESET1MIN0: ;分二次检查LCALL SHIJIAN ;显示时间LCALL XPX ;显示星期几JNB P3.7,MINLJMP TESET1TESETO: ;返回二次检查MOV R3,#00HLCALL SHIJIAN ;显示时间LCALL XPX ;显示星期几JNB P3.4,TESETOLJMP RESXQ: ;星期?处理程序INC RR8INC RR8LCALL XQCJMLJMP TESET1HR: ;时处理程序INC RR6INC RR6LCALL HRCJMLJMP TESET1MIN: ;分处理程序INC RR4INC RR4LCALL MINCJMLJMP TESET1RES:MOV R3,#00H ;取消选定RET ;返回MAIN;------ALTEST处理地址--------------- ALSET: ;ALTEST处理地址LCALL SHIJIANLCALL XPXJNB P3.5,ALSETALSET1:MOV R3,#00HLCALL SHIJIANLCALL XPXMOV R3,#70HMOV 05H,#70HLCALL XRXSLCALL DINGSHISHULCALL DINGSHIZUJNB P3.5,ALSETOJNB P3.4,ALSETRRLL00JNB P3.6,XQZURRLLLJMP ALSET1XQZURRLL:LJMP XQZURRLL00 ALSETO: ;返回二次检查MOV R3,#00HMOV 05H,#00HLCALL SHIJIAN ;显示时间LCALL XPX ;显示星期几JNB P3.5,ALSETO ;返回LJMP ALRESALRES:LCALL DINGSHIZULCALL DINGSHISHU ;定时数RET ;返回MAIN;--------------------------------------ALSETRRLL00: ;返回二次检查LCALL SS50mSJNB P3.4,ALSETRRLL00MOV R3,#00HLCALL DINGSHISHUMOV 05H,#00HLCALL DINGSHIZU ALSETRRLL01:JNB P3.7,ALSETADD00JNB P3.4,ALSETRRLL10MOV R3,#70HLCALL DINGSHISHU12LJMP ALSETRRLL01ALSETADD00:LCALL SS50mSJNB P3.7,ALSETADD01LJMP ALSETRRLL01 ALSETADD01:LCALL DINGSHISHU12INC RAL1INC RAL1MOV A,#34HCJNE A,RAL0,ALSETADD02MOV A,#38HCJNE A,RAL1,ALSETRRLL01 MOV RAL1,#30HMOV RAL0,#30HLJMP ALSETRRLL01ALSETADD02:MOV A,#44HCJNE A,RAL1,ALSETRRLL01 MOV RAL1,#30HINC RAL0INC RAL0LJMP ALSETRRLL01;------------------------------------------- ALSETRRLL10: ;返回二次检查LCALL SS50mSJNB P3.4,ALSETRRLL10MOV R3,#00HLCALL DINGSHISHU ALSETRRLL11:JNB P3.7,ALSETADD10JNB P3.4,ALSETRRLL20MOV R3,#70HLCALL DINGSHISHU34LJMP ALSETRRLL11ALSETADD10:LCALL SS50mSJNB P3.7,ALSETADD11LJMP ALSETRRLL11 ALSETADD11:LCALL DINGSHISHU34INC RAL3INC RAL3MOV A,#44HCJNE A,RAL3,ALSETRRLL11 MOV RAL3,#30HINC RAL2 ;分INC RAL2MOV A,#3CHCJNE A,RAL2,ALSETRRLL11 MOV RAL2,#30HLJMP ALSETRRLL11;------------------------------------- ALSETRRLL20: ;返回二次检查LCALL SS50mSJNB P3.4,ALSETRRLL20MOV R3,#00HLCALL DINGSHISHU ALSETRRLL21:JNB P3.7,ALSETADD20JNB P3.4,ALSETRRLL30MOV R3,#70HLCALL DINGSHISHU56LJMP ALSETRRLL21ALSETADD20:LCALL SS50mSJNB P3.7,ALSETADD21LJMP ALSETRRLL21 ALSETADD21:LCALL DINGSHISHU56INC RAR1INC RAR1MOV A,#34HCJNE A,RAR0,ALSETADD22MOV A,#38HCJNE A,RAR1,ALSETRRLL21 MOV RAR1,#30HMOV RAR0,#30HLJMP ALSETRRLL21ALSETADD22:MOV A,#44HCJNE A,RAR1,ALSETRRLL21MOV RAR1,#30HINC RAR0INC RAR0LJMP ALSETRRLL21;-----------------------------------------ALSETRRLL30: ;返回二次检查LCALL SS50mSJNB P3.4,ALSETRRLL30MOV R3,#00HLCALL DINGSHISHUALSETRRLL31:JNB P3.7,ALSETADD30JNB P3.4,ALSETRRLL40MOV R3,#70HLCALL DINGSHISHU78LJMP ALSETRRLL31ALSETRRLL40:MOV R3,#00HLCALL BCXH;=================保存数值=========== LJMP ALSET1ALSETADD30:LCALL SS50mSJNB P3.7,ALSETADD31LJMP ALSETRRLL31ALSETADD31:LCALL DINGSHISHU78INC RAR3INC RAR3MOV A,#44HCJNE A,RAR3,ALSETRRLL31MOV RAR3,#30HINC RAR2 ;分INC RAR2MOV A,#3CHCJNE A,RAR2,ALSETRRLL31MOV RAR2,#30HLJMP ALSETRRLL31;-----------------?组---------------XQZURRLL00:LCALL SS50mSJNB P3.6,XQZURRLL00;如果为0(不放键)等待MOV R3,#00HLCALL DINGSHISHUMOV 05H,#00HLCALL DINGSHIZU;清除全部颜色选定XQZURRLL01:MOV R3,#00HMOV 05H,#00HLCALL XRXSLCALL DINGSHIZULCALL DINGSHISHUXQZURRLL011:JNB P3.7,XQZUADD00;按加键加JNB P3.6,XQZURRLL10 ;按RRLL换下一个或返回MOV 05H,#70H ;选定要调的颜色LCALL DINGSHIZU1 ;选定要调的颜色LJMP XQZURRLL011XQZUADD00:JNB P3.7,XQZUADD00 ;加键有用吗?XQZUADD01: ;有用加一次LCALL DINGSHIZU1INC RAINC RAMOV A,#70HCJNE A,RA,XQZURRLL01MOV RA,#62HLJMP XQZURRLL01;---------------------- 一-------------XQZURRLL10:LCALL SS50mSJNB P3.6,XQZURRLL10;如果为0(不放键)等待MOV 05H,#00HLCALL DINGSHIZU;清除全部颜色选定XQZURRLL11:JNB P3.7,XQZUADD10;按加键加JNB P3.6,XQZURRLL20 ;按RRLL换下一个或返回;================= MOV 05H,#70H ;选定要调的颜色LCALL DINGSHIZU2 ;选定要调的颜色LJMP XQZURRLL11 ;循环XQZUADD10:JNB P3.7,XQZUADD10 ;加键有用吗?XQZUADD11: ;有用加一次LCALL DINGSHIZU2MOV A,#62HCJNE A,RA1,FG10MOV RA1,#60HLJMP XQZURRLL11FG10:MOV RA1,#62HLJMP XQZURRLL11;--------------- 二XQZURRLL20:LCALL SS50mSJNB P3.6,XQZURRLL20;如果为0(不放键)等待MOV 05H,#00HLCALL DINGSHIZU;清除全部颜色选定XQZURRLL21:JNB P3.7,XQZUADD20;按加键加JNB P3.6,XQZURRLL30 ;按RRLL换下一个或返回;==MOV 05H,#70H ;选定要调的颜色LCALL DINGSHIZU3 ;选定要调的颜色LJMP XQZURRLL21 ;循环;--------XQZUADD20:JNB P3.7,XQZUADD20 ;加键有用吗?XQZUADD21: ;有用加一次LCALL DINGSHIZU3MOV A,#64HCJNE A,RA2,XQZURRLL210MOV RA2,#60HLJMP XQZURRLL21XQZURRLL210:MOV RA2,#64HLJMP XQZURRLL21;--------------- 三XQZURRLL30:LCALL SS50mSJNB P3.6,XQZURRLL30;如果为0(不放键)等待MOV 05H,#00HLCALL DINGSHIZU;清除全部颜色选定XQZURRLL31:JNB P3.7,XQZUADD30;按加键加JNB P3.6,XQZURRLL40 ;按RRLL换下一个或返回;== MOV 05H,#70H ;选定要调的颜色LCALL DINGSHIZU4 ;选定要调的颜色LJMP XQZURRLL31 ;循环XQZUADD30:JNB P3.7,XQZUADD30 ;加键有用吗?XQZUADD31: ;有用加一次LCALL DINGSHIZU4MOV A,#66HCJNE A,RA3,XQZURRLL310MOV RA3,#60HLJMP XQZURRLL31XQZURRLL310:MOV RA3,#66HLJMP XQZURRLL31;--------------- 四XQZURRLL40:LCALL SS50mSJNB P3.6,XQZURRLL40;如果为0(不放键)等待MOV 05H,#00HLCALL DINGSHIZU;清除全部颜色选定XQZURRLL41:JNB P3.7,XQZUADD40;按加键加JNB P3.6,XQZURRLL50 ;按RRLL换下一个或返回;== MOV 05H,#70H ;选定要调的颜色LCALL DINGSHIZU5 ;选定要调的颜色LJMP XQZURRLL41 ;循环XQZUADD40:JNB P3.7,XQZUADD40 ;加键有用吗?XQZUADD41: ;有用加一次LCALL DINGSHIZU5MOV A,#68HCJNE A,RA4,XQZURRLL410MOV RA4,#60HLJMP XQZURRLL41XQZURRLL410:MOV RA4,#68HLJMP XQZURRLL41;--------------- 五XQZURRLL50:LCALL SS50mSJNB P3.6,XQZURRLL50;如果为0(不放键)等待MOV 05H,#00HLCALL DINGSHIZU;清除全部颜色选定XQZURRLL51:JNB P3.7,XQZUADD50;按加键加JNB P3.6,XQZURRLL60 ;按RRLL换下一个或返回;== MOV 05H,#70H ;选定要调的颜色LCALL DINGSHIZU6 ;选定要调的颜色LJMP XQZURRLL51 ;循环XQZUADD50:JNB P3.7,XQZUADD50 ;加键有用吗?XQZUADD51: ;有用加一次LCALL DINGSHIZU6MOV A,#6AHCJNE A,RA5,XQZURRLL510MOV RA5,#60HLJMP XQZURRLL51XQZURRLL510:MOV RA5,#6AHLJMP XQZURRLL51;--------------- 六XQZURRLL60:LCALL SS50mSJNB P3.6,XQZURRLL60;如果为0(不放键)等待MOV 05H,#00HLCALL DINGSHIZU;清除全部颜色选定XQZURRLL61:JNB P3.7,XQZUADD60;按加键加JNB P3.6,XQZURRLL70 ;按RRLL换下一个或返回;== MOV 05H,#70H ;选定要调的颜色LCALL DINGSHIZU7 ;选定要调的颜色LJMP XQZURRLL61 ;循环XQZUADD60:JNB P3.7,XQZUADD60 ;加键有用吗?XQZUADD61: ;有用加一次LCALL DINGSHIZU7MOV A,#6CHCJNE A,RA6,XQZURRLL610MOV RA6,#60HLJMP XQZURRLL61XQZURRLL610:MOV RA6,#6CHLJMP XQZURRLL61;--------------- 日XQZURRLL70:LCALL SS50mSJNB P3.6,XQZURRLL70;如果为0(不放键)等待MOV 05H,#00HLCALL DINGSHIZU;清除全部颜色选定XQZURRLL71:JNB P3.7,XQZUADD70;按加键加JNB P3.6,XQZURRLL80 ;按RRLL换下一个或返回;== MOV 05H,#70H ;选定要调的颜色LCALL DINGSHIZU8 ;选定要调的颜色LJMP XQZURRLL71 ;循环XQZURRLL80:LCALL BCXHLJMP ALSET1XQZUADD70:JNB P3.7,XQZUADD70 ;加键有用吗?XQZUADD71: ;有用加一次LCALL DINGSHIZU8MOV A,#6EHCJNE A,RA7,XQZURRLL710MOV RA7,#60HLJMP XQZURRLL71XQZURRLL710:MOV RA7,#6EHLJMP XQZURRLL71;++++++++++++写入显示++++++++++++XRXS:MOV A,#62HCJNE A,RA,XRXS1MOV DPTR,#10HLCALL XRXSBRETXRXS1:MOV A,#64HCJNE A,RA,XRXS2MOV DPTR,#20HLCALL XRXSBRETXRXS2:MOV A,#66HCJNE A,RA,XRXS3MOV DPTR,#30HLCALL XRXSBRETXRXS3:MOV A,#68H CJNE A,RA,XRXS4 MOV DPTR,#40H LCALL XRXSB RETXRXS4:MOV A,#6AH CJNE A,RA,XRXS5 MOV DPTR,#50H LCALL XRXSB RETXRXS5:MOV A,#6CH CJNE A,RA,XRXS6 MOV DPTR,#60H LCALL XRXSB RETXRXS6:MOV A,#6EH CJNE A,RA,XRXS7 MOV DPTR,#70H LCALL XRXSB RETXRXS7:RET;--------------- XRXSB:MOV R0,#71H MOV R6,#0FH XRXSB1:MOVX A,@DPTR MOV @R0,AINC DPTRINC R0DJNZ R6,XRXSB1RET;++++++++保存显示++++++++++++++++ BCXH:MOV A,#62HCJNE A,RA,BCXH1MOV DPTR,#10HLCALL BCXHBRETBCXH1:MOV A,#64HCJNE A,RA,BCXH2MOV DPTR,#20HLCALL BCXHBRETBCXH2:MOV A,#66HCJNE A,RA,BCXH3MOV DPTR,#30HLCALL BCXHBRETBCXH3:MOV A,#68HCJNE A,RA,BCXH4MOV DPTR,#40HLCALL BCXHBRETBCXH4:MOV A,#6AHCJNE A,RA,BCXH5MOV DPTR,#50HLCALL BCXHBRETBCXH5:MOV A,#6CHCJNE A,RA,BCXH6MOV DPTR,#60HLCALL BCXHBRETBCXH6:MOV A,#6EHCJNE A,RA,BCXH7MOV DPTR,#70HLCALL BCXHBRETBCXH7:RET;------------BCXHB:MOV R0,#71HMOV R6,#0FHBCXHB1:MOV A,@R0MOVX @DPTR,AINC R0INC DPTRDJNZ R6,BCXHB1RET;------------TEST累加处理程序-------------- MINCJM:MOV A,#44HCJNE A,RR4,REDMOV RR4,#30HINC RR5 ;分INC RR5MOV A,#3CHCJNE A,RR5,REDRETHRCJM: ;时MOV A,#34HCJNE A,RR7,HRCJM2 MOV A,#38HCJNE A,RR6,HRCJM3 MOV RR6,#30HMOV RR7,#30H HRCJM3:RETHRCJM2:MOV A,#44HCJNE A,RR6,HRCJM3 MOV RR6,#30HINC RR7INC RR7RETXQCJM: ;星期MOV A,#5BHCJNE A,RR8,REDMOV RR8,#4DH RED:MOV R3,#00HRET;-----------中断子程序------ TI1:PUSH 0E0HMOV TL1,#0CHMOV TH1,#04HINC RR1CJNE A,RR1,RESETB P2.7MOV RR1,#00HINC RR2 ;秒1 INC RR2MOV A,#44HCJNE A,RR2,REMOV RR2,#30HINC RR3 ;秒2 INC RR3MOV A,#3CHCJNE A,RR3,REMOV RR3,#30HINC RR4 ;分1 INC RR4MOV A,#44HCJNE A,RR4,REMOV RR4,#30HINC RR5 ;分2 INC RR5MOV A,#3CHCJNE A,RR5,REMOV RR5,#30HINC RR6 ;时1 INC RR6MOV A,#34HCJNE A,RR7,HR2MOV A,#38HCJNE A,RR6,REMOV RR6,#30HMOV RR7,#30HINC RR8INC RR8MOV A,#5BHCJNE A,RR8,REXQXMOV RR8,#4DHLJMP REXQXHR2:MOV A,#44HCJNE A,RR6,REMOV RR6,#30HINC RR7INC RR7RE:POP 0E0HRETIREXQX:LCALL XPX ;星期几POP 0E0HRETI;============遥控外部中断处理程序=================== ITT00: ;外部中断处理程序PUSH 0E0HSETB RS1SETB RS0MOV R6,#0CHITT001:LCALL SS700uSJB P3.2,ITTREDJNZ R6,ITT001MOV TL0,#00H ;计时中断装入MOV TH0,#00HJNB P3.2,$ITT002:MOV R6,#05HITT003:LCALL SS700uSJNB P3.2,ITTREDJNZ R6,ITT003JB P3.2,$MOV R5,TH0MOV TL0,#00H ;计时中断装入MOV A,R5CLR CSUBB A,#32JC ITTREMOV A,R5SUBB A,#38JNC ITTREMOV R7,#04HITT8:MOV R6,#08HITT:LCALL SS700uSJNB P3.2,ITTREJB P3.2,$MOV R5,TH0MOV TL0,#00H ;计时中断装入MOV TH0,#00HMOV A,R5CLR CSUBB A,#06JC XE0XE1:MOV A,R0SETB CRLC AMOV R0,ALJMP ITT1XE0:MOV A,R0CLR CRLC AMOV R0,AITT1:CLR CDJNZ R6,ITTMOV 5FH,R0DJNZ R7,ITT8ITTRE:CLR RS1CLR RS0POP 0E0HRETI;===========地址定义=========================== XSU:;--------时间的地址写入--------MOV DPTR,#LCD24400MOV SU00,DPH ;数字2440-0的MOV SU01,DPLMOV DPTR,#LCD24401MOV SU10,DPH ;数字2440-1的MOV SU11,DPLMOV DPTR,#LCD24402MOV SU20,DPH ;数字2440-2的MOV SU21,DPLMOV DPTR,#LCD24403MOV SU30,DPH ;数字2440-3的MOV SU31,DPLMOV DPTR,#LCD24404MOV SU40,DPH ;数字2440-4的MOV SU41,DPLMOV DPTR,#LCD24405MOV SU50,DPH ;数字2440-5的MOV SU51,DPLMOV DPTR,#LCD24406MOV SU60,DPH ;数字2440-6的MOV SU61,DPLMOV DPTR,#LCD24407MOV SU70,DPHMOV SU71,DPL ;数字2440-7的MOV SU80,DPHMOV SU81,DPL ;数字2440-8的MOV DPTR,#LCD24409MOV SU90,DPH ;数字2440-9的MOV SU91,DPL;----------星期?的地址写入--------------MOV DPTR,#LCD3232RMOV SUZR0,DPH ;星期日的MOV SUZR1,DPLMOV DPTR,#LCD32321MOV SUZ10,DPH ;星期一的MOV SUZ11,DPLMOV DPTR,#LCD32322MOV SUZ20,DPH ;星期二的MOV SUZ21,DPLMOV DPTR,#LCD32323MOV SUZ30,DPH ;星期三的MOV SUZ31,DPLMOV DPTR,#LCD32324MOV SUZ40,DPH ;星期四的MOV SUZ41,DPLMOV DPTR,#LCD32325MOV SUZ50,DPH ;星期五的MOV SUZ51,DPLMOV DPTR,#LCD32326MOV SUZ60,DPH ;星期六的MOV SUZ61,DPL;----------定时星期?的地址写入-------------- MOV DPTR,#LCD1616GMOV GUAN0,DPH ;数字1616-关MOV GUAN1,DPLMOV DPTR,#LCD16161MOV SL10,DPH ;数字1616-一的MOV SL11,DPLMOV DPTR,#LCD16162MOV SL20,DPH ;数字1616-二的MOV SL21,DPLMOV SL30,DPH ;数字1616-三的MOV SL31,DPLMOV DPTR,#LCD16164MOV SL40,DPH ;数字1616-四的MOV SL41,DPLMOV DPTR,#LCD16165MOV SL50,DPH ;数字1616-五的MOV SL51,DPLMOV DPTR,#LCD16166MOV SL60,DPH ;数字1616-六的MOV SL61,DPLMOV DPTR,#LCD1616RMOV SL70,DPH ;数字1616-日的MOV SL71,DPL;=========定义寄出存器地址指定========== ;----------时间的-------------MOV R6,#6MOV R0,#46HCCRR:MOV @R0,#30HINC R0DJNZ R6,CCRR;---------温度的-------------MOV WD1,#30HMOV WD2,#30HMOV WD3,#30HMOV WD4,#3FH;-----------星期?的---------------MOV RR8,#4DH;----------定时的--一组-----------STC:MOV 8EH,#00HMOV DPTR,#10HMOV A,#30HMOV R6,#08MOV R5,#08STC1:MOVX @DPTR,AINC DPTRDJNZ R6,STC1MOV R6,#08MOV A,#60HSTC2:MOVX @DPTR,AINC DPTRDJNZ R6,STC2MOV R6,#08MOV A,#30HDJNZ R5,STC1MOV RAL0,#30H ;左MOV RAL1,#30H ;MOV RAL2,#30H ;MOV RAL3,#30H ;MOV RAR0,#30H ;右MOV RAR1,#30H ;MOV RAR2,#30H ;MOV RAR3,#30H ;MOV RA,#62H ; ;组MOV RA1,#62H ; 一MOV RA2,#64H ; 二MOV RA3,#66H ; 三MOV RA4,#68H ; 四MOV RA5,#6AH ; 五MOV RA6,#6CH ; 六MOV RA7,#6EH ; 日LJMP MAIN;===========中断设定============TIR0:SETB EASETB ET1SETB PT1SETB ET0 ;打开计时中断SETB EX0 ;打开外部中断SETB IT0 ;外部为边沿触发方式SETB TR0 ;开启计时中断MOV TMOD,#19HMOV TL1,#0CHMOV TH1,#04HMOV TL0,#00H ;计时中断装入MOV TH0,#00HSETB TR1RET;==============扫描桌面=========================;======================================================;==============活动字符================================;-------星期--------MOV R1,#00H ;写命高位令数MOV R3,#00H ;写高位数据数MOV R0,#04H ;命令与数据的总数50 51 52 53 20 21 22(22要分开)XPX:MOV DPTR,#LCDK32325 ;要写的数据与命令组LCALL LCDK ;写命令,与数据MOV R0,RR8MOV DPH,@R0INC R0MOV DPL,@R0LCALL LCDL3232RET;---------------------------;----------温度显示--------------------;-------温度左第1位--------WINDU:MOV DPTR,#LCDK24400 ;要写的数据与命令组LCALL LCDK ;写命令,与数据MOV R0,WD1MOV DPH,@R0INC R0MOV DPL,@R0LCALL LCDL2440;-------温度左第2位--------MOV DPTR,#LCDK24401 ;要写的数据与命令组LCALL LCDK ;写命令,与数据MOV R0,WD2MOV DPH,@R0INC R0MOV DPL,@R0LCALL LCDL2440;-------温度左第3位--------MOV DPTR,#LCDK24402 ;要写的数据与命令组LCALL LCDK ;写命令,与数据MOV R0,WD3MOV DPH,@R0INC R0MOV DPL,@R0LCALL LCDL2440;-------温度正负--------MOV DPTR,#LCDK24403 ;要写的数据与命令组LCALL LCDK ;写命令,与数据MOV R4,WD4LCALL WENDULCDLHRET;------------------------------;-----------时间显示-----------------;-----时间--左第1位,时位--------SHIJIAN:LCALL SS5mSMOV DPTR,#LCDK32480 ;要写的数据与命令组LCALL LCDK ;写命令,与数据MOV R0,RR7MOV DPH,@R0INC R0MOV DPL,@R0LCALL LCDL2440;-----时间--左第2位,时位--------MOV DPTR,#LCDK32481 ;要写的数据与命令组LCALL LCDK ;写命令,与数据MOV R0,RR6MOV DPH,@R0INC R0MOV DPL,@R0LCALL LCDL2440;-----时间--左第3位,分位--------MOV DPTR,#LCDK32482 ;要写的数据与命令组LCALL LCDK ;写命令,与数据MOV R0,RR5MOV DPH,@R0INC R0MOV DPL,@R0LCALL LCDL2440;-----时间--左第4位,分位--------MOV DPTR,#LCDK32483 ;要写的数据与命令组LCALL LCDK ;写命令,与数据MOV R0,RR4MOV DPH,@R0INC R0MOV DPL,@R0LCALL LCDL2440;------时间--左第5位,秒位--------MOV DPTR,#LCDK2440L ;要写的数据与命令组LCALL LCDK ;写命令,与数据MOV R0,RR3MOV DPH,@R0INC R0MOV DPL,@R0LCALL LCDL2440;------时间--左第6位,秒位--------MOV DPTR,#LCDK2440R ;要写的数据与命令组LCALL LCDK ;写命令,与数据MOV R0,RR2MOV DPH,@R0INC R0MOV DPL,@R0LCALL LCDL2440RET;----------------------------------------;---------------遥控彩块-显示------------------;---------遥控彩块--左1位-------------------------- YAOKONG:MOV 2FH,#00HMOV 2EH,#00HLCALL YAOKONG1LCALL YAOKONG2LCALL YAOKONG3LCALL YAOKONG4LCALL YAOKONG5LCALL YAOKONG6LCALL YAOKONG7LCALL YAOKONG8LCALL YAOKONG9LCALL YAOKONG0RET;-------------------YAOKONG1:MOV DPTR,#LCDK24241 ;要写的数据与命令组JNB 7FH,YAOKONG10CLR 7FHSETB P1.0LCALL LCDK ;写命令,与数据LCALL LCDLL ;写红的LCDLLRETYAOKONG10:SETB 7FH。
毕业设计(论文)-基于单片机的液晶显示器设计 精品

液晶显示已经是人机界面的关键技术。
本文对基于单片机的液晶显示控制技术进行了研究。
本文阐明单片机(89C51)控制LCD1602显示屏的方法。
首先本文阐述了LCD1602液晶屏的显示原理,随后通过在Proteus仿真软件上构建相关的仿真电路,并连接在Keil软件编写、编辑及编译生成的相关的.Hex驱动程序电路仿真,成功仿真出对所需内容的显示。
关键字:LCD1602、单片机、Proteus仿真1单片机介绍 (1)1.1 单片机发展概况 (1)1.2 单片机应用分类 (2)1.3 单片机基本组成结构 (3)1.4 单片机应用范围 (5)2 设计内容和意义 (7)1.1 设计的内容 (7)1.2 设计意义 (7)3 硬件电路 (8)3.1 89C51系统 (8)3.1.1 89C51 单片机的概述 (8)3.1.2 89C51 单片机管脚说明 (9)3.2 振荡电路外接晶体引脚 (11)3.3 复位电路 (12)3.4 LCD液晶显示屏 (13)3.4.1 LCD1602 简介 (13)3.4.2 LCD1602主要参数引脚功能 (14)3.4.3 LCD1602显示模指令集 (15)4 软件设计 (19)4.1 系统框图 (19)4.2 程序 (20)4.3系统电路图 (22)5 Proteus调试与仿真 (23)5.1 Proteus介绍 (23)5.1.1 功能特点: (24)5.1.2 智能原理图设计 (24)5.1.3 电路仿真功能 (24)5.1.4 协同仿真功能 (25)5.1.5 PROTEUES作用 (25)5.2 系统调试与仿真 (27)5.2.1 安装与调试 (27)5.2.2 仿真 (27)结论 (28)致谢 (29)参考文献 (30)1 单片机介绍1.1 单片机发展概况单片微型计算机简称单片机,是典型的嵌入式微控制器(MicrocontrollerUnit)常用英文字母的缩写MCU表示单片机,单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。
stm32tftlcd显示课程设计

stm32 tftlcd显示课程设计一、课程目标知识目标:1. 理解STM32的硬件结构和基本工作原理;2. 掌握TFT-LCD显示原理及与STM32的接口技术;3. 学会使用STM32CubeMX配置STM32外设及TFTLCD驱动程序;4. 了解嵌入式系统显示设计的基本流程和关键步骤。
技能目标:1. 能够独立使用STM32CubeMX配置STM32与TFTLCD的硬件接口;2. 能够编写并调试简单的显示程序,实现基本图形和文字的显示;3. 能够分析并解决显示过程中的常见问题;4. 培养学生的动手实践能力和团队协作能力。
情感态度价值观目标:1. 培养学生对嵌入式系统显示技术的兴趣,提高学生的探究欲望;2. 增强学生对科技创新和社会责任的认识,激发学生为我国电子产业发展贡献力量的信心;3. 培养学生严谨、细致的学习态度,树立良好的工程素养。
本课程针对高年级电子信息工程及相关专业学生,结合STM32和TFTLCD的硬件特性,注重理论与实践相结合,旨在提高学生的嵌入式系统设计能力和实际操作技能。
课程目标具体、可衡量,便于教学设计和评估,有助于学生和教师清晰了解课程预期成果。
1. STM32硬件结构与工作原理:介绍STM32的内部结构、时钟系统、GPIO、中断系统等基础知识,为学生理解STM32与TFTLCD的接口技术打下基础。
教材章节:第1章 STM32微控制器概述。
2. TFTLCD显示原理:讲解液晶显示原理、驱动方式、色彩模型等,使学生了解TFTLCD的基本工作原理。
教材章节:第2章 TFTLCD显示原理。
3. STM32与TFTLCD接口技术:详细讲解STM32与TFTLCD的硬件连接、时序控制、驱动配置等内容,帮助学生掌握嵌入式系统显示设计的关键技术。
教材章节:第3章 TFTLCD接口技术与驱动配置。
4. STM32CubeMX使用方法:通过实例演示如何使用STM32CubeMX配置STM32外设及TFTLCD驱动程序,提高学生的实际操作能力。
基于51单片机的TFT液晶显示设计分析

工业技术科技创新导报 Science and Technology Innovation Herald40我国计算机的应用和软件系统的设计开发在不断加强,极大地推动了以电子元件为主体的销售市场。
而51单片机作为一种非常常见的单片机,尽管在内部资源的存储和相关数据的处理速度上远不及一些最新的高度单片机,但是以其廉价和适用范围广泛的优势,同时受到广大开发者的一致好评。
其中51单片机是最常用的T F T 液晶显示的方法,故该文主要探讨的就是基于51单片机的T F T 液晶显示设计。
通过对于硬件系统设计中最小系统、T F T 液晶显示、时钟、温度采集以及电路设置的分析,还有软件系统设计的分析,包括主程序设计、系统显示子程序设计以及芯片子程序设计等,进一步了解整个液晶显示的设计过程。
1 硬件设计分析基于51单片机的TF T 液晶显示设计的系统硬件电路中,大致包含单片机最小系统、T F T 液晶显示电路、设置电路、时钟电路和温度采集电路等几个重要的组成部分,如图1所示。
1.1 51单片机的最小系统单片机最小系统主要包含了外部晶振和电源,以及复位电路等,在这些基本条件的共同作用下,就能够保证整个单片机系统的正常运转了,也更加方便控制整个系统。
从D S 18B20的实际芯片温度数据中,可以将DS1302的芯片数据进行读取或写入,形成日历和时钟数据,经过相应的检测程序来检验是否需要进行按键或者相应的一些操作。
最后在显示驱动芯片中写入相应的数据,就可以在整个TF T 液晶显示屏幕上将所需的内容全部显示出来了。
1.2 TFT液晶显示电路根据调查和相应的研究表明,TF T 液晶显示的芯片可以有很多种不同的选择,该文当中笔者所采用的一种I LI 9325的芯片,这个芯片可以支持320×240(QVGA)的实际分辨率,同时在它的内部安置了173 k B的R A M,所以它的最高显示能够达到26万色。
其中I L I 9325所支持的一种接口方式是8/9/16/18位i80的系统总线,SPI总线、RGB和VSY NC的接口。
基于51单片机的TFT液晶显示设计

基于51单片机的TFT液晶显示设计0 引言51单片机作为一种常见的通用单片机,虽然其内部资源,处理速度等都无法与新型高速单片机相提并论,但其低廉的价格,极低的入门难度以及适用于简单场合应用等特点,依然是开发者的常用选择之一。
用51单片机驱动液晶模块通常都使用1602和12864等极为简单的液晶模块,这里介绍用51单片机驱动QVGA分辨率的TFT液晶模块,以实现彩色和更为复杂的内容显示的方法。
同时,本文还将使用DS1302芯片和DS18B20芯片来实现在液晶屏上显示实时时钟和温度。
1 硬件设计本系统硬件电路的设计主要包括单片机最小系统电路, TFT液晶显示电路,时钟电路,设置电路以及温度采集电路。
其系统工作原理框图。
图1 硬件系统原理框图1.1 单片机最小系统一个单片机的最小系统包括外部晶振、电源、复位电路等,这是保证单片机正常工作的必要条件。
通过单片机可控制整个系统,包括读取DS18B20芯片的温度数据,读取/写入DS1302芯片的日历时钟数据,检测是否有按键按下并进行相应的操作,最后还要向显示驱动芯片写入数据,以使得TFT液晶屏上能够显示所需的内容。
1.2 液晶显示电路驱动TFT液晶面板的芯片有多种选择,本文使用的是台湾奕力科技的ILI9325芯片。
该芯片能够支持320×240 (QVGA) 分辨率,同时内置173KB的RAM,故其最高能显示26万色。
ILI9325支持的接口方式有8/9/16/18位i80系统总线、SPI总线、RGB接口和VSYNC 接口。
它的总线式接口电路方式是把液晶显示器看作外部的数据存储器,它访问液晶显示器就像访问数据存储器的一个单元一样,采用这种方式能充分发挥单片机的总线读写功能优势,而且便于升级和扩展。
由于本文采用的STC89C54RD+单片机并没有SPI总线,因此,为了节约IO的使用,本文最终采用8位系统总线的方式来连接ILI9325芯片。
其显示部分电路。
基于C51单片机对液晶显示的实验设计

}
for(num=0;num《16;num++)
{
write_com(0x18);//整个屏幕左移
delay(20);
}
while(1);//停止
}
//在液晶屏上显示一串字符
#include
#define uchar unsigned char
#define uint unsigned int
uchar code table[]=“I LIKE MCU!”;
uchar code table1[]=“TAO XIAO SHOU”;
//端口设置
sbit lcden=P3_;
lcden=1;//启动使能,向存储器写
delay(5);
lcden=0;//写完关闭使能
}
//写数据
void write_data(uchar date)
{
lcdrs=1;//写数据
P0=date;
delay(5);
lcden=1;//启动使能
delay(5);
lcden=0;
}
//初始化子程序
void init()
sbit lcdrs=P3_;
uchar num;
//延时函数
void delay(uint z)
{
uint x,y;
for(x=z;x》0;x--)
for(y=110;y》0;y--);
}
//写命令
void write_com(uchar com){lcdrFra bibliotek=0;//写命令
P0=com;
delay(5);
write_com(0x0e);//显示开关与光标设置
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本科生毕业论文基于单片机的TFT液晶显示设计学号:2010642028姓名:王彩月年级:10 级系别:物理化学系专业:电子信息科学与技术指导教师:杨景昱完成日期: 2014年4月20 日承诺书本人承诺所呈交的毕业论文(设计)是我在指导教师指导下进行研究工作所取得的研究成果。
据查证,除了文中特别加以标注的地方外,论文中不包含他人已经发表或撰写过的研究设计成果。
若本论文(设计)及资料与以上承诺内容不符,本人愿意承担一切责任。
毕业论文(设计)作者签名:日期:年月日摘要 (I)Abstract (II)前言 (1)第1章课题背景 (2)1.1 国内现状 (2)1.2 国外现状 (2)1.3 本文研究内容 (3)第2章硬件设计 (4)2.1 系统分析 (4)2.1.1 利用单片机控制TFT显示屏原理图 (4)2.1.2 可行性及需求分析 (6)2.2 本章小结 (6)第3章软件系统工作原理 (7)3.1 总体设计 (7)3.2 软件实现功能 (8)3.2.1 中英文显示程序设计 (8)3.2.2 图片显示程序设计 (8)第4章软件测试 (10)4.1 调试环境 (10)4.2 本章小结 (11)结论 (12)参考文献 (13)致谢 (14)附录 (15)本文提出的TFT液晶显示屏控制系统以单片机(STC12LE5A60S2)为核心,由控制部分、显示部分(320*240TFT)组成。
该系统大部分功能通过硬件来实现,电路简单明了,系统稳定性很高。
这套彩屏控制系统可以方便地实现图片显示,中英文显示的功能,并通过与单片机连接可以实现对屏幕的清屏初始化操作,还可以连接相应的外围电路,使其发挥更大的作用。
本文首先描述系统硬件工作原理,并附以系统结构框图加以说明,着重介绍了本系统所应用的各硬件模块的功能和它的工作过程;其次,详细阐述了程序的各个模块及其实现过程。
本系统的主要设计思想是以硬件为基础,软件和硬件相结合,最终实现各个模块的功能。
关键词:单片机;STC12LE5A60S2;320*240TFT;TFT液晶显示屏控制AbstractIn this paper, TFT LCD display control system with single chip microcomputer (STC12LE5A60S2) as the core, by control parts, display (320 * 240 TFT). Most of the system function by hardware, circuit is simple and clear, the system stability is very high.Picture shows the color screen control system can be easily, in both Chinese and English display function, and through the connected to the microcontroller can realize to the screen screen clearing initialization, also can connect the corresponding peripheral circuit, make it play a bigger role.This paper describes the working principle of the system hardware, each accompanied by a diagram of the system structure, introduced this system by the application of the hardware module function and its working process; Second, expounds the procedures of each module in detail and its implementation process. The main design idea of this system is based on the hardware, software and hardware combination, finally realizes the function of each module.Keywords: SCM; STC12LE5A60S2; 320*240TFT; TFT-LCD前言液晶显示器(TFT-LCD)大多是用一个可编程接口驱动,控制方便,体积小,功耗低,可以实现良好的人机界面[1],在智能设备尤其是便携式工具中被广泛使用,在许多行业中TFT-LCD已成为当代最重要的高新技术产业,信息显示屏必备模式。
现在,人类社会已进入信息时代,人们从视觉接收信息有80%,任何获取信息的方式,最终都需要通过信息显示,实现人机交流,在各种显示技术中,因为液晶显示器具有低工作电压,低功耗等优点,使其成为发展最快[2],被最广泛使用的,TFT液晶显示不只能替换某些其他显示设备,也大大扩展了显示设备的应用范围,现在世界上最节能的显示产品之一就是液晶产品,显示器使用便携几乎是最好的选择,电脑、手机、CPS、笔记本计算机、PDA、电子词典、数码相机、便携式智能仪器仪表的应用随着产业发展和经济生活水平的提高,对液晶显示器的要求将会各种各样[3]。
因此,液晶显示装置的开发,设计,应用,具有十分重要的意义。
现在,世界上的生产液晶厂商主要有三星,华映,夏普,富士通,日立,中国大陆液晶显示器及相关产业近几年取得了很大的进步,我国已经成为全球发展最迅速的国家,有着比较惊人的市场潜力。
介绍了系统硬件工作原理,并利用系统结构框图说明各硬件模块的功能和工作流程,比较系统的叙述了程序的主要模块和他的实现过程。
第1章课题背景目前TFT液晶显示屏在笔记本电脑、智能手机、电视、LCD显示器和其他设备等领域大范围使用,发展速度很快,受到了大家的关注。
从液晶显示技术未来的发展走势来看,其本身具有高亮度、解析度高、视角宽、成本低以及功耗低等优势[4]。
液晶显示器件正在快速推进其平板化的发展这是信息产业的重要组成部分。
现在的社会已经步入信息革命的时代,LCD显示器件和LCD显示技术在发展中有非常重要的位置,电话、电视、笔记本电脑等设备和各种仪器设备上的液晶显示屏给大家平常生活、工作提供了很多的信息。
没有显示器件信息技术不会像现在这样快速的发展。
通信、显示及信息处理被认为是电子产业在20世纪计算机、微电子之后很大的发展项目。
科学技术的发展迅速导致显示技术也在发生重大革命,尤其是90年代以来,市场需求的急剧增长使显示技术有了更大突破,在电子产业的发展快速崛起。
1.1 国内现状自八十年代开始经历了几次比较大的投资后,中国大陆成为全球最大的TN-LCD产业基地及主要的STN-LCD产业基地。
后又大范围步入TFT-LCD产业,我国逐渐进入世界液晶强国之列。
随后液晶显示器出现及TFT-LCD液晶显示器技术也被研究出来,可是技术尚未成熟仍有缺陷,不适合普及应用[5]。
八十年代末到九十年代初,TFT LCD液晶工业开始发展迅速,中国内地的信息产业发展速度几乎也一直保持着增长的状态,已经成为中国在电子产品行业重要支柱,TFT-LCD平板显示是信息产业比较看重的产品。
但是近期各产业投资明显上升,其国内投资产业好像还有点问题。
可是这些并不能影响大陆TFT液晶显示产业迅速发展的态势,所以显示产业是前景非常广阔发展机会又多的行业[6]。
1.2 国外现状液晶最开始是由美国人发现和投入实验的,并且得到了美国军方的关注推动了技术的研发,其正式被使用在商业用途是在十九世纪中成功地将液晶用在仪器的显示面板上并得到信息。
十九世纪后期成功地开发出以LCD为显示面板的计算器、手表等好多商业用品,随后陆续加大LCD的生产使其成为全世界显示器产业重要器件,日本是全球第一个将LCD显示器商业化的,是液晶显示器件产业的先行国家并拥有完整液晶产业链,与此同时在发展之初推进显示器生产设备的发展与前进[7]。
LCD领域投资大参与的厂商也多,一开始大量的研发投资有好多有名的家电厂商都参加了,但研发的生产的成果不是很好从芯片到各种材料通用性很差,大幅度增加成本,不方便厂商配套使用,使液晶产品的整个成本特别高,导致好多企业几乎都退出了液晶产业。
后来在韩国台湾等厂商的努力下使液晶成本下降,使市场需求又开始大幅度增长,各企业又纷纷重新调整政策,液晶产业发展速度又迅速上升,所以说其发展前景广阔机会多。
1.3 本文研究内容本课题的设计内容主要是以硬件为基础的设计,最后让软件与硬件结合使模块功能实现。
介绍了单片机的工作原理和TFT屏幕的特征。
在理论上先了解单片机的各个引脚功能,在进行硬件电路的连接,充分利用其功能并以单片机为核心,实现单片机与显示电路与外围电路的连接,最终达到了对屏控制的功能。
第2章硬件设计2.1 系统分析本课题系统设计要用C语言编写程序所以我选择了STC12LE5A60S2单片机做课题设计,STC系列单片机都是基于51内核的微控制器,国内宏晶科技公司生产,芯片RAM 1280KB,ROM 60KB单周期指令,而且是低压3.3V工作。
在SD卡和TFT液晶接口电平3.3V,单片机内带硬件PWM、SPI,对我这个系统有很大的好处,所以选择这块单片机进行控制。
然后是选用SSD1289控制芯片,3.2寸触摸TFT模块集成触摸控制IC、SD 卡座、3V稳压、分辨率240*320,它还集成控制器功能,由最高可达172800个字节(240*320*18/8)图形,嵌入直流转换器和电压发生器提供所需的所有必要的电压,SSD1289可降至1.16v和提供不同的省电模式。
它适用于任何便携式电池驱动的应用程序要求运行周期长和紧凑的尺寸。
SSD1289TFT的运转是都在一个驱动程序,集成的RAM电源电路,驱动程序和门源驱动程序到单片机。
它可以驱动一个262k彩色a-TFT面板RGB 240*240的分辨率。
它还集成控制器功能,由最高可达172800个字节(240*320*18/8)图形数据显示RAM(GDDRAM),以及对常见单片机通过8/9/16/18-bits 6800系列/8080系列兼容的并行接口或GDDRAM串行接口和存储数据。
辅助18-bits视频接口(VSYNC HSYNC DOTCLK,启用)集成到SSD1289显示动画形象。
SSD1289嵌入直流-直流转换器和电压发生器提供所需的所有必要的电压转用用最小的外部组件。