实验指导书单片机技术.docx
- 文档编号:17945304
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:132
- 大小:1.10MB
实验指导书单片机技术.docx
《实验指导书单片机技术.docx》由会员分享,可在线阅读,更多相关《实验指导书单片机技术.docx(132页珍藏版)》请在冰点文库上搜索。
实验指导书单片机技术
单片机原理应用
实验指导书
编辑:
徐祖建
湖北汽车工业学院电气与信息工程学院
电工电子实训中心实验室
2009年10月
目录
一.产品简介…………………………………………………1
二.硬件安装…………………………………………………2
三.KEILC软件操作说明书…………………………………2
四.系统组成…………………………………………………3
五.实验内容……………………………………………………3
实验一八段数码管显示……………………………………………3
实验二键盘扫描显示实验…………………………………………8
实验三脉冲计数(定时/计数器的计数功能实验)………………15
实验四A/D转换实验………………………………………………19
实验五D/A0832转换实验…………………………………………24
实验六步进电机控制………………………………………………28
实验七工业顺序控制(INT0、INT1)综合实验…………………33
实验八直流电机转速测量与控制实验……………………………37
实验九点阵LED实验………………………………………………47
实验十PWM实验……………………………………………………49
六.实验思考…………………………………………………49~83
恒科KeilC超级仿真器说明书
一、产品简介
KeilC51uVision2是德国Keil公司开发的基于Windows环境的8051软件开发平台,它集项目管理、源程序编辑、程序调试于一体,是一个强大的集成开发环境。
UVision2支持Keil的各种8051工具,包括:
C编译器,宏汇编译器、连接/定位器及Object-hex转换程序,可以帮助用户快速有效的实现嵌入式系统的设计与调试。
采用C语言进行单片机系统的开发,具有避免手工分配寄存器,移植容易等优点。
恒科KeilC超级仿真器的优点:
1、仿真8031内核的单片机。
2、接支持KeilC51的IDE开发仿真环境,63K用户程序空间。
3、全保留单片机特性,避免仿真正常而实际烧录芯片不正常的问题。
4、仿真频率0——40MHz晶振可选。
5、程序代码可重复转载。
6、监控程序占用用户资源较少,全速运行不占用资源。
7、可在KeiluVision2下单步、断点、全速,可参考变量、RAM变量、结构变量等。
8、支持汇编、C语言、混合调试。
9、内部存储物理空间为68K,是伟福通用仿真器G6型的7倍,是伟福51专用仿真器的4倍。
10、仿真频率可达40MHz。
11、支持10个硬件断点。
在KeilC51集成开发环境是使用工程方法来管理文件的,而不是单一文件的模式。
所有的文件包括源文件程序(包括C程序,汇编程序)、头文件、甚至说明性的技术文档都可以放在工程项目文件里面统一管理。
在使用KeilC51之前。
您应该习惯这种工程的管理方式,对于刚刚使用KeilC51的用户来说,一般可以按照下面的步骤创建一个自己的KeilC51应用程序。
1、建一个项目文件。
2、工程选择一个目标器件(如ATMEL89C52)。
3、创建源程序文件并输入程序代码且保存。
4、把源文件添加到项目中。
5、为工程项目设置软硬件调试环境。
6、编译项目文件。
7、硬件或者软件调试。
二、硬件安装
1、连接51CPU板,在实验箱右下角有三个插座:
J1、J2、J3,用来连接51CPU板,在51CPU板上有一个小拨码开关:
J18,是单片机的EA脚,是用来选择读片内还是片外ROM的,拨向左边为读片内8751ROM,拨向右边为读片外8031ROM。
2、KEIL仿真器与实验箱的连接:
将KEIL仿真器40芯的排线连到51CPU板的40芯插座上,仿真器的USB连接线连到微机的USB口。
3、八段数码管右上角的拨码开关是用来设置工作模式的,将拨码开关同时向右边选择51单片机工作模式。
三、KEILC软件操作说明书
如何新建一个项目文件?
1、首先点击KeiluVision2,进入uVision2界面。
点击工具栏Project选项中的NewProject,准备开始建立自己的项目。
2、输入工程文件名称,并选择保存工程文件的目录。
3、为项目文件选择一个目标器件(如ATMEL89C52)
4、用鼠标对项目工作区的目标1,点击右键在弹出的菜单中选择“为目标‘目标1‘设置选项“
5、在“为目标‘目标1‘设置选项”中,点击“调试”菜单,在此菜单中可选择是使用硬件仿真还软件仿真,连接实验箱做实验时选择硬件仿真,点击硬件仿真选项后面的[设置]选项,在此对话框中选择串口和波特率,串口根据所连的电脑来决定,波特率为38400。
6、点击“文件/新建”创建源程序文件并输入程序代码。
7、在文本框输入源程序
8、点击“文件/保存”对程序进行保存
9、用鼠标对项目工作区的目标1,点击右键在弹出的菜单中选择添加文件到原代码组
10、在弹出的添加文件框中,选择需要添加到项目的文件
11、点击编译连接的图标,对项目文件进行编译
12、点击“调试/启动/停止调试”进入调试界面
13、在调试界面中可以对程序进行单步或者全速运行的调试
14、若要查看内存的数据,点击“视图/存储器窗口”,在此窗口中输入不同的指令查看内部数据。
四、系统组成
超想——3000TC开放式综合实验/仿真系统由仿真器、综合实验仪、软件、电源组成。
超想——3000TC综合实验仪屏气了传统实验仪的“单板式”设计方法,而采用可符合单片机开放过程的“仿真式”综合设计思想,使得所有的实验模块及CPU资源均全力对用户开放,从而充分满足“验证式”——“模仿式”——“探索式”——“开发式”的由浅入深的各种实验要求。
并且,实验平台作为一个独立的目标系统,能让用户进行脱机验证实验结果的实验,从而,是实验步骤与实际开发环境完全一致,学以致用。
同时,仿真工具作为一个可独立使用的仿真器,从而,又可满足学生毕业设计,电子竞赛、教师科研所需。
达到一机多用之目的。
1、仿真器
由于超想——3000TC综合实验/仿真系统的“仿真器”与“实验平台”可分离使用,故原则上可配备任何品牌的仿真工具。
由于本手册是围绕KeilC超级仿真器进行编写,所以,选用该产品成为最佳选择。
作为仿真工具时,仿真器与实验仪完全脱离。
2、电源
超想——3000TC综合实验仪配备了+5V/2A、+12V/1A、-12V/0.5A的电源,直接使用220V交流电源工作。
五、实验内容
分成软件实验和硬件实验,软件实验是指初学者先熟悉软件的使用和学习程序的编写,进一步掌握编程方法的实验;硬件实验是通过使用实验箱使用各种模块通过连线在软件上编程实现各种特定功能的实验。
各实验例程均提供ASM语言、C语言两种程序清单。
以上实验已充分涉及单片机原理、接口、传感器、自控原理等方面的内容。
实验一八段数码管显示
1、实验目的:
(1)了解数码管动态显示的原理。
(2)了解74LS164扩展端口的方法。
2、实验要求:
利用实验仪提供的显示电路,动态显示一行数据.
3、实验电路图
4、实验器材:
(1)超想-3000TB综合实验仪1台
(2)超想3000仿真器1台
(3)计算机1台
5、实验连线
无
6、实验说明:
(1)本实验仪提供了8段码LED显示电路,学生只要按地址输出相应数据,就可以实现对显示器的控制。
显示共有6位,用动态方式显示。
8段数码管是由8155的PB0、PB1经74LS164“串转并”后输出得到。
6位位码由8155的PA0口输出,经Ua2003反向驱动后,选择相应显示位。
74LS164是串行输入并行输出转换电路,串行输入的数据位由8155的PB0控制,时钟位由8155的PB1控制输出。
写程序时,只要向数据位地址输出数据,然后向时钟位地址输出一高一低两个电平就可以将数据位移到74LS164中,并且实现移位。
向显示位选通地址输出高电平就可以点亮相应的显示位。
本实验仪中数据位输出地址为0e102H,时钟位输出地址为0e102H,位选通输出地址为0e101H。
本实验涉及到了8155I0/RAM扩展芯片的工作原理以及74LS164器件的工作原理。
(2)七段数码管的字型代码表
显示字形
g
f
e
d
c
b
a
段码
0
0
1
1
1
1
1
1
3fh
1
0
0
0
0
1
1
0
06h
2
1
0
1
1
0
1
1
6bh
3
1
0
0
1
1
1
1
4fh
4
1
1
0
0
1
1
0
66h
5
1
1
0
1
1
0
1
6dh
6
1
1
1
1
1
0
1
7dh
7
0
0
0
0
1
1
1
07h
8
1
1
1
1
1
1
1
7fh
9
1
1
0
1
1
1
1
6fh
A
1
1
1
0
1
1
1
77h
B
1
1
1
1
1
0
0
7ch
C
0
1
1
1
0
0
1
39h
D
1
0
1
1
1
1
0
5eh
E
1
1
1
1
0
0
1
79h
F
1
1
1
0
0
0
1
71h
7、程序框图
8、实验步骤
1.将KEIL仿真器上40芯排线一端和实验箱上51CPU板上的40芯排针连接起来,将仿
真器连接的USB或串口线与PC机对应的USB或串口连接起来,打开实验箱电源。
2.进入KEIL软件界面,点击项目/打开项目在C:
\KEIL\UV2\3000TC51配套实验例程中
选实验一,内有ASM和C51两种程序,进入ASM文件夹打开LED项目文件
3.点击“调试/启动/停止调试”,进入调试界面,点击“调试/运行”可看到8段数码管交
替显示0--F
9、实验程序
;实验一八段数码管显示
OUTBITequ0e101h;位控制口
CLK164equ0e102h;段控制口(接164时钟位)
DAT164equ0e102h;段控制口(接164数据位)
INequ0e103h;键盘读入口
LEDBufequ60h;显示缓冲
Numequ70h;显示的数据
DelayTequ75h;
org0000h
ljmpStart
LEDMAP:
;八段管显示码
db3fh,06h,5bh,4fh,66h,6dh,7dh,07h
db7fh,6fh,77h,7ch,39h,5eh,79h,71h
Delay:
;延时子程序
movr7,#0
DelayLoop:
djnzr7,DelayLoop
djnzr6,DelayLoop
ret
DisplayLED:
movr0,#LEDBuf
movr1,#6;共6个八段管
movr2,#00100000b;从左边开始显示
Loop:
movdptr,#OUTBIT
mova,#00h
movx@dptr,a;关所有八段管
mova,@r0
movB,#8
;送164,送完一个显示一个,动态显示
DLP:
rlca;依次取出最右边的每一位
movr3,a;
movacc.0,c
ANLA,#0FDH;将PB1置0
movdptr,#DAT164;将取出的每一位数据送入164,
;用一个脉冲实现(PB1)
movx@dptr,a
movdptr,#CLK164
orla,#02h;将PB1置1
movx@dptr,a
anla,#0fDh;将PB1置0
movx@dptr,a
mova,r3
djnzB,DLP;判断8段是否都送完
movdptr,#OUTBIT
mova,r2
movx@dptr,a;显示一位八段管
movr6,#1
callDelay
mova,r2;显示下一位
rra
movr2,a
incr0
djnzr1,Loop
movdptr,#OUTBIT
mova,#0
movx@dptr,a;关所有八段管
ret
Start:
movdptr,#0e100h
mova,#03h;给8155初始化,PAPB输出
movx@dptr,a
movsp,#40h
movNum,#0
MLoop:
incNum
mova,Num
movb,a
movr0,#LEDBuf
FillBuf:
mova,b
anla,#0fh
movdptr,#LEDMap
movca,@a+dptr;数字转换成显示码
mov@r0,a;显示在码填入显示缓冲
incr0
incb
cjner0,#LEDBuf+6,FillBuf
movDelayT,#30
DispAgain:
callDisplayLED;显示
djnzDelayT,DispAgain
ljmpMLoop
END
10、问题思考
1、试着改变一下数字的变化速度。
2、改变一下数字跳动的幅度,如1,3,5,7,9,11
3、改变一下LED显示的方向,让数字从左到右跳动。
实验二键盘扫描显示实验
1、实验目的:
(1)掌握键盘和显示器的接口方法和编程方法。
(2)掌握键盘扫描和LED八段码显示器的工作原理。
2、实验要求:
在上一个实验的基础上,利用实验仪提供的键盘扫描电路和显示电路,做一个扫描键盘
和数码显示实验,把按键输入的键码在六位数码管上显示出来。
实验程序可分成三个模块。
1、键盘输入模块:
扫描键盘、读取一次键盘并将键值存入键值缓冲单元。
2、显示模块:
将显示单元的内容在LED显示器上动态显示。
3、主程序:
调用键盘输入模块和显示模块。
3、实验电路图:
4、实验器材:
(1)超想-3000TB综合实验仪1台
(2)超想3000仿真器1台
(3)计算机1台
5、实验连线:
无
6、实验说明:
本实验仪提供了一个6×4的小键盘,向列扫描码地址(0e101H)逐列输出低电平,然后从行码地址(0e103H)读回,如果有键按下,则相应行的值应为低,如果无键按下,由于上拉的作用,行码为高。
这样就可以通过输出的列码和读取的行码来判断按下的是什么键.。
在判断有键按下后,要有一定的延时,防止键盘抖动。
列扫描码还可以分时用作LED的位选通信号。
7、程序框图
8、实验程序
CCONEQU0E100H;8155控制字地址
OUTBITEQU0E101H;LED显示位控制地址
PACONEQU0E101H;PA口,键盘列输出
CLK164EQU0E102H;164时钟控制地址
DAT164EQU0E102H;164数据控制地址
INEQU0E103H;键盘读入口
LED1EQU08H;6个LED显示码的存放地址
LED2EQU09H;
LED3EQU0AH;
LED4EQU0BH;
LED5EQU0CH;
LED6EQU0DH;
KEYLISTEQU0EH;按下键盘的列值
KEYTEMPEQU10H;得到键盘的扫描值
ORG0000H
LJMPSTAR
WAIT:
;循环程序
LCALLSHOW;调用LED显示子程序
LCALLSCANKEY;调用按键扫描程序...
MOVA,KEYTEMP
JZWAIT;判断是否有按键按下,有的话继续,否则
;返回继续等待
LCALLGETKEY;
SJMPWAIT;循环
RET
SHOW:
;LED显示子程序
MOVR2,#00100000B;从最左边的LED开始显示
MOVB,#06H;6个LED
MOVR1,#LED1;取得第一位LED显示码地址
SHOWLED:
;显示6个LED的循环程序
CLRA;熄灭所有LED管
MOVDPTR,#OUTBIT
MOVX@DPTR,A
PUSHB
MOVB,#8;B用来计数,8表示8段LED
MOVA,@R1;取得第一个显示码
MOVR0,A
INCR1;指向下一个显示码
SHOWBIT:
;给8段LED赋值的循环程序
MOVA,R0;取出显示码的每一位,从高位开始
RLCA
MOVR0,A;
MOVACC.0,C
CLRACC.1;置0做脉冲用
MOVDPTR,#DAT164
MOVX@DPTR,A;将显示码的每一位送入164中
MOVDPTR,#CLK164
SETBACC.1;置1做脉冲用
MOVX@DPTR,A
CLRACC.1;置0做脉冲用
MOVX@DPTR,A
DJNZB,SHOWBIT;判断8位显示码是否都送入164中
POPB
MOVA,R2
MOVDPTR,#OUTBIT;显示该位LED
MOVX@DPTR,A;
CALLDELAY
RRA;指向下一位LED
MOVR2,A
DJNZB,SHOWLED;判断6个LED是否都显示完毕
RET
SCANKEY:
;键盘扫描子程序,判断是否有按键按下
MOVDPTR,#PACON
CLRA
MOVX@DPTR,A
MOVDPTR,#IN
MOVXA,@DPTR;获取扫描结果
CPLA
ANLA,#0FH
MOVKEYTEMP,A;扫描结果放入KEYTEMP中,KEYTEMP
;为0时候表示没有按键按下
RET
GETKEY:
;获取键盘显示码
;思路:
先获取按键的行值和列值,然后根据该按键的行和列的位置到KEYMAP表中去
查询该按键的字面值,最后根据该按键的字面值到LEDMAP表中得到该按键的显示码,然
后将该显示码送到;LED6中...
MOVKEYLIST,#0;保存按键的列值
MOVB,#06H;计数,6表示键盘有6列
MOVR0,#11111110B;从键盘的最左边开始扫描
GETKEY0:
MOVDPTR,#PACON;扫描键盘的每一列
MOVA,R0
MOVX@DPTR,A
MOVDPTR,#IN;获取键盘扫描结果
MOVXA,@DPTR
CPLA
ANLA,#0FH
MOVKEYTEMP,A
JNZGETKEY1;判断该列是否有有按键按下
MOVA,R0;
RLA
MOVR0,A
INCKEYLIST;列值+1
DJNZB,GETKEY0;判断键盘的6列是否都扫描完毕
RET
GETKEY1:
MOVA,KEYTEMP;获取扫描结果
JBACC.3,LINE0;第0行
JBACC.2,LINE1;第1行
JBACC.1,LINE2;第2行
JBACC.0,LINE3;第3行
LINE0:
MOVA,KEYLIST;按键的列值
ADDA,#0;键盘为4*6格式,所以一行需要+6
;因为这是第0行所以+0
MOVDPTR,#KEYMAP
MOVCA,@A+DPTR;获取按键的字面值
ANLA,#0FH
MOVDPTR,#LEDMAP
MOVCA,@A+DPTR;获取按键的显示码
MOVLED6,A;将显示码送入LED6中
LJMPGETKEYEND
LINE1:
;同上....
MOVA,KEYLIST
ADDA,#6;
MOVDPTR,#KEYMAP
MOVCA,@A+DPTR
ANLA,#0FH
MOVDPTR,#LEDMAP
MOVCA,@A+DPTR
MOVLED6,A
LJMPGETKEYEND
LINE2:
;同上....
MOVA,KEYLIST
ADDA,#6
ADDA,#6
MOVDPTR,#KEYMAP
MOVCA,@A+DPTR
ANLA,#0FH
MOVDPTR,#LEDMAP
MOVCA,@A+DPTR
MOVLED6,A
LJMPGETKEYEND
LINE3:
;同上....
MOVA,KEYLIST
ADDA,#6
ADDA,#6
ADDA,#6
MOVDPTR,#KEYMAP
MOVCA,@A+DPTR
ANLA,#0FH
MOVDPTR,#LEDMAP
MOVCA,@A+DPTR
MOVLED6,A
LJMPGETKEYEND
GETKEYEND:
;结束
LCALLSCANKEY;调用键盘扫描子程序
MOVA,KEYTEMP
JNZGETKEYEND;等到按键松开
RET
LEDMAP:
;八段管显示码
DB3fh,06h,5bh,4fh,66h,6dh,7dh,07h
DB7fh,6fh,77h,7ch,39h,5eh,79h,71h
KEYMAP:
;键盘对应的数字
DB07H,08H,09H,0AH,10H,00H
DB04H,05H,06H,0BH,11H,12H
DB01H,02H,03H,0CH,13H,14H
DB00H,0FH,0EH,0DH,15H,16H
DELAY:
MOV20H,#0FH;延时子程序
DELAY1:
DJNZ20H,DELAY1
RET
STAR:
;程序开始
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 指导书 单片机 技术