150 likes | 296 Views
学习情境 1.4. 霓虹灯控制. 做什么?. 利用单片机制作一个模拟霓虹灯的控制系统,实现不同模式下的霓虹灯显示控制。. 基本任务 1 :. 实现八个发光二极管亮灭闪烁的显示效果. 跟我做 1- ------ 画出硬件电路图. 你能说出 P1 口是什么电平点灯吗?. 跟我做 2- ------ 准备器件、焊板. 跟我做 3- ------ 用实验板来连接线路. 跟我做 4- ------ 编写控制程序. ORG 0000H START: MOV P1,#00H ACALL DELAY
E N D
学习情境1.4 霓虹灯控制
做什么? 利用单片机制作一个模拟霓虹灯的控制系统,实现不同模式下的霓虹灯显示控制。
基本任务1: 实现八个发光二极管亮灭闪烁的显示效果
跟我做1-------画出硬件电路图 你能说出P1口是什么电平点灯吗?
跟我做4-------编写控制程序 ORG 0000H START: MOV P1,#00H ACALL DELAY MOV P1,#0FFH ACALL DELAY SJMP START DELAY: MOV R3,#0FFH DEL2: MOV R4,#0FFH DEL1: NOP DJNZ R4,DEL1 DJNZ R3,DEL2 RET END ;点亮8个LED ;调用延时子程序 ;熄灭8个LED 此DELAY子程序的延时时间是多长?
(1+1+2)X Y× T机器 源程序: 指令周期 DELAY: MOV R3, #( X )H 1个T机器 DEL2: MOV R4,#( Y )H 1个T机器 DEL1: NOP 1个T机器 NOP 1个T机器 DJNZ R4,DEL1 2 个T机器 DJNZ R3,DEL2 2个T机器 RET 设晶振频率为12MHz,则T机器=1us ∴上段程序中延时时间为 (1+1+2) 255255 1us=260.1ms 你可以将DELAY延时子程序执行时间修改为1秒吗?
基本任务2: 从P1.0到P1.7依次循环点亮一个LED 完成这个任务,硬件需要修改吗?
跟我做1-------程序分析 P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 RL A 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 循环8次 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 你可以编写出这个循环结构的程序吗? 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1
跟我做2-------设计程序流程图 8次 #0FEH ACALL DELAY RL A DJNZ Rn , rel
跟我做3-------编写控制程序 ORG 0000H START: MOV R2,#08H MOV A,#0FEH NEXT: MOV P1,A ACALL DELAY RL A DJNZ R2,NEXT SJMP START DELAY: …… RET END
进阶任务: 各显示模式字之间无任何变化规律,无法采用移位指令和循环结构的程序来实现。应该采用什么结构的程序呢? 任意模式霓虹灯显示
ORG 0000H MOV P1, #00H ;灭灯 MOV R2, #5;循环5遍 DP0:MOV R3, #8;每遍8个状态 MOV DPTR, #TAB ;取表基址 MOV R0, #0 ;取表变址 DP1: MOV A, R0 ;变址送A MOVC A, @A+DPTR ;查控制码 MOV P1 , A ;控制码送P1口亮灯 ACALL DELAY;延时 INC R0 ;修改地址指针 DJNZ R3 , DP1;查8个状态 DJNZ R2 , DP0;查5遍 MOV P1, #00H ;灭灯 SJMP $ DELAY: …… RET TAB: DB 81H,42H,24H,18H,18H,24H,42H,81H END