第五章 单片机课程设计.docx
《第五章 单片机课程设计.docx》由会员分享,可在线阅读,更多相关《第五章 单片机课程设计.docx(26页珍藏版)》请在冰豆网上搜索。
第五章单片机课程设计
第五章单片机课程设计
设计一多功能数字时钟
一、设计目的
1、通过一个单片机应用实例建立系统的整体概念;
2、学习掌握单片机系统的硬、软件的工作原理以及二者间的配合关系和方法;
3、掌握8255等可编程接口芯片及实验箱中数码管、LED等电路的应用;
4、掌握单片机汇编语言应用程序的设计和调试方法。
二、设计要求
利用STARES598PCI实验仪的硬件资源设计一个“电子钟”。
使用单片机内部计数器或外部计数器芯片8253、8255可编程并行接口芯片和七段数码管设计一个电子钟电路,并编制一程序使得该电子钟正常运行。
三、设计内容
1、选用单片机内部计数器产生内部定时器中断,当定时到100ms时产生一个中断信号,在中断服务程序中进行中时、分、秒的计数,并送入相应的存储单元;8255的A口接七段数码管的位选信号,B口接数码管的段选信号,时、分、秒的数值通过对8255的编程可送到七段数码管上显示。
2、选用8253的计数器2进行100ms的定时,其输出OUT2作为单片机外部中断信号,当定时到100ms时产生一个中断信号,在中断服务程序中进行中时、分、秒的计数,并送入相应的存储单元;8255的A口接七段数码管的位选信号,B口接数码管的段选信号,时、分、秒的数值通过对8255的编程可送到七段数码管上显示。
四、设计分析
1.在主程序中要对8255、8253进行初始化编程。
2.8255的A口、B口都设为方式0,为基本的输入输出方式。
3.在中断服务程序中对中断次数进行统计,当满10次时就进行一次时、分、秒的处理。
时、分、秒分别对应6个存储单元,分别存放时、分、秒的十位和个位。
当中断次数满10次时,将秒的个位加1,判断是否到10,如到了则十位加1,个位清零;再判十位是否到6,如到了则十位清零,分的个位加1,同理对分、时作相应处理。
4.七段数码管显示作为子程序,将时、分、秒对应存储单元的内容分别取出并转换成相应的段码,从8255的B口输出,A口输出对应位的位选信号,延时后进行下一位的显示。
参考流程图如下:
设计二简易电子琴
一、设计目的
1、通过一个单片机应用实例建立系统的整体概念;
2、学习掌握单片机系统的硬、软件的工作原理以及二者间的配合关系和方法;
3、掌握8255等可编程接口芯片及实验箱中数码管、LED等电路的应用;
4、掌握单片机汇编语言应用程序的设计和调试方法。
二、设计要求
利用STARES598PCI实验仪的硬件资源设计一个“简易电子琴”。
使用单片机内部计数器或外部计数器芯片8253、8255可编程并行接口芯片和七段数码管设计一个电路,并编制一程序正常运行。
三、设计内容
利用实验仪的硬件资源设计出的简易电子琴通过一开关控制具有两种模式:
模式1:
音乐播放模式。
开关闭合时为此功能,在此功能下,单片机通过扬声器能够自动播放几首不同的歌曲,通过按键进行选择要播放的某首歌曲。
并通过数码管显示当前状态为模式1、第几首歌曲。
模式2:
弹奏模式。
开关断开时为此功能,在此功能下,单片机将16只按键分作两个八度的音符,按下不同的键后单片机通过扬声器能够发出不同频率的音符,从而实现弹奏功能。
通过数码管显示当前状态为模式2。
1、利用单片机内部定时器进行定时使其输出不同频率的波形至扬声器。
2、利用8253进行定时输出不同频率的波形至扬声器。
四、设计分析
1.实验原理
要产生音频脉冲,只要计算出某一音频的周期,然后将此周期除以2即为半周期的时间。
2.在主程序中要对8255、8253进行初始化编程。
3.8255的A口、B口都设为方式0,为基本的输入输出方式。
4.在中断服务程序中对连接扬声器的引脚的电平进行反转,从而产生相应的频率到扬声器。
5.对于模式1应采用两个定时器中断,一个用来产生发声的频率波形,另外一个用来控制每个音符所持续的时间。
当音符持续的时间结束时,两个定时器的计数初值应重新修改使其可以继续产生下一个音符对应的频率波形和它所持续的时间。
6.七段数码管显示作为子程序,将目前电子琴所处的工作模式显示出来,应使用动态显示方式,从8255的B口输出,A口输出对应位的位选信号,延时后进行下一位的显示。
设计三温度闭环控制
一、设计目的
1、
2、
3、
二、设计要求
利用STARES598PCI实验仪的硬件资源设计一个“电子钟”。
使用单片机内部计数器或外部计数器芯片8253、8255可编程并行接口芯片和七段数码管设计一个电子钟电路,并编制一程序使得该电子钟正常运行。
三、设计内容
四、设计分析
设计四语音录放
一、设计目的
1、
2、
3、
二、设计要求
利用STARES598PCI实验仪的硬件资源设计一个“电子钟”。
使用单片机内部计数器或外部计数器芯片8253、8255可编程并行接口芯片和七段数码管设计一个电子钟电路,并编制一程序使得该电子钟正常运行。
三、设计内容
四、设计分析
附录
附录A美国标准信息交换码(ASCII)字符表
低位
高位
0
0000
1
0001
2
0010
3
0011
4
0100
5
0101
6
0110
7
0111
8
1000
9
1001
A
1010
B
1011
C
1100
D
1101
E
1110
F
1111
0
0000
1
0001
2
0010
3
0011
4
0100
5
0101
6
0110
7
0111
NUL
DLE
SP
0
P
、
P
SON
DCI
!
1
A
Q
a
q
STX
DC2
”
2
B
R
b
r
ETX
DC3
#
3
C
S
c
s
EOT
DC4
4
D
T
d
t
ENQ
SYN
%
5
E
U
e
u
ACK
ETB
6
F
V
f
v
BEL
SYN
,
7
G
W
g
w
BS
CAN
(
8
H
X
h
x
HT
EM
)
9
I
Y
I
y
LF
SUB
*
:
J
Z
j
z
VT
ESC
+
:
K
[
k
{
FF
FS
,
L
\
l
l
CR
GS
-
=
M
]
m
}
SO
RS
。
N
n
.
SI
US
/
?
O
o
DEL
附录BMCS-51指令表
十六进制代码
助记符
功能
对标志影响
POVACCy
字节数
周期数
算术运算指令
28—2F
25
26,27
24
38—3F
35
36,37
34
98—9F
95
96,97
94
04
08—0F
05
06,07
A3
14
18—1F
15
18,17
A4
84
D4
ADDA,Rn
ADDA,direct
ADDA,Ri
ADDA,#data
ADDCA,Rn
ADDCA,direct
ADDCA,Ri
ADDCA,#data
SUBBA,Rn
SUBBA,direct
SUBBA,Ri
SUBBA,#data
INCA
INCRn
INCdirect
INCRi
INCDPTR
DECA
DECRn
DECdirect
DECRi
MULAB
DIVAB
DAA
A(A)+(Rn)
A(A)+(direct)
A(A)+((Ri))
A(A)+data
A(A)+(Rn)+(Cy)
A(A)+(direct)+(Cy)
A(A)+((Ri))-(CY)
A(A)+data+(CY)
A(A)-(Rn)-(CY)
A(A)-(direct)-(CY)
A(A)-((Ri))-(CY)
A(A)-data-(CY)
A(A)+1
Rn(Rn)+1
direct(direct)+1
(Ri)((Ri))+1
DPTR(DPTR)+1
A(A)-1
Rn(Rn)-1
direct(direct)-1
(Ri)((Ri))-1
AB(A)·(B)
AB(A)/(B)
对A进行十进制调整
1
2
1
2
1
2
1
2
1
2
1
2
1
1
2
1
1
1
1
2
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
4
4
1
*28-2F分别表示Rn选择R0~R7时的机器码。
如ADDA,R0,则机器码为28H。
续表
十六进制代码
助记符
功能
对标志影响
POVACCy
字节数
周期数
逻辑运算指令
58—5F
55
56,57
54
52
53
48—4F
45
46,47
44
42
43
68—6F
65
66,67
64
62
63
E4
F4
23
33
03
13
ANLA,Rn
ANLA,direct
ANLA,@Ri
ANLA,#data
ANLdirect,A
ANLdirect,#data
ORLA,Rn
ORLA,direct
ORLA,@Ri
ORLA,#data
ORLdirect,A
ORLdirect,#data
XRLA,Rn
XRLA,direct
XRLA,@Ri
XRLA,#data
XRLdirect,A
XRLdirect,#data
CLRA
CPLA
RLA
RLCA
RRA
RRCA
A(A)(Rn)
A(A)(direct)
A(A)((Ri))
A(A)data
direct(direct)(A)
direct(direct)data
A(A)(Rn)
A(A)(direct)
A(A)((Ri))
A(A)data
direct(direct)(A)
direct(direct)data
A(A)(Rn)
A(A)(direct)
A(A)((Ri))
A(A)data
direct(direct)(A)
direct(direct)data
A0
A(A)
A循环左移一位
A带进位循环左移一位
A循环右移一位
A带进位循环右移一位
1
2
1
2
2
3
1
2
1
2
2
3
1
2
1
2
2
3
1
1
1
1
1
1
1
1
1
1
1
2
1
1
1
1
1
2
1
1
1
1
1
2
1
1
1
1
1
1
续表
十六进制代码
助记符
功能
对标志影响
POVACCy
字节数
周期数
数据传送指令
E8—EF
E5
E6,E7
74
F8—FF
A8—AF
78—7F
F5
88—8F
85
86,87
75
F6,F7
A6,A7
76,77
90
93
83
E2,E3
E0
F2,F3
F0
C0
D0
C8—CF
C5
C6,C7
D6,D7
C4
MOVA,Rn
MOVA,direct
MOVA,@Ri
MOVA,#data
MOVRn,A
MOVRn,direct
MOVRn,#data
MOVdirect,A
MOVdirect,Rn
MOVdirect1,direct2
MOVdirect,@Ri
MOVdirect,#data
MOV@Ri,A
MOV@Ri,direct
MOV@Ri,#data
MOVDPTR,#dada16
MOVCA,@A+DPTR
MOVCA,@A+PC
MOVXA,@Ri
MOVXA,@DPTR
MOVX@Ri,A
MOVX@DPTR,A
PUSHdirect
POPdirect
XCHA,Rn
XCHA,direct
XCHA,@Ri
XCHDA,@Ri
SWAPA
A(Rn)
A(direct)
A((Ri))
Adata
Rn(A)
Rn(direct)
Rndata
direct(A)
direct(Rn)
direct1(direct2)
direct((Ri))
directdata
(Ri)(A)
(Ri)(direct)
(Ri)data
DPTRdata16
A((A)+(DPTR))
A((A)+(PC))
A((Ri))
A((DPTR))
(Ri)(A)
(DPTR)(A)
SP(SP)+1,(SP)(direct)
direct(SP),SP(SP)-1
(A)(Rn)
(A)(direct)
(A)((Ri))
(A)0-3(Ri)-3
A半字节交换
1
2
1
2
1
2
2
2
2
3
2
3
1
2
2
3
1
1
1
1
1
1
2
2
1
2
1
1
1
1
1
1
1
1
2
1
1
2
2
2
2
1
2
1
2
2
2
2
2
2
2
2
2
1
1
1
1
1
位操作指令
C3
C2
D3
D2
B3
B2
82
B0
72
A0
A2
92
CLRC
CLRbit
SETBC
SETBbit
CPLC
CPLbit
ANLC,bit
ANLC,/bit
ORLC,bit
ORLC,/bit
MOVC,bit
MOVbit,C
CY0
bit0
CY1
bit1
CY(CY)
bit(bit)
CY(CY)(bit)
CY(CY)(bit)
CY(CY)(bit)
CY(CY)(bit)
CY(bit)
bit(CY)
1
2
1
2
1
2
2
2
2
2
2
2
1
1
1
1
1
1
2
2
2
2
1
2
续表
十六进制代码
助记符
功能
对标志影响
POVACCy
字节数
周期数
控制转移指令
1
12
22
32
1
02
80
73
60
70
40
50
20
30
10
B5
B4
B8—BF
B6,B7
D8—DF
D5
00
ACALLaddr11
LCALLaddr16
RET
RETI
AJMPaddr11
LJMPaddr16
SJMPrel
JMP@A+DPTR
JZrel
JNZrel
JCrel
JNCrel
JBbit,rel
JBCbit,rel
JBCbit,rel
CJNEA,direct,rel
CJNEA,#data,rel
CJNE@Rn,#data,rel
CJNERi,#data,rel
DJNZRn,rel
DJNZdirect,rel
NOP
PC(PC)+2,SP(SP)+1
(SP)(PC)L,SP(SP+1)
(SP)(PC)H,PC100addrll
PC(PC)+3,SP(SP)+1(SP)(PC)L,SP(SP)+1,(SP)(PC)H,PCaddr16
PCH((SP)),SP(SP)-1
PCL((SP)),SP(SP)-1
PCH((SP)),SP(SP)-1PCL((SP)),SP(SP)-1从中断返回
PC(PC)+2,PC10-0addr11
PC(PC)+3,PCaddr16
PC(PC)+2,PC(PC)+rel
PC(A)+(DPTR)
PC(PC)+2,
若(A)=0,PC(PC)+rel
PC(PC)+2,若(A)不等于0,则PC(PC)+rel
PC(PC)+2,若Cy=1,
则PC(PC)+rel
PC(PC)+2,若Cy=0,
则PC(PC)+rel
PC(PC)+3,若(bit)=1,
则PC(PC)+rel
PC(PC)+3,若(bit)=1,
则bit0,PC(PC)+rel
PC(PC)+3,若(bit)=1,
则bit0,PC(PC)+rel
PC(PC)+3
若(A)不等于(direct),
则PC(PC)+rel;
若(A)(direct),则Cy1
PC(PC)+3,
若(A)不等于data,
则PC(PC)+rel;
若(A)data,则Cy1
PC(PC)+3,
若((Rn))不等于DATA,
则PC(PC)+rel;
若((Rn))data,则Cy1
PC(PC)+3,
若((Rn))不等于DATA,
则PC(PC)+rel;
若((Rn))data,则Cy1
PC(PC)+2,Rn(Rn)-1
若(Rn)不等于0,
则PC(PC)+rel
PC(PC)+3
direct(direct)-1
若(direct)不等于0,
则PC(PC)+rel
空操作,PCPC+1
x
x
x
x
x
x
2
3
1
1
2
3
2
1
2
2
2
2
3
3
3
3
3
3
3
2
3
1
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
1