proteus控制数码管增减课设报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、任务说明
1、按照设计要求自行定义电路图纸尺寸;
2、设计任务如下:
利用51单片机和2位共阴极数码管及2个按键等器件,设计一个控制数码管增减的单片机系统,数码管显示范围为00-99。
3、按照设计任务在Proteus 6 Professional中绘制电路原理图;
4、根据设计任务的要求编写程序,在Proteus下进行仿真,实现相应功能。
二、应用PROTEUS软件绘制原理图的过程
1、进入proteus7 professional。
2、设置图纸尺寸。单击system,再单击set sheet sizes,将尺寸设置A4,单击OK。如图1所示。
图1 设置图纸尺寸
3、选择原理图所需要元件。点击左侧栏第二个图标,再点击P,在搜索栏输入需要的元件名称。数码管为7seg,排阻为respack-8,按键为button,单片机为89c51,晶振为crystal,电阻为res,电容有两种,分别为cap-elec,capacitor。如图2所示。
图2选择原理图所需要元件
4、选择电源及地线。单击左侧栏第8个图标,选择电源VCC,地线GROUND。如图3所示。
图3 选择电源及地线
5、设置元件参数。双击需要改变参数的元件,按需要修改参数。
6、连接时钟电路部分。鼠标单击需要连接的一段,这时鼠标变成连线,再将鼠标落在需要连接的另一端即可将原理图完成。如图4所示。
图4 时钟电路部分
7、连接共阴极数码管部分。因为数码管为共阴极,所以在连接P0口同时,与1k欧姆排阻相连,排阻另一端接5V直流电源,通过P2.6和P2.7控制数码管。如图5所示。
图5 数码管部分连接电路
8、连接按键部分。通过P3口第二功能放置按键。用外部中断源0,1控制按键1,2。按键1,2的功能分别为控制计数的加减,如图6所示。
图6 按键部分原理图
9、原理图连接完成。
三、应用PROTEUS软件对原理图进行仿真的步骤以及过程结果
1、在keil中编写程序。由于设计任务是用按键控制正计数和倒计数,则利用两个外部中断分别控制。在计数时,首先对数据进行判断,若当前值为预设值时,退出中断,返回主程序,否则进行加减计数。程序流程图如图7所示。
图7 程序流程图
2、编译无误后,生成hex文件。
3、选择hex文件。右键单片机,选择edit properties,单击program file右侧文件夹按钮,选择生成的hex文件,单击OK。如图8所示。
图8 选择hex文件
4、选择仿真。单击左下角三角按钮,开始仿真。如图9所示。
图9 选择仿真
5、仿真过程结果。程序仿真开始,初始情况如图10所示。数码管显示00。当按下键1时,数码管进行加一,每按一次显示数字加一,加至99停止。如图11所示。当按下键0时,数码管显示减一,减至00截止。如图12所示。
图10 仿真初始情况
图11 进行加一操作
图12 进行减一操作
3、仿真完成,结果正确。需要注意的是,仿真结果中数码管有轻微闪烁,但经验证,程序及原理图无误,是proteus与实物有些许差别,所以截图只能显示一位,但动态显示是两位,结果正确。
四、总结
五、参考文献
[1]张毅刚.单片机原理及应用.第3版 [M] 哈尔滨:高教出版社,2015年.
[2]张坤毅.单片微型计算机原理及应用[M]西安:西安电子科技大学出版社,1997年.
[3]陈忠平.基于Proteus的51系列单片机设计与仿真.第2版[M]北京:电子工业出版社,2008.
[4]李广弟等.单片机基础[M].北京:北京航空航天出版社,2001.
[5]王东峰等.单片机C语言应用100例[M].北京:电子工业出版社,2009.
附录I 仿真电路图
附录II 程序代码
org 00h
jmp start
org 03h
jmp in0
org 13h
jmp in1
start:mov ie,#85h
mov ip,#04h
mov tcon,#05h mov dptr,#table disp:mov a,r4
mov b,#10
div ab
mov 20h,a
mov 21h,b
disp1:mov a,20h
movc a,@a+dptr mov p0,a
clr p2.7
setb p2.6
lcall delay disp2:mov a,21h
movc a,@a+dptr mov p0,a
clr p2.6
setb p2.7
lcall delay
ajmp disp
in0:mov a,r4
cjne a,#99,add1 ajmp jp1
add1:add a,#01h
mov r4,a
jp1:nop
reti
in1:mov a,r4
cjne a,#00,subb1
ajmp jp2
subb1:subb a,#01h
mov r4,a
jp2:nop
reti
delay:mov r7,#200
dela:mov r6,#125
djnz r6,$
djnz r7,dela
ret
table:db 3fh,06h,5bh,4fh,66h db 6dh,7dh,07h,7fh,6fh ret
end