单片机遥控控制的霓虹灯程序

发布者:Susan苏最新更新时间:2018-01-14 来源: eefocus关键字:单片机  遥控控制  霓虹灯 手机看文章 扫描二维码
随时随地手机看文章

源程序如下:
;********************************************************************************
;* 标题: 遥控霓虹灯模拟显示 *

;* 硬件: top-2005 *
;* 文件: REMCONLED.asm *
;* 日期: 2003-1-18 *
;* 版本: 1.0 *
;* 作者: 张绍斌   转载请注明出处www.mcu51av.com 
;* 邮箱: shaobinz@163.com *
;********************************************************************************
;* 描述: *
;* 遥控控制发光二极管组花样显示 *
;* P0口为发光二极管的数据口,P3.2口接遥控接收头 *
;********************************************************************************

IRCOM EQU 20H ;20H-23H IR使用
IRIN EQU P3.2
D1 EQU 30H ;流水灯移位数缓存
D2 EQU 31H
NO_M EQU 44H

ORG 0000H
AJMP MAIN
ORG 0003H ;外部中断INT0入口地址
AJMP IR_IN

MAIN:
MOV SP,#60H
MOV PSW,#00H
MOV A,#00H
MOV 20H,#00H
MOV 21H,#00H
MOV 22H,#00H
MOV 23H,#00H
mov 30h,#00h
mov 31h,#00h
MOV IE,#81H ;允许总中断中断,使能 INT0 外部中断
MOV TCON,#01H ;触发方式为脉冲负边沿触发
SETB IRIN
MOV NO_M,#00H
loop1: mov p0,#00h
loop: 
MOV A,NO_M
JZ loop1;开机无遥控按键按下点亮所有二极管
RL A;实现1~8倍乘(及1变2,2变4....)
MOV DPTR,#TAB_KEY
NOP
JMP @A+DPTR;散转
TAB_KEY: AJMP LOOP
AJMP TAPE1
AJMP TAPE2
AJMP TAPE3
AJMP TAPE4
AJMP TAPE5
AJMP TAPE6
AJMP TAPE7
AJMP TAPE8
;------------------以下为花样灯显示样式--------------------
TAPE1: MOV D1,#08H;单灯点亮右移
MOV A,#0FEH
QQ0: MOV P0,A
ACALL YS
RL A
DJNZ D1,QQ0
ajmp loop
TAPE2: MOV D1,#08H;单灯点亮左移
MOV A,#7FH
QQ1: MOV P0,A
ACALL YS
RR A
DJNZ D1,QQ1
ajmp loop
TAPE3: MOV D1,#08H;暗点右移
MOV A,#01H
QQ2: MOV P0,A
ACALL YS
RL A
DJNZ D1,QQ2
ajmp loop
TAPE4: MOV D1,#08H;暗点右移
MOV A,#80H
QQ3: MOV P0,A
ACALL YS
RR A
DJNZ D1,QQ3
ajmp loop
TAPE5: MOV D1,#08H;亮点右左往返流动
MOV D2,#08H
MOV A,#0FEH
QQ4: MOV P0,A
ACALL YS
RL A
DJNZ D1,QQ4
AJMP NBA
NBA: RR A
MOV P0,A
ACALL YS
DJNZ D2,NBA
ajmp loop
TAPE6: MOV R5,#00H;全亮后向右檫除,向左点亮
QQ5: INC R5
MOV A,R5
MOV DPTR, #NU_TAB1
MOVC A,@A+DPTR
MOV P0,A
ACALL YS
ACALL YS
CJNE R5,#11H,QQ5
ajmp loop
NU_TAB1: DB 00H
DB 00H,01H,03H,07H,0FH,1FH,3FH,7FH,0FFH
DB 7FH,3FH,1FH,0FH,07H,03H,01H,00h

TAPE7: MOV R5,#00H;模拟队列向左经过显示窗口
QQ7: INC R5
MOV A,R5
MOV DPTR, #NU_TAB2
MOVC A,@A+DPTR
MOV P0,A
ACALL YS
CJNE R5,#0FH,QQ7
ajmp loop
NU_TAB2: DB 00H
DB 7FH,0BFH,5FH,0AFH,57H,0ABH,55H,0AAH,0D5H
DB 0EAH,0F5H,0FAH,0FDH,0FEH,0FFH
TAPE8: MOV R5,#00H;全亮后从两端往中间擦,再从两端往中间点亮
QQ9: INC R5
MOV A,R5
MOV DPTR, #NU_TAB3
MOVC A,@A+DPTR
MOV P0,A
ACALL YS
CJNE R5,#10H,QQ9
ajmp loop
NU_TAB3: DB 00H
DB 00H,81H,0C3H,0E7H,0FFH,0E7H,0C3H,81H,00H
DB 81H,0C3H,0E7H,0FFH,0E7H,0C3H,81H
;----------------------------灯点亮延时---------------------

YS: MOV R7,#250
CBA: MOV R6,#250
DJNZ R6,$
DJNZ R7,CBA
RET
; IR 译码子程序
;---------------------------------------------------------
;转载请注明出处www.mcu51av.com IR_IN:
CLR EA ;暂时关闭CPU的所有中断请求
PUSH ACC
PUSH PSW
SETB PSW.3 ;选择工作寄存器组1
CLR PSW.4
MOV R2,#04H
MOV R0,#IRCOM
I1: JNB IRIN,I2 ;等待 IR 信号出现
DJNZ R2,I1
JMP IR_OUT ;IR信号没出现,退出。
I2: MOV R4,#20
I20: CALL DEL
DJNZ R4,I20
JB IRIN,I1 ;确认IR信号出现
I21: JB IRIN,I3 ;循环等IR变为高电平;变高就过了9MS低电平引导区
CALL DEL 
JMP I21
I3: MOV R3,#0 ;8位数清为0
LL: JNB IRIN,I4 ;等IR变为低电平,变低就过了4.5MS结束码
CALL DEL
JMP LL
I4: JB IRIN,I5 ;等 IR 变为高电平,过了0或1的0.56MS低电平区
CALL DEL
JMP I4
I5: MOV R2,#0 ;0.14ms 计数
L1: CALL DEL ;看高电平保持时间,即几个0.14MS
;"0"不超过(1.125-0.56)/0.14=4个
;"1"至少有(2.25-0.56)/0.14=12个
JB IRIN, N1 ;等 IR 变为高电平
;IR=0,检查R2中的计数值
MOV A,#8
CLR C
SUBB A,R2 ;判断高低位,R2小于8,C=0,R2大于8,C=1
;取5,6,7,8,9,10,11都可,中间数最保险
;若C=0说明R2小于8,收到的是"0"位
;若C=1说明R2大于8,收到的是"1"位
MOV A,@R0 ;R0=20H已被清0,及A=0
RRC A ;RRC后A内被一位一位C替代了,低位是第一个C的值
MOV @R0,A ;处理完一位,暂时存到20H
INC R3 
CJNE R3,#8,LL ;需处理完8位,1,2,3,4,5,6,7,8位放入20H,第8位是最高位
MOV R3,#0
INC R0 ;换缓存21H,22H,23H,一个缓存存8位0,1组合
CJNE R0,#24H,LL ;收集到4字节了哦(用户反码=21H,键码=22H,键反码=23H)
JMP IR_COMP ;跳出准备处理纠错
N1: INC R2
CJNE R2,#30,L1 ;0.14ms计数过长则时间到自动离开

IR_OUT: POP PSW
POP ACC
SETB EA
RETI
;-----------------------------------------------------
;键值比较与键值数据处理
;22H存入键码,23H存入键码的反码
;-----------------------------------------------------
IR_COMP: 
;MOV A,20H
;XRL A,#00H;不同遥控器用户码不同的,加上比较遥控就专用了
;JNZ,IR_OUT
;MOV A,21H
;XRL A,#0DFH;同上,双保险
;JNZ IR_OUT
MOV A,22H
CPL A
XRL A,23H ;将22H取反后和23H比较
JNZ IR_OUT ;如果不等表示接收数据发生错误,放弃
MOV R1,#08H;只用遥控的8个按键,看按下的按键是第几个
MOV DPTR,#TAB_REMOT;指针指向遥控键值表
LOOKUP:
MOV A,R1 
MOVC A,@A+DPTR
XRL A,22H
JZ REMBAK
DJNZ R1,LOOKUP
REMBAK:
MOV NO_M,R1
nop
sjmp ir_out
;-------------------------遥控键值表---------------------
TAB_REMOT:;其他6221/6222遥控器要先测码建立此表
DB 00H
DB 10H,03H,01H,06H
DB 09H,1DH,1FH,0DH;只用遥控上排8个按键
;------------------------------------------------
; DELAY R5*0.14MS
DEL:
MOV R5,#1 ;IR解码使用
DEL0: MOV R6,#2
DEL1: MOV R7,#32
DEL2: DJNZ R7,DEL2
DJNZ R6,DEL1
DJNZ R5,DEL0
RET
;---------------------------------------------
DELAY1: ;数码管延时4MS

MOV R6,#20
DL2: MOV R7,#100
DJNZ R7,$
DJNZ R6,DL2
RET
;-------------------------------------
END ;结束


关键字:单片机  遥控控制  霓虹灯 引用地址:单片机遥控控制的霓虹灯程序

上一篇:一键六种击键模式编程方法
下一篇:PT6311器件子程序

推荐阅读最新更新时间:2024-03-16 15:52

基于STM32单片机和EM310的无线终端设计
0引言 在监测监控及数据采集系统(SCADA)系统中,采集数据的实时性和准确性对系统有很大的影响,合适的通信网络可以有效提高SCADA系统的效益,本文设计的GPRS无线终端在SCADA系统中的应用解决了上述问题,除满足数据实时性和准确性外,还具有建设成本低.结构简单.传输容量大.可远程控制等优势. 1 终端简介 1.1终端结构 无线终端由EM310GSM模块和STM32F103单片机构成,以STM32F103单片机为核心,STM32F103单片机有丰富的通信接口,用于连接EM310和现场仪表;还有丰富的I/O资源,可以扩展较大容量的RAM,一方面存储指令集,用于解读指令并作出相应的动作;另一方面用于暂时存储监测点采
[单片机]
基于STM32<font color='red'>单片机</font>和EM310的无线终端设计
平凡单片机教学 第二十二讲 常用接口电路及其编程
LED数码显示器的连接与编程 在单片机系统中,通常用LED数码显示器来显示各种数字或符号。由于它具有显示清晰、亮度高、使用电压低、寿命长的特点,因此使用非常广泛。 八段LED显示器 引入:还记得我们小时候玩的 火柴棒游戏 吗,几根火柴棒组合起来,可以拼成各种各样的图形,LED显示器实际上也是这么一个东西。 八段LED显示器由8个发光二极管组成。基中7个长条形的发光管排列成 日 字形,另一个贺点形的发光管在显示器的右下角作为显示小数点用,它能显示各种数字及部份英文字母。LED显示器有两种不同的形式:一种是8个发光二极管的阳极都连在一起的,称之为共阳极LED显示器;另
[单片机]
平凡<font color='red'>单片机</font>教学 第二十二讲 常用接口电路及其编程
PIC单片机 读/写 MMC/SD 卡的简单小程序
这里介绍一个简单的PIC单片机 读/写 MMC/SD 卡的小程序 // MMC module connections sbit Mmc_Chip_Select at LATC0_bit; // for writing to output pin always use latch (PIC18 family) sbit Mmc_Chip_Select_Direction at TRISC0_bit; // eof MMC module connections const LINE_LEN = 43; char err_txt = FAT16 not found ; char file_contents = X
[单片机]
PIC<font color='red'>单片机</font> 读/写 MMC/SD 卡的简单小程序
STC89C52单片机直流电机调试
///////////////////////////////////////////////////////////////////////// 实现功能: 配置定时器1,让其每隔1毫秒产生一次中断,通过对中断的次数的统计, 让定义的P2口的第0个引脚产生占空比为70%的PWM,通过它来驱动直流 电机 实验板型号:BS-XYD-C52 实验名称: 直流电机测试实验 编写人: 谢应东 编写日期: 2012-4-30 ///////////////////////////////////////////////////////////////////////// #include reg52.h #
[单片机]
单片机水塔水位(液位检测)及显示电路
第1章 绪 论 随着人们生活水平和工业标准的提高,液位的检测越来越受到人们重视,检测的精度和实时性要求也越来越高,另外还要求系统能提供对液位的自动控制功能。今后液位的监测和控制系统的研究将是一个重要的课题。 1.1 液位检测系统的概况 在日常生产和生活中经常遇到液位的检测和控制问题。尤其在许多工业生产系统中,需要对系统的液位或物料位进行检测和控制,特别是对具有腐蚀性的液体液位的测量,传统的电极法是采用差位分布电极,通过给电脉冲来检测液面,电极长期浸泡在液体中,极易被腐蚀、电解、失去灵敏性,因而对测试设备的抗腐蚀性要求较高。LM型液压传感器采用316L不锈钢膜片及PVC塑料螺纹头相结合,可测量水、其它液体及气体液位。LM型液压传感
[单片机]
<font color='red'>单片机</font>水塔水位(液位检测)及显示电路
51单片机测量温度 显示时间和日期 OLED显示 通过蓝牙发送
单片机源程序如下: #include reg52.h #include oled.h #include bmp.h #include ds18b20.h #include stdio.h #include ds1302.h sbit key_s2 = P2^0;//独立按键S2 //串口初始化 void UARTInit() { SM0 = 0; SM1 = 1;//串口工作方式1,8位UART波特率可变 TR1 = 1;//启动定时器1 TMOD |= 0x20;//定时器1,工作模式2 8位自动重装 TH1 = 0xfd; TL1 = 0xfd;//
[单片机]
51<font color='red'>单片机</font>测量温度 显示时间和日期 OLED显示 通过蓝牙发送
恩智浦推出支持多协议、集成时间敏感网络交换机的i.MX RT跨界MCU
恩智浦推出支持多协议、集成时间敏感网络交换机的i.MX RT跨界MCU,助力工业物联网通信应用 恩智浦i.MX RT1180跨界MCU可以实现多协议工业物联网通信,同时为实时以太网和工业4.0系统提供支持 中国上海——2022年5月11日—— 恩智浦半导体(NXP Semiconductors N.V.,) 宣布推出新型 i.MX RT1180 跨界MCU,作为系列首款集成千兆(Gbps)时间敏感网络(TSN)交换机的微控制器,能够同时实现时间敏感型和工业实时通信,并支持多种通信协议,弥合了现有工业系统和工业4.0系统之间的沟通间隙。这款跨界MCU还带有EdgeLock®安全锁区,它是一种预先配置的自管理式自主片上安
[物联网]
恩智浦推出支持多协议、集成时间敏感网络交换机的i.MX RT跨界<font color='red'>MCU</font>
基于Proteus的51单片机实时时钟的仿真设计
  单片机技术应用于各行各业,是一种实用的智能型控制技术,单片机技术的发展极大地推动了电子、通信、计算机、机电一体化等行业的快速发展,成为当前教学和科研的热门技术。本文详细介绍一种新型的单片机仿真软件Proteus,利用它可以实现单片机教学中很多面向端口、外围设备扩展控制型实验的仿真,提高教学效果,进一步缩短教学与工程实际的距离。   1Proteus简介   ProteusISIS是英国Lacenterelec-tronics公司开发的电路分析与实物仿真软件,应用范围十分广泛,涉及PCB制版、Spice电路仿真、单片机仿真以及对ARM7/LPC2000的仿真。Proteus主要由ARESISIS两大模块构成,ARES主要用于
[单片机]
基于Proteus的51<font color='red'>单片机</font>实时时钟的仿真设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved