广东机电师兄心血《计算机控制技术》课程设计报告A4版.docx

上传人:b****5 文档编号:3603516 上传时间:2022-11-24 格式:DOCX 页数:11 大小:41.33KB
下载 相关 举报
广东机电师兄心血《计算机控制技术》课程设计报告A4版.docx_第1页
第1页 / 共11页
广东机电师兄心血《计算机控制技术》课程设计报告A4版.docx_第2页
第2页 / 共11页
广东机电师兄心血《计算机控制技术》课程设计报告A4版.docx_第3页
第3页 / 共11页
广东机电师兄心血《计算机控制技术》课程设计报告A4版.docx_第4页
第4页 / 共11页
广东机电师兄心血《计算机控制技术》课程设计报告A4版.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

广东机电师兄心血《计算机控制技术》课程设计报告A4版.docx

《广东机电师兄心血《计算机控制技术》课程设计报告A4版.docx》由会员分享,可在线阅读,更多相关《广东机电师兄心血《计算机控制技术》课程设计报告A4版.docx(11页珍藏版)》请在冰豆网上搜索。

广东机电师兄心血《计算机控制技术》课程设计报告A4版.docx

广东机电师兄心血《计算机控制技术》课程设计报告A4版

 

广东机电职业技术学院

 

《计算机控制技术》

课程设计报告

(2014-2015学年第一学期)

 

专业:

电气自动化

班级:

电气0000班__

姓名:

学号:

指导教师:

老师

 

1、秒表设计

1、秒表的硬件设计(电路图及说明)

开发环境:

ProteusProV7.5SP3

主芯片:

AT89C51*1(CPU工作时钟晶振12MHz)

六位七段共阴极数码管7SEG-MPX6-CC-BLUE*1

八单线驱动器74LS240*1

反相器74LS04*6

秒表功能按钮:

①复位清零;②启动/暂停;③读取时间;④读取模式

秒表功能使用说明:

⒈清零状态下,按下“启动/暂停”按钮,秒表开始计时,再按一次可暂停,显示屏记录当前秒数,再按一次可继续计时;

⒉清零状态下,按下“读数”按钮切换读数模式,接着按下“启动/暂停”按钮,单片机内部开始计时,再按下“读取”按钮,可在显示屏读取当前的秒数,依次类推,再按可连续读取;

⒊按下“复位清零”按钮恢复初始值、初始模式,等待重新计时。

2、秒表的程序设计

1.ORG0000H

2.LJMPSTART

3.ORG0003H;外部中断0入口

4.LJMPTO_INT0

5.ORG000BH;定时器0中断入口

6.LJMPTO_T0

7.ORG0013H;外部中断1入口

8.LJMPTO_INT1

9.ORG0100H

10.START:

CLRTR0;定时器0启动控制位

11.MAIN:

CLR00H

12.CLR01H

13.CLR02H

14.CLRRS1;初始化,选择第0组工作寄存器

15.CLRRS0

16.MOVSP,#70H;堆栈入口

17.MOV30H,#0;赋值,秒表初始时间

18.MOV31H,#0

19.MOV32H,#0

20.MOV33H,#0

21.MOV34H,#0

22.MOV35H,#0

23.MOVTMOD,#00010001B;设置为16位定时器

24.MOVTH0,#0D8H;设初值,定时10MS(针对12MHz晶振)

25.MOVTL0,#0F0H

26.SETBIT0;设置边沿触发

27.SETBIT1

28.MOVIE,#10000111B;设置允许外部中断0、1,定时器0中断请求,

开总中断

29.MOVE_CLOCK:

MOVR1,#40H

30.MOVR2,#6

31.MOVR0,#30H

32.LOOP:

MOVA,@R0

33.MOVDPTR,#TAB

34.MOVCA,@A+DPTR;查段码,获取当前数值的共阴极码

35.CPLA;硬件有反相器,所以软件取反

36.MOV@R1,A

37.INCR0

38.INCR1

39.DJNZR2,LOOP

40.SAOMIAO:

MOVA,#00000001B;扫描,使数值显示在数码管上

41.MOVR1,#40H

42.MOVR2,#6

43.LOOP1:

MOVP1,A

44.MOVP0,@R1

45.LCALLDELAY

46.RLA

47.INCR1

48.DJNZR2,LOOP1

49.JNBP3.1,START;清零功能,键按下时,返回初始化

50.JNBP3.6,DUSHU;检查是否启动读数模式

51.JB01H,RETURN

52.JNB00H,SAOMIAO

53.CLR00H

54.LJMPMOVE_CLOCK

55.DUSHU:

SETB01H;读数模式标志位

56.CLRRS1;读数模式下选择第1组工作寄存器

57.SETBRS0

58.RETURN:

LJMPSAOMIAO

59.TO_T0:

CLRTR0

60.CLRRS1;读数模式启动后,内部计时依然使用第0组工作寄存器

61.CLRRS0

62.MOVTH0,#0D8H;设初值,定时10MS(针对12MHz晶振)

63.MOVTL0,#0F0H

64.SETBTR0

65.SETB00H;10MS时间到标志位

66.INC30H

67.MOVR3,30H

68.CJNER3,#10,TIME_10MS;进位比较

69.MOV30H,#0

70.INC31H

71.MOVR3,31H

72.CJNER3,#10,TIME_10MS

73.MOV31H,#0

74.INC32H

75.MOVR3,32H

76.CJNER3,#10,TIME_10MS

77.MOV32H,#0

78.INC33H

79.MOVR3,33H

80.CJNER3,#6,TIME_10MS

81.MOV33H,#0

82.INC34H

83.MOVR3,34H

84.CJNER3,#10,TIME_10MS

85.MOV34H,#0

86.INC35H

87.MOVR3,35H

88.CJNER3,#6,TIME_10MS

89.MOV35H,#0

90.TIME_10MS:

JNB01H,Y0;检查是否进入读数模式

91.SETB02H;标志位,去除不同模式下按钮的干扰

92.SETBRS0;若是,中断结束前,返回第1组工作寄存器

93.CLRRS1

94.Y0:

RETI

95.TO_INT0:

CPLTR0;通过取反,实现启动/暂停

96.RETI

97.TO_INT1:

JB02H,Y1

98.LJMPY2

99.Y1:

JNBTR0,Y2

100.CLRRS0;返回读取内部计时

101.CLRRS1

102.PUSHA;保护现场

103.MOVR1,#40H

104.MOVR2,#6

105.MOVR0,#30H

106.LOOP2:

MOVA,@R0

107.MOVDPTR,#TAB

108.MOVCA,@A+DPTR;查段码

109.CPLA;硬件有反相器,所以软件取反

110.MOV@R1,A

111.INCR0

112.INCR1

113.DJNZR2,LOOP2

114.POPA;恢复现场

115.Y2:

RETI

116.DELAY:

MOVR7,#100;延时子程序

117.D2:

MOVR6,#18

118.D1:

NOP

119.NOP

120.NOP

121.DJNZR6,D1

122.DJNZR7,D2

123.RET

124.TAB:

DB3FH,06H,5BH,4FH,66H;段码表

125.DB6DH,7DH,07H,7FH,6FH

126.RET

127.END

 

3、秒表工作原理及技术分析

关于秒表:

硬件上,该电路外部P3.1增设一“复位清零”按钮,外部中断

增设一“启动/暂停”按钮,

增设一“读取”按钮,P3.6增设一“读数模式”切换按钮。

软件上,Ⅰ清零功能:

通过将检测P3.1口是否动作的程序嵌入数码管扫描程序中,当检测到P3.1有动作时,跳转到程序START开始阶段,恢复初始值、初始模式;

Ⅱ启动/暂停:

通过外部中断0随时等待请求中断,初始定时器启动控制位TR0为0,当中断请求时,将定时器启动控制位置1,开始计时;再按一次,即将TR0取反置0,停止计时,可反复操作;

Ⅲ关于秒表计时,采用定时器0溢出中断,通过设置好计时溢出时间实现加10ms以及通过比较指令、标志位实现进位;

Ⅳ读数模式:

通过启用第1组工作寄存器,第0组工作寄存器仍用于内部定时器计时,从而使当前计数不显示在数码管上,再利用外部中断1,当“读取时间”按钮申请中断时,扫描30H-35H当前值,利用第0组工作寄存器中将当前值重新查询段码送至40H-45H,返回后即可显示所读取的秒数。

二、教学实例功能拓展

1、密码锁教学实例说明

在相关硬件基础下,通过检测P0八个口是否有键按下,与对应密码组合进行比较,正确则驱动P3.7相应电路使其灯亮,错误则对P1口赋值,使其报警灯亮起。

2、拟拓展功能描述

为更加贴近生活中电子密码锁的应用,拟拓展以下功能:

①在原有教学实例上,将3个实例功能整合;

即:

⑴按1亮1盏灯,按2亮2盏灯,……按8亮8盏灯

⑵可以再次输入密码

⑶报警灯闪烁

②密码只有三次的输入错误机会,三次一到,冻结按键;

③增设一“解除冻结”按钮,以模拟等待主人开锁。

3、硬件及软件修改方法

关于密码锁:

硬件上,该外部电路P3.0增设一“解除冻结”按钮,增添一7SEG-BCD数码管。

软件上,对应拟拓展功能:

①将输入密码传送至ACC累加器再与报警灯亮灯方案进行比较;

②在密码比较环节入口新增计数环节,每输错密码进入报警灯比较环节自动“减1”,剩余输入次数通过对应BCD码传送到P2口,使其数码管显示,当输入三次连续错误时,通过JBP3.0,$死循环使其等待解锁指令;

③通过P3.0口解除,正常工作下,按下P3.0也可复位。

1.ORG0000H

2.LJMPSTART

3.ORG0100H

4.START:

CLRP3.7;初始化,上锁

5.MOVP2,#00000011B;设置输入次数

6.MOVP1,#0FFH;初始化,灭灯

7.MOVR4,#0

8.MOVR5,#0

9.CLR00H

10.CLR01H

11.KEY:

MOVA,P0

12.CJNEA,#0FFH,KEYDOWN

13.JNBP3.0,START

14.JNB00H,KEY;无键按下,返回重新检测

15.JB01H,Y1

16.Y2:

LCALLDELAY;延时显示

17.MOVP1,#0FFH

18.LCALLDELAY

19.LCALLDELAY

20.MOVP1,R0

21.INCR4

22.CJNER4,#250,KEY;扫描新输入

23.MOVR4,#0

24.LJMPKEY

25.Y1:

INCR5

26.CJNER5,#03H,Y3;三次输入次数到

27.MOVP2,#00H

28.JBP3.0,$;冻结按键,等待P3.0口解除

29.LJMPSTART

30.Y3:

DECP2.0;输入错误,次数减1

31.CLR01H

32.LJMPY2

33.KEYDOWN:

LCALLDELAY;延时去抖动

34.MOVA,P0

35.CJNEA,#0FFH,KEY1

36.LJMPKEY;无键按下,返回重新检测

37.KEY1:

CJNEA,#11111011B,KEY2;与正确密码比较

38.SETBP3.7;密码正确,开锁

39.MOVP2,#00000011B

40.MOVP1,#11111111B

41.MOVR5,#0

42.CLR00H

43.LJMPCOMOUT

44.KEY2:

SETB01H;记录输入次数标志位

45.CJNEA,#11111110B,L1;以下为比较环节,找出所输错误密码

46.MOVR0,#11111110B;对应的亮灯

47.L1:

CJNEA,#11111101B,L2

48.MOVR0,#11111100B

49.L2:

CJNEA,#11111011B,L3

50.MOVR0,#11111000B

51.L3:

CJNEA,#11110111B,L4

52.MOVR0,#11110000B

53.L4:

CJNEA,#11101111B,L5

54.MOVR0,#11100000B

55.L5:

CJNEA,#11011111B,L6

56.MOVR0,#11000000B

57.L6:

CJNEA,#10111111B,L7

58.MOVR0,#10000000B

59.L7:

CJNEA,#01111111B,NEXT

60.MOVR0,#00000000B

61.NEXT:

MOVP1,R0

62.CLRP3.7

63.SETB00H;等待新密码密码标志位

64.COMOUT:

LJMPKEY

65.DELAY:

MOVR6,#64H;延时子程序

66.LOOP1:

MOVR7,#0F8H

67.NOP

68.LOOP2:

DJNZR7,LOOP2

69.DJNZR6,LOOP1

70.RET

71.END

4、调试过程及结果

调试过程中在显示延时上做了颇多调整,初步解决了按键失灵的故障,再经过调整标志位的合适位置,最终能到达自己拟拓展的相关功能。

 

3、课程学习总结

不知不觉,我学了单片机将近一个学期,感觉收益匪浅。

我现在对单片机的理解,要说一句最大的感受,那就是“单片机是一种集成度很高的微型计算机”。

就这学期所学的AT89C51芯片,它包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线这样一个完善的硬件设备;而对于单片机的程序控制,机器码、汇编语言,从我理解的角度,程序的本质是寄存器之间的数据传递。

程序是由两部分组成的:

首先是寄存器之间的数据传递,剩下的就是逻辑控制。

而在这一学期,通过经典流水灯,密码锁,数码管等不同控制要求的实例学习,从老师的一次又一次地耐心教导中逐渐领悟了逻辑程序的魅力。

要想开发自己的逻辑思维,就要多看别人的程序,找出别人程序中的“闪光点”,并且在自己以后的编程中加以运用。

而不是照着老师已编好的程序思路被“引”进去,这才是进步之道。

课程建议:

至于课程建议的话,个人倒是真的没有什么可采取性的建议。

叶老师讲得很好,思路清晰明朗。

学习关键还是学生本身,逻辑思维不多练,肯定写不成完整的程序;课本我觉得也很重要,书里详细的硬件、功能介绍看多了,自己编程时才会有更好的运用。

我们是大专生,电气自动化以贴近企业生产、工控学习为主。

就现在单片机在大量生产开发中的应用,课程若是能以C语言、汇编语言互辅教学那就更好啦~但又涉及大一学习C语言程序基础,所以没有什么采取性。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教学研究 > 教学案例设计

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1