60、51单片机视频教程 HJ-C52 TFT彩屏显示实验
单片机控制tft触摸屏
![单片机控制tft触摸屏](https://img.taocdn.com/s3/m/aac360fcf90f76c661371a20.png)
《触摸屏技术》实验报告
2014——2015学年第二学期
班级:光电122
专业:信息显示与光电技术
姓名:
学号:
实验三:TFT2.4触摸彩屏
一、实验目的
1、通过本课程的学习让学生们掌握TFT2.4触摸彩屏接口定义与使用
2、通过本课程的学习掌握80C51的TFT2.4触摸彩屏使用
二、实验工具(软件、硬件等)
软件:Keil、Protel DXP2004等。
硬件:单片机开发板。
三、实验内容
1、TFT2.4触摸彩屏接口定义:
2、TFT2.4触摸彩屏接口使用:
屏幕直接插到12864接口,1脚端对齐,最后会空2脚。
触摸屏连接到开发板对应如下:
CLK==P1.0
CS ==P1.1
DIN==P1.2
BUSY 不用连接
DOUT==P1.4
IRQ ==P1.5
四、实验结果及分析
通过这次实验我掌握了通过89C51来驱动显示TFT2.4触摸彩屏。
我学到了如何使用TFT2.4触摸彩屏,掌握了TFT2.4各个接口的含义,并准确的连接各个接口。
51单片机TFT彩屏例程刷屏
![51单片机TFT彩屏例程刷屏](https://img.taocdn.com/s3/m/ed5108f948649b6648d7c1c708a1284ac85005ac.png)
51单片机TFT彩屏例程刷屏//以下程序都是在VC++6.0 上调试运行过的程序,没有错误,没有警告。
//单片机是STC89C52RC,但是在所有的51 52单片机上都是通用的。
51只是一个学习的基础平台,你懂得。
//程序在关键的位置添加了注释。
/////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////以下是主文件main.c 的内容#include "REG51.H"#include "lcd_drive.h"/************************************************************** ************** *函数名:main*输入:无*输出:无*功能:主函数*************************************************************** *************/void main (void){TFT_Init(); //初始化TFTwhile(1){TFT_ClearScreen(BLACK); //刷黑色TFT_ClearScreen(BLUE);TFT_ClearScreen(RED);TFT_ClearScreen(MAGENTA);TFT_ClearScreen(GREEN);TFT_ClearScreen(CY AN);TFT_ClearScreen(YELLOW);TFT_ClearScreen(WHITE);}}/////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////以下是被调文件lcd_drive.c 的内容#include "lcd_drive.h"/************************************************************** ************** *函数名:TFT_WriteCmd*输入:cmd*输出:*功能:写命令。
HJ-C52 使用说明书
![HJ-C52 使用说明书](https://img.taocdn.com/s3/m/d8f9e627ed630b1c59eeb518.png)
HJ-C52单片机开发板指导教程前言致用户:欢迎使用HJ系列开发板!恭喜您成为慧净电子产品的用户!我们非常高兴您选择了本款产品。
我们将为你提供最真诚最优质的服务,让您在以后的日子里尽情发挥你的创意!为了使您的产品功能得到充分发挥,我们建议在连接和操作之前,通读一遍说明书,请务必了解本产品各功能模块、跳线、开关和接口等的功能和设置方法后再使用,这样有便于您掌握系统的连接方法和使用要点,有助于您更好的使用本款开发板!我们对用户使用手册的编排力求全面且简单易懂,目的是您可以获取与您购买的开发板相关的软件安装、基本操作、软硬件使用方法等知识,但为了提高产品的性能,我们会对产品的硬件和软件做些改动和升级,这样可能会产生软硬件配置和本手册在某些细节上不符,请以最新软件和您购买的开发板实际配置为准。
本手册的更改或升级不另行通知客户!在编写手册时我们难免会有疏漏甚至错误之处,请您多加包涵并热烈欢迎指正,慧净电子将不为本手册可能产生的疏漏和错误负责!本开发板随机光盘中含有大量的例程和参考资料供您学习和参考,如果您学习过程中遇到问题或者,可以发邮件咨询,另外本公司有专业的技术论坛,论坛提供大量以往用户常见问题和学习经验供您分享,推荐您使用论坛发帖的方式咨询问题,可以和众多的用户一起学习交流。
您可以登录论坛网址:慧净电子论坛。
慧净电子科技有限公司技术网站:E-mail:hjmcu@第1章简介1.1性能特点本开发板使用免跳线加独立模块式结构,大部分模块都是免跳线,个部的模块完全独立的,不需杜邦外接,使新手入门更容易,需要用独立模块时,用杜邦线连接到对应的单片机端口,不使用时悬空即可。
这种方式大大提高了自由度,这些模块完全独立,可以自由配置端口,连接其他类型单片机的最小系统板就可以组成对应的开发板。
1.2板载实验硬件组成由于主板模块较多,所以使用之前必须读懂电路图,并能对应到开发板上,只有对硬件了解到一定层次后,才能去学习写程序。
51单片机实训视频教程简介
![51单片机实训视频教程简介](https://img.taocdn.com/s3/m/f306c665561252d380eb6efb.png)
预备知识 C51基础知识 简单延时程序、子程序调用、、流水灯同时蜂鸣
第三课 及流水灯设计
器响、如何驱动蜂鸣器,及如何驱动继电器, 集电极开路的概念及应用。
第四课 数码管显示的原理,数 共阳、共阴数码管显示原理、带参数子程序设 码管的静态显示 计。
第五课 中断和定时器原理
定时器工作方式介绍、重点讲述工作方式2、中 断概念及中断函数写法、定时器中断应用
第九课 1602液晶显示原理及实 最简单液晶工作原理、如何开始对一个没有任
现Байду номын сангаас
何概念的芯片开始单片机的操作
串口通讯工作方式、重点讲述最常用的10位数
第十课 串口原理及应用
据通讯、
波特率概念及如何根据波特率计算定时器初值
IIC 总线原理和模块化 IIC 总线工作原理、目前非常通用的一种通信机
第十一课 编程方法
制;项目开发模块化编程方法。
第十二课 红外通信原理及应用
红外通信是目前应用最为广泛的通信和遥控手 段。在本课程中以红外遥控为代表,具体讲解 红外通信的具体过程。
关于视频:
讲座从最基本的预备知识开始讲起,以单片机实际开发流程来讲解。无论你有没基础,都可以 轻松入门、进阶、从而达到精通。
1、 讲坐章节是完全按照单片机知识结构特点力求精简而全面。每一讲,一个知识点。 这是区别于其它卖家的视频,把一个知识点把它拆成 4,5 讲。10 多 20 分钟就来一讲,这 样看起来讲数就有五六十讲来哄骗大家。但真正有价值的东西却很少。内容根本没有连续性, 零乱没条理,严重影响学习。
HJ-C52 2013原理图
![HJ-C52 2013原理图](https://img.taocdn.com/s3/m/2d895c47e518964bcf847c70.png)
RX D1 SS14 U13 1 20 2 19 3 18 4 17 5 16 6 15 7 14 8 13 9 12 10 11 CH340
VCC5
340X2
340X1
GND J6 P32 P15 C7 22P VCC HC-SR04 1 2 3 4
EN DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7
J5 RS RW C10 IO 22P PSB AN RSTL DAC SDI SDO SCK 1 2 3 4 5 6 7 8 Header 8
P13 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 P10 P11 P12 P13 P14 P15 P16 P17 REST P30 A-12 P31 B-22 P32 C-32 P33 D-42 P34 A-1 P35 B-2 P36 C-3 P37 D-4 X1 X2
VCC C19 470uF VCC5 GND
VCC
VCC
PCF8591
VCC 16 L10 15 J4 14 DA输出跳线 13 GND 12 R11 11 1K 10 P17 9 P12 R7 10K R8 10K 1 2 VCC
3 2 1 P16
P20 IR2 IR R19 331
红外发送跳线
VCC R5 10K R6 10K
10
20
SW6
SW10
SW14 P30 P31 P32 P33 P34 P35 P36 P37 1 2 3 4 5 6
885
880 881 882 6 883
直流电机输出
继电器输出
ULN2003
13 887
3 886
2024年度51单片机超详细教程PPT
![2024年度51单片机超详细教程PPT](https://img.taocdn.com/s3/m/c64b586fbdd126fff705cc1755270722182e5940.png)
实例:按键中断程序设计
3. 在主程序中初始化LED 灯和按键输入端口。
4. 开启外部中断0并等待 按键输入。
5. 当按键按下时,触发外 部中断0并执行中断服务 程序,实现LED灯的闪烁 功能。
2024/3/23
32
Part
06
接口技术与应用扩展
2024/3/23
33
并行I/O口扩展方法
2024/3/23
存放程序代码和常数表格 等,一般使用ROM或 EPROM实现
STEP 03
特殊功能寄存器
用于控制单片机的各种功 能,如定时器、中断等
存放变量、中间结果等, 一般使用RAM实现
9
I/O端口及特殊功能寄存器
要点一
I/O端口
要点二
特殊功能寄存器
与外部设备通信的接口,分为并行I/O和串行I/O两种
用于控制I/O端口的操作,如设置端口模式、读取端口状态 等
优势
51单片机在嵌入式系统领域具有广泛的应用,其稳定的性能和成熟的生态系统使得开发者能够快速开发出高质量 的嵌入式应用。
2024/3/23
5
应用领域与市场需求
应用领域
智能家居、工业自动化、医疗设备、汽车电子、物联网等。
市场需求
随着物联网、人工智能等技术的快速发展,对单片机的性能、功耗、安全性等方面提出了更高的要求 。同时,市场对于单片机的定制化、差异化需求也日益增加。
23
Part
05
中断系统与定时器/计数器应 用
2024/3/23
24
中断概念及中断源识别方法
2024/3/23
中断概念
中断是指在CPU执行程序的过程中,由于某种原因,暂时停止当前正在执行的程序,转 而去执行另一段特殊程序,待特殊程序执行完毕后,再返回原程序继续执行的过程。
完整的单片机驱动TFT彩屏的程序设计
![完整的单片机驱动TFT彩屏的程序设计](https://img.taocdn.com/s3/m/dee8a1bf1a37f111f1855b8e.png)
单片机驱动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。
(完整版)基于51单片机大屏幕显示
![(完整版)基于51单片机大屏幕显示](https://img.taocdn.com/s3/m/f4163b4d6c85ec3a87c2c56d.png)
电子系统设计报告--大屏幕显示器系队别:三系一队刘歌声3222008041朱燕豪 3222008021陈韬3222008022一、实验目的通过设计一个基于单片机的大屏幕显示器系统学习掌握51系列单片机的原理,编程方法及51系列单片机的具体应用,提高自身的编程能力。
巩固三电综合能力,提高应用能力。
二、设计任务与要求1、任务设计制作一个大屏幕显示器。
2、要求1)基本要求(1)显示器点阵数目至少8*8,能够显示汉字。
(2)能够用多种扫描方式进行显示。
(3)显示器的亮度可以调节。
2)发挥部分(1)把基本要求的设计扩展成一个能够显示多个汉字的字符屏。
(2)利用微机的RS-232接口传送数据,随时改变显示的内容。
三、总体论证本设计采用Atmel公司的高性能的位单片机89C51作为核心芯片的电路来实现,主要由AT89C51芯片、时钟电路、复位电路、列扫描驱动电路(74LS245)、8×8 LED点阵5部分组成,我们在实际应用中只是将LED点阵的8条行线直接接在P0口和P3口,至于列选扫描信号则是由译码器74LS245来选择控制,这样一来列选控制只使用了单片机的4个IO口,节约了很多IO资源,为单片机系统扩充使用功能提供了条件。
汉字扫描显示的基本过程是这样的:通电后使单片机的RST复位脚电平先高后低,从而达到复位。
之后,在单片机内部时钟电路的作用下,单片机89C51按照设定的程序在P0和P3接口输出与内部汉字对应的代码电平送至LED点阵的行选线(高电平驱动),接口输出列选扫描信号(低电平驱动),从而选中相应的象素LED发光,并利用人眼的视觉暂留特性合成整个汉字的显示。
同时通过调整导通的时间与电流,可实现高亮度稳定的显示。
四、系统设计1.硬件仿真设计当我们拿到题目的时候不知道从何下手,特别是不知道用到什么器件以及如何对他们进行仿真。
后来教员给了我们初步的器件模块,我们的主要目的就是还原电路图并写出它的汇编代码程序。
用51单片机实现电脑音频信号的频谱显示(在LCD上显示)
![用51单片机实现电脑音频信号的频谱显示(在LCD上显示)](https://img.taocdn.com/s3/m/2a34c5ae0029bd64783e2cf7.png)
如何用51单片机实现音频信号的频谱显示(在LCD上显示)思路:外来音频信号经过51单片机,在单片机中进行频谱分析,并将结果显示在LCD(12864或1602)上要求:频谱显示如同千千静听播放音乐时的频谱显示希望各位高手能给出详细的解决方案,感激。
51做FFT有些困难,可以使用增强型(RAM)的51机子进行参考程序:#include<STC12C5A.H>#define uchar unsigned char#define uint unsigned int#define channel 0x01 //设置AD通道为 P1.1//---------------------------------------------------------------------sbit SDA_R=P1^2;sbit SDA_R_TOP=P1^3;sbit SDA_G=P1^4;sbit SDA_G_TOP=P1^5;sbit STCP=P1^6;sbit SHCP=P1^7;//---------------------------------------------------------------------//----------------------------------------------------------------------------------------------------------------------//放大128倍后的sin整数表(128)code char SIN_TAB[128] = { 0, 6, 12, 18, 24, 30, 36, 42, 48, 54, 59, 65, 70, 75, 80, 85, 89, 94, 98, 102,105, 108, 112, 114, 117, 119, 121, 123, 124, 125, 126, 126, 126, 126, 126, 125, 124, 123, 121, 119, 117, 114, 112,108, 105, 102, 98, 94, 89, 85, 80, 75, 70, 65, 59, 54, 48, 42, 36, 30, 24, 18, 12, 6, 0, -6, -12, -18, -24, -30,-36, -42, -48, -54, -59, -65, -70, -75, -80, -85, -89, -94, -98, -102, -105, -108, -112, -114, -117, -119, -121,-123, -124, -125, -126, -126, -126, -126, -126, -125, -124, -123, -121, -119, -117, -114, -112, -108, -105, -102,-98, -94, -89, -85, -80, -75, -70, -65, -59, -54, -48, -42, -36, -30, -24, -18, -12, -6 };//放大128倍后的cos整数表(128)code char COS_TAB[128] = { 127, 126, 126, 125, 124, 123, 121, 119, 117, 114, 112, 108, 105, 102, 98, 94,89, 85, 80, 75, 70, 65, 59, 54, 48, 42, 36, 30, 24, 18, 12, 6, 0, -6, -12, -18, -24, -30, -36, -42, -48, -54, -59,-65, -70, -75, -80, -85, -89, -94, -98, -102, -105, -108, -112, -114, -117, -119, -121, -123, -124, -125, -126, -126, -126, -126, -126, -125, -124, -123, -121, -119, -117, -114, -112, -108, -105, -102, -98, -94, -89, -85, -80,-75, -70, -65, -59, -54, -48, -42, -36, -30, -24, -18, -12, -6, 0, 6, 12, 18, 24, 30, 36, 42, 48, 54, 59, 65, 70,75, 80, 85, 89, 94, 98, 102, 105, 108, 112, 114, 117, 119, 121, 123, 124, 125, 126, 126 };//采样存储序列表code char LIST_TAB[128] = { 0, 64, 32, 96, 16, 80, 48, 112,8, 72, 40, 104, 24, 88, 56, 120,4, 68, 36, 100, 20, 84, 52, 116,12, 76, 44, 108, 28, 92, 60, 124,2, 66, 34, 98, 18, 82, 50, 114,10, 74, 42, 106, 26, 90, 58, 122,6, 70, 38, 102, 22, 86, 54, 118,14, 78, 46, 110, 30, 94, 62, 126,1, 65, 33, 97, 17, 81, 49, 113,9, 73, 41, 105, 25, 89, 57, 121,5, 69, 37, 101, 21, 85, 53, 117,13, 77, 45, 109, 29, 93, 61, 125,3, 67, 35, 99, 19, 83, 51, 115,11, 75, 43, 107, 27, 91, 59, 123,7, 71, 39, 103, 23, 87, 55, 119,15, 79, 47, 111, 31, 95, 63, 127};uchar COUNT=0,COUNT1=0,ADC_Count=0,LINE=15,G,T;uchar i,j,k,b,p;int Temp_Real,Temp_Imag,temp; // 中间临时变量uint TEMP1;int xdata Fft_Real[128];int xdata Fft_Image[128]; // fft的虚部uchar xdata LED_TAB2[64]; //记录漂浮物是否需要停顿一下uchar xdata LED_TAB[64]; //记录红色柱状uchar xdata LED_TAB1[64]; //记录漂浮点void Delay(uint a){while(a--);}void FFT(){ //uchar X;for( i=1; i<=7; i++) /* for(1) */{b=1;b <<=(i-1); //碟式运算,用于计算隔多少行计算例如第一极 1和2行计算,,第二级for( j=0; j<=b-1; j++) /* for (2) */{p=1;p <<= (7-i);p = p*j;for( k=j; k<128; k=k+2*b) /* for (3) 基二fft */{Temp_Real = Fft_Real[k]; Temp_Imag = Fft_Image[k]; temp = Fft_Real[k+b];Fft_Real[k] = Fft_Real[k] +((Fft_Real[k+b]*COS_TAB[p])>>7) + ((Fft_Image[k+b]*SIN_TAB[p])>>7);Fft_Image[k] = Fft_Image[k] -((Fft_Real[k+b]*SIN_TAB[p])>>7) + ((Fft_Image[k+b]*COS_TAB[p])>>7);Fft_Real[k+b] = Temp_Real -((Fft_Real[k+b]*COS_TAB[p])>>7) - ((Fft_Image[k+b]*SIN_TAB[p])>>7);Fft_Image[k+b] = Temp_Imag + ((temp*SIN_TAB[p])>>7) - ((Fft_Image[k+b]*COS_TAB[p])>>7);// 移位.防止溢出. 结果已经是本值的 1/64Fft_Real[k] >>= 1;Fft_Image[k] >>= 1;Fft_Real[k+b] >>= 1;Fft_Image[k+b] >>= 1;}}}// X=((((Fft_Real[1]*Fft_Real[1]))+((Fft_Image[1]*Fft_Image[1])))>>7);Fft_Real[0]=Fft_Image[0]=0; //去掉直流分量// Fft_Real[63]=Fft_Image[63]=0;for(j=0;j<64;j++){TEMP1=((((Fft_Real[j]*Fft_Real[j]))+((Fft_Image[j]*Fft_Image[j])))>>1);//求功率if(TEMP1>1)TEMP1--;else TEMP1=0;if(TEMP1>31)TEMP1=31;if(TEMP1>(LED_TAB[j]))LED_TAB[j]=TEMP1;if(TEMP1>(LED_TAB1[j])){ LED_TAB1[j]=TEMP1;LED_TAB2[j]=18; //提顿速度=12}}}void Init(){//-----------------------------------------------------------------------------------P1ASF = 0x02; //0000,0010, 将 P1.1 置成模拟口AUXR1 &=0xFB; //1111,1011, 令 ADRJ=0EADC=1; //AD中断打开ADC_CONTR = ADC_POWER | ADC_SPEEDHH | ADC_START | channel;//1110 1001 1打开 A/D (ADC_POWER)转换电源;11速度为70周期一次;//0中断标志清零;1启动adc(ADC_START);001AD通道打开(这里为P1.1);//-----------------------------------------------------------------------------------P2M0=1;P0M0=1;TMOD=0X12;TH0=0x30; //大约20K的采样率(要完整频段需40K以上。
HJ-C52原理图
![HJ-C52原理图](https://img.taocdn.com/s3/m/9df69cd576eeaeaad1f33014.png)
\..\HJ-C52 -
Sheet of .DScrhaDwoncBy:
1
2
3
4
5
6
7
8
D0 D1 D2 D3 D4 D5 D6 D7
2 3 4 5 6 7 8 9
1D 1Q 2D 2Q 3D 3Q 4D 4Q 5D 5Q 6D 6Q 7D 7Q 8D 8Q
19 18 17 16 15 14 13 12
WE1 WE2 WE3 WE4 WE5 WE6
8
3 CE 2 1 2 3
J1
VCC LED
VCC P00 P01 P02 P03 P04 P05 P06 P07
P4.5 P4.4
P27 P26 P25
P23 P22 P21 P20
D0 D1 D2 D3 D4 D5 D6 D7 VCC
RST CS EN B20 BZ CS88 WE DU
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
VCC
4 3 2 1
USB
340D+ 340D-
VCC5 KS1
C19 100U
1
2
3
VCC W1 103K GND
VCC W2 103K GND
U9
VCC
VDD
12 34 56 78 9 10
J3
1 2 3 4 5 6 7 8
AIN0 AIN1 AIN2 AIN3 A0 A1 A2 VSS
VDD AOUT VREF AGND
IR2 IR R19 331 红外发送跳线
VCC
CS88
3 886
4 885 10 884 6 883
51单片机实现多级液晶显示中文菜单
![51单片机实现多级液晶显示中文菜单](https://img.taocdn.com/s3/m/2f0083f1700abb68a982fb15.png)
【 关键词】单片机;分 页; ̄ 1 2 8 6 4 液晶; 中文菜单
下“ D o w n ”键 ,则光标移动到二级菜单 1 - 1 - 2 。 按下 “ E n t e r ”,分两种情 况处理 ,如为选 择 菜 单,则根据 页码和 行码 的值 :R O * 4 + R 2 调 用 下一级子 菜单显示, 同时将子菜单 的页码 赋值 给R 0 ,得 到子菜单的页码 ,并且使行码R 2 = O , 表 示处 于此 级菜 单 的首项 。例 如 :光 标处 于 顶级 菜单1 ,按下 “ E n t e r ”键 ,则液 晶显示屏 上 显示一级菜单 1 - 1 、一级菜单 I - 2 、一级参数 输 入1 - 3 、一级空格 i - 4 。如为 参数 输入菜单 , 则进入 相 应 的参数 输入 对话 框 。例 如:光 标 分 具有与M C U 统一 的标 准接 口,为使用L C D 实现 处于参 数输 入 1 — 3 ,按 下 “ E n t e r ”健 ,则液 中文菜单操作提供 了很大的方便 。相信更 多的 晶显示 屏 上显 示对 应 的要求 输入 参数 的对 话 电子产品在提升性 能的同时 ,设计更加人 性化 的中文菜单交互界面 ,将 会使产 品具有更 广阔 框( 一般 为数字 ,为 了简 化程序 ,可采用 统一 的前景 。 的参数输 入对话 框) ,此 时输入 符合要求 的参 二、Y M I 2 8 6 4 液晶显示模块简介 数 ,再按 下 “ E n t e r ”键 ,菜 单将返 回到上一 Y M 1 2 8 6 4 汉 字 图形 点阵液 晶显示模块 ,可 级菜单 , 同时将 输入 ̄Y M I 2 8 6 4 液 晶显示器 的 显示汉字及 图形, 内置8 1 9 2 个 中文汉字 ( 1 6 X 1 6 数据读 出,送到相应 的单元存储 。以备使用 。 “ E s c ”键起 到返 回上一级菜 单和删 除参数 输 点阵) 、1 2 8 个 字符 ( 8 X 1 6 点阵) 及6 4 X 2 5 6 点阵显 入时的错误输入双重 功能,程序中只 需使用 一 示R A M ( G D R A M ) 。 标志位来 区分选 择菜 单和参数输入菜单 即可 , 主要技术参数和显示特性: 电源 :V D D 3 . 3 V  ̄+ 5 V ( 内置升压 电路,无 同时修 改页码 和行 码值 ,a P R O 和R 1 的值 。例 需负压) 如 :液 晶屏上 显示二 级菜单 i - 1 - 1 、二级菜 单 显示 内容 :1 9 , 8 列 ×6 4 行 1 - 1 - 2 、二级 菜单 1 - i 一 3 、二级空格 I - 1 — 4 。此 时 按下 “ E s c ”键 ,则返 回到一级 ,屏幕 上显 与M c u 接 口:8 位或4 位并行/ 3 位 串行 多种软件 功能:光标显示、画面移位 、自 示一级菜 单1 — 1 、一级菜单 I - 2 、一 级参数输入 卜3 、一级空格l _ 4 。 定义字符、睡眠模式等 。 其 引脚功 能为通用2 O 脚L C D 接 口,用户指 四、硬件设计 令集 也为通 用1 2 8 * 6 4 L C D 用户指 令集 ,相关资 使 用8 9 C 5 1 的P 1 口作为液 晶显示器 的数据 料很容 易获 取。因其 内置 中文字库,省去 了自 口,使 用P O 口作为键盘扫描端 口,当然这些端 己造字库 的工作量 ,而 只需写入相应的汉字和 口也可 以使用扩展 口,只需在程序 的开头修改 字符 内码 即可显示所 需要 的汉字和字符 ,这在 端 口的值便可 。电路 图如图l 所示。 . . _ ……………………………………………~ i …………………………………………………………………’ : ………… 五 、软件设 计 重点在于软件的设计 ,而程序 的关键又在 于使用 了分页 的操作方 式。 以下为菜单数据 , 按页的方式存放 ,不足一页 的补空格 。
手把手教你用51单片机DIY音乐频谱显示_稿件 - V3
![手把手教你用51单片机DIY音乐频谱显示_稿件 - V3](https://img.taocdn.com/s3/m/c80b7f04b52acfc789ebc9d4.png)
呼
吸
触
摸
键
灯
(
图二
)
MCU 部分的原理图
颜
:
:
:
色
图三 (三) 编程思路 1)
点阵驱动电路图
在主函数中,单片机通过 AD 对音频数据采样,然后存放到数据缓存区进行预处理,完成 AD 滤波 处理, 自动增益控制信息扫描以及其他信息处理。 接着, 将缓存区数据送入 快速傅立叶变换 (FFT) 处理子函数进行运算。 处理完后, 从缓存区取出运算结果, 根据得到幅值计算出点阵的显示数据, 并存储到显示缓存区。 在中断函数中,根据显示缓冲区的内容对点阵显示屏进行实时刷新点亮。
根据傅立叶分析,任何声音可以分解为数个甚至无限个正弦波,而它们往往又包含有无数多的谐 波分量。而它们又往往是时刻在变化着。所以一个声音的构成其实是很复杂的。将声音的频率分量绘 制成曲线,就形成了频谱。 对频谱进行分析的仪器就是频谱分析仪,早期频谱仪都是模拟分析的。频谱仪的原理就是将声音
信号通过一系列不同中心频率的模拟带通滤波器。每个带通滤波器相当于一个共振电路,其特性由中 心频率(步进的) 、频带宽度及响应时间表示。在声音信号通过滤波器后,经过平方检波器,并进行平 均之后,在每个频率上测定所传输的功率,从而得到信号的频谱。然而,传统的频谱仪受到滤波器性 能的制约,因为模拟电路本身的特性所局限,滤波器的带宽和响应时间成反比,也就是说模拟滤波器 的频率分辨力与时间分解能力之间存在矛盾。因为频谱仪所测量的往往都是非稳态声,一般来说,都 是使用若干个滤波器来覆盖整个频率范围,并将信号同时并联地输入到这些滤波器上去。或者使用中 心频率能够从低到高连续变化的滤波器。 随着科学技术的不断进步,现在我们所使用的基本不再是那些笨重而不准确的模拟仪器的频谱仪, 取而代之的是基于处理器的软件分析法。它分析的数据来源其实是经过了 ADC(模数转换器件)转换 后得出的数字信号,所以频谱仪软件所测量的信号准确度,很大程度取决于数模转换电路的性能。比 起模拟滤波器,数字滤波器应该要更加迅速和精确。 2) 你问:那什么是均衡器和音乐频谱显示?在我们欣赏音乐的过程中有什么样的作用? 我答:对于录音棚等专业级别的音乐制作来说,通常都需要对录制的音频信号进行频谱分析来辅助音 频的加工制作。当然对于我们普通的爱好者来说,不需要那么精确的频谱分析,我们更多的是用来略 显音乐节奏,美化环境,增添气氛。于是,大多数的音乐播放软件(如图一),手机,mp3,高档的音箱 设备等,都有了音乐频谱显示。
50、51单片机视频教程 HL-1 红外摇控实验视频
![50、51单片机视频教程 HL-1 红外摇控实验视频](https://img.taocdn.com/s3/m/31c9804f05087632311212fa.png)
TCON
IE
IP
硬件查询
INT0 IT0 1
01
T0 INT1 IT1 1
01
T1
RX TX
EX0 1 EA 1 IE0
ET0 1 TF0
EX1 1 IE1
ET1 1 TF1
RI
TI
≥1SCLeabharlann NES 1PX0 1
0 PT0 1
0 PX1 1
达式。其中最直观、最容易理解的是关系表达式。所谓关系表达式就是 两个数值进行比较的式子。
复习 Switch case 语句怎么使用
• switch case用法详解: • 1、switch是“开关”的意思,它也是一种“选择”语句,但它的用法非常简单。 • 2、switch是多分支选择语句。说得通俗点,多分支就是多个if。
• switch的用法是判断case后面的表达式和switch后面的表达式是否相匹配,一旦case匹配, 就会顺序执行后面的程序代码,而不管后面的case是否匹配,直到遇见break。
• Switch case 语句表达式为: • switch{case 常量1: 语句体1;case 常量2: 语句体2;case 常量3: 语句体3;case
一、工作方式寄存器TMOD
工作方式寄存器TMOD用于设置定时/计数器的 工作方式,低四位用于T0,高四位用于T1。其格式 如下:
程序功能
• 单片机从一体化红外接收器接收到的红外遥控键值码发送到 数码管/(LCD1602),在数码管/(LCD1602)观察接收到的数据。
车载MP3遥控器
使用时要取下电池门卡糟胶片
51单片机视频教程