微机原理与接口技术课程设计 机制专业.docx
《微机原理与接口技术课程设计 机制专业.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术课程设计 机制专业.docx(28页珍藏版)》请在冰豆网上搜索。
微机原理与接口技术课程设计机制专业
设计内容
设计说明及计算过程
备注
一、设计目的
一、设计目的:
通过本课程设计,使学生进一步掌握微型计算机应用系统的硬、软件开发方法,输入/输出(I/O)接口及存储器的扩展技术,应用程序设计技术并结合专业能设计简单、实用的微型计算机应用系统。
主要针对课堂重点讲授内容使学生加深对微型计算机硬件原理的理解及提高汇编语言程序设计的能力,提高学生的开发创新能力。
通过一个学期对《微机原理及接口技术》学习,掌握的知识还停留在理论的上。
但是这是一门实践性交前的课程,让学生在学完该课程之后,进行一次课程设计,是学生将课堂所学的知识和实践有机结合起来,初步掌握计算机应用系统设计的步骤和接口设计的方法,提高分析和解决实际问题的能力。
通过设计时间,培养学生查阅专业资料,工具书或参考书,了解有关工业标准,掌握现代手段和软件工具,并能以图纸和说明书表达设计思想和结果的能力。
通过设计,不但要培养和提高学生解决工程具体问题,动脑动手的技术工作能力,而且还要逐步建立科学正确的设计和科研思想,培养良好的设计习惯,牢固树立是事实和严肃认真的工作态度。
设计内容
设计说明及计算过程
备注
二、设计要求三、设计内容
二、设计要求:
重点研究单片机、A/D转换器、运算放大器、传感器、LED显示器、固态继电器、微型直流电机等元器件的特性、功能及使用方法;同时掌握主程序、子程序、中断服务程序框图的设计方法与汇编语言程序设计方法。
掌握流程图的制作,程序的编写。
了解控制对象、环境参数检测原理,在充分掌握单片机、A/D转换器、运算放大器、传感器、LED显示器、固态继电器、微型直流电机等元器件的特性、功能及使用方法的基础上,创造性的、独立的设计本课题的内容。
三、设计内容:
设计数据采集系统,被采集模拟量共8个,共用一个A/D转换器,约每分钟采集一次。
A/D转换器为8位,有一个启动转换控制信号和转换状态输出信号。
将8个模拟量对应的A/D转换结果分别存入内存的8个连续单元,循环采集8个模拟量,用新数据更新旧数据。
1.设计查询式数据采集系统结构图。
2.设计完整的数据采集汇编语言程序。
设计内容
设计说明及计算过程
备注
设计内容
设计说明及计算过程
备注
(一)流程图
设计内容
设计说明及计算过程
备注
(二)、系统设计主要有三大块:
A/D转换部分;显示数据的转换存储部分;数据的显示部分。
系统采用模块化编程,将各部分功能分别实现。
1、A/D转换过程:
将8路模拟量持续输入ADC0809模拟量输入端IN0~IN7。
首先将OE,START,ALE,A,B,C都置0,然后ALK置1再清零,进行转换通道地址的锁存,即选择转换通道打开。
将START置1再清零,发送一启动脉冲,即启动A/D转换,此时转换结束信号EOC变为低电平。
查看EOC是否为高电平,为高电平则表示A/D转换完毕。
等待A/D转换完毕后将输出允许信号输入端(OE)置高电平,此时就可将转换的一路数据输入到单片机某一存储空间中。
将OE置低电平,即停止ADC0809数据输出。
存储转换数据的地址+1。
通道号+1。
判断是否转换完8路模拟量,是则全部清零从第1条重新开始转换,否则继续转换下路模拟量。
2、显示数据的转换存储:
从IN0~IN7输入的模拟量经ADC0809转换后的到的是一个二进制数,我们无法知道实际电压是多少,于是需要我们转换成实际模拟电压值并显实出来,便于记录。
由于ADC0809是8位A/D转换,转换成的二进制最大为11111111,又因ADC0809的基准电压我设计的是5V。
可用如下公式表示模拟量与A/D转换后的二进制数的关系:
设计内容
设计说明及计算过程
备注
将公式的右边换成十进制:
在显示数据的转换存储模块部分中,主要任务是将单片机读到的数据再次转换成模拟量的数值大小,并将这个数值的整数值,小数值这三个十进制值存入相应存储地址中去。
具体的编程思想:
设定8路模拟量转换成的二进制数存在70H~77H中,显示的数据存在78H~7AH中,通道号存在7BH中。
3、显示电路程序流程:
显示这部分主要也分两部分:
整数部分的显示,小数部分的显示。
我设定的模拟电压输入值范围是:
0~5V。
故数据显示整数部分只有:
0.、1.、2.、3.、4.、5.共6个段代码,小数部分只有:
0、1、2、3、4、5、6、7、8、9共9个段代码。
4、具体编程思想:
(1)设置扫描字扫描,目的是确定开哪个数码管工作。
(2)设定段代码存储顺序:
0、1、2、3、4、5、6、7、8、9、0.、1.、2.、
3.、4.、5.。
(3)判断哪个数码管工作,以确定段代码地址。
(4)确定后送段代码到该数码管显示数据。
(5)判断是否显示完4个数码管。
(6)设置显示下路数据,再重复上述过程。
设计内容
设计说明及计算过程
备注
(三)程序设计
SSPEQU60H;堆栈指针
KEYFLAGDATA20H;键盘标志
STATEDATA22H;当前状态
SUBROUTDATA50H;前一状态
KEYDATA51H;键值
DS1DATA2DH;显示位1
DS2DATA2EH;显示位2
DS3DATA2FH;显示位3
DS4DATA30H;显示位4
DS5DATA31H;显示位5
DS6DATA32H;显示位6
DS7DATA33H;显示位7
DS8DATA34H;显示位8
DATA1DATA35H
DATA2DATA36H
DATA3DATA38H
DATA4DATA39H
NUMDATA37H
J8279DXDATA8000H;8279数据地址
J8279CXDATA8001H;8279控制地址
ORG0000H;转主程序
LJMPMAIN
ORG0003H;
RETI
ORG000BH;
RETI
ORG0013H;
LJMPJP
ORG001BH;
LJMPT1INT
ORG0023H;
RETI
ORG002BH;
RETI
ORG0100H
MAIN:
;MOVP0,#00H
CLREA
MOVR6,#08H
设计内容
设计说明及计算过程
备注
MOVTMOD,#10H;定时器1初始化,定时15S
MOVTH1,#15H
MOVTL1,#0A0H
SETBET1;允许T1中断
SETBEA;CPU开中断
SETBTR1;启动T1
MOVR5,#10H
TEST:
MOVSP,#SSP;置堆栈指针
MOVDPTR,#J8279C;设定8279工作模式
MOVA,#0D1H
MOVX@DPTR,A
WAIT:
MOVXA,@DPTR;判断8279是否工作正常
JBACC.7,WAIT
MOVA,#00H;设定8279工作模式
MOVX@DPTR,A
MOVA,#34H
MOVX@DPTR,A
MOVKEYFLAG,#80H;置键盘无值标志
MOVR7,#3EH;清单片机内部RAM
MOVA,#00H
MOVR0,#21H
LOP:
MOV@R0,A
INCR0
DJNZR7,LOP
;MOVR1,#90H;调用显示子程序
;MOVR0,#DS1
;MOVR7,#08H
;LCALLDISP
DQ:
SETBIT1
设计内容
设计说明及计算过程
备注
设计内容
设计说明及计算过程
备注
设计内容
设计说明及计算过程
备注
SETBIT0
SETBEX0
SETBEX1
SETBEA
CLRP1.4
CLRP1.5
CLRP1.6
ATT:
LCALLRDKEY;读键值
MOVKEY,A;存键值
CJNEA,#00H,REL1
MOVDATA2,#00H
LCALLK1;自动
JMPREL4
REL1:
CJNEA,#01H,REL2;手动
MOVDATA2,#0FFH
CLRP1.4
CLRP1.5
CLRP1.6
MOVNUM,#01H
LCALLREL11
JMPREL4
REL2:
CJNEA,#02H,REL4;手动加1
MOVDATA2,#0FFH
MOVR0,#NUM
INC@R0
MOVA,P1
ANLA,#70H
ADDA,#10H
MOVP1,A
CJNE@R0,#08H,REL3
LCALLREL22
REL3:
CJNE@R0,#09H,REL5
MOVNUM,#01H
CLRP1.4
CLRP1.5
设计内容
设计说明及计算过程
备注
设计内容
设计说明及计算过程
备注
CLRP1.6
REL5:
LCALLREL11
REL4:
MOVA,STATE;取状态值
ADDA,STATE;(定义状态容量为双字节所以要*2)
MOVB,A
MOVDPTR,#STAB;取得第一表首地址
MOVCA,@A+DPTR
XCHA,B
INCDPTR;取得第二表首地址
MOVCA,@A+DPTR
MOVDPL,A;将状态表地址送DPTR
MOVDPH,B
MONI1:
CLRA
MOVCA,@A+DPTR;读取特征键码
CJNEA,#0FFH,MONI2;读到最后吗?
SJMPATT;是最后,本键无效,跳转至键盘监控
MONI2:
CJNEA,KEY,MONI3;与当前键码一致吗?
SJMPMONI4;键码一致,转到下面执行
MONI3:
INCDPTR;查下一元素
INCDPTR
INCDPTR
SJMPMONI1
MONI4:
MOVA,STATE;状态转移
MOVSUBROUT,A;当前状态送至前态寄存器
CLRA
INCDPTR
MOVCA,@A+DPTR;取次态为当前状态
MOVSTATE,A
设计内容
设计说明及计算过程
备注
设计内容
设计说明及计算过程
备注
INCDPTR
CLRA
MOVCA,@A+DPTR;取工作模块编号
MOVB,A;LJMP指令为三字节,所以*3
RLA
ADDA,B
MOVDPTR,#KPRG
JMP@A+DPTR
KPRG:
;工作模块
NOP
NOP
LJMPATT
RDKEY:
MOVA,KEYFLAG
JNBACC.7,K3
SJMPRDKEY
K3:
MOVKEYFLAG,#80H
RET
JP:
CLREA;读键值中断
PUSHACC;压栈
PUSHB
PUSHPSW
PUSHDPL
PUSHDPH
SETBPSW.3;工作寄存区切换
MOVA,#40H;读键盘值
MOVDPTR,#J8279C
MOVX@DPTR,A
MOVDPTR,#J8279D
MOVXA,@DPTR
MOVKEYFLAG,A;置键有值盘标志
POPDPH;出栈
设计内容
设计说明及计算过程
备注
设计内容
设计说明及计算过程
备注
POPDPL
POPPSW
POPB
POPACC
SETBEA
CLRPSW.3;工作寄存区切换
RETI
T1INT:
MOVTH1,#15H
MOVTL1,#0A0H
DJNZR5,TOP
MOVR5,#10H;判断到15s到否,不到,则返回
MOVDATA1,#01H
RETI
TOP:
RETI
K1:
MOVR2,DATA1
CJNER2,#01H,K1
MOVR5,#10H
MOVDATA1,#00H
MOVR0,#DS8
INC@R0
MOVR1,#97H
MOVR0,#DS8
MOVR7,#01H
LCALLDISP
MOVA,DS8
CJNEA,#08H,K11
LCALLWZ
LCALLXH
LCALLTT
K11:
LCALLSH
LCALLXH
LCALLTT
设计内容
设计说明及计算过程
备注
设计内容
设计说明及计算过程
备注
REL11:
MOVDS8,NUM
MOVR1,#97H
MOVR0,#DS8
MOVR7,#01H
LCALLDISP
LCALLSH
LJMPATT
REL22:
MOVDS8,NUM
MOVR1,#97H
MOVR0,#DS8
MOVR7,#01H
LCALLDISP
LCALLWZ
LJMPATT
SH:
MOVDPTR,#0FFFFH;in0
MOVX@DPTR,A
JBp3.2,$
movxa,@dptr
movb,#33H
divab
movDS3,A
MOVR1,#92H
MOVR0,#DS3
MOVR7,#01H
LCALLDISP1
MOVA,B
MOVB,#0AH
DIVAB
MOVDS2,A
MOVDS1,B
MOVR1,#90H
MOVR0,#DS1
设计内容
设计说明及计算过程
备注
设计内容
设计说明及计算过程
备注
MOVR7,#02H
LCALLDISP
RET
XH:
MOVA,DS8
CJNEA,#08,SX
MOVDS8,#00H
clrp1.4
clrp1.5
clrp1.6
movr6,#08h
movr0,#00h
LJMPK1
SX:
MOVA,P1
ADDA,#10H
MOVP1,A
RET
TT:
LJMPK1
WZ:
MOVDPTR,#0FFFFH;in0
MOVX@DPTR,A
JBp3.2,$
MOVXA,@DPTR
MOVB,#04H
DIVAB
MOVDATA3,B
MOVB,#0AH
DIVAB
MOVDS3,A
MOVR1,#92H
MOVR0,#DS3
MOVR7,#01H
LCALLDISP
MOVDS2,B
设计内容
设计说明及计算过程
备注
设计内容
设计说明及计算过程
备注
MOVR1,#91H
MOVR0,#DS2
MOVR7,#01H
LCALLDISP1
MOVDS1,DATA3
MOVR1,#90H
MOVR0,#DS1
MOVR7,#01H
LCALLDISP
RET
显示子程序
;R0-显示起始地址
;R1-显示模式
;R7-显示位数
DISP:
MOVA,R1;
MOVDPTR,#J8279C;送8279控制字地址
MOVX@DPTR,A;送至8279控制寄存器
MOVDPTR,#J8279D;送8279数据字地址
DIS:
MOVDPTR,#TAB;送字型表起始地址
MOVA,@R0;将(R0)的内容送至A
MOVCA,@A+DPTR;查出对应的字型码
MOVDPTR,#J8279D;送8279数据字地址
MOVX@DPTR,A;将字型码送至8279数据寄存器
INCR0;送下一个数
DJNZR7,DIS;判断是否送完
RET
;8279字型码
TAB:
DB0F3H,60H,0B5H,0F4H;0,1,2,3
DB66H,0D6H,0D7H,70H;4,5,6,7
DB0F7H,0F6H,77H,0C7H;8,9,A,B
DB93H,0E5H,97H,17H;C,D,E,F
;DB0EDH,81H,0F4H,0B5H,99H,3DH
设计内容
设计说明及计算过程
备注
设计内容
设计说明及计算过程
备注
;DB7DH,85H,0FDH,0BDH,0DDH,079H
;DB06CH,0F1H,07CH,5CH,0DCH,0E9H
;DB10H,68H,0D9H
;定义各状态表的长度
DISP1:
MOVA,R1;
MOVDPTR,#J8279C;送8279控制字地址
MOVX@DPTR,A;送至8279控制寄存器
MOVDPTR,#J8279D;送8279数据字地址
DIS1:
MOVDPTR,#TAB1;送字型表起始地址
MOVA,@R0;将(R0)的内容送至A
MOVCA,@A+DPTR;查出对应的字型码
MOVDPTR,#J8279D;送8279数据字地址
MOVX@DPTR,A;将字型码送至8279数据寄存器
INCR0;送下一个数
DJNZR7,DIS;判断是否送完
RET
;8279字型码
TAB1:
DB0FBH,68H,0BDH,0FCH;0,1,2,3
DB6EH,0DEH,0DFH,78H;4,5,6,7
DB0FFH,0FEH,7FH,0CFH;8,9,A,B
DB9BH,0EDH,9FH,1FH;C,D,E,F
;DB0EDH,81H,0F4H,0B5H,99H,3DH
;DB7DH,85H,0FDH,0BDH,0DDH,079H
;DB06CH,0F1H,07CH,5CH,0DCH,0E9H
;DB10H,68H,0D9H
;定义各状态表的长度
设计内容
设计说明及计算过程
备注
设计内容
设计说明及计算过程
备注
四、参考文献
STAB:
DWSTAB0,STAB1,STAB2,STAB3,STAB4,STAB5,STAB6
;状态转移表(状态三字节表示一个元素-键码、次态、模块号)
STAB0:
DB0FFH
STAB1:
DB0FFH
STAB2:
DB0FFH
STAB3:
DB0FFH
STAB4:
DB0FFH
STAB5:
DB0FFH
STAB6:
DB0FFH
END
四、参考文献:
1.康华光.电子技术基础(模拟部分、数字部分)[M].第四版.北京:
高等教育出版出版社,1998
2.童诗白.电子技术基础(模拟部分)[M].第四版.北京:
高等教育出版社,1999
3.阎石.电子技术基础(数字部分)[M].第四版.北京:
高等教育出版社,1999
4.胡汉才.单片机原理及其接口技术[M].第二版.北京:
清华大学出版社,2002
5.余永权.ATMEL89系列单片机应用技术[M].第二版.北京:
北京航天航空大学出版社,2002
设计内容
设计说明及计算过程
备注
五、设计小结六、心得体会
五、设计小结:
通过本次微机原理与接口技术课程设计的学习与研究,我们深入学习了课本与课本以外的很多有关课程设计的资料,并且我们在设计中也遇到了很多问题,设计过程中我们结合所学知识以及参考资料的帮助,不断的尝试,解决了困扰我们的问题。
单片机在日常生活中应用广泛,结合这学期在学的嵌入式系统原理,我们更多的了解了单片机的发展现状和发展趋势,以及在生活中的广泛应用。
此次课程设计对我是一个考验,使我在设计过程中证明了自己,相信以后会做得更好。
六、心得体会:
作为一名机械设计制造及自动化大三的学生,我觉得能做这样的课程设计是十分有意义。
我们在课堂上掌握的仅仅是专业基础课的理论面,如何去面对现实中的各种问题?
如何把我们所学到的专业基础理论知识用到实践中去呢?
我想做类似的大作业就为我们提供了良好的实践平台。
在做本次课程设计的过程中,我感触最深的当属查阅了很多次设计书和指导书,通过查阅资料是我眼前的问题迎刃而解,那种喜悦无法用语言表达。
我对程序设计课程的学习的目标是在若干年以后能够独立设计一个负责的系统,包括硬件电路和软件部分。
所以,这次课程设计我付出了比别人多的努力,同样也学习到了干更多的知识。
此次设计中我非常感谢同学对我的帮助,想到今后自己应当承担的社会责任,想到世界上因为某些细小失误而出现的令世人无比震惊的事故,我不禁时刻提示自己,一定要养成一种高度负责的态度,认真对待事情的良好习惯。
设计内容
设计说明及计算过程
备注