单片机实训课程设计.docx
《单片机实训课程设计.docx》由会员分享,可在线阅读,更多相关《单片机实训课程设计.docx(18页珍藏版)》请在冰豆网上搜索。
![单片机实训课程设计.docx](https://file1.bdocx.com/fileroot1/2022-11/24/e0a6842d-1d2e-4f69-b672-aa44c8e71259/e0a6842d-1d2e-4f69-b672-aa44c8e712591.gif)
单片机实训课程设计
机电工程系
单片机原理与接口技术
实训课程设计
专业:
机械设计制造及其自动化
班级:
姓名:
学号:
指导教师:
袁益民
(2010年11月19日)
实训一:
单片机实时交通信号灯控制模拟
一实训目的:
1.了解可编程I/O芯片8255的结构功能及编程方法
2.学习掌握用单片机进行交通灯控制的实现方法。
3.掌握用软件编程实现延时的方法。
二设计内容及要求:
1.编程DJ—598KC单片机扩展连接的8255的PA、PB口为输出I/O口,控制DJ—598KC实验箱上的黄、绿、红、三色十二个发光二极管亮灭,并分别用实验箱上的两位七段LED数码倒计时显示两通车道车辆通行时间(即黄、绿、红三色发光二极管亮灭时间),模拟十字路口交通信号灯控制和管理,并完成在DJ—598KC单片机实验箱上的仿真。
2.将8255的PA、PB口输出控制改为用单片机的P1、P3口实现输出控制,再完成控制电路连接设计及控制程序的编制和仿真。
三实训相关图形
18255控制电路逻辑图
2DJ-598KC实验系统LED显示器接口电路连接
3控制程序框图
48255A的逻辑结构和信号引脚
5DJ-5198KC实验箱8255的I/O口地址分配
6用单片机P1和P3口的控制电路逻辑图
四程序清单
ORG0100H
HA4S:
MOVSP,#60H
;8255初始化
MOVDPTR,#0FF2BH
MOVA,#88H
MOVX@DPTR,A
MOVDPTR,#0FF23H
MOVA,#88H
MOVX@DPTR,A
;四个红灯
MOVDPTR,#0FF28H
MOVA,#0B6H
MOVX@DPTR,A
INCDPTR
MOVA,#0DH
MOVX@DPTR,A
;5秒延时
MOV2AH,#05H
LCALLDELAY
;东西绿灯,南北红灯
HA4S3:
MOVDPTR,#0FF28H
MOVA,#75H
MOVX@DPTR,A
INCDPTR
MOVA,#0DH
MOVX@DPTR,A
;80秒延时
MOV2AH,#50H
LCALLDELAY
;东西黄灯,南北红灯
HA4S1:
MOVDPTR,#0FF28H
MOVA,#0F3H
MOVX@DPTR,A
INCDPTR
MOVA,#0CH
MOVX@DPTR,A
;10秒延时
MOV2AH,#0AH
LCALLDELAY
;东西红灯,南北绿灯
MOVDPTR,#0FF28H
MOVA,#0AEH
MOVX@DPTR,A
INCDPTR
MOVA,#0BH
MOVX@DPTR,A
;50秒延时
MOV2AH,#32H
LCALLDELAY
;东西红灯,南北黄灯
HA4S2:
MOVDPTR,#0FF28H
MOVA,#9EH
MOVX@DPTR,A
INCDPTR
MOVA,#07H
MOVX@DPTR,A
;10秒延时
MOV2AH,#0AH
LCALLDELAY
LJMPHA4S3;重复东西通行
DELAY:
LCALLDISP
DJNZ2AH,DELAY
RET
DISP:
MOVA,2AH
MOVB,#0AH
DIVAB
MOVDPTR,#TABLE
MOVCA,@A+DPTR
MOVR2,A
MOVA,B
MOVCA,@A+DPTR
MOVR3,A
MOVP2,#0FFH
MOVR0,#21H
MOVR1,#20H
MOVR6,#0FAH
;250×((250×8+1)×2×1+1)s
LOOP:
MOVR5,#0FAH
LOOP1:
MOVA,R3
MOVX@R0,A
MOVA,#0FEH
MOVX@R1,A
DJNZR5,LOOP1
MOVR5,#0FAH
LOOP2:
MOVA,R2
MOVX@R0,A
MOVA,#0FDH
MOVX@R1,A
DJNZR5,LOOP2
DJNZR6,LOOP
RET
TABLE:
DB0C0H,0F9H,0A4H,0B0H,99H
DB92H,82H,0F8H,80H,90H
END
五程序小结
为期一周的单片机课程设计让我们受益匪浅.学到了很多东西,不管怎么样,先感谢学校给我的这么多机会.真正的学到了东西.
在以前的实训中,有接触过用PLC控制交通灯中各个灯泡的点亮顺序,在这周的实训中,用可编程I/O芯片8255控制交通灯,了解可编程I/O芯片8255的结构功能及编程方法,用软件实现延时的方法程序基本编写成功,这是我们共同努力的结果,在享受我们成果之时,不得不感慨单片机的重要性与高难度性,所以为期一周的单片机课程设计没有浪费,我们从中学到了很多知识.,也让我们对单片机有了更深一步的了解.虽然最后结果是出来了,可这与老师的精心指导是分不开的。
实训二:
七段LED数码显示接口与控制设计
一实训目的:
1.熟悉和掌握MCS-51单片机与七段LED显示器接口的方法。
2.掌握七段LED显示器显示字符的控制方法及可编程I/O芯片8255的功能和初始化编程的方法。
二实训内容:
1.熟悉和掌握单片机与LED七段显示器硬件连接电路的设计;
2.设计一字符表演程序,使字符‘0’~‘F’在DJ-598KC实验箱上的6位LED显示器上实现自动顺序逐位循环显示和全显示。
3.编程将片内30H单元的两位16进制数转换成三位十进制数,并用DJ-598KC实验箱上的左边两位LED显示两位16进制数,用右边三位LED上显示转换的三位十进制值。
三七段LED显示器接口介绍:
1七段LED结构及外形图
2七段LED字型码
字型码格式
dp
g
f
e
d
c
b
a
389C51与LED显示器接口连接(DJ-598KC实验系统)
48255A的逻辑结构和信号引脚
5DJ-5198KC实验箱8255的I/O口地址分配
四参考程序清单
ORG0100H
MOVSP,#50H
START:
MOVR7,#0FFH
MEMS:
INCR7
MOVA,R7
MOVDPTR,#TABLE
MOVCA,@A+DPTR
MOV20H,A
ACALLSOX0
CJNER7,#0FH,MEMS
MOVR7,#0
MEMS2:
MOVA,R7
MOVDPTR,#TABLE
MOVCA,@A+DPTR
MOV20H,A
ACALLSOX1
INCR7
CJNER7,#10H,MEMS2
SJMPSTART
ORG01A0H
SOX0:
MOVP2,#0FFH
MOVDPTR,#0FF23H
MOVA,#88H
MOVX@DPTR,A
MOVA,20H
MOVR0,#21H
MOVR1,#20H
MOVX@R0,A
MOVA,#0C0H
MOVX@R1,A
MOVR2,#20H
LCALLDELY
RET
SOX1:
MOVP2,#0FFH
MOVDPTR,#0FF23H
MOVA,#88H
MOVX@DPTR,A
MOVA,20H
MOVR0,#21H
MOVR1,#20H
MOVX@R0,A
MOVA,#0FEH
SOX2:
MOVX@R1,A
MOVR2,#20H
LCALLDELY
RLA
CJNEA,#0BFH,SOX2
RET
DELY:
PUSH02H
DEL2:
PUSH02H
DEL3:
PUSH02H
DEL4:
DJNZR2,DEL4
POP02H
DJNZR2,DEL3
POP02H
DJNZR2,DEL2
POP02H
DJNZR2,DELY
RET
TABLE:
DB0C0H,0F9H,0A4H,0B0H
DB99H,92H,82H,0F8H
DB80H,90H,88H,83H
DB0C6H,0A1H,86H,8EH
END
将片内30H单元的两位16进制数转换成三位十进制数参考程序:
ORG0000H
LJMPSTART
ORG0100H
START:
MOVR0,#30H
MOVA,@R0
MOVB,#64H
DIVAB
INCR0
MOV@R0,A
MOVA,B
MOVB,#0AH
DIVAB
INCR0
MOV@R0,A
MOVA,B
INCR0
MOV@R0,A
DISP:
MOVDPTR,#0FF23H
MOVA,#88H
MOVX@DPTR,A
LOOP:
MOVR0,#30H
MOVA,@R0
ANLA,#0F0H
SWAPA
MOVDPTR,#SEG
MOVCA,@A+DPTR
MOVDPTR,#0FF21H
MOVX@DPTR,A
MOVA,#0DFH
MOVDPTR,#0FF20H
MOVX@DPTR,A
ACALLDL
MOVA,@R0
ANLA,#0FH
MOVDPTR,#SEG
MOVCA,@A+DPTR
MOVDPTR,#0FF21H
MOVX@DPTR,A
MOVA,#0EFH
MOVDPTR,#0FF20H
MOVX@DPTR,A
ACALLDL
INCR0
MOVR3,#0FBH
LD0:
MOVA,R3
MOVDPTR,#0FF20H
MOVX@DPTR,A
MOVDPTR,#SEG
MOVA,@R0
DIR0:
MOVCA,@A+DPTR
MOVDPTR,#0FF21H
DIR1:
MOVX@DPTR,A
ACALLDL
INCR0
MOVA,R3
JNBACC.0,LOOP
RRA
MOVR3,A
LJMPLD0
DL:
MOVR6,#01FH
DELAY2:
MOVR7,#018H
DELAY1:
DJNZR7,DELAY1
DJNZR6,DELAY2
RET
SEG:
DB0C0H,0F9H,0A4H
DB0B0H,99H,92H,82H
DB0F8H,80H,90H,88H,83H
DB0C6H,0A1H,86H,8EH
END
五实训小结
在这次课程设计中,我们运用到了以前所学的专业课知识,如:
C语言、模拟和数字电路知识等。
虽然过去从未独立应用过它们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的又一收获。
最后,在实习之前,我们要对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在实习过程中遇到问题是很正常的,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题。
但是从中学到的知识会让我受益终身。
发现、提出、分析、解决问题和实践能力提高都会受益于我在以后的学习、工作和生活中。
实训三:
基于8051单片机的数字电压表的设计与仿真
一、设计目的:
1.掌握A/D、D/A转换与单片机接口连接的方法;
2.了解A/D芯片ADC0809、D/A芯片DAC0832的转换性能及编程方法;
3.通过实验了解单片机扩展A/D、D/A转换芯片的方法,学会和掌握用单片机进行数据采集;
二、设计要求
将实验箱DJ598上的ADC0809作为A/D转换器,用实验箱上的电位器提供模拟量输入,编制程序,将模拟量转换成数字量,在利用DAC0832D/A数模转换器输出,通过数码管显示出结果,构成一个简易数字电压表。
三、设计内容
使用ADC0809的0通道(IN0),进行0~5V直流电压的A/D转换,并通过DAC0832输出相似的电压值。
0通道的电压输入由实验箱模拟量产生模块的电位器调整,电压测试点为AOUT1。
顺时针旋转,电压增大,最大5V;逆时针旋转电压减小,最小为0V。
将DAC0832得AOUT的输出接数字电压表,使DAC0832的输出电压为0~5V。
实验中采用延时方式或查询方式等待A/D转换结果。
四、实验电路
1.单片机与ADC0809实验接线图
2.单片机与DAC0832实验接线图
五、参考程序
ORG0000H
DAC0832EQU0FF90H
ADC0809_0EQU0FF80H
LJMPSTRAT
ORG0100H
START:
MOVSP,#60H
MOVA,#81H
MOVDPTR,#0FF23H
MOVX@DPTR,A
;初始化显示缓冲区
MOV7EH,#00H
MOV7DH,#08H
MOV7CH,#00H
MOV7BH,#09H
MOV7AH,#10H
MOV79H,#10H
LO18:
LCALLSSEE;显示A/D转换的结果
MOVDPTR,#ADC0809_0
MOVA,#00H
MOVX@DPTR,A;启动A/D转换
MOVR7,#0AH
DELAY:
NOP;延时100µS,等待A/D转换结束
NOP
NOP
DJNZR7,DELAY
NOP;读取A/D转换的结果
MOVXA,@DPTR
NOP;可在此处设置断点,观察累加器A中
MOVDPTR,#DAC0832
MOVX@DPTR,A
NOP;将结果写入DAC0832转换成电压输出,可测量输出点AOUT
;可在此设置断点,比较AOUT1和AOUT得值是否相同
MOVR0,#79H
LCALLPTDS;送累加器A中A/D转换的值到显示缓冲区
SJMPLO18
ORG05D0H
PTDS:
MOVR1,A;拆送累加器A中A/D转换的值显示缓冲区
ACALLPTDS1
MOVA,R1
SWAPA
PTDS1:
ANLA,#0FH
MOV@R0,A
INCR0
RET
ORG0D50H;显示A/D转换的值子程序
SSEE:
SETBRS1;切换工作区
MOVR5,#05H
SSE2:
MOV30H,#20H
MOV31H,#7EH
MOVR7,#06H
SSE1:
MOVR1,#20H
MOVA,30H
CPLA
MOVX@R1,A;字位送入
MOVR0,31H
MOVA,@R0
MOVDPTR,#DDFF
MOVCA,@A+DPTR;取字形代码
MOVR1,#21H
MOVX@R1,A;字形送入
MOVA,30H
RRA;右移
MOV30H,A
DEC31H
MOVA,#0FFH
MOVX@R1,A;关显示
DJNZR7,SSE1;六位显示完了吗?
DJNZR5,SSE2;5次显示完了吗?
CLRRS1
RET
;’0’~’F’字符字型代码表
DDFF:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
DB88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,0DEH
END
六、实训小结
经过这次实训,使我得到了一次专业知识,专业技能和解决问题全面的锻炼。
使我在单片机的基本原理,单片机的应用系统的开发过程,以及常用编程设计使用技巧的掌握方面都迈向前一大步。
通过本次实验,了解单片机扩展A/D、D/A转换芯片的方法,学会和掌握用单片机进行数据采集和A/D芯片ADC0809、D/A芯片DAC0832的转换性能及编程方法。
在今后单片机的实际应用方面有了比较不错的铺垫。
在设计过程中,出现一些问题,但都是一些常见的小问题,在调试中出现问题,不过这些都是经常性错误,经过调试修改都一一解决,程序顺利进行,并实现了其功能。