SS-8051高级单片机实验手册NEW(机械学院) - 图文
更新时间:2024-04-16 00:37:01 阅读量: 综合文库 文档下载
- 8051单片机介绍推荐度:
- 相关推荐
SS-8051高级单片机
实验手册
北京海天创新电子有限公司
Http://www.itlab.cn Email:lclxy@126.com
2005年10月
SS-8051高级单片机实验仪使用手册 2 目 录
一. 概要?????????????????????????????????????3
二. SS-8051高级单片机实验仪可直接使用的电路单元???????????????3
三. SS-8051高级单片机实验仪系统配备??????????????????????3
附录一:SS-8051高级单片机实验指导书 ???????????????????4
附录二:51单片机硬件开发支持 ??????????????????????66
附录三:微型打印机及其与单片机接口 ???????????????????73 附录四:ISD4004系列单片语音录放IC资料 ?????????????????78 附录五:HD61202液晶显示控制驱动器的应用资料??????????????82
附录六:SS-8051高级单片机实验仪原理图 ?????????????????86
2
——————————————————————————————————————————————————
3 SS-8051高级单片机实验仪使用手册 一.概要:
一般的单片机实验仪通常为固定线路,再有配合该实验线路的教材,学习者只能依照该实验仪做实验,无法自行创作线路,甚至无法改变外围器件的地址,实验者知其然而不知其所以然。
另一种没有实验仪,初学者就按电路图自行在面包板上或在万用板上焊接电路,花费很多时间在接线及硬件排错上,软件练习往往不够。有鉴如此,北京海天创新电子有限公司特开发一种开放式组合电路的单片机SS-8051高级单片机实验仪,其特性如下:
1. 可做MCS51系列单片机的实验或其它MCU的的实验; 2. 可配任何厂家的仿真器,也可以自仿真; 3. 系统采用CPU独立和组合均可的方式; 4. 提供20多种单元电路;
5. 全部电路可由使用者以线连接,弹性组合;
6. 无需焊接,节省时间,如同面包板或万用板实验; 7. 配备开关电源;
8. 可配合各种单片机书籍。
二.SS-8051高级单片机实验仪可直接使用的电路单元
1. 微型打印机接口电路;
2. 8031/51/2051高级接口电路; 3. 8255电路; 4. SRAM电路;
5. 74LS138译码器电路; 6. 接点延伸区; 7. 拨码开关电路; 8. 8X8点阵显示电路; 9. 动态七段数码管电路; 10. 8个LED输出(二组电路); 11. 键盘电路; 12. RS232串行通信电路; 13. D/A电路; 14. A/D电路; 15. 步进电机实验电路; 16. 直流电机实验电路; 17. 点阵图形液晶实验电路; 18. ISD4004语音芯片实验电路; 19. 7279键盘与数码管显示芯片电路; 20. 模拟量输入单元电路。
三、SS-8051高级单片机实验仪系统配备
1.实验机箱 一台 2.使用说明书 一份 3.连接线 若干 4.程序光盘 一张 5.仿真器 一台
3
——————————————————————————————————————————————————
SS-8051高级单片机实验仪使用手册 4 附录一:
SS-8051高级单片机实验指导书
目 录
第一部分 软件练习
实验一:从外部数据存储器传送到内部存储器 ??????????????5 实验二:从外部数据存储器传送到内部RAM中 ?????????????6 实验三:求16个学生的年龄之和 ???????????????????6 实验四:求两省人口之和 ???????????????????????7 实验五:求八个无符号数的最大值 ???????????????????7 实验六:求Y=Sign X的 ???????????????????????8 实验七:求两个16位无符号数之积 ??????????????????8 实验八:将一个字节BCD码转换成二进制数 ??????????????9 实验九:将一个字节二进制数转换成十进制数 ??????????????9 实验十:自编实验 ??????????????????????????9
第二部分 硬件与接口
实验一:P1口实验一(输入输出实验、最小系统)????????????10 实验二:P1口实验二?????????????????????????13 实验三:外中断实验 ?????????????????????????15 实验四:定时/计数器实验???????????????????????17 实验五:点阵显示屏实验 ???????????????????????21 实验六:8255键盘、数码显示实验???????????????????23 实验七:数/模转换实验????????????????????????27 实验八:模/数转换实验????????????????????????29 实验九:微型打印机实验 ???????????????????????32 实验十:HD7279A键盘显示控制实验 ??????????????????34 实验十一:直流电动机的控制实验???????????????????40 实验十二:步进电动机的控制实验????????????????????42 实验十三:点阵图形液晶显示器的控制实验 ????????????????45 实验十四:ISD系列语音芯片的单片机控制实验???????????????53 实验十五:单片机与PC机串行通信实验????????????????63
4
——————————————————————————————————————————————————
5 SS-8051高级单片机实验仪使用手册 第一部分 软件练习实验
一. 实验系统简介:
1. SS-8051高级仿真实验系统的主要特点:
SS-8051高级仿真实验系统的主要特点在于它是一个几乎完全真实的项目开发环境。它的所有电路单元均是独立的(除了电源和地线之外),复杂的电路可以用排线搭建起来,整个系统给学习者一个真实的开发环境,对于小型的实验和大型的课程设计均可应用,此外还可以作为开发新产品的实验系统。
2. 调试软件的启动、操作与退出:
万利调试软件的启动很简单,在WINDOWS操作系统下,只要用鼠标单击“开始|程序|MedWin|MedWin.exe”程序即可启动。退出调试环境象所有的WINDOWS程序一样,用鼠标单击“文件|退出”菜单或单击右上角的“X”均可退出程序。
万利调试软件的操作与编程器的操作以及硬件开发的整个过程概述可以参考“附录二:51单片机的硬件开发支持”。
二. 操作练习与程序执行:
实验一:练习从外部数据存储器传送到内部寄存器中
第一部分“软件练习”实验均可以在脱机模拟状态下调试运行,也可以连上仿真器与实验仪在线仿真调试运行。
1. 模拟调试状态下:(以万利仿真器为例)
启动“MedWin.exe”万利仿真器调试软件,进入“模拟调试”状态。建立一个项目,在项目中添加一个新的文件(以.ASM作为后缀名),将后面的程序清单输入,按Ctrl+F8编译并装载,排除所有的错误直到编译通过。
打开外部数据区窗口(XDATA)、寄存器窗口和特殊功能寄存器窗口,将外部数据区的00H,01H单元的内容改为54H,55H,单步或全速运行调试程序,观察寄存器A,B,DPTR,R1,R2,R3的值是不是如程序所希望的那样变化,最后看R3的值是不是54H+55H=A9H。
2. 连机状态下:
本实验要连机运行调试,需在实验仪上进行相应的连线。先用数据线将仿真器和仿真头连起来,把仿真头缺口朝上插入2单元的51单片机插座(千万注意不要插反)。然后连接4单元存储电路与2单元单片机电路。它们之间具体的连线如下表所示(将对应的网络标号用排线连接起来): 2单元 P00-P07 P20 -P20 P36 P37 ALE 4单元 DB0-DB6 A8-A15 WEB OEB ALE CEB连GND 5
——————————————————————————————————————————————————
SS-8051高级单片机实验仪使用手册 6 3. 线连好以后,打开仿真器和实验仪的电源,其余操作和模拟调试状态下相同。 实验的源程序如下所示:
START:
ORG AJMP ORG MOV MOV
HERE:
MOV MOVX MOV INC MOVX MOV ADD MOV AJMP END
00H START 30H A,#56H
;程序从00H处开始运行 ;跳转到START的位置 ;START从30H开始
;在A寄存器中放置56H,这句程序执行完毕后可以看看A寄存 ;器中的值是否为78H
;在B寄存器中放置78H,这句程序执行完毕后可以看看B寄存 ;器中的值是否为78H
;给DPTR赋值00H,表示是数据寄存在00H的地址 ;将外部数据区00H的数据放进寄存器A ;将A中的数据放入R1寄存器 ;将DPTR增1,变为01H
;将外部数据区01H的数据放进寄存器A ;将A中的数据放入R2寄存器
;将A中的数据与R2中的数据相加,和在A中 ;将结果保存在R3中 ;死循环
;程序结束标志
B,#78H DPTR,#00H A,@DPTR R1,A DPTR A,@DPTR R2,A A,R1 R3,A HERE
实验二:练习从外部数据存储器传送到内部RAM中
本实验也可以在模拟调试和连机状态下两种方式下进行实验。在连机实验时的连线与“实验一”完全相同。程序运行之前,将外部数据存储器(XDATA)和内部数据存储器(DATA)窗口打开,并在XDATA窗口从00H单元开始连续键入30H,31H,32H,33H,34H,35H,36H,37H,38H,39H,40H,41H,42H,43H,44H,45H,然后程序单步或全速运行,停下来后观察内部数据区窗口(DATA)从30H开始的数据是否跟上述数据相同。
实验的源程序如下:
ORG 00H ;程序从00H处开始运行
START: MOV DPTR,#00H ;给DPTR赋值00H,表示是数据存放在00H的地址
MOV SP,#80H ;给SP赋值80H,程序运行过程中我们可以看看SP的变化 MOV R0,#30H MOV R7,#10H LOOP: MOVX A,@DPTR MOV @R0,A INC R0 INC DPTR DJNZ R7,LOOP
HERE: SJMP $ ;死循环
END ;程序结束标志
实验三:求16个学生的年龄之和,数据放在20H单元
程序运行之前,先将16个学生的年龄放在内部数据区20H单元开始的地方,码制为BCD码,程序运行结束时,16个学生的年龄和放在寄存器A和B中(B为高位,A为低位)。
程序清单如下所示: ORG 00H ;程序从00H处开始运行 SJMP START ;跳转到START的位置 ORG 30H ;START从30H开始 START: MOV R0,#20H MOV R7,#16 MOV A,#00H MOV B,A LOOP: ADD A,@R0 DA A JNC NEXT INC B NEXT:: INC R0 DJNZ R7,LOOP
HERE: SJMP HERE ;死循环 END ;程序结束标志
6
——————————————————————————————————————————————————
7 SS-8051高级单片机实验仪使用手册
实验四:求两省人口之和
以四个字节长度存放两省人口数,该程序涉及到多字节的加减法。程序运行前将两省的人口数放入外部数据区(XDATA)从00H和10H开始的单元。如从00H开始依次放入32H,54H,76H,98H,从10H开始依次放入34H,12H,32H,54H(从低字节往高字节排列),程序运行完毕,观察程序运行结果是不是等于98765432+54321234=0153086666。
程序清单如下: ORG 00H ;程序从00H处开始运行 SJMP START ;跳转到START的位置 ORG 30H ;START从30H开始 START: MOV R7,#4 MOV R0,#30H MOV DPTR,#0000H LP1: MOVX A,@DPTR MOV @R0,A INC R0 INC DPTR DJNZ R7,LP1 MOV R1,#40H MOV DPTR,#0010H MOV R7,#4 LP2: MOVX A,@DPTR MOV @R1,A INC R1 INC DPTR DJNZ R7,LP2 MOV R6,#4 MOV DPTR,#0020H MOV R0,#30H MOV R1,#40H CLR C LP3: MOV A,@R0 ADDC A,@R1 DA A MOVX @DPTR,A INC R0 INC R1 INC DPTR DJNZ R6,LP3 MOV 20H,C
HERE: SJMP HERE ;死循环 END ;程序结束标志
实验五:求8个无符号数的最大值
给定8个无符号数,将其放入内部数据区(DATA)中,地址从20H开始,运行下列程序,看看是否将8个数的最大值存储在A寄存器和内部数据区41H单元中。
程序清单如下:
ORG 00H ;程序从00H处开始运行 SJMP START ;跳转到START的位置 ORG 30H ;START从30H开始
START: MOV R0,#20H MOV R6,#08H MOV A,@R0 DEC R6 LOOP: INC R0
MOV 40H,@R0 CJNE A,40H,CHK CHK: JNC LOOP1 MOV 41H,A
HERE: SJMP HERE ;死循环
END ;程序结束标志
7
——————————————————————————————————————————————————
SS-8051高级单片机实验仪使用手册 8 实验六:给定8位有符号数X,求Y=SIGN X之值
给定8个有符号数,放至内部数据区(DATA)30H单元开始的地方,求其符号,并将结果送入寄存器R1,程序适合单步执行,每执行一句观察一下R1是否真实反映有符号数的符号。程序清单如下: ORG 00H ;程序从00H处开始运行
SJMP START ;跳转到START的位置 ORG 30H ;START从30H开始
START: MOV R0,#30H MOV A,@R0
ANL A,@R0 JZ ZERO
JNB ACC.7,NEXT
MINUS: MOV R1,#0FFH SJMP EXIT ZERO: MOV R1,#0 SJMP EXIT NEXT MOV R1,#1
EXIT: SJMP EXIT ;死循环
END ;程序结束标志
实验七:求两个16位无符号数之积
程序清单如下:ORG 00H ;程序从00H处开始运行 AJMP START ;跳转到START的位置 ORG 30H START: MOV R5,#11H ;乘数高字节 MOV R4,#78H ;乘数低字节 MOV R3,#11H ;被乘数高字节 MOV R2,#11H ;被乘数低字节 MOV R1,#30H DUMUL: MOV A,R1 MOV R6,A MOV R7,#04 CLEAR: MOV @R1,#0H INC R1 DJNZ R7,CLEAR MOV A,R6 MOV R1,A MM: MOV A,R2 MOV B,R4 MUL AB ACALL ADDM MOV A,R2 MOV B,R5 ACALL ADDM MOV A,R3 MOV B,R4 MUL AB
DEC R1 ACALL ADDM MOV A,R3 MOV B,R5 MUL AB ACALL ADDM MOV A,R6 MOV R1,A
HERE: SJMP HERE ;死循环 ADDM: ADD A,@R1 ;子程序
MOV @R1,A MOV A,B INC R1 ADDC A,@R1 MOV @R1,A INC R1 MOV A,@R1 ADDC A,#0 MOV @R1,A DEC R1 RET ;子程序返回 END ;程序结束标志
8
——————————————————————————————————————————————————
9 SS-8051高级单片机实验仪使用手册 实验八:将一个字节BCD码转换成二进制数
ORG 00H ;程序从00H处开始运行 AJMP START ;跳转到START的位置 ORG 30H ;START从30H开始 START: MOV R2,#99H ACALL DTOB HERE: SJMP HERE ;死循环 DTOB: MOV A,R2 ANL A,#0F0H SWAP A MOV B,#10 MUL AB MOV R3,A MOV A,R2 ANL A,#0FH ADD A,R3 MOV R3,A MOV 20H,A RET END ;程序结束标志
实验九:将一个字节二进制数转换成十进制数 ORG 00H ;程序从00H处开始运行
START: HERE: BTOD:
实验十:自编实验,上机调试通过
SJMP START ;跳转到START的位置 ORG 30H ;START从30H开始 MOV R2,0FFH ACALL BTOD SJMP HERE ;死循环 ORG 100H ;将二进制数转换成十进制数的子程序放在100H的位置 MOV A,R2 ;二进制数转换成十进制数的子程序 MOV B,#100 DIV AB MOV R6,A MOV A,#10 XCH A,B DIV AB SWAP A ADD A,B MOV R5,A RET ;二进制数转换成十进制数的子程序返回 END ;程序结束标志
9
——————————————————————————————————————————————————
SS-8051高级单片机实验仪使用手册 10
第二部分 硬件及接口实验
实验一:P1口实验一
一. 实验题目:
P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。
二. 实验目的: 1. 学习P1口作为输出口的使用方法。 2. 学习延时子程序的编写和使用。
三. 有关说明:
P1口为准双向口,P1口的每一位都能独立的定义为输出线或输入线。作为输入的口线,必须向锁存器相应位写入“1”,该位才能作为输入。
再来看一下延时程序的实现,现常用的有两种方法:一是用定时器中断来实现,二是用指令循环来实现。在系统时间允许的情况下,可以采用后一种方法。
以12M晶振为例,一个机器周期为12/12=1uS,现要写一个延时0.1S的程序,可大致写出如下: MOV R7,#200 DE1: MOV R6,#X DE2: DJNZ R6,DE2 DJNZ R7,DE1
上面MOV、DJNZ指令均需两个机器周期,所以每执行一条指令需2uS,现求出X值: (X*2+2+2)*200+2=100,000
求出X=248,代入上式可知约延时(248*2+2+2)*200+2=100,002uS,已经很精确了。
四. 实验电路:
L1 VCC P1.0 P1.1 P1.2
P1.3 P1.4 P1.5 P1.6 L8 VCC P1.7 8051
五. 连线方法:
电路单元 连接1 第2单元 P1.0-P1.7 第11单元 L1-L8 10
——————————————————————————————————————————————————
11 SS-8051高级单片机实验仪使用手册 六. 程序框图:
开始
初始化,A=0
A P1
A左循环一位
延时1S
结束
七. 程序清单:(汇编)
ORG 00H ;程序从00H开始 AJMP START ;跳转到START位置
ORG 30H ;开始程序从30H开始,将00H到30H之间的 START: MOV SP,#60H ;将堆栈指针设为60H MOV A,#0FEH ;将A赋值为0FEH LOOP: MOV P1,A ;点亮1个灯 ACALL DELAY ;调用延时程序 RL A ;将A循环移动一位
LJMP LOOP ;跳转到LOOP,程序循环执行。 DELAY: MOV R1,#10 ;延时子程序,10个100MS,一共1S DEL1: MOV R2,#200 DEL2: MOV R3,#248 DEL3: DJNZ R3,DEL3 DJNZ R2,DEL2 DJNZ R1,DEL1
RET ;延时程序返回 END ;程序结束
程序清单:(C51):
11
——————————————————————————————————————————————————
SS-8051高级单片机实验仪使用手册 12 #include
void delayms(unsigned char ms)/*延时子程序*/ { unsigned char i; while(ms--) {
for(i = 0; i < 250; i++); } }
unsigned char LED;
void main(void) {
LED = 0xfe; P1 = LED; while(1) {
delayms(250);
LED = _crol_(LED,1);/*循环右移1位,点亮下一个LED*/ P1 = LED; } }
12
——————————————————————————————————————————————————
13 SS-8051高级单片机实验仪使用手册 实验二:P1口实验二
一.实验题目:
P1口做输入口,接八个拨码开关,以P0口做输出口,编写程序读取开关状态,在二极管上显示出来。
二.实验目的:
学习P1口作为输入口的使用方法。
三.有关说明:
P1口为准双向口,P1口的每一位都能独立的定义为输出线或输入线。作为输入的口线,必须向锁存器相应位写入“1”,该位才能作为输入。
四.实验电路:
GND L1 VCC S1 P1.0 P0.0 P1.1 P0.0 P1.2 P0.0 P1.3 P0.0 8051 P1.4 P0.0 P1.5 P0.0 L8 VCC P1.6 P0.0
P1.7 P0.7
S8 五. 连线方法:
电路单元 连接1 连接2
六.程序框图:
13
——————————————————————————————————————————————————
第2单元 P0.0-P0.7 P1.0-P1.7 第11单元 L1-L8 第1单元 S0-S7 SS-8051高级单片机实验仪使用手册 14
七.程序清单(汇编): ORG 00H
START: LOOP:
AJMP
MOV MOV MOV MOV LJMP END
START SP,#60H P1,#0FFH A,P1 P0,A LOOP
开始 初始化 将P1口置0FFH 从P1口读开关量 将开关量送P0口 结束
程序清单(C51): #include
void delayms(unsigned char ms)/*延时子程序*/ { unsigned char i; while(ms--) {
for(i = 0; i < 250; i++); } }
unsigned char LED;
void main(void) {
LED = 0xfe; P1 = LED; while(1) {
delayms(250);
LED = _crol_(LED,1);/*循环右移1位,点亮下一个LED*/ P1 = LED; } }
14
——————————————————————————————————————————————————
;程序从00H开始 ;跳转到START
;将堆栈指针设置为60H ;先将P1设置为0FFH
;将开关量输入到变量A中
;将变量A中的数据送到P0口输出 ;跳转到LOOP循环执行程序 ;程序结束
15 SS-8051高级单片机实验仪使用手册 实验三:外中断实验
一.实验题目
使用单脉冲作中断源,每按一次按钮,点亮的发光二极管向右移动一位
二.实验目的
1. 学习外中断的使用;
2. 学习中断处理程序的编程方法。
三.实验电路
L1 VCC P1.0 INT1 P1.1 P1.2 P1.3
P1.4 单脉冲源 P1.5 P1.6 P1.7 L8 VCC 8051
四.连线方法 电路单元 连接1 连接2
五.程序清单(汇编): ORG 00H
START: HERE: INTI:
AJMP ORG AJMP ORG MOV MOV SETB MOV MOV NOP SJMP MOV RL CLR RETI END
第2单元 P10-P17 P33/INT1 第11单元 L1-L8 第1单元 S0
START 13H INTI 30H SP,#60H A,#0FEH IT1 IE,#10000100B P1,A HERE P1,A A IE1 ;程序开始地址从00H开始
;跳转到START
;外部中断1的中断入口地址 ;INT1入口地址
;主程序从30H开始,将00H与30H中间的中断向量地址留出来 ;将堆栈地址SP置成60H ;点亮第一个灯泡 ;开外部中断1
;开INT1中断和总中断 ;在P1口显示一个一个灯 ;空操作指令 ;死循环
;外部中断服务程序 ;A循环移动一位 ;清中断标志位
;外部中断1中断程序返回 ;程序结束
15
——————————————————————————————————————————————————
SS-8051高级单片机实验仪使用手册 16 程序清单(C51): #include
void delayms(unsigned char ms)/*延时子程序*/ { unsigned char i; while(ms--) {
for(i = 0; i < 250; i++); } }
void Int1Main1(void) /*non-bounce*/ {
IE=0; /*屏蔽所有中断*/ IT1=1; /*设置中断:下降沿*/ EX1=1; /*开INT1中断*/ EA=1; /*开所有中断*/ }
/*中断1*/
void One_INT1ISR (void) interrupt 2 using 3 {
EX1=0;/*屏蔽INT1*/
LED = _crol_(LED,1);/*循环右移1位,点亮下一个LED*/ delayms(250); EX1=1;/*打开INT1*/ IE1=0; }
void main(void) {
Int1Main1(); LED=0xfe; while(1) {
P1 = LED; } }
16
——————————————————————————————————————————————————
17 SS-8051高级单片机实验仪使用手册 实验四:定时器实验 一. 实验题目
连线并编制程序,使用定时器1中断,按方式1工作,将单排LED灯循环点亮。 二. 实验目的
1. 定时器中断的使用;
2.学习定时器中断间隔时间的计算; 3.进一步学习中断处理程序的编程方法。 三. 原理简述
1.定时器/计数器的输入脉冲周期与机器周期一样,为振荡器频率的1/12。本实验中时钟频率为12M,现要采用中断方法来实现1秒延时,要在定时器1中设置一个时间常数,使其每隔0.05秒产生一次中断,CPU响应中断后R0中计数值减一,令(R0)=14H,即可实现1秒的延时,
时间常数可按下法确定:
机器周期=12/晶振频率=12/12=1uS
定时器需设初值为X,则(2^16—X)*1=50000uS 求出X=15536
化为十六进制:X=3CB0H,故初始值为:TH1=3CH,TL1=B0H。 2. 初始化程序
包括定时器初始化和中断系统初始化,主要对IP,IE,TCON,TMOD的相应位进行正确的设置,并将时间常数送入定时器中。由于只有定时器中断,IP不必设置。
注意一点:定时器1初始化时建议用如下的指令:
3. 设计中断服务程序和主程序
中断服务程序除了要完成记述减一工作外,还要将时间常数重新送入定时器中,为下一次中断做准备。主程序则用来控制发光二极管按要求顺序亮灭。
四. 实验电路
本实验电路与实验一完全相同,不同的是编程序时延时采用定时器中断而非软件延时。 L1 VCC P1.0 P1.1
P1.2
P1.3 P1.4 P1.5 P1.6 L8 VCC P1.7
8051 17 ——————————————————————————————————————————————————
ANL ORL TMOD,#0FH TMOD,#10H
SS-8051高级单片机实验仪使用手册 18 五. 连线方法:
电路单元 连接1 第2单元 P1.0-P1.7 第11单元 L1-L8 六. 程序框图 入口 主程序框图:
置首显示代码(A),初始化地址偏移量(R1),
计数器初值(R0)
定时器1初始化设计数初值
开放EA,ET1及TR1
N R1为0?
Y
装计数初值于R1
将显示的数据(R0)送入(A)
带进位左移(A) 将(A)再送入显示数据(R0)中 将显示数据送入P1 显示 18 ——————————————————————————————————————————————————
19 SS-8051高级单片机实验仪使用手册 中断子程序框图: 七. 程序清单(汇编)
ORG AJMP ORG AJMP ORG MOV MOV MOV MOV ANL ORL MOV MOV ORL SETB CJNE MOV MOV
RL MOV
DISP: MOV
AJMP CLR DEC MOV
TI:
00H START 1BH TI 30H
中断入口 关闭计数器控制位 计数值减一 装入时间常数 开放计数控制位 RETI ;程序从00H开始 ;跳转到START的位置 ;定时中断的起始地址 ;中断子程序名字
;主程序的开始地址从30H开始 ;屏蔽所有的中断
;将堆栈指针SP设置为60H ;将P1设置为0FEH,点亮一个灯 ;R0用来保存点亮灯的状态
;将变量R1设置为14H,表示14H次进定时中断后灯循环一位 ;设置TMOD高四位为0,低四位不变 ;设置TMOD最高位为1
;设置定时中断的初始值(高位) ;设置定时中断的初始值(低位) ;将定时中断和总中断打开 ;启动定时
;当进14H次定时中断之后,将记录中断次数清成14H ;将R0里面的数据循环移位一次
START: MOV IE,#00H SP,#60H P1,#0FEH R0,#0FEH R1,#14H TMOD,#0FH TMOD,#10H TH1,#3CH TL1,#0B0H IE,#88H TR1
LOOP: R1,#00,DISP;当变量R1不为0时,不移位,直接转去DISP R1,#14H A,R0 A R0,A P1,R0 LOOP TR1 R1
;将循环或没有循环的数据在P1口显示出来 ;程序循环 ;定时中断子程序
;在定时子程序中将变量R1减小1,当减为0时循环一位显示
;设置定时中断的初始值(高位)
TH1,#3CH
19
——————————————————————————————————————————————————
SS-8051高级单片机实验仪使用手册 20 MOV
SETB RETI
TL1,#0B0H ;设置定时中断的初始值(低位) TR1
;启动定时器 ;中断程序返回 ;程序结束
END
程序清单(C51): #include
void Timer1Main1(void) /*non-bounce*/ {
IE=0x0; /*屏蔽所有中断*/ VALUE1=0x0; /*设置R1初始值*/ TMOD=TMOD & 0XF; TMOD=TMOD | 0X80;
TH1=0x3C; /*定时器1高8位初始值*/ TL1=0xB0; /*定时器1低8位初始值*/ IE=0x88; /*设置IE初始值*/ TR1=1; /*启动记数*/ }
void time1(void) interrupt 3 using 2 {
TR1=0; EA=0;
TH1=0x3C; /*定时器1高8位初始值*/
TL1=0xB0; /*定时器1低8位初始值*/ VALUE1--; /*value1变量减1*/ TR1=1; EA=1; }
void main(void) {
Timer1Main1(); }
20
——————————————————————————————————————————————————
VALUE1=0x14; LED=0xFE; while(1) { }
if(VALUE1==0) { }
VALUE1=0x14;
LED = _crol_(LED,1);/*循环右移1位,点亮下一个LED*/ P1 = LED;
21 SS-8051高级单片机实验仪使用手册 实验五:显示屏实验 一.实验题目
连线并编制程序,在显示屏上显示汉字
二.实验目的
1. 了解动态显示的基本原理; 2. 了解汉字显示的基本原理; 3. 了解查表程序的使用。
三.原理简述
实验仪上的汉字显示屏为8X8的点阵显示屏,单片机的I/O口最多只有8X4=32个,在实际的系统中,不可能每个I/O口均用到点阵显示中,所以点阵显示屏不可能静态显示,必须动态显示。
动态显示的基本原理是利用人的视觉暂留效用,间歇的显示每个该点亮的LED灯,因为间歇的时间小于人眼的分辨能力,所以看起来就象是静态显示的一样。
汉字的显示首先必须开发汉字的点阵字库,本程序为简单起见,在点阵显示屏中显示一个汉字“工”,若想显示其它的汉字,比如每个人的学号,则需自己开发字库或查询国标字库。
本程序的汉字字库放在程序中,调用时使用查表的方法。查表程序是一个子程序,首先将表中的偏移量放入累加器ACC中,然后调用查表子程序,将偏移量与当前PC的和作为地址处的数据送入ACC中,然后子程序返回,以ACC为偏移量的数据就放入了ACC中,可以利用。
四.连线方法 电路单元 连接1(网络标号) 连接2(网络标号)
五.程序清单(汇编):
ORG 00H
AJMP START
ORG 30H
;程序从00H开始 ;跳转到START ;主程序从30H开始 ;设置堆栈指针为60H地址 ;将P1和P2都设置为0 ;IE初始化,屏蔽所有的中断 ;将R0和R1设置为01H
;R2设置为08H,表示要动态显示8列 ;查表求每列的字型数据 ;将P2清0
;将P1输出查表的数据 ;输出对应的列号 ;调用延时子程序 ;R0增加1 ;将R1循环1位
第2单元 P1.0-P1.7 P2.0-P2.7 第10单元 A0-A7 PA10-PA17 START: MOV SP,#60H
MOV P1,#00H
MOV P2,#00H MOV IE,#00H
MOV MOV MOV ACALL MOV MOV MOV ACALL INC MOV RL
R0,#01H R1,#01H R2,#08H A,R0 TABBLE P2,#00H P1,A P2,R1 DELAY R0 A,R1 A
AGAIN: MOV
21
——————————————————————————————————————————————————
SS-8051高级单片机实验仪使用手册 22
MOV DJNZ AJMP MOV MOV
R1,A R2,AGAIN START
R3,#100 R4,#10
;循环8次 ;跳转到起始位置 ;延时子程序
DELAY: NOP DEL1: DEL2: DEL3:
DJNZ R4,DEL3 DJNZ R3,DEL2 RET
;延时子程序返回 ;字型数据表
TABBLE: MOVC A,@A+PC RET
程序清单(C51): #include
DB 40H,42H,42H,7EH,42H,4AH,5EH,40H;“卫”字的字型数据表
;程序结束
END
unsigned char table_data[8]={0x40,0x42,0x42,0x7e,0x42,0x4a,0x5e,0x40};/*字型数据*/ unsigned char i,value;
void DelayXms(int count) small /*延时程序*/ { }
void main (void) {
P1=0x0; P2=0x0; IE=0x0; while(1) { } }
22
——————————————————————————————————————————————————
int i,j;
for(i=0; i ; /*P1口清零*/ /*P2口清零*/ /*禁止所有中断*/ value=0x01; /*给变量附值*/ for(i=0;i<8;i++)/*显示8列的数据*/ { } P2=0x00; P1=table_data[i];/*显示第I列的数据*/ P2=value; /*选择将第I列选通*/ value=_crol_(value,1); DelayXms(1); /*延时一段时间*/ 23 SS-8051高级单片机实验仪使用手册 实验六:键盘和数码管显示实验 一. 实验题目 连线并编制程序,当在键盘上按下相应的按键时(编号从0-15),数码管将显示十六进制数0,1,2,3,4,5,6,7,8,9,A,B,C,D,F。 二. 实验目的 1. 键盘动态扫描的基本原理; 2.了解数码管显示的基本原理; 3.进一步熟悉查表程序的使用。 三. 连线方法 电路单元 连接1 连接2 连接3 连接4 连接5 连接6 连接7 连接8 连接9 第2单元 P36-P37 ALE P0.0-P0.7 第3单元 WR-RD PD0-PD7 A0-A1 PC0-PC2 PA0-PA3 PB0-PB7 RESET,CS接地 第4单元 ALE DB0-DB7 A0-A1 CEB接VCC 第8单元 PB0-PB7 /E接GND 1G-6G接GND 第9单元 C4-C6 C0-C3 JP16接+5 四.程序清单(汇编): ORG 00H AJMP START ORG 30H START: MOV SP,#60H MOV IE,#00H MOV DPTR,#803H MOV A,#89H MOVX @DPTR,A KEY1: ACALL KS1 JNZ LK1 NI: AJMP KEY1 LK1: ACALL DELAY ACALL KS1 JNZ LK2 AJMP KEY1 LK2: MOV R2,#0FEH MOV R4,#00H LK4: MOV DPTR,#800H MOV A,R2 MOVX @DPTR,A INC DPTR INC DPTR MOVX A,@DPTR JB ACC.0,LONE MOV A,#00H AJMP LKP LONE: JB ACC.1,LTWO MOV A,#04H AJMP LKP LTWO: JB ACC.2,NEXT ;初始化 ;屏蔽所有中断 ;设置DPTR为803H ;8255控制字 ;将89H控制字送入8255的控制字地址 ;检查有键闭合否 ;A非0则转移 ;如果没有键按下,再转到KEY1的位置 ;去抖过程,如果经过一个延时之后还有键按下,说明确实是有键按下 ;若有键按下,这时按键已经稳定,调用按键程序,确认确实有键按下 ;若延时后有键按下,这转去测试到底是哪个键按下 ;若延时后没有键按下,则继续转到KEY1的位置 ;动态扫描检测按键 ;说明按键为第一列的按键 ;说明按键为第二列的按键 23 —————————————————————————————————————————————————— SS-8051高级单片机实验仪使用手册 24 MOV A,#08H ;说明按键为第三列的按键 LKP: ADD A,R4 PUSH ACC LK3: ACALL KS1 ;上一个键松开以后才可以继续往下执行 JNZ LK3 POP ACC MOV R7,A ACALL DIR NEXT: INC R4 MOV A,R2 JNB ACC.3,KND RL A MOV R2,A AJMP LK4 KND: AJMP KEY1 ;跳转到KEY1的位置 KS1: MOV DPTR,#800H ;检测键盘子程序 MOV A,#00H MOVX @DPTR,A INC DPTR INC DPTR MOVX A,@DPTR CPL A ANL A,#07H RET ;检测键盘子程序返回 DIR: MOV DPTR,#801H ;显示子程序 MOV A,R7 ;根据R7的键盘数字查表 ACALL TABLLE MOVX @DPTR,A ;将查到的数据送到B口 RET ;显示子程序返回 DELAY: NOP ;延时子程序 DEL1: MOV R5,#100 DEL2: MOV R6,#20 DEL3: DJNZ R6,DEL3 DJNZ R5,DEL2 RET ;延时子程序返回 TABLLE: INC A ;查表子程序 MOVC A,@A+PC RET DB 06H,66H,07H,2AH,5BH,6DH,7FH,3FH ;键盘码制表 DB 4FH,7DH,6FH,55H ;键盘码制表 END ;程序结束 程序清单(C51): #include typedef unsigned char Byte; #define XBYTE ((Byte*)0x20000L) #define A8255_A XBYTE[0x800] #define B8255_B XBYTE[0x801] #define C8255_C XBYTE[0x802] #define C8255_CT XBYTE[0x803] void ScanKey(void) small; void display(void) small; Byte data table_data[12]={0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x2A,0x3F,0x55}; Byte data KeyData,KeyBak;/*检测键盘的值*/ void main(void) { IE=0x0; /*禁止所有中断*/ C8255_CT=0x89; while(1) /*程序循环执行*/ 24 —————————————————————————————————————————————————— 25 SS-8051高级单片机实验仪使用手册 { ScanKey(); /*检测是否有键按下*/ if(KeyBak!=0) display();/*若有键按下则调用显示程序*/ } } void ScanKeyOne(void) small /*检测是否有按键按下,并求出这个按键数值的子程序*/ { Byte keytmp; KeyData=0x0; A8255_A=0xfe; keytmp=C8255_C; keytmp=~keytmp & 0x7; switch(keytmp) { case 1: KeyData=1; goto end; break; case 2: KeyData=2; goto end; break; case 4: KeyData=3; goto end; break; default: break; } A8255_A=0xfd; keytmp=C8255_C; keytmp=~keytmp & 0x7; switch(keytmp) { case 1: KeyData=4; goto end; break; case 2: KeyData=5; goto end; break; case 4: KeyData=6; goto end; break; default: break; } A8255_A=0xfb; keytmp=C8255_C; keytmp=~keytmp & 0x7; switch(keytmp) { case 1: KeyData=7; goto end; break; 25 —————————————————————————————————————————————————— SS-8051高级单片机实验仪使用手册 26 case 2: KeyData=8; goto end; break; case 4: KeyData=9; goto end; break; default: break; } A8255_A=0xf7; keytmp=C8255_C; keytmp=~keytmp & 0x7; switch(keytmp) { case 1: KeyData=10; goto end; break; case 2: KeyData=11; goto end; break; case 4: KeyData=12; goto end; break; default: break; } end:; } void DelayXms(int count) small { int i,j; for(i=0; i void ScanKey(void) small { KeyBak=0x0; ScanKeyOne(); DelayXms(10); KeyBak=KeyData; if(KeyBak!=0x0) { again: ScanKeyOne(); if(KeyData!=0x0) goto again; } } void display(void) small { B8255_B=table_data[KeyBak-1]; } 26 —————————————————————————————————————————————————— 27 SS-8051高级单片机实验仪使用手册 实验七:数/模转换实验 一. 实验题目: 利用DAC0832,编制程序产生锯齿波 二. 实验目的: 1. 了解D/A转换的基本原理; 2. 3. 了解D/A转换芯片0832的性能及编程方法; 了解单片机系统扩展D/A转换的基本方法。 三. 原理简述: D/A转换是把数字信号转换成模拟量的变换,从D/A输出的是模拟电压信号。产生锯齿波只需由A存放的数字量的增减来控制; 本实验中,输入寄存器占偶地址端口,DAC寄存器占较高的奇地址端口。两个寄存器均对数据独立进行锁存。因而要把一个数据通过0832输出,要经过两次锁存。典型程序段如下: MOV DPTR,PORTIN MOV A,#DATA MOVX @DPTR,A INC DPTR MOVX @DPTR,A 其中第二次I/O写是一个虚拟写过程,其目的只是产生一个WR信号,启动D/A。 四.实验线路: 四. 连线方法: 电路单元 连接一 连接二 连接三 连接四 连接五 六.程序框图: 27 —————————————————————————————————————————————————— 2单元 P00/AD0-P07/AD7 ALE_51 P36/WR P27 4单元 DB0-DB7 ALE A0 12单元 DI0-DI7 /WR A0 CS SS-8051高级单片机实验仪使用手册 28 七.程序清单(汇编): START: AGAIN: ORG LJMP ORG MOV MOV MOV MOVX MOV MOVX INC LJMP END 00H START 30H dptr,#700H A,#00H dptr,#700H @dptr,A dptr,#701H @dptr,A ACC AGAIN 开始 设置初值 送数据到DAC输入寄存器 启动D/A 数据加1 结束 ;程序从00H开始 ;跳转到START的位置 ;主程序从30H的地方开始 ;将DPTR的变量值设置成DA的地址 ;将A设置成00H ;DA第一次输入地址 ;将A的值送给DA芯片做转换 ;DA第二次输入地址 ;将A的值再输入一次给DA芯片 ;A的数据递增,当A=0FFH时,A自动恢复到00H ;程序循环执行 ;程序结束 程序清单(C51): #include typedef unsigned char Byte; #define XBYTE ((Byte*)0x20000L) #define da0 XBYTE[0x700] #define da1 XBYTE[0x701] Byte data i=0xff;/*DA输出数值*/ void DelayXms(int count) small { int i,j; for(i=0; i void main(void) { IE=0x0; /*禁止所有中断*/ da0=i; da1=i; DelayXms(10); i++; } 28 —————————————————————————————————————————————————— 29 SS-8051高级单片机实验仪使用手册 实验八:模/数转换实验 一. 实验题目: 利用实验台上的ADC0809做A/D转换器,实验台上的电源和地提供模拟量输入,编制程序,将模拟量转换成数字量,用发光二极管显示。 二.实验目的: 1. 掌握A/D转换与单片机的接口方法。 2. 了解A/D芯片ADC0809转换性能及编程方法。 3. 通过实验了解单片机如何进行数据采集。 三.实验原理简述: A/D转换器大致有三类:一是双积分A/D转换器,优点是精度高,抗干扰性好,价格便宜,但速度慢;二是逐次逼近A/D转换器,精度、速度、价格适中;三是并行A/D转换器,速度快,价格也昂贵。 实验用的ADC0809属于第二类,是八位A/D转换器。每采集一次需100uS。 ADC0809START端为A/D转换启动信号,ALE端为通道选择地址的锁存信号。实验电路中将其相连,以便同时锁存通道地址并开始A/D采样转换。故启动A/D转换只需如下两条指令: MOV DPTR,#00H MOVX @DPTR,A A中为何内容是不重要的,这是一次虚拟写。中断方式下,A/D转换结束后会自动产生EOC信号,将其与8031INTO相接。中断处理程序中,使用如下指令即可读取A/D转换结果: MOV DPTR,#00H MOVX A,@DPTR 四.实验原理图: 实验原理图 29 —————————————————————————————————————————————————— SS-8051高级单片机实验仪使用手册 30 五. 连线方法: 电路单元 连接1 连接2 连接3 连接4 连接5 连接6 连接7 连接8 连接9 连接10 连接11 2单元 P00 -P07 P22-P20 ALE P32/I0 P1.0-P1.7 P36/WR,P37/RD 4单元 DB0-DB7 ALE A2-A0 CEB 7单元 C-A Y0 E1,E2接地 VCC,E3 11单元 L1-L8 13单元 MSB20-MSB27 CS2 CLK EOC ADDC-ADDA WR2,/RD O0连接IN0 六. 程序框图: 这里给出软件延时方法的程序框图和程序: 初始化 启动AD转换 软件延时 读取转换结果 送P1口显示结果 七. 程序清单(汇编): ORG 00H ;程序从00H开始执行 START: LOOP: DELAY: AJMP ORG MOV MOVX MOV NOP NOP NOP DJNZ MOVX CPL MOV SJMP END START 30H DPTR,#800H @DPTR,A R6,#0FFH ;跳转到START的位置 ;主程序从30H开始执行 ;AD芯片地址 ;启动AD ;延时一段时间程序 R6,DELAY A,@DPTR A P1,A LOOP ;将转换结果读入A寄存器 ;将转换结果取反 ;将转换结果送入P1显示 ;跳转到LOOP的位置 ;程序结束 30 —————————————————————————————————————————————————— 31 SS-8051高级单片机实验仪使用手册 程序清单(C51): #include typedef unsigned char Byte; #define XBYTE ((Byte*)0x20000L) #define AD_ADD XBYTE[0x800] void DelayXms(int count) small { int i,j; for(i=0; i void main(void) { while(1) { AD_ADD=0x0; DelayXms(50); P1=~AD_ADD; } } 31 —————————————————————————————————————————————————— SS-8051高级单片机实验仪使用手册 32 实验九:微型打印机实验 一. 实验题目: 将实验仪接上微型打印机,控制打印机打印出各种效果的汉字和字符。 二. 实验目的: 1. 了解微型打印机接口及其打印字符的方法; 2. 了解微型打印机打印汉字的方法; 3. 了解单片机与微型打印机的连线方法。 三. 有关说明: 打印机的详细资料可以参阅“附录三 微型打印机及其与单片机的接口 四. 实验电路: 五. 连线方法: 为电路简单起见,不考虑/ERR信号,直接将/WR信号与/STB直接连接起来,BUSY信号与P3.3/INT1连接起来 电路单元 连接1 连接2 连接3 第2单元 P0.0-P0.7 P3.6/WR P3.3 15单元 D0-D7 /STB BUSY 六. 程序清单: 对应上述电路原理图和连线图的程序清单如下(汇编): BUSY EQU P3.3 ;BUSY信号接/INT1(P3.3) ORG AJMP 00H START ;程序从00H开始 ;跳转到START 32 —————————————————————————————————————————————————— 33 START: ORG MOV MOV MOV MOV MOVC INC CJNE AJMP CALL AJMP 30H SP,#60H R7,#00H DPTR,#DATAS A,R7 A,@A+DPTR R7 A,#0FFH,NEXT START PRINT AGAIN SS-8051高级单片机实验仪使用手册 ;主程序从30H开始 ;将堆栈指针设置为60H ;R7为查表程序中相对于表首的偏移量 ;查表求每个打印字符的标识 AGAIN: ;当查到将要打印的字符不为0FFH时打印 ;否则当遇到0FFH标志时,程序从头执行 NEXT: ;调用打印程序 ;跳转到查表位置 DATAS: DB ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’ ;十六进制数符 DB ‘9’, ‘0’, ‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’ DB 13 DB 0BAH, 0A3H, 0CCH, 0ECH ;海天 DB 13 DB 0FFH PRINT: JB BUSY, PRINT ;打印一个字符子函数 MOV DPTR,#7FFFH MOVX @DPTR,A RET ;打印子程序返回 END ;程序结束 程序清单(C51): #include typedef unsigned char Byte; #define XBYTE ((Byte*)0x20000L) #define PRTADD XBYTE[0x7FFF] /*打印地址*/ sbit BUSY=P3^3;/*BUSY信号接/INT1(P3.3)*/ Byte bdata RR7,AA; Byte data table_data[]={0x30,0x31,0x32,0x33,0x34,0x35, 0x36,0x37,0x38,0x39,0x41,0x42, 0x43,0x44,0x45,13,10,0xBA,0xA3, 0xCC,0xEC,13,10}; void PRINT(void) { PRINT1: if(BUSY==1)/*打印子程序*/ goto PRINT1; _nop_();/* NOP*/ _nop_();/* NOP*/ _nop_();/* NOP*/ _nop_();/* NOP*/ _nop_();/* NOP*/ PRTADD=AA;/*将数据送给打印机*/ _nop_();/* NOP*/ _nop_();/* NOP*/ _nop_();/* NOP*/ _nop_();/* NOP*/ _nop_();/* NOP*/ }/*打印程序返回*/ void main(void) { START: _nop_(); RR7=0;/*RR7为查表程序中相对于表首的偏移量*/ AGAIN: AA=table_data[RR7]; PRINT(); RR7++; if(RR7<23) goto AGAIN; else goto START; } 33 —————————————————————————————————————————————————— SS-8051高级单片机实验仪使用手册 34 实验十:HD7279A显示实验 一.实验题目 连线并编制程序,将HD7279A的全部编码送HD7279A显示,以一秒钟为间隔显示下一位,以前的显示内容左移。 二.实验目的 1. 了解HD7279A键盘显示芯片的基本应用; 2. 掌握HD7279A键盘显示芯片的接口电路及编程方法。 3. 三.原理简述 HD7279A是一片具有串行接口的,可同时驱动8位共阴式数码管(或64只独立LED)的智能显示驱动芯片,该芯片同时还可连接多达64键的键盘矩阵,单片即可完成LED显示、键盘接口的全部功能。 HD7279A内部含有译码器,可直接接受BCD码或16进制码,并同时具有2种译码方式,此外还有多种控制命令,如消隐、闪烁、左移、右移、段寻址等。命令的具体形式可查阅HD7279A相关的技术资料。 四.实验电路 五.连线方法 电路单元 连接一 连接二 连接三 连接四 连接五 连接六 2单元 6单元 8单元 6G-1G B7-B0 9单元 C0-C3 C4-C6 JP16跳线接GND P1.2-P1.5 DATA,/KEY,/CS,/CLK (JP38.2-JP38.5) 左边的DG0-DG5 SA-DP 右边的DG0-DG3 SA-SC 另外,在实验之前,应将8单元的U7(7406)和U6(74LS245)芯片取下,因7279已经有直接驱动数码管的能力,如果另外放置驱动芯片,反而会影响数码管的显示效果。 34 —————————————————————————————————————————————————— 35 SS-8051高级单片机实验仪使用手册 六.程序清单(汇编): BIT_COUNT DATA 07FH TIMER DATA 07EH TIMER1 DATA 07DH TEN DATA 07CH DATA_IN DATA 020H DATA_OUT DATA 021H DAT BIT P1.2 ;HD7279A的DATA连接于P1.2 KEY BIT P1.3 ;HD7279A的KEY连接于P1.3 CS BIT P1.4 ;HD7279A的CS连接于P1.4 CLK BIT P1.5 ;HD7279A的CLK连接于P1.5 ORG 00H LJMP START ORG 100H START: MOV SP,#2FH ;定义堆栈 MOV P1,#11011011B ;初始化P1口 MOV TIMER,#50 ;延时约25mS START_DELAY:MOV TIMER1,#255 START_DELAY1:DJNZ TIMER1,START_DELAY1 DJNZ TIMER,START_DELAY MOV DATA_OUT,#10100100B;8位数码管全部点亮闪烁显示 CALL SEND SETB CS MAIN: JB KEY,MAIN MOV DATA_OUT,#00010101B;复位 CALL SEND CALL RECEIVE SETB CS MOV A,DATA_IN CJNE A,#06,NEXT1 MOV B,#1 NEXT1: CJNE A,#05,NEXT2 MOV B,#2 NEXT2: CJNE A,#04,NEXT3 MOV B,#3 NEXT3: CJNE A,#14,NEXT4 MOV B,#4 NEXT4: CJNE A,#13,NEXT5 MOV B,#5 NEXT5: CJNE A,#12,NEXT6 MOV B,#6 NEXT6: CJNE A,#22,NEXT7 MOV B,#7 NEXT7: CJNE A,#21,NEXT8 MOV B,#8 NEXT8: CJNE A,#20,NEXT9 35 —————————————————————————————————————————————————— SS-8051高级单片机实验仪使用手册 36 MOV NEXT9: CJNE MOV NEXT10: CJNE MOV NEXT11: CJNE MOV NEXT12: MOV MOV CALL MOV CALL MOV CALL MOV CALL MOV CALL MOV CALL SETB WAIT: JNB JMP SEND: MOV CLR LCALL SEND_LOOP: MOV MOV SETB MOV RL MOV LCALL CLR LCALL DJNZ CLR RET LONG_DELAY: MOV DELAY_LOOP: DJNZ RET SHORT_DELAY:MOV SHORT_LP: DJNZ RET RECEIVE: MOV B,#9 A,#30,NEXT10 B,#0BH A,#29,NEXT11 B,#0 A,#28,NEXT12 B,#0CH TEN,#00H DATA_OUT,#10100001B SEND DATA_OUT,#10100001B SEND DATA_OUT,#10000001B SEND DATA_OUT,TEN SEND DATA_OUT,#10000000B SEND DATA_OUT,B SEND CS KEY,WAIT MAIN BIT_COUNT,#8 ;设定位计数器=8 CS ;设CS低电平 LONG_DELAY ;长延时 C,DATA_OUT.7 ;输出一位 DAT,C CLK ;设CLK低电平 A,DATA_OUT ;待发送数据左移 A DATA_OUT,A SHORT_DELAY ;短延时 CLK ;设CLK低电平 SHORT_DELAY ;短延时 BIT_COUNT,SEND_LOOP;检查是否8位数据发送完毕 DAT ;发送完毕,返回 TIMER,#25 ;长延时子程序 TIMER,DELAY_LOOP TIMER,#4 ;短延时子程序 TIMER,SHORT_LP BIT_COUNT,#8 36 —————————————————————————————————————————————————— 37 SS-8051高级单片机实验仪使用手册 SETB DAT CALL LONG_DELAY RECEIVE_LOOP:SETB CLK CALL SHORT_DELAY MOV A,DATA_IN RL A MOV DATA_IN,A MOV C,DAT MOV DATA_IN.0,C CLR CLK CALL SHORT_DELAY DJNZ BIT_COUNT,RECEIVE_LOOP CLR DAT RET END 程序清单(C51): #include typedef unsigned char Byte; bdata Byte BIT_COUNT,TIMER,TIMER1,TEN,DATA_IN,DATA_OUT,AA,BB; sbit data_in0=DATA_IN^0; sbit data_out7=DATA_OUT^7; sbit DAT=P1^2 ;/*HD7279A的DATA连接于P1.2*/ sbit KEY=P1^3 ;/*HD7279A的KEY连接于P1.3*/ sbit CS=P1^4 ;/*HD7279A的CS连接于P1.4*/ sbit CLK=P1^5 ;/*HD7279A的CLK连接于P1.5*/ void SEND(void); void LONG_DELAY(void); void SHORT_DELAY(void); void RECEIVE(void); void main(void) { START: _nop_(); P1=0xDB ;/*初始化P1口*/ TIMER=50; START_DELAY: TIMER1=255; START_DELAY1: TIMER1--; if(TIMER1>0) goto START_DELAY1; TIMER--; if(TIMER>0) goto START_DELAY; DATA_OUT=0xA4 ;/*8位数码管全部点亮闪烁显示*/ SEND() ;/*CALL SEND*/ CS=1 ;/*SETB CS*/ MAIN1: if(KEY==1) 37 —————————————————————————————————————————————————— SS-8051高级单片机实验仪使用手册 38 goto MAIN1 ;/*JB KEY,MAIN*/ DATA_OUT=0x15 ;/*MOV DATA_OUT,#00010101B;复位*/ SEND() ;/*CALL SEND*/ RECEIVE() ;/*CALL RECEIVE*/ CS=1 ;/*SETB CS*/ AA=DATA_IN ;/*MOV A,DATA_IN*/ if(AA==6) BB=1; if(AA==5) BB=2; if(AA==4) BB=3; if(AA==14) BB=4; if(AA==13) BB=5; if(AA==12) BB=6; if(AA==22) BB=7; if(AA==21) BB=8; if(AA==20) BB=9; if(AA==30) BB=11; if(AA==29) BB=0; if(AA==28) BB=12; TEN=0 ;/*MOV TEN,A*/ DATA_OUT=0xA1 ;/*MOV DATA_OUT,#10100001B*/ SEND() ;/*CALL SEND*/ DATA_OUT=0xA1 ;/*MOV DATA_OUT,#10100001B*/ SEND() ;/*CALL SEND*/ DATA_OUT=0x81 ;/*MOV DATA_OUT,#10000001B*/ SEND() ;/*CALL SEND*/ DATA_OUT=TEN ;/*MOV DATA_OUT,TEN*/ SEND() ;/*CALL SEND*/ DATA_OUT=0x80 ;/*MOV DATA_OUT,#10000000B*/ SEND() ;/*CALL SEND*/ DATA_OUT=BB ;/*MOV DATA_OUT,B*/ SEND() ;/*CALL SEND*/ CS=1 ;/*SETB CS*/ WAIT: if(KEY==0) goto WAIT; goto MAIN1 ;/*JMP MAIN*/ } void SEND(void) { BIT_COUNT=8 ;/*设定位计数器=8*/ CS=0 ;/*设CS低电平*/ LONG_DELAY() ;/*长延时*/ SEND_LOOP:CY=data_out7 ;/*输出一位*/ DAT=CY ;/*MOV DAT,C*/ CLK=1 ;/*设CLK低电平*/ AA=DATA_OUT ;/*待发送数据左移*/ 38 —————————————————————————————————————————————————— 39 SS-8051高级单片机实验仪使用手册 AA=_crol_(AA,1) ;/*RL A*/ DATA_OUT=AA ;/*MOV DATA_OUT,A*/ SHORT_DELAY() ;/*短延时*/ CLK=0 ;/*设CLK低电平*/ SHORT_DELAY ;/*短延时*/ BIT_COUNT--; if(BIT_COUNT>0) goto SEND_LOOP;/*DJNZ BIT_COUNT,SEND_LOOP;检查是否8位数据发送完毕*/ DAT=0; /*发送完毕,返回*/ } /*RET */ void LONG_DELAY(void) { TIMER=25;/*长延时子程序*/ DELAY_LOOP:TIMER--; if(TIMER>0) goto DELAY_LOOP; }/*RET*/ void SHORT_DELAY(void) { TIMER=4;/*MOV TIMER,#4;短延时子程序*/ DELAY_LOOP1:TIMER--; if(TIMER>0) goto DELAY_LOOP1; } void RECEIVE(void) { BIT_COUNT=8;/*MOV BIT_COUNT,#8*/ DAT=1;/*SETB DAT*/ LONG_DELAY();/*CALL LONG_DELAY*/ RECEIVE_LOOP:CLK=1;/*SETB CLK*/ SHORT_DELAY();/*CALL SHORT_DELAY*/ AA=DATA_IN;/*MOV A,DATA_IN*/ AA=_crol_(AA,1);/*RL AA*/ DATA_IN=AA;/*MOV DATA_IN,A*/ CY=DAT;/*MOV C,DAT*/ data_in0=CY;/*MOV DATA_IN.0,C*/ CLK=0;/*CLR CLK*/ SHORT_DELAY();/*CALL SHORT_DELAY*/ BIT_COUNT--; if(BIT_COUNT>0) goto RECEIVE_LOOP; DAT=0;/*CLR DAT*/ } 39 —————————————————————————————————————————————————— SS-8051高级单片机实验仪使用手册 40 实验十一:直流电动机的控制 一. 实验题目 连线并编制程序,产生脉冲信号,控制直流电动机的运行。 二. 实验目的 1. 掌握采用单片机控制直流电动机的硬件接口技术。 2. 掌握直流电动机驱动程序的设计与调试方法。 3. 熟悉直流电动机的工作特性。 三. 实验电路 四.连线方法 电路单元 连接一 连接二 连接三 连接四 2单元 P10-P13 电机单元 GND GND VCC 电机单元 AD4-AD7 CS1 GND(有跳线) VCC(有跳线) 五.程序清单: 程序功能说明:直流电机顺序转动,改变延时程序的长短,电机的转动速度将随之改变。 ORG 00H ORG ;程序从00H开始执行 ;跳转到START ;主程序从30H开始 ;设置堆栈指针SP为60H ;清P1.4,电机启动 ;调用延时程序1 ;将P1.4置位为1,关闭电机 ;调用延时程序2 ;跳转到LOOP ;延时程序1 ACALL START 30H START: MOV LOOP: SP,#60H CLR P1.4 ACALL DELAY1 SETB P1.4 ACALL LJMP MOV DJNZ RET DELAY LOOP R7,#10 R7,DEL2 R6,DEL1 DELAY: MOV DEL1: DEL2: DJNZ R6,#10 ;延时程序返回 ;延时程序2 DELAY1: MOV DEL11: MOV DEL12: DJNZ DJNZ RET END R5,#100 R4,#200 R4,DEL12 R5,DEL11 ;延时程序2返回 ;程序结束 40 —————————————————————————————————————————————————— 41 SS-8051高级单片机实验仪使用手册 程序清单(C51): #include typedef unsigned char Byte; sbit PAA = P1^0; void DelayXms(int count) small { } void main(void) { } PAA=1; DelayXms(50); PAA=0; DelayXms(10); int i,j; for(i=0; i ; 41 —————————————————————————————————————————————————— SS-8051高级单片机实验仪使用手册 42 实验十二:步进电动机的控制 一. 实验题目 连线并编制程序,产生四相八拍脉冲序列信号,控制步进电动机的运行。 二. 实验目的 1.掌握采用单片机控制步进电动机的硬件接口技术。 2.掌握步进电动机驱动程序的设计与调试方法。 3.熟悉直步进动机的工作特性。 三. 实验电路 四. 连线方法 电路单元 连接一 连接二 连接三 连接四 2单元 P10-P13 电机单元 GND VCC GND 电机单元 AD4-AD7 GND(有跳线) VCC(有跳线) CS2 五.源程序 程序功能说明:步进电机顺序转动,改变程序中PA,PB,PCC,PD的电脉冲顺序,电机的转动方向将改变,改变延时程序的长短,电机的转动速度将随之改变。 42 —————————————————————————————————————————————————— 43 SS-8051高级单片机实验仪使用手册 程序清单(汇编): PA PB PCC PD ORG ORG CLR 00H 30H SP,#60H PA ACALL START EQU EQU EQU EQU P1.0 P1.2 P1.1 P1.3 START: MOV LOOP: ACALL DELAY SETB PD ACALL DELAY CLR PB ACALL DELAY SETB PA ACALL DELAY CLR ACALL SETB CLR ACALL SETB LJMP MOV MOV DJNZ DJNZ RET END PCC DELAY PB PD DELAY PCC LOOP R5,#10 R6,#10 R7,#100 R7,DEL2 R6,DEL1 R5,DEL ACALL DELAY ACALL DELAY DELAY: MOV DEL: DEL1: DEL2: DJNZ 程序清单(C51): #include typedef unsigned char Byte; sbit PAA = P1^0; sbit PBB = P1^2; sbit PCC = P1^1; sbit PDD = P1^3; 43 —————————————————————————————————————————————————— SS-8051高级单片机实验仪使用手册 44 void DelayXms(int count) small { } void main(void) { P1=0x0; while(1) { } 44 —————————————————————————————————————————————————— int i,j; for(i=0; i ; PAA = 0; DelayXms(10); PDD = 1; DelayXms(10); PBB = 0; DelayXms(10); PAA = 1; DelayXms(10); PCC = 0; DelayXms(10); PBB = 1; DelayXms(10); PDD = 0; DelayXms(10); PCC = 1; DelayXms(10); } 45 SS-8051高级单片机实验仪使用手册 实验十三:点阵图形液晶显示器的控制 一. 实验题目 连线并编制程序,控制点阵图形液晶的显示。 二. 实验目的 1. 掌握采用单片机控制点阵图形液晶的显示的硬件接口技术。 2. 掌握点阵图形液晶的显示驱动程序的设计与调试方法。 3. 熟悉点阵图形液晶的显示的工作原理。 三. 实验电路 8031 接口 P00 39 9 DB0 数据总线 P07 32 16 DB7 +5V 3 VDD 地 4 VSS VEE 10K电位器 5 V0 RD 17 1 3 8 E读写使能信号 WE 16 2 74LS00 A11 P2.3 24 2 /CSB A10 P2.2 23 1 /CSA A9 P2.1 22 7 R/W=1读选通; =0写选通 A8 P2.0 21 6 RS=1数据操作; =0写指令或读状态 四.连线方法 电路单元 连接一 连接二 连接三 连接四 连接五 连接六 连接七 连接八 连接九 2单元 P3.7/RD P3.6/WR P0.0-P0.7 P2.0 P2.1 P2.2 P2.3 液晶显示单元 GND VCC 液晶显示单元 RD WR AD0-AD7 RS R/W CS1 CS2 GND(有跳线) VCC(有跳线) 45 —————————————————————————————————————————————————— SS-8051高级单片机实验仪使用手册 46 五.源程序 程序功能说明:在液晶显示器上显示汉字、多条45度斜线和8条横线。 COM EQU 20H ;指令寄存器 DAT EQU 21H ;数据寄存器 DAT1 EQU 22H ;数据寄存器 CWADD1 EQU 0000H ;写指令代码地址(左) CRADD1 EQU 0200H ;读状态字地址(左) DWADD1 EQU 0100H ;写显示数据地址(左) DRADD1 EQU 0300H ;读显示数据地址(左) CWADD2 EQU 0800H ;写指令代码地址(中) CRADD2 EQU 0A00H ;读状态字地址(中) DWADD2 EQU 0900H ;写显示数据地址(中) DRADD2 EQU 0B00H ;读显示数据地址(中) CWADD3 EQU 0400H ;写指令代码地址(右) CRADD3 EQU 0600H ;读状态字地址(右) DWADD3 EQU 0500H ;写显示数据地址(右) DRADD3 EQU 0700H ;读显示数据地址(右) ORG 00H AJMP START ORG 30H START: ;示例程序: MAIN: MOV SP,#60H ANL P3,#0E0H LCALL INT AGAIN: LCALL CLEAR LCALL LCALL LCALL LCALL LCALL DISPLAY_HANZI DELAY DELAY DELAY DELAY LCALL CLEAR11 LCALL CLEAR22 LCALL CLEAR LJMP AGAIN ;设置显示起始行为第一行 ;初始化子程序 INT: MOV COM,#0C0H LCALL PRM0 LCALL PRR0 MOV COM,#3FH LCALL PRM0 LCALL PRR0 RET ;清显示RAM区(清屏)子程序 CLEAR: MOV R4,#00H ;页面地址暂存器设置 46 —————————————————————————————————————————————————— ;开显示设置 47 SS-8051高级单片机实验仪使用手册 CLEAR1: MOV A,R4 ORL A,#0B8H ;\或\页面地址设置代码 MOV COM,A LCALL PRM0 LCALL PRR0 MOV COM,#40H LCALL PRM0 LCALL PRR0 MOV R3,#40H ;一页清64个字节 mov dat,#00h ;rl a mov dat,a ;将数据显示区置为80H ;显示数据循环移位 CLEAR2: MOV a,dat ;列地址设置为\;页面地址设置 LCALL PRM1 LCALL PRR1 DJNZ R3,CLEAR2 ;页内字节清零循环 INC R4 ;页地址暂存器加1 CJNE R4,#08H,CLEAR1 ;RAM区清零循环 RET ;4 写指令代码子程序(中) PRM0: PUSH DPL ;片选设置为\ PUSH DPH MOV DPTR,#CRADD2 ;设置读状态字地址 PRM01: MOVX A,@DPTR ;读状态字 JB ACC.7,PRM01 ;判\忙\标志为\否,否在读 MOV DPTR,#CWADD2 ;设置写指令代码地址 MOV A,COM ;取指令代码 MOVX @DPTR,A ;写指令代码 POP DPH POP DPL RET ;5 写显示数据子程序(中) PRM1: PUSH DPL ;片选设置为\ PUSH DPH MOV DPTR,#CRADD2 ;设置读状态字地址 PRM11: MOVX A,@DPTR ;读状态字 JB ACC.7,PRM11 ;判\忙\标志为\否,否在读 MOV DPTR,#DWADD2 ;设置写显示数据地址 MOV A,DAT ;取数据 MOVX @DPTR,A ;写数据 POP DPH POP DPL RET ;7 写指令代码子程序(右) PRR0: PUSH DPL ;片选设置为\ PUSH DPH 47 —————————————————————————————————————————————————— SS-8051高级单片机实验仪使用手册 48 MOV DPTR,#CRADD3 PRR01: MOVX A,@DPTR MOV DPTR,#CWADD3 MOV A,COM MOVX @DPTR,A POP DPH POP DPL RET ;8 写显示数据子程序(右) ;设置读状态字地址 ;读状态字 ;设置写指令代码地址 ;取指令代码 ;写指令代码 JB ACC.7,PRR01 ;判\忙\标志为\否,否在读 PRR1: PUSH DPL ;片选设置为\ PUSH DPH MOV DPTR,#CRADD3 PRR11: MOVX A,@DPTR MOV DPTR,#DWADD3 MOV A,DAT MOVX @DPTR,A POP DPH POP DPL RET delay: mov 59h,#0ffh; delay1: mov 58h,#0ffh; delay2: mov 57h,#010h; delay3: djnz 57h,delay3; djnz 58h,delay2 djnz 59h,delay1 ret DAT1,#00H ;页面地址暂存器设置 ;\或\页面地址设置代码 ;页面地址设置 ;设置读状态字地址 ;读状态字 ;设置写显示数据地址 ;取数据 ;写数据 JB ACC.7,PRR11 ;判\忙\标志为\否,否在读 DISPLAY_HANZI: ;汉字显示子程序 HANZI: MOV MOV R4,#00H HANZI1: MOV A,R4 ORL A,#0B8H MOV COM,A LCALL PRM0 LCALL PRR0 MOV COM,#40H LCALL PRM0 LCALL PRR0 MOV R3,#10H HANZI2: INC DAT1 MOV a,dat1 LCALL TABLE mov dat,a ;显示数据循环移位 ;一页清16个字节 ;列地址设置为\ LCALL PRM1 48 —————————————————————————————————————————————————— 49 SS-8051高级单片机实验仪使用手册 LCALL PRR1 DJNZ R3,HANZI2 ;页内字节清零循环 INC R4 ;页地址暂存器加1 CJNE R4,#02H,HANZI1 ;RAM区清零循环 RET CLEAR11: MOV R4,#00H ;页面地址暂存器设置 CLEAR111:MOV A,R4 ORL A,#0B8H ;\或\页面地址设置代码 MOV COM,A LCALL PRM0 LCALL PRR0 MOV COM,#40H LCALL PRM0 LCALL PRR0 MOV R3,#40H ;一页清64个字节 mov dat,#80h rl a mov dat,a ;将数据显示区置为80H ;显示数据循环移位 CLEAR222:MOV a,dat ;列地址设置为\;页面地址设置 LCALL PRM1 LCALL PRR1 DJNZ R3,CLEAR222 ;页内字节清零循环 INC R4 ;页地址暂存器加1 CJNE R4,#08H,CLEAR111 ;RAM区清零循环 RET CLEAR22: MOV R4,#00H ;页面地址暂存器设置 CLEAR1111:MOV A,R4 ORL A,#0B8H ;\或\页面地址设置代码 MOV COM,A LCALL PRM0 LCALL PRR0 MOV COM,#40H LCALL PRM0 LCALL PRR0 MOV R3,#40H ;一页清64个字节 mov dat,#80h mov dat,a ;将数据显示区置为80H ;显示数据循环移位 CLEAR2222:MOV a,dat LCALL PRM1 LCALL PRR1 DJNZ R3,CLEAR2222 ;页内字节清零循环 INC R4 ;页地址暂存器加1 CJNE R4,#08H,CLEAR1111 ;RAM区清零循环 RET table: MOVC A,@A+PC RET 49 —————————————————————————————————————————————————— ;页面地址设置 ;列地址设置为\ SS-8051高级单片机实验仪使用手册 50 db 000H,0F0H,090H,090H,090H,090H,0FFH,090H;电 db 090H,090H,090H,0F8H,010H,000H,000H,000H db 000H,00FH,004H,004H,004H,004H,07FH,084H db 084H,084H,084H,08FH,080H,0F0H,000H,000H db 080H,080H,082H,082H,082H,082H,082H,0E2H;子 db 0A2H,092H,08AH,087H,082H,0C0H,080H,000H db 000H,000H,000H,000H,000H,040H,080H,07FH db 000H,000H,000H,000H,000H,000H,000H,000H END 程序清单(C51): #include #define CRADD1 XBYTE[0x200] /* ;读状态字地址(左)*/ #define DWADD1 XBYTE[0x100] /* ;写显示数据地址(左)*/ #define DRADD1 XBYTE[0x300] /* ;读显示数据地址(左)*/ #define CWADD2 XBYTE[0x800] /* ;写指令代码地址(中)*/ #define CRADD2 XBYTE[0xA00] /* ;读状态字地址(中)*/ #define DWADD2 XBYTE[0x900] /* ;写显示数据地址(中)*/ #define DRADD2 XBYTE[0xB00] /* ;读显示数据地址(中)*/ #define CWADD3 XBYTE[0x400] /* ;写指令代码地址(右)*/ #define CRADD3 XBYTE[0x600] /* ;读状态字地址(右)*/ #define DWADD3 XBYTE[0x500] /* ;写显示数据地址(右)*/ #define DRADD3 XBYTE[0x700] /* ;读显示数据地址(右)*/ table_data[]={0x00,0xF0,0x90,0x90,0x90,0x90,0xFF,0x90, 0x90,0x90,0x90,0xF8,0x10,0x00,0x00,0x00, 0x00,0x0F,0x04,0x04,0x04,0x04,0x7F,0x84, 0x84,0x84,0x84,0x8F,0x80,0xF0,0x00,0x00};/*电*/ void INT(void); void CLEAR(void); void PRM0(void); void void void void PRM1(void); PRR0(void); PRR1(void); DISPLAY_HANZI(void); void Delay(int count) small /*延时子程序*/ { int i,j; for(i=0; i Byte bdata COM,DAT,DAT1,RR4,AA,RR3;/*变量定义*/ sbit AA7=AA^7; void main(void) 50 —————————————————————————————————————————————————— ;
正在阅读:
SS-8051高级单片机实验手册NEW(机械学院) - 图文04-16
爱国卫生组织管理组工作情况汇报8.303-11
全市关心下一代工作会议领导讲话08-30
航海英语题库2580 带翻译11-30
医学分类及相关知识02-20
关于毕业的重要通知10-05
《加班》最新4人年会搞笑小品剧本03-07
复旦女博士生命日记:活着就是王道02-20
最有成就感的一件事作文500字07-05
药学本科-仪器分析在线练习2答案10-01
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 单片机
- 高级
- 实验
- 手册
- 图文
- 机械
- 学院
- 8051
- NEW
- SS
- 百科知识竞赛 题库
- 明光市检察院八一期间工作开展情况小结
- 2011级二诊理数
- 关于组织语文骨干教师暑期集中培训的通知
- 灯谜
- 酶工程实验(new)
- 马克思话语权
- 第二节 气血津液辩证
- 看桥图纸经验
- 国家安全监管总局关于深化工贸行业安全标准化的通知
- 工程项目成本预控方案
- 东财《建筑与材料》2015年作业答案
- 财务管理期末作业
- 中国水轮机市场调查研究与发展趋势预测报告(2016版)
- 山东大学期末考试课程复习:财务分析第一章财务分析理论课程复习
- 如何在课堂上落实小学科学三维目标
- 2004年江苏省公共基础知识B类真题及答案解析
- 第六章 土的压缩性和地基沉降计算
- 论中国建设文件中心的可行性
- 土木工程专业毕业实习报告(绝对实用!改名即可!!!!)