机器人红绿灯仿真实验报告_机器人仿真实验报告
机器人红绿灯仿真实验报告由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“机器人仿真实验报告”。
“机器人控制”课程总结报告
机器人控制
综合仿真实验
——红绿灯
姓名:李铃
年级:2011级
系别:信息工程学院 计科(师)学号:1111000048
同组人姓名:杨晨
年级:2011级
系别:信息工程学院 计科(师)同组人学号:1111000054
2013年5月14日
第 1 页 【实验目的】
进一步熟悉keil仿真软件、proteus仿真软件的使用。了解并熟悉单片机I/O口和数码管的电路结构学会构建简单的红绿灯电路。掌握C51中单片机I/O口的编程方法和使用I/O口进行输入输出的注意事项。
【实验要求】
利用proteus仿真软件和keil仿真软件实现交通信号灯的功能。
【实验环境】
Proteus与keil联合,语言环境为汇编语言。
【实验用品】
proteus仿真软件,keil仿真软件,个人计算机一台。
【实验内容】
一、利用proteus软件画出电路图
1、打开proteus软件,点击P选择电器元件(见图1.1),在keywords中搜索要用到的电器元件(见图1.2和图1.3),在本次试验中选择型号为AT89C51单片机。找到后双击元件名称,这样元件就显示在DEVICES中了(见图1.4),选好后点击“OK”关闭窗口。
图 1.1
图 1.2
图 1.3
图 1.4
2、选中左侧的AT89C51元件,在作图区域内单击鼠标左键,会出现图1.5左边的图象,再次单击鼠标左键,会出现图1.5右边的图像,此时已经安放好了AT89C51元件。
图
1.5
3、按照上述步骤找齐电路中还需要的电器元件,包括:电阻(RES17个,RESPACE1个),电容(CAP2个,CAPELEC1个),三极管(2N222 2个),发光二级管(LED-GREEN1个,LED-RED1个,LED-YELLOW1个),数码管(7SEG1个),开关(BUTTON1个),晶振(GRYSTAL1个)。
4、将各个元件组合,最终形成如图1.6的电路图。
二、利用keil软件编写程序并生成.asm文件和.hex文件
1、打开keil软件,选择工程->新建工程(见图1.7),并确定存放位置。
图 1.7
2、选择单片机:Atmel->AT89C51,之后的对话框选择“否”,如图1.8。
图 1.8
3、新建程序:文件->新程序文件,如图1.9.4、编辑程序文件如下:
ORG 0000H TEMP EQU 24H TEMN EQU 25H LJMP MAIN ORG 0003H LJMP T0_INT ORG 0013H LJMP TI_INT T0_INT: MOV A, P1 PUSH ACC MOV P1, #0FFH MOV P1, #0F3H MOV P0, #00H JNB P3.2,$ POP ACC MOV P1, ACC RETI TI_INT: MOV A, P1 PUSH ACC MOV P1, #0FFH MOV P1, #0DEH
图 1.9 MOV P0,#00H JNB P3.3,$ POP ACC MOV P1, A RETI MAIN: SETB EA SETB EX0 SETB EX1 CLR F0 START1: MOV TEMP, #25 MOV P1, #0F3H LOOP1: ACALL DELAY DEC TEMP MOV A,TEMP MOV P0, TEMP JNB P1.6,START3 JNB P1.7,START11 CJNE A,#0, NEXT1 LJMP START2 NEXT1: LJMP LOOP1 START11: MOV TEMP, #65 MOV P1, #0F3H LOOP11: ACALL DELAY DEC TEMP MOV A,TEMP MOV P0, TEMP JNB P1.6,START33 JNB P1.7,START1 CJNE A,#0, NEXT11 LJMP START11 NEXT11: LJMP LOOP11 START2: MOV P1, #0F5H MOV TEMN,#05 LOOP2: ACALL DELAY1 DEC TEMN MOV A,TEMN CJNE A, #0,NEXT2 LJMP START3 NEXT2: LJMP LOOP2 START3: MOV TEMP, #25 MOV P1,#0DEH LOOP3: ACALL DELAY DEC TEMP MOV A,TEMP MOV P0, TEMP JNB P1.6,START1 JNB P1.7,START33 CJNE A, #0,NEXT3 LJMP START4 NEXT3: LJMP LOOP3 START33: MOV TEMP, #65 MOV P1,#0DEH LOOP33: ACALL DELAY DEC TEMP MOV A,TEMP MOV P0, TEMP JNB P1.6,START11 JNB P1.7,START3 CJNE A, #0,NEXT33 LJMP START4 NEXT33: LJMP LOOP33 START4: MOV P1, #0EEH MOV TEMN,#05 LOOP4: ACALL DELAY1 DEC TEMN MOV A, TEMN CJNE A,#0,NEXT4 LJMP START1 NEXT4: LJMP LOOP4 RETI DELAY: MOV A,TEMP MOV B, #10 DIV AB MOV R5, A MOV R6, B MOV R0, #10 L0: MOV R1, #250 L1:MOV A,R5 MOV P0, A CLR P2.4 ACALL DIMS SETB P2.4 MOV A,R6 MOV P0,R6 CLR P2.5 ACALL DIMS SETB P2.5 DEC R1 DJNZ R1,L1 DEC R0 DJNZ R0,L0 RETI DELAY1: MOV A,TEMN MOV B, #10 DIV AB MOV R5, A MOV R6, B MOV R2, #10 L2: MOV R3, #250 L3:MOV A,R5 MOV P0, A CLR P2.4 ACALL DIMS SETB P2.4 MOV A,R6 MOV P0,R6 CLR P2.5 ACALL DIMS SETB P2.5 DEC R3 DJNZ R3,L3 DEC R2 DJNZ R2,L2 RETI DELAY11: MOV A,TEMP MOV B, #10 DIV AB MOV R5, A MOV R6, B MOV R0, #10 Y0: MOV R1, #250 Y1:MOV A,R5 MOV P2, A CLR P2.6 ACALL DIMS SETB P2.6 MOV A,R6 MOV P2,R6 CLR P2.7 ACALL DIMS SETB P2.7 DEC R1 DJNZ R1,Y1 DEC R0 DJNZ R0,Y0 RETI DIMS: MOV R7,#250 DJNZ R7,$ RET END
4、生成asm文件。文件->保存,如图1.10,注意后缀为.asm
图 1.10
5、生成hex文件。Target->source group 1->右键->Add Files to Group‘Source Group 1’,单击Add,然后单击Close。单击Build Toolbar->Options for Target,如图1.11进行设置。调试正常后,project->build target生成hex文件(十六进制文件)。
图 1.11
【实验小组分工情况】
李铃负责Proteus软件部分,杨晨负责keil软件和p-k联动部分。
【结论】
基本实现红绿灯电路,进一步熟悉了keil仿真软件、proteus仿真软件的使用。了解并熟悉单片机I/O口和数码管的电路结构。掌握C51中单片机I/O口的编程方法和使用I/O口进行输入输出的注意事项。
【收获和体会】
考虑到本组的第一和第二个仿真实验分别为流水灯和数码管动态显示,我组成员决定这个综合的仿真实验结合这前两个仿真做一个红绿灯的仿真实验。本意是想根据实际情况,即红灯和绿灯亮起的时间较长为25秒,黄灯较短为5秒,根据红黄绿的顺序显示,并且有数字显示剩余时间。但是实验并未获得成功,最后数码管正常运转,灯却不亮,进行多次调试后也没能成功,这是本次实验的一个问题。此外,本次实验的汇编代码有些复杂,在编译时花了不少时间。