《单片机实验指导书计算机.pdf》由会员分享,可在线阅读,更多相关《单片机实验指导书计算机.pdf(93页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、单片机原理及应用实髓指导书目 录目录.3实验一仿真环境使用.4实 验 二数据 区 传 送、数据排序程序实验.12实验三 键盘扫描显示实验.17实 验 四 脉 冲 计 数(定时/计数器的记数功能实验).28实验五 A/D转换实验.35实验六 D/A0832转换实验.41实验七 步进电机控制实验.48实验八 RAM扩展实验.58实验九 力测量实验.63实验十温度测量实验.70实验十一 点阵LCD液晶显示屏实验.76实验一仿真环境使用一、实验目的1、熟悉仿真环境。2、学习简单程序调试的方法。二、实验内容:1、KEIL软件的安装将带有KEIL安装软件的光盘放入光驱里,打开光驱中带有KEIL安装软件的文
2、件夹,双击Setup文件夹中“Setup”即开始安装。如果您的微机上已经安装了 KEIL的软件,会提示您是否要先把您以前的软件先卸载,此时您最好是先卸载掉,然后再安装本软件(如图所示)。如果您需要把软件安装在C 盘以外的其它盘,需要运行一个补丁文件,直接打开KEIL软件已安装目录中的KEILUV2,双 击“Crackdir”图标,点击确定即完成补丁的安装(如图所示)。实验中所用实验例程在盘符keiluv2中,文件名为“3000TB51配套实验程序”都是工程文件,直接打开就可以进入调试界面;本书中所讲软件实验在“51asm”文件夹中,都以 ASM的格式存放文件夹中。2、硬件安装连接51CPU板,
3、在实验箱右下角有三个插座:JI、J2、J 3,用来连接51CPU板,在51CPU板匕有一个小拨码开关:J1 8,是单片机的EA脚,是用来选择读片内还是片外ROM的,拨向左边为读片内ROM;拨向右边为读片外ROM。KEIL仿真器与实验箱的连接:将 KEIL仿真器40芯的排线连到51 CPU板的40芯插座上,仿真器的USB连接线连到微机的USB 口。八段数码管右上角的两个拨码小开关是用来设置工作模式的,将两个拨码小开关同时拨向右边是选择51单片机工作模式,此时应拨向右边。3、Keil C软件的操作说明新建一个项目文件。首先点击Keil uVision2,进入uVision2界面。点击工具栏Proj
4、ect选项中的New Project,准备开始建立自己的项目。输入工程文件名称,并选择保存工程文件的目录。为项目文件选择一个目标器件(如 ATMEL89C51),如图所示。|I I务 国 I 选 胃 谡,6)QDG:目 标1r使用旷的连搭 0 J 5 1)代BLSl x 曲 RM M(&OW Ct Z(3 个 h%tgerd,$KS 咖8 刖|值e H 0 A -,|U 3 0 阳 4b?1 a电1 A /Sbrc I 3 I广,Sotra Group t口加5 II E i0口口WTJftfid)|m l a.*(用鼠标对项目工作区的目标1,点击右键在弹出的菜单中选择添加文件到原代码组,如口
5、 日e d*ew USect Zbug H#h%uc收心 loot*SKS Mfrdaw tfstoJJN 1T l *fla e l n-X f t s qp iH文 传 英教(I)|c Sow韩番踪置器理I A-1Clo”|“I T I、.KA I e s 4 人 rm S:/一1LU99C:J CAP NUM3 J “g也P 点击编译连接的图标,对项目文件进行编译点 击“调试/启动/停止调试”进入调试界面目 文 件 G 编辑皎 视图 项目0)调试s 闪存(。外围设备(r)IMCT)版本控制6)窗口给 帮助00|砰 LED-uVi零 ion3-C:KeilUV23000TB51配套实总例程
6、”实验一八段数码管显示实监AS8 U D?Ifi 舱 韵 仁 w回启动/停止调试8)Ctrl+F5M 恒 昌 g 国 四 瞰 阳 电I8团囹国|武1Target 1I B 运行 F5初 步 进 F1I用 步 越 P10.加跳出当前函数S GtrlfFH中工”四。钉 儆 四 智 纱 国 要 也 2|O1;实物一八段数码管num T T cc CcYCTh在调试界面中可以对程序进行单步或者全速运行的调试若要查看内存中的数据,点 击“视图/存储器窗口”-uVision3 文 件 编 辑 a)视图 项目(?)调试8)闪存(a)外围设备(r)工具仃)版本控制(S)窗口 C O 帮助00籥l O?3 状态
7、栏6)P 7 文件工具栏(F)好 口 M M 7售总创建工具栏8)5/%喇1 日 髓 中+彳v调试工具栏(g)寄存器正1 项目宙口(P);B Ilegs国输出囹口 9)源文件浏览器C)皮汇编窗口 8)困监视和调用堆栈窗口靠)小代码作用范围窗口(V)3000TB51配套实验例程1 实验一八段数码管显示实券 r0rl-r 2r3r4r5r6rT佥一八段数码管显示equ 0e101h;位控制口 equ 0e102h;度拄h口 (接164时钟位),equ 0e102h;段控制口(接16磁据位)equ 0e103h;健盘递入口equ 6 Oh;显丞缓抑equ 70h;显示曲班樵在此地址框中,输入不同的指
8、令查看内部数据如果需要查看一些内部数据,在菜单栏点击 视图/存储窗口。C:0X地 址 显 示 程 序 存 储 区 数 据X:0X地 址 显 示 数 据 存 储 区 中 数 据D:0X地址 显 示CPU内部存储区中数据地址:|d:0 x80H V M|R/配 15-画图|L:1 C:tI 3M吗&国11:30注 意:仿真器使用者使用时应注意:Keil C仿真器用户程序在全速运行时,如果需暂停运行,请 按 实 验 仪 键 盘“RST”,此时仿真器存储器数据清零。如果您要再次运行您所编写的程序,就必须重新装载运行。4、拆字程序:把8000H地址上的内容拆开,高 位 送8001H地址的低位,低 位 送
9、8002H地址的低位,8001 Hs 8002H地址的高位清零;参考程序ORG 0000HMOV DPTR,#8000HMOVX A,DPTRMOV B,ASWAP AANLA,#0FH;指定的字节;暂存;交换;屏敝高位INC DPTRMOVX DPTR,AINC DPTRMOVA,BANL A,#0FHMOVX DPTR,ALOOP:SJMP LOOPEND;指定字节的内容屏敝高位实 验 二 数 据 区 传 送、数据排序程序实验一、实验目的1、学习W i n d o w s平台下的编辑、编译、排错调试方法。2、学习修改和观察变量的方法;综合使用单步、断点调试的方法。二、实验内容:1、数据传送
10、把内部R A M中起始地址为D A T A的数据传送到内部R A M以B U F F E R为首地址的区域,直到发 现“$”字符的A S C I I码为止,数据串的最大长度为3 2个字节。2、多字节B C D码加法3、编写并调试一个排序子程序,其功能为用冒泡法将内部RAM中几个单字节无符号正整数,按从小到大的次序重新排列。三、实验器材:计算机 1 台四、实验步骤1、参 阅 硬件安装把综合实验仪、仿真器与P C机串行口连起来,打开电源。2、在P C机上用鼠标点击“KEILu v is io n2”图标,进入KEIL调试环境,选择串行口,点 击“确认”。3、打 开“项目/新建项目”,输入项目名,选
11、择目标M CU,如:int e18 9 c5 2。4、编辑文件:用鼠标点击 文件1新文件,在文本编辑器中编辑程序:5、文件保存:用鼠标点击 文件I保存,在对话框中输入文件名。6、为项目添加文件:单击左边的 项目工作区/源代码组1右健在出现菜单中选择 添加文件到组“源 代 码 组1”,在弹出的对话框中选中您刚保存的文件,点击确认完成项目文件的添加。7、为项目设置通讯口:单击左边的 项目工作区/目标1右键在出现的菜单中选择 为目标“目标1”设置选项,在弹出的菜单中选择 调试。在新窗口中选择使用Keil mo nit o r-5 1Driver。单击设置在出现的窗口中设置串口和波特率(注:波特率必须
12、为38400)。8、文件编译、连接、装载:用鼠标点击 项目/重建所有目标文件,系统自动进行编译,并出现信息窗口。若有语法错误,则需重新修正,需再次执行重建所有目标文件;若无语法错误,点击 调试/启动/停止调试 后,进入调试状态。9、设置观察窗口:用鼠标点击 视图/存储口窗口,在地址口输入CPU内部存贮区地址,回车之后出现地址为50H的数据显示于窗口中。10、单步执行程序:按 F11犍一条一条地执行下去,注意观察左边寄存器区中相应的寄存器或者CPU内部存贮区中相应的数据寄存器单元的数据变化。11、连续运行:用鼠标点击 外围设备/复位CPU,使 PC指向0000H,点击 调试/运行后,程序开始连续
13、运行。如需暂停,用鼠标点击 调试/停止运行。12、断点运行:要使程序执行到某条指令处暂停,如希望程序执行到LOOP1处暂停,可按如下操作:将光标移到LOOP 1 处双击鼠标左键,即可设置断点,用鼠标点击 调试/运行,程 序 将 在 LOOP行停止运行。13、复位:用鼠标点击 外围设备/复位CPU,强迫PC指向0000H。图 2 数据排序程序流程图图1数据传送子程序流程图数据传送子程序1、数据传送把内部R AM中起始地址为DAT A的数据传送到内部R AM以 BU F F ER 为首地址的区域,直到发 现 字 符 的 A S C H 码为止,数据串的最大长度为3 2 个字节。Or g OOOOh
14、MOV R O,#DAT AMOV R I,BU F F ERMOV R 2,#2 0 HLOOP:MOV A,R 0S U BBA,#2 4 HJZ EXITINC R IINC R OMOV R 1,ADJNZ R 2,LOOPLOOP:AJMP$r e t2、多字节BCD码加法入口条件:字节数在R 7 中,被加数在 R 0 中,加数在 R 1 中。出口条件:和在 R O 中,最高位进位在C Y 中。影响资源:P S W、A、P 2 堆栈需求:2 字节Or g OOOOhBCDA:MOV A,R 7MOV R 2,AADD A,R OMOV R O,AMOV A,R 2ADD A,R IM
15、OV R I,ACLR CBCD1:DEC R ODEC R IMOV A,R OADDC A,R 1DA AMOV R 0,ADJNZ R 2,BCD1r e t3;用冒泡法进行数据排序ORG 0000HMOV R3,#50HLOOPO:MOV A,R3MOV RO,A;指针送ROMOV R7,#0AH;长度送R7CLR OOH;标志位为0MOV A,R0LOOP1:INC ROMOV R2,AL00P2:L00P3:LOOP:CLRCMOV 22H,R0CJNE A,22H,LOOP2 湘等吗?SETBCMOV A,R2JC LOOP3;小于或等于不交换SETB OOHXCH A,R0DE
16、C ROXCH A,R0INC RO;大于交换位置MOV A,R0DJNZR7,LOOP1JB OOH,LOOPO;一次循环中有交换继续SJMP LOOP;无交换退出END实验三键盘扫描显示实验一、实验目的:1、掌握键盘和显示器的接口方法和编程方法。2、掌握健盘扫描和LED八段数码管显示器的工作原理。二、实验要求:在上一个实验的基础上,利用实验仪提供的键盘扫描电路和显示电路,做一个扫描键盘和数码显示实验,把按键输入的键码在六位数码管上显示出来。实验程序可分成三个模块。1、键输入模块:扫描键盘、读取一次犍盘并将犍值存入键值缓冲单元。2、显示模块:将显示单元的内容在显示器上动态显示。3、主程序:调
17、用键输入模块和显示模块。三、实验器材:1、单片机综合实验仪1台2、KEIL仿真器1台3、计算机1台四、实验电路:这里只是键盘示意图,详细原理参见“8155键显模块”。行码(0el03H)列码(OelOlH)图 3 键盘示意图五、实验说明:本实验仪提供了一个6 X 4 的小键盘,向列扫描码地址(OelOlH)逐列输出低电平,然后从行码地址(0el03H)读回,如果有键按下,则相应行的值应为低,如果无键按下,由于上拉的作用,行码为高.这样就可以通过输出的列码和读取的行码来判断按下的是什么键。在判断有键按下后,要有定的延时,防止键盘抖动。列扫描码还可以分时用作LED的位选通信号。六、实验流程图:图4
18、 实验主程序框图显示程序框图见上个实验返回图5读犍输入子程序框图七、实验程序:;键盘扫描实验OUTBITequOelOlh;位控制口CLK164equ 0el02h;段控制口(接 164时钟位)DAT164equ OelO2h;段控制口(接 164数据位)INequOelO3h;键盘读入口ORG 0000HLJMP STARANL A,#OFHKEY1:MOV13H,#06HMOV12H,#20HKEY2:MOVA,12HCPLAMOVR7,AMOVDPTR,#0E101HMOVA,R7MOVXDPTR,AMOVAJ2HCLRCRRCAMOV12H,AMOVDPTR,#0E103HMOVXA,
19、DPTRMOVR7,AMOVA,R7CPLAMOVR7,AMOVA,R7MOV I4H,ADEC13HMOVR7,13HMOVA,R7JZKEYDISMOVA,14HJZKEY2KEYDIS:MOV A,14HJZ TESTKEY5MOV A,13HADD A,ACCADD A,ACCMOV 13H,AMOV A,14HJNB ACC.1,TESTKEYINC 13HSJMP TEST KE Y2;键盘扫描TESTKEY:MOV AJ4HJNB ACC.2,TESTKEY 1INC 13HINC 13HSJMP TESTKEY2TESTKEY 1:MOV A,14HJNB ACC.3,TEST
20、KEY2MOV A,#03HADD A,13HMOV 13H,ATESTKEY2:MOV DPTR,#0E101HCLR AMOVX DPTR,ATESTKEY3:MOV R7,#0AHLCALLMLOOPLCALL MLOOP4MOVA,R7JNZTESTKEY3MOVR7J3HMOVA,R7MOVDPTR,#0134HMOVCA,A+DPTRMOVR7,ARETTESTKEY4:DB 22H;nTESTKEY5:MOV R7,#0FFHRET=GETKEY:MOV 10H,#20HMOV 0EH,#00HGETKEY1:MOV A,0EHCLR CSUBB A,#06HJNC GOON2M
21、OV DPTR,#0E101HCLR AMOVX DPTR,AMOV R7,0EHMOV A,#08HMOVX A,DPTRADDA,R7MOVRO,AMOVA,R0MOVR7,AMOV11H,R7MOV0FH,#00HGETKEY2:MOV A,0FHCLRCSUBBA,#08HJNCGOON1MOVA,11HJNBACC.7,KLOOPMOVDPTR,#0E102HMOVA,#01HMOVXDPTR,ASJMPKLOOP1,KLOOP:MOVDPTR,#0E102HCLRAMOVXDPTR,AKLOOP1:MOV DPTR,#0E102HMOVXA,DPTRMOVR7,AMOVA,R7OR
22、LA,#02HMOVR7,AMOVA,R7MOVXDPTR,AMOVDPTR,#0E102HMOVR7,AMOVA,R7ANLA,#0FDHMOVR7,AMOVA,R7MOVXDPTR,AMOVA,11HADDA,ACCMOV11H,AINCOFHSJMPGETKEY2GOON1:MOVDPTR,#0E101HMOVA,10HMOVXDPTR,AMOVR7,#01HLCALL MLOOPMOVA,10HCLRCRRCAMOV10H,AINCOEHSJMPGETKEY1GOON2:RETWAIT:MOV DPTR,#0E100HMOV 0AH,#0FFHMOVA,#03HMOVXDPTR,AMO
23、V08H,#()FFHMOV09H,#0FFHMOV 0BH,#0FFHMOV 0CH,#00HMOV 0DH,#00HWAIT1:LCALL GETKEYLCALL MLOOP4MOV A,R7JZ WAIT1LCALL KEY1MOV R6,#00HMOV R6,#00HMOV A,R7ANL A,#0FHMOV R7,AMOV A,#24HADD A,R7MOV DPL,AMOV A,#()1HADDC A,R6MOV DPH,ACLR AMOVC A,A+DPTRMOV R7,AMOV 0DH,R7SJMP WAIT1RET;=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:
24、=:=:=:=:=:=TAB:Q0124:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07HQ012C:DB7FH,6FH,77H,7CH,39H,5EH,79H,71H;ow|9AyqQ0134:DBOOH,01H,04H,07H,OFH,02H,05H,08H.RETQ013C:Q0144:DBDBOEH,03H,06H,09H,ODH,OCH,OBH,OAH10H,11H,12H,13H,14H,15H,16H;.MLOOP:MLOOP1:MLOOP2:MLOOP3:MOV 15H,R7MOV R7J5HDEC 15HMOV A,R7JZ MLOOP3MOV 16H,#6
25、4HMOV A,16HJZ MLOOP1DEC 16HSJMP MLOOP2SJMP MLOOP1RETMLOOP4:MOV DPTR,#0E101HCLR AMOVX DPTR,AMOV DPTR,#0E103HMOVX A,DPTRMOV R7,AMOV A,R7CPL AMOV R7,AMOV A,R7ANL A,#0FHMOV R7,ASTAR:MOV R0,#7FHCLR ASTAR1:MOV R0,ADJNZ RO,STAR 1MOV SR#16HLJMP WAITEND实 验 四 脉 冲 计 数(定时/计数器的记数功能实验)一、实验目的:1、熟悉8031定时/计数器的记数功能;2
26、、掌握初始化编程方法;3、掌握中断程序的调试方法。二、实验内容:定时/记数器0 对外部输入的脉冲进行计数,并送显示器显示。三、实验器材:1、单片机综合实验仪 1 台 2、KEIL仿真器 1 台3、连线若干根 4、计算机 1 台四、实验原理:MCS-51有 两 个 16位的定时/计数器:T 0 和 T1。计数和定时实质上都是对脉冲信号进行计数,只不过脉冲源不同而已。当工作在定时方式时,计数脉冲来自单片机的内部,每个机器周期使计数器加I,由于计数脉冲的频率是固定的(即每个脉冲为1个机器周期的时间),故可通过设定计数值来实现定时功能。当工作在计数方式时,计数脉冲来自单片机的引脚,每当引脚上出现一个由
27、1到 0 的电平变化时,计数器的值加1,从而实现计数功能。可以通过编程来指定时计数器的功能,以及它的工作方式。读取计数器的当前值时,应读3 次。这样可以避免在第一次读完后,第二次读之前,由于低位溢出向高位进位时的错误。五、接线方案:接线方案2:接线方案1:图6实验接线图六、程序框图:开 始堆栈、定时/计数初始化开定时器取出TLO/THO内容转换显 示图 7 主程序流程图图 8 二转十进制程序流程图七、实验步骤:用连线把“总线插孔”的 P3.4孔 连“脉冲源”的“DOWN”孔,执行程序,按 动 AN锁按钮,观察数码管上计数脉冲的个数。八、思考问题:把 P3.4孔分别与“脉冲源”的 2MHZ、1M
28、HZ、0.5MHZ孔相连时,显示值反而比连0.25MHZ孔更慢,为什么?当fosc=6MHZ时,能够计数的脉冲信号最高频率为多少?九、实验程序:;对定时器0 外部输入的脉冲信号进行计数且显示OUTBIT equOelOlhCLK164 equ0e102h;段控制口(接 164 时钟位)DAT164 equ 0el02h;段控制口(接 164 数据位)LEDBuf equ 40hIN equOelO3hORG OOOOhMOV SP,#60HMOV DPTR,#0el(X)H;8155 初始化MOV A,#03HMOVX DPTR,AMOV TMOD,#05H;定时器初始化MOV TH0,#00
29、HMOV TL0,#(X)HSETB TROLOOPO:MOV R2,TH0MOV R3,TL0LCALL LOOP1MOV RO,#40HL00P1:LOOP2:MOV A,R6LCALLPTDSMOV A,R5LCALLPTDSMOV A,R4LCALLPTDSLCALL DISPLAYSJMP LOOPOCLR AMOV R4,AMOV R5,AMOV R6,AMOV R7,#10HCLRCMOV A,R3RLC AMOV R3,AMOV A,R2RLC AMOV R2,AMOV A,R6ADDC A,R6DA AMOV R6,AMOV A,R5ADDC A,R5DA AMOV R5,A
30、MOV A,R4;二转十子程序ADDC A,R4DAAMOV R4,ADJNZ R7,LOOP2RETPTDS:MOV R 1,A;拆字子程序ACALLPTDS1MOV A,RISWAP APTDS1:ANLA,#0FHMOV R0,AINC RORETDelay:movr7,#0;延时子程序DelayLoop:djnzr7,Del ay Loopdjnzr6,Del ay LoopretDISPLAY:setb Od3hmovrO,#LEDBufmovrl,#6;共 6 个八段管movr2,#0000000lb;从左边开始显示Loop:movdptr,#OUTBITmova,#00hmovx
31、dptr,a;关所有八段管mov a,r0mov dptr,#LEDmapmove a,a+dptrmov B,#8;送 164DLP:anl a,#Ofdhrlcamovr3,amovacc.O,corl a,#02hmovdptr,#DAT164movxdptr,amovdptn#CLK164anl a,#0fDhmovxdptr,amovxdptr,amova,r3djnzB,DLPmovdptr,#OUTBITmova,r2movxdptr,a;显示一位八段管movr6,#1call Delaymova,r2;显示下一位rlamovr2,aincIOdjnzrl,Loopmovdptr
32、,#OUTBITmova,#0movxdptr,a;关所有八段管clr 0d3hretLEDMAP:;八段管显示码db 3fh,06h,5bh,4fh,66h,6dh,7dh,07hdb 7fh,6fh,77h,7ch,39h,5eh,79h,71 hEND实验五 A/D转换实验一、实验目的:掌握A/D转换与单片机接口的方法;了解A/D芯片0809转换性能及编程方法。二、实验内容:利用综合实验仪上的0809做 A/D转换器,综合实验仪上的电位器提供模拟量输入,编制程序,将模拟量转换成数字量,通过8155键显区数码管显示出来。三、实验器材:1、单片机综合 实 验 仪 1 台 2、KEIL仿真器
33、1 台3、连线 若干根 4、计算机 1 台四、实验原理:A/D转换器的功能主要是将输入的模拟信号转换成数字信号,如电压、电流、温度测量等都属于这种转换。本实验中采用的转换器为ADC0809,它是一个8 位逐次逼近型A/D转换器,可以对8 个模拟量进行转换,转换时间为100US。其工作过程如下:首先由地址锁存信号ALE的上升沿将引脚ADDA,ADDB和 ADDC上的信号锁存到地址寄存器内,用以选择模拟量输入通道;START信号的下降沿启动A/D 转换器开始工作;当转换结束时,AD0809使 EO C引脚由低电平变成高电平,程序可以通过查询的方式读取转换结果,也可以通过中断方式读取结果。CLOCK
34、为转换时钟输入端,频率为100KHz-1.2MHz,推荐值为640KHz。五、程序流程图:图9 程序流程图六、实验步骤:1、设定仿真模式为程序空间在仿真器上,数据空间在用户板上,即点击 设置 下的 仿真模式,在 RAM区选中用户RAM,ROM区选中系统ROM(注:本书中的实验除另行说明外,均与此相同)。把 AD0809的零通道091N0孔用连线接至模拟信号发生器的VIN孔,AD0809的片选信号CS09孔接 译码器 YC2(0A000-0AFFFH)孔,“脉冲源”中的0.5MHZ孔连AD0809的 CLOCK孔。2、编写程序,并编译通过。本程序使用查询的方式读取转换结果。在读取转换结果的指令后
35、设置断点,运行程序,在断点处检查并读出A/D转换结果,数据是否与VIN相对应。修改程序中错误,使显示值随VIN变化而变化。七、接线图案:0.5MHZ脉冲源 U)nr0123ii57I,IHimINammaIlTINYC2(AOOO)译码器图 1 0 实验接线图八、思考问题:1、试编写循环采集8 路模拟量输入A/D转换程序;2、以十进制方式显示。九、实验程序:OUTBIT equOelOlh;位控制口CLK164 equ 0el02h;段控制口(接 164 时钟位)DAT164 equ0el02h;段控制口(按 164 数据位)IN equOelO3h;键盘读入口LEDBuf equ 40h;显
36、示缓冲org OOOOhmov sp,#60hmov dptr,#Oe lOOh;8155 初始化mov a,#03hmovx dptr,amov 40h,#00h;显示缓冲器初始化mov 41h,#08hmov 42h,#00hmov 43h,#09hmov 44h,#00hmov 45h,#00hL00P1:MOV R7,#40VI:Icall DISPLAYDJNZ R7,VImov a,#OOhmov dptr,#OaO(M)hmovx dptr,amov r7,#0fhloop2:djnz r7,loop2movx a,dptrmov r0,#45hIcall ptdssjmp lo
37、oplptds:mov rl,aIcall ptdslmov a,rlswap aptds 1:anl a,#Ofhmov rO,adec rOretDelay:mov r7,#0DelayLoop:djnz r7,Del ay Loopdjnz r6,Del ay LoopretDISPLAY:setb Od3hmov rO,#LEDBufmov rl,#6;0809AD的通道开始转换吗?;拆字;延时子程序;共 6 个八段管movr2,#00100000b;从左边开始显示Loop:movdptr,#OUTBITmova,#00hmovxdptr,a;关所有八段管mova,r0mov dptr
38、,#LEDmapmove a,a+dptrmovB,#8;送 164rlcamovr3,amovacc.O,canl a,#Ofdhmov dptr,#DAT 164movx dptr,amov dptr,#CLK 164orl a,#02hmovx dptr,aanl a,#OfDhmovx dptr,amov a,r3djnz B,DLPmov dptr,#OUTBITmov a,r2movx dptr,a;显示一位八段管mov r6,#1call Delaymov a,r2;显示下一位rr amov r2,ainc rOdjnz rl,Loopmov dptr,#OUTBITmov a,
39、#0movx dptr,aclrOd3h;关所有八段管retLEDMAP:;八段管显示码db 3fh,06h,5bh,4fh,66h,6dh,7dh,07hdb 7fh,6fh,77h,7ch,39h,5eh,79h,71 hEND实验六 D/A0832转换实验一、实验目的:了解D/A转换与单片机的接口方法;了解D/A转换芯片DA0832的性能及编程方法。二、实验内容:利用0832输出一个从0 V开始逐渐升至5 V再降至0 V的三角波电压,数码管显示数字量值。三、实验器材:1、单片机综合实验仪1台 2、KEIL仿真器 1台3、连线若干根4、计算机1台四、接线图案:库码器Y C 3(BOOOH)
40、CS32IJ13步r器急图1 1实验接线图五、程序框图:图 1 2 实验接线图六、实验原理:D/A转换器的功能主要是将输入的数字量转换成模拟量输出,在语音合成等方面得到了广泛的应用。本实验中采用的转换器为DAC0832,该芯片为电流输出型8 位 D/A转换器,输入设有两级缓冲锁存器,因此可同时输出多路模拟量 本实验中采用单级缓冲连接方式,用 0832来产生三角波,具体线路如上图所示。VREF引脚的电压极性和大小决定了输出电压的极性与幅度,单片机综合实验仪上的DA0832的第8 引 脚(VREF)的电压已接为-5V,所以输出电压值的幅度为0-5V。七、实验步骤:1、设定仿真模式为程序空间在仿真器
41、上,数据空间在用户板上。把 DA0832的片选CS32孔接至 YC3(0B000H-0BFFFH)孔。2、编写程序、编译程序:用单步、断点、连续方式调试程序,排除软件错误。运行程序,8155键显区数码管上显示不断加大或减小的数字量,用万用表测量D/A输出孔AOUT,应能测出不断加大或减小的电压值。八、思考问题:修改程序,使能产生锯齿波。九、实验程序:OUTBIT equOelOlh;位控制口CLK164 equOelO2h;段控制口(接 164 时钟位)DAT 164 equ0el02h;段控制口(接 164 数据位)IN equOelO3h;键盘读入口LEDBuf equ 40h;显示缓冲o
42、rg OOOOhmov sp,#60hmov dptr,#Oe 1 OOh;8155 初始化mov a,#O3hmovx dptr,amov 40h,#00hmov 41h,#08h;显示缓冲区置值mov 42h,#03hmov 43h,#02hloopl:loop2:mov r5,#00hmov dptr,#0B000hmov a,r5movx dptr,amov r0,#45hmov 45h,a;0832DA从小到大转换;拆字后送显示缓冲区dir 10:loop3:dirll:acall ptdsmov r6,#15hacall displaydjnz r6,dirl0inc r5cjne
43、 r5,#00h,loop2mov dptr,#()B000hdec r5mov a,r5movx dptr,amov r0,#45hacall ptdsmov r6,#15hacall displaydjnz r6,dirllcjne r5,#00h,loop3sjmp loopl;调用显示子程序;0832DA从大到小转换Delay:mov r7,#00mov r3,#00;延时子程序DelayLoop:djnz r3,DelayLoopdjnz r7,DelayLoopdjnz r6,DelayLoopretDISPLAY:setb Od3hmov rO,#LEDBufmov rl,#6;
44、共 6 个八段管mov r2,#00100000b;从左边开始显示Loop:mov dptr,#OUTBITmov a,#00hmovx dptr,a;关所有八段管mov a,r0mov dptr,#LEDmapmove a,a+dptrmov B,#8;送 164DLP:rlc amov r3,amov acc.O,canl a,#Ofdhmov dptr,#DAT 164movx dptr,amov dptr,#CLK 164orl a,#03hmovx dptr,aanl a,#OfDhmovxdptr,amova,r3djnzB,DLPmovdptr,#OUTBITmova,r2mov
45、xdptr,a;显示一位八段管movr6,#01callDelaymova,r2;显示下一位rramovr2,aincrOdjnzrl,Loopmovdptr,#OUTBITmova,#0movxdptr,a;关所有八段管clrOd3hretLEDMAP:;八段管显示码db3fh,06h,5bh,4fh,66h,6dh,7dh,07hdb7fh,6fh,77h,7ch,39h,5eh,79h,71hptds:mov rl,aacall ptdslmov a,rlswap aptdsl:anl a,#Ofhmov rO,adec rOretDelay 1:mov r7,#O3hsjmp Del
46、ay LoopEND实验七 步进电机控制实验一、实验目的:了解步进电机工作原理,掌握用单片机的步进电机控制系统的硬件设计方法,熟悉步进电机驱动程序的设计与调试,提高单片机应用系统设计和调试水平。二、实验内容:编写并调试出一个实验程序按下图所示控制步进电机旋转:图 1 3 电机控制图三、工作原理:步进电机是工业过程控制及仪表中常用的控制元件之一,例如在机械装置中可以用丝杠把角度变为直线位移,也可以用步进电机带螺旋电位器,调节电压或电流,从而实现对执行机构的控制。步进电机可以直接接收数字信号,不必进行数模转换,用起来非常方便。步进电机还具有快速启停、精确步进和定位等特点,因而在数控机床、绘图仪、打
47、印机以及光学仪器中得到广泛的应用。步进电机实际上是一个数字/角度转换器,三相步进电机的结构原理如图所示。从图中可以看出,电机的定子上有六个等分磁极,A、A 、B、B 、C、C ,相邻的两个磁极之间夹角为6()0,相对的两个磁极组成一相(A-A,B-B,C-C),当某一绕组有电流通过时.,该绕组相应的两个磁极形成N 极和S 极,每个磁极上各有五个均匀分布矩形小齿,电机的转子上有40个矩形小齿均匀地分布的圆周上,相邻两个齿之间夹角为9 。当某一相绕组通电时,对应的磁极就产生磁场,并与转子形成磁路,如果这时定子的小齿和转子的小齿没有对齐,则在磁场的作用下,转子将转动一定的角度,使转子和定子的齿相互对
48、齐。由此可见,错齿是促使步进电机旋转的原因。图 1 4 三相步进电机结构示意图例如在三相三拍控制方式中,若 A相通电,B、C 相都不通电,在磁场作用下使转子齿和 A相的定子齿对齐,我们以此作为初始状态。设 与 A相磁极中心线对齐的转子的齿为0号齿,由于B 相磁极与A相磁极相差1 2 0 ,不是9的整数倍(1 2 0+9=4 0/3),所以此时转子齿没有与B 相定子的齿对应,只是第1 3号小齿靠近B 相磁极的中心线,与中心线相差3 ,如果此时突然变为B 相通电,A、C 相不通电,则 B 相磁极迫使1 3号转子齿与之对齐,转子就转动3 ,这样使电机转了一步。如果按照A-B-C 的顺序轮流通电一周,
49、则转子将动9。步进电机的运转是由脉冲信号控制的,传统方法是采用数字逻辑电路环形脉冲分配器控制步进电机的步进。下图为环形脉搏冲分配器的简化框图。A AB B BC C CA A图 1 5 三相六拍环形脉搏冲分配器示意图1、运转方向控制。如图所示,步进电机以三相六拍方式工作,若 按 A-A B-B-B C fC-C A-A 次序通电为正转,则当按A-A C f C-*C B-B-B A f A 次序通电为反转。2、运转速度的控制。图中可以看出,当改变C P脉冲的周期时,ABC-:相绕组高低电平的宽度将发生变化,这就导致通电和断电时速率发生了变化,使电机转速改变,所以调节CP脉冲的周期就可以控制步进
50、电机的运转速度。3、旋转的角度控制。因为每输入一个C P 脉冲使步进电机三相绕组状态变化一次,并相应地旋转一个角度,所以步进电机旋转的角度由输入的CP脉冲数确定。单片机实验仪选用的是20BY-0型 4 相步进电机,其工作电压为4.5V,在双四拍运行方式时,其步距角为1 8 0,相直流电阻为55Q,最大静电流为80Ma。采用8031单片机控制步进电机的运转,按四相四拍方式在P1 输出控制代码,令其正转或反转。因 此 P1 口输出代码的变化周期T 控制了电机的运转速度:n=60/TN式中:n 步进电机的转速(转/分);N 步进电机旋转一周需输出的字节数;T 代码字节的输出变化周期。设N=360/1