单片机控制的循环彩灯控制系统的设计实习报告_彩灯循环控制系统设计
单片机控制的循环彩灯控制系统的设计实习报告由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“彩灯循环控制系统设计”。
一、实习目的 《单片机原理与接口技术》课程实习安排在该课程理论教学结束后进行。其目的是通过实习,使学生进一步弄懂所学到的课本知识,巩固和深化对单片机的结构、指令系统、中断系统、键盘/显示系统、接口技术、系统扩展、定时/计数控制、程序设计、应用开发等基本理论知识的理解,提高单片机应用技术的实践操作技能,掌握单片机应用系统设计、研制方面的一般方法,培养利用单片机进行科技革新、开发和创新的基本能力、为毕业后从事和单片机相关的工作打下一定的基础。
二、实习内容 利用TDN86/51二合一微机实验教学系统设计一个用8051单片机控制的循环彩灯控制系统。
三、设计过程:
1、能输出4种花型,并能由人工进行花型的切换。(按键)*利用单片机8031的P1.7做总开关,P1.0、P1.1做花型控制开关,P1.5、P1.6做调速开关。
实习花型:(1)使彩灯从右到左逐一循环点亮。(2)使彩灯交替闪烁。(3)使彩灯从右到左逐一点亮,当全部点亮后同时闪烁一次。(4)使彩灯从中间到两边顺序点亮,直至全部点亮;再将彩灯从两边到中间熄灭,直至全部熄灭。
2、循环彩灯的循环速度可调。*P1.5做加速控制开关,P1.6做减速控制开关。
3、按键要求:(1)启动/暂停。按动一次启动,再按一次暂停。是一个双态转换键 *“1”---启动,“0”---停止。(2)花型变化。按一次,立即停止当前花型的显示,转换为下一种花型。4种花型可以循环切换。表1.1 拨动开关与对应的花型 P1.0 P1.1 花型 0 0 花型1 1 0 花型2
花型3 1 1 花型4(3)速度+。按键一次,速度略加快一点。速度-。按键一次,速度略减慢一点。表1.2 拨动开关功能表
P1.5 P1.6 P1.7 功能 功能 功能 0 0 0 无加速 无减速 停止 1 1 1 加速 减速 启动 4在LED显示器上显示相应的花型号。
5、显像管显示相应数据
花型 显像管 A 花型1 B 花型2 C 花型3 D 花型46、利用软件子程序或单片机内部的定时/计数器实现定时功能,以模拟循环速度的基准值。
四、实习器材 TDN86/51二合一微机实验教学系统1台,配套计算机一台,连接导线若干
五、实验原理图: 0 1 如上图所示,8031的P0口接8155的AD0-7口,P2.7和P2.6分别接了8155的片选线和I0口,而8031的P1口做开关接口,8155的PA和PC接显像管的字位和字形,PB接LED。
六、程序及程序流程图:
开始
字型码赋值给R6 初始化 字位码初始值给人R0 总开关 字位码 C口
花型控制开关
显示数据
查表字形码
C口 花型 显示字形 显示 结束 调速 P1.7=0? 否 否 P1.6=1? 是 否 P1.5=1? P1.0=0? 是 是 P1.1=0? P1.0=0? 是 否 是 否 花型1 花型2 花型3 花型4
ORG 0000H
LJMP MAIN
ORG 1000H MAIN: SETB P2.6;8155初始化 CLR P2.7 ;片选线工作 MOV R0,#00H ;指向命令/状态口 MOV A,#07H ;命令字送A MOVX @R0,A ;装入8155 MOV DPTR,#DTAB ;控制花型的亮灭数据 MOV R4,#0FEH ;右量 MOV R2,#0FFH ;全灭 CHECK: JNB P1.7,MAIN
;总开关
JB P1.0,NEXT 控制花型开关 JB P1.1,TWO ONE: MOV R6,#77H ;字形码“A”(花型1)LCALL SHOW ;调用显示程序 MOV A,R4 RL
A
;左移
MOV R4,A
MOV R0,#02H ;PB输出 MOVX @R0,A LCALL DELAY ;调用延时程序 LJMP CHECK TWO: MOV R6,#7CH
;字型码“B”(花型2)LCALL SHOW MOV R3,#0AAH;10101010(0亮)MOV A,R3 MOV R0,#02H
MOVX @R0,A
LCALL DELAY
MOV R3,#55H ;01010101 MOV A,R3 MOVX @R0,A LCALL DELAY LJMP CHECK NEXT: JB P1.1,FOUR THREE: MOV R6,#39H ;字型码“C”(花型3)LCALL SHOW MOV R0,#02H
MOV A, R2
MOVX @R0,A LCALL DELAY CLR C RLC A ;带位左移 MOV R2,A CJNE A,#00H,NEXT3 MOVX @R0,A LCALL DELAY MOV A,#0FFH ;全灭 MOVX @R0,A LCALL DELAY MOV A,#00H
;全亮
MOVX @R0,A
LCALL DELAY
LJMP MAIN NEXT3: LJMP CHECK FOUR: MOV R6,#5EH ;字型码“D”(花型4)
LCALL SHOW MOV R0,#02H CLR A MOVC A,@A+DPTR
;查表
MOVX @R0,A LCALL DELAY
INC DPTR
CJNE A,#0FFH,NEXT4 MOVX @R0,A LCALL DELAY LJMP MAIN NEXT4: LJMP CHECK DTAB: DB 0E7H,0C3H,81H,00H
DB
81H, 0C3H, 0E7H,0FFH SHOW: MOV R0,#03H ;字位码送PC口
MOV A,#00H
显示程序 MOVX @R0,A MOV R0,#01H ;字位码送PA口 MOV A,R6 MOVX @R0,A LCALL DELAY RET DELAY: JB P1.6,DELAY1 ;延时程序 JB P1.5,DELAY2 MOV R7,#5 L0: MOV R6,#100 L1: MOV R5,#100 L2: DJNZ R5,L2 DJNZ R6,L1
DJNZ R7,L0
SJMP LAST
MOV R7,#15
;减速 DELAY1: SJMP L0 MOV R7,#01 ;加速 DELAY2: SJMP L0 RET LAST: END
七、实习总结: 学了一年的单片机,对这门功课一直抱着最害怕的心理,因为总觉得很难的样子,而且很多知识好像总是不能入脑一样,这时记得了,转身就会忘记,或许就是学得不牢固吧。不过它也有让人觉得有趣的时候,就是在实验室做实验的时候。将程序输入单片机,然后接上硬件电路,成功之后就会显示出我们要的结果,那样是很有趣的事情。这次的实习是一个循环灯的实验。当然这次不像以前那样,总是有程序让我们照打,然后接线,运行就可以了。现在的要我们自己的找程序,自己想怎么根据程序去接电路,一切都是要自己去动脑袋。开始的时候我和很多同学一样,由开始不知道怎么做,然后一点一点去失败,然后终于有了概念,自己要怎样去想怎样去做。后来参考了别人的那个程序,然后加上自己的理解,修改了一下那个程序,将花型变化了,还有显示的数据变化,有一个新的模式。不过其实总的结构还是万变不离其中的。我每一次改变,都会试一下,看看行不行,会不会有影响等等的。最后调试到我觉得可以之后,才交功课的。学了一年的单片机,几乎都要“使尽脑汁“了,完成了还是很高兴,有过构想,要是就这样把程序和方针的电路弄在一起,也做个电路板,还是不错的。