单片机原理实验指导书张自友083.docx
- 文档编号:23756991
- 上传时间:2023-05-20
- 格式:DOCX
- 页数:20
- 大小:40.29KB
单片机原理实验指导书张自友083.docx
《单片机原理实验指导书张自友083.docx》由会员分享,可在线阅读,更多相关《单片机原理实验指导书张自友083.docx(20页珍藏版)》请在冰豆网上搜索。
单片机原理实验指导书张自友083
单片机原理实验指导书(张自友.08.3)
51系列单片机实验
指导书
张自友
乐山师院物电系实验室编印
2008年3月
第一章实验系统介绍
1.1.系统组成
AEDK5196ET单片机实验系统包括:
1.AEDK5196ET实验系统主板(已插上8032CPU芯片);
2.U5196ETF测试板(已联接60芯短接电缆);
3.
9芯标准串行通讯电缆:
1根;
4.4芯电源联接电缆:
1根;
5.40芯仿真联接电缆:
1根;
6.实验用线束:
20根;
7.外部电源:
选配件;
8.AEDK机电实验平台:
选配件;
9.系统软件安装盘:
5张;
实验系统连接如右图所示:
1.2基本实验项目
1.软件编程实验,提供MCS-51、MCS-96算术子程序库;
2.单片机本身并行口、串行口、定时/计数器、A/D转换、中断系统等实验;
3.扩展8位存储器实验;
4.扩展简单输入、输出口实验;
5.扩展可编程并行口(8155/8255)实验;
6.扩展可编程串行口(8251)实验;
7.扩展可编程键盘显示控制器(8279)实验;
8.扩展A/D(0809),D/A(0832)转换实验;
9.双色灯显示实验(交通灯);
10.扫描键盘,LED数码管显示实验;
11.计算机音响实验;
12.继电器控制实验;
13.步进电机,直流电机控制实验;
14.标准(CENTRONIC)并行打印机实验;
1.3系统快速入门
用户使用本系统进行实验时一般包括以下步骤:
启动运行环境->编写实验程序->调试实验程序->进行实验
1.启动运行环境
正确连接实验系统,确认各个开关处于正确位置,打开实验机电源。
运行LCAET软件,进入调试环境。
选取主菜单的Options菜单进行通讯设置(串行口、波特率的设置)和模式设置(CPU类型、实验机状态),与实验机建立通信联系。
2.编写实验程序
新建文件,保存成.asm(汇编)或者.c(c51)即可。
3.调试
打开源语句调试窗口并将目标码加载到实验机。
然后用户就可以运用本系统提供的各种工具和方法进行调试。
主要是观察程序的运行是否正常、有无走飞、各主要参数中间值是否与设计吻合。
4.进行实验
根据实验有关说明和用户编制的程序,完成连线(最好先关闭实验机电源,再进行)。
通过调试软件加载、运行程序,观察实验有关现象。
若现象与设计不符,则返回第三步,重新进行。
1.4其它
未尽事宜,请查看系统软件帮助文挡。
第二章MCS51系列单片机实验
实验一I/O口输入输出实验
任务:
1,实现用p1口输出控制发光二极管亮灭和延时闪烁、左右移动等。
2,实现用拨动开关K0~K7控制控制发光二极管L0~L7。
实验二定时器及中断实验
任务:
1,实现计数实验,如果按键5次则点亮发光二极管。
2,实现3秒和5秒定时,并用此信号控制交通灯。
3,外部中断实验:
按下按键时,停止发光二极管的闪烁。
实验三串口应用实验
任务:
1,串并转换实验
2.串口通信实验
实验四c51编程实验
任务:
1,控制L0~L7左右移动闪烁。
2,对10次ad采样结果排序,输出其平均值
说明:
1。
本指导书不直接提供实验源代码,请实验前先自己根据实验任务编写实验程序。
2.基本实验任务完成后,有时间可自己把附录的综合设计实验调试。
附录:
综合设计实验参考
1.AD转换实验,用中断方法读结果,并在数码管上显示
;CS8255----F228H,CS0809----F230H,P3.2----EOC,,IN0---0~5V(硬件连线)
;PC3~5-----LEDSA~LEDSC,PC2-------LEDSELECT(通过短路套接好)
;PA0~7-----LEDA~LEDDP(通过短路套接好)
;-------符号定义-------------------------------------------
C8255EQU0F22BH;8255命令口地址
P8255AEQU0F228H;8255PA口地址
P8255BEQU0F229H;8255PB口地址
P8255CEQU0F22AH;8255PC口地址
C0809EQU0F230H;ADC0809片选信号
LED0DATA50H;显存区
LED1DATA51H
LED2DATA52H
;--------主程序---------------------------------------
ORG0000H
AJMPMAIN
ORG0003H
AJMPFX0
ORG0030H
MAIN:
MOVSP,#60H
MOVLED0,#00H;置显示初始值
MOVLED1,#00H
MOVLED2,#00H
MOVDPTR,#C8255;8255初始化
MOVA,#80H;8255PA,PB,PC口输出
MOVX@DPTR,A
CLRIT0
SETBEX0
SETBEA;开中断
MOVDPTR,#C0809
MOVX@DPTR,A;启动AD转换
LOOP:
ACALLDISP;显示子程序
AJMPLOOP;主循环
;-------------8255驱动数码管显示子程序-------------------------------
DISP:
MOVDPTR,#P8255C
MOVA,#00H
MOVX@DPTR,A;通过8255C口选种第一个数码管
MOVDPTR,#LEDSEG
MOVA,LED0
MOVCA,@A+DPTR
MOVDPTR,#P8255A;显示键值
MOVX@DPTR,A;送显示段选码
ACALLDELAY;延时,增加显示亮度
CLRA;带了锁存器,送下一个数据前将数据撤消
MOVX@DPTR,A
MOVDPTR,#P8255C
MOVA,#08H
MOVX@DPTR,A;通过8255C口选种第二个数码管
MOVDPTR,#LEDSEG
MOVA,LED1
MOVCA,@A+DPTR
MOVDPTR,#P8255A;显示键值
MOVX@DPTR,A;送显示段选码
ACALLDELAY
CLRA
MOVX@DPTR,A
MOVDPTR,#P8255C
MOVA,#10H
MOVX@DPTR,A;通过8255C口选种第三个数码管
MOVDPTR,#LEDSEG
MOVA,LED2
MOVCA,@A+DPTR
ORLA,#80H;加个小数点在最高位后面
MOVDPTR,#P8255A;显示键值
MOVX@DPTR,A;送显示段选码
ACALLDELAY
CLRA
MOVX@DPTR,A
RET
;-----------;中断服务程序----------------------------------------------
FX0:
MOVDPTR,#C0809
MOVXA,@DPTR;读转换结果
MOVB,#5
MULAB;相乘结果为16位,再右移8位,则B刚好为整数部分
MOVLED2,B
MOVB,#10
MULAB;小数部分放大10倍
MOVLED1,B
MOVB,#10
MULAB
MOVLED0,B
FX0_RET:
MOVDPTR,#C0809
MOVX@DPTR,A;启动AD下一次转换
RETI
;----延时子程序-----------------------------------------
DELAY:
MOVR7,#5
DJNZR7,$
RET
;---LED显示常数表---------------------------------------
LEDSEG:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
;---------------------------------------------------------
END
2.简易函数信号发生器,通过按PULSE+键,切换波形输出
;P3.2----PULSE+
;CS0832-;-F218
;VOUT,AGND---示波器
D_APORTEQU0F218H;0832口地址
ORG0000H
AJMPSTART
ORG0003H
AJMPFX0
ORG0030H
START:
MOVSP,#60H
MOVR1,#1
SETBEX0
SETBIT0
SETBEA
LOOP:
ACALLSCAN
SJMPLOOP
;------方波生成-----------------
FANGBO:
MOVA,#0FFH
MOVDPTR,#D_APORT
MOVX@DPTR,A
ACALLDELAY
MOVA,#00H
MOVX@DPTR,A
ACALLDELAY
ACALLSCAN
SJMPFANGBO
;------锯齿波生成---------------
JUCHI:
MOVA,#00H
MOVDPTR,#D_APORT
J_L:
MOVX@DPTR,A
INCA
JNZJ_L
ACALLSCAN
SJMPJUCHI
;-----正弦波生成------------------
SINE:
MOVR0,#0
S_L:
MOVDPTR,#TABLE
MOVA,R0
MOVCA,@A+DPTR
MOVDPTR,#D_APORT
MOVX@DPTR,A
INCR0
CJNER0,#65,S_L
ACALLSCAN
SJMPSINE
;---中断服务子程序--------------
FX0:
INCR1
RETI
;----按键扫描--------
SCAN:
CJNER1,#0,N1
AJMPFANGBO
N1:
CJNER1,#1,N2
AJMPSINE
N2:
CJNER1,#2,N3
AJMPJUCHI
N3:
MOVR1,#0
RET
;----延时--------
DELAY:
MOVR7,#80
DJNZR7,$
RET
;----正弦波数据表-----------------
TABLE:
DB141,153,165,177,188,199,209,218,227,234,241,246,250,254
DB255,256,255,254,251,246,241,235,227,219,209,199,188,177
DB165,153,141,128,116,103,91,79,68,57,47,38,29,22,15,10,6
DB3,1,0,1,2,5,10,15,21,29,37,47,57,67,79,90,103,115,128
;--------------------------------------
END
3,键盘扫描与数码管显示实验
;CS8255----F228H
;PB0~7------LINE1~8(键盘列线)已接好
;PC0~1------KEYIN1~2(键盘行线)已接好
;PC3~5-----LEDSA~LEDSC,PC2-------LEDSELECT(通过短路套已接好)
;PA0~7-----LEDA~LEDDP(数码管数据线通过短路套已接好)
;---------------------------------------------------------
C8255EQU0F22BH;8255命令口地址
P8255AEQU0F228H;8255PA口地址
P8255BEQU0F229H;8255PB口地址
P8255CEQU0F22AH;8255PC口地址
LED0DATA50H;显存区,同时也是键值存放区
;---------------------------------------------------------
ORG0000H
AJMPMAIN
ORG0030H
MAIN:
MOVSP,#60H;堆栈初始化
MOVLED0,#10H;置显示初始值
MOVDPTR,#C8255;8255初始化
MOVA,#82H;PB口输入,PA,PC口输出
MOVX@DPTR,A
SETBEX0
SETBIT0;设置为边沿触发,避免重复多次触发
SETBEA;开中断
LOOP:
ACALLDISP;显示子程序
ACALLKEY
AJMPLOOP;循环扫描
;---------------------------------------------------------
DISP:
MOVDPTR,#P8255C
MOVA,#00H;00000000B,LEDSA~SC,LEDSELECT=0
MOVX@DPTR,A;通过8255C口选种第一个数码管
MOVDPTR,#LEDSEG
MOVA,LED0
MOVCA,@A+DPTR;查段选码
MOVDPTR,#P8255A
MOVX@DPTR,A;送段选码
PUSH1
POP1
NOP;短暂延时
CLRA
MOVX@DPTR,A;消除显示
RET
;---键盘扫描子程序-----------------------
KEY:
MOVA,#00H;先判断是否有键按下,行线PC0PC1送00
MOVDPTR,#P8255C
MOVX@DPTR,A
MOVDPTR,#P8255B
MOVXA,@DPTR;读列线,读到0,说明按了键
CJNEA,#0FFH,KEY_NEXT;判键是否按下,有键转KEY_NEXT
RET;无键返回
KEY_NEXT:
ACALLD10MS;消除抖动
MOVA,#02H;键盘扫描第一行(输出行选码)
MOVDPTR,#P8255C
MOVX@DPTR,A
MOVDPTR,#P8255B
MOVXA,@DPTR;读列线
CJNEA,#0FFH,KEY_L0;判键是否按下,有键转KEY_L0
AJMPKEY_NEXT2;无键转第二行
KEY_L0:
MOVR5,#0;保存行号
AJMPLIE;转列识别
KEY_NEXT2:
MOVA,#01H;扫描第二行
MOVDPTR,#P8255C
MOVX@DPTR,A
MOVDPTR,#P8255B
MOVXA,@DPTR
CJNEA,#0FFH,KEY_L1;判键是否按下,有键转KEY_L1
RET;无键转结束
KEY_L1:
MOVR5,#1;保存行号
AJMPLIE;转列识别
LIE:
MOVR0,#08H;控制循环移位8次,依次扫描列
MOVR6,#0;保存列号,初值0
LIE_LOOP:
RRCA
JNCCALC
INCR6
DJNZR0,LIE_LOOP
CALC:
MOVA,R5;计算键值,行*号8+列号
RLA
RLA
RLA
ADDA,R6
MOVLED0,A;将键值保存到显存区
KEYWAIT:
MOVDPTR,#P8255B;等待键释放
MOVXA,@DPTR
CJNEA,#0FFH,KEYWAIT
KEYEXIT:
RET
;---------------------------------------------------------
D10MS:
MOVR0,#100;延时10MS子程序
D1:
MOVR1,#50
DJNZR1,$
DJNZR0,D1
RET
;---------------------------------------------------------
;LED显示常数表
LEDSEG:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
DB77H,7CH,39H,5EH,79H,71H,00H
;---------------------------------------------------------
END
4.8255简易数字钟
;CS8255----F228H
;PC3~5-----LEDSA~LEDSC,PC2-------LEDSELECT(通过短路套已接好)
;PA0~7-----LEDA~LEDDP(通过短路套已接好)
;---------------------------------------------------------
C8255EQU0F22BH;8255命令口地址
P8255AEQU0F228H;8255PA口地址
P8255BEQU0F229H;8255PB口地址
P8255CEQU0F22AH;8255PC口地址
LSLDATA50H;秒个位
LSHDATA51H;秒十位
LLLDATA52H;分隔符"-"
LMLDATA53H;分个位
LMHDATA54H;分十位
LLHDATA55H;分隔符"-"
LHLDATA56H;时个位
LHHDATA57H;时十位
TIME1DATA58H;辅助计数变量1
TIME2DATA59H;辅助计数变量2
;---------------------------------------------------------
ORG0000H
AJMPMAIN
ORG000BH
AJMPFT0
ORG0030H
MAIN:
MOVSP,#60H
ACALLINI
LOOP:
ACALLDISP;显示子程序
AJMPLOOP;循环扫描
INI:
MOVLSL,#00H;置显示初始值
MOVLSH,#00H
MOVLLL,#0AH;"-"段选码位于段选码表中第10个位置
MOVLML,#00H
MOVLMH,#00H
MOVLLH,#0AH;"-"
MOVLHL,#00H
MOVLHH,#00H;初始值00-00-00
MOVDPTR,#C8255;8255初始化
MOVA,#80H;8255PA,PB,PC口输出
MOVX@DPTR,A
MOVTMOD,#02H;定时器初始化,定时,方式2(8位自动重装初值)
MOVTH0,#164;100微妙定时
MOVTL0,#164
MOVTIME1,#100;辅助计时变量,让100us发生10000次就是1秒
MOVTIME2,#100
SETBET0
SETBEA;开中断
SETBTR0;启动定时器
RET
;------显示子程序--------------------------------------
DISP:
MOVR5,#00H;存放数码管位选码(00H,08,10H,,,+8)
MOVR0,#50H;第一个数码管显存地址(50H,51H,52H,,,57H)
D_LOOP:
MOVDPTR,#P8255C
MOVA,R5;数码管位选码
MOVX@DPTR,A;通过8255C口选种第一个数码管
MOVDPTR,#LEDSEG
MOVA,@R0;送显示内容
MOVCA,@A+DPTR;查段选码
MOVDPTR,#P8255A;
MOVX@DPTR,A;送出显示
ACALLDELAY;延时,增加显示亮度;LED0
MOVA,R5
ADDA,#08H
MOVR5,A;回送R5
INCR0;变量修正
CJNER0,#58H,D_LOOP;8个没显示完,继续显示
RET
;---------------------------------------------------------
FT0:
;中断服务程序
DJNZTIME1,S0
MOVTIME1,#100
DJNZTIME2,S0
MOVTIME2,#100;统计100*100次
INCLSL
MOVA,LSL
CJNEA,#10,S0
MOVLSL,#0
INCLSH
MOVA,LSH
CJNEA,#6,S0
MOVLSH,#0;秒
INCLML
MOVA,LML
CJNEA,#10,S0
MOVLML,#0
INCLMH
MOVA,LMH
CJNEA,#6,S0
MOVLMH,#0;分
INCLHL
MOVA,LHL
CJNEA,#10,S0
MOVLHL,#0
INCLHH
MOVA,LHH
MOVB,#10
MULAB
ADDA,LHL;判断是否到24时,LHH*10+LHL
CJNEA,#24,S0
MOVLHH,#0
MOVLHL,#0;时
S0:
RETI
DELAY:
MOVDPTR,#P8255A;带了锁存器,送下一个数据前将数据撤除
CLRA
MOVX@DPTR,A
RET
;---------------------------------------------------------
;LED显示常数表
LEDSEG:
DB3FH,06H
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 原理 实验 指导书 083
![提示](https://static.bdocx.com/images/bang_tan.gif)