




已阅读5页,还剩85页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机原理应用实验指导书编辑:徐祖建湖北汽车工业学院电气与信息工程学院电工电子实训中心实验室2009年10月目录一. 产品简介 1二. 硬件安装 2三. KEIL C软件操作说明书 2四. 系统组成 3五. 实验内容3实验一 八段数码管显示 3实验二 键盘扫描显示实验 8实验三 脉冲计数(定时/计数器的计数功能实验)15实验四 A/D转换实验19实验五 D/A 0832转换实验 24实验六 步进电机控制 28实验七 工业顺序控制(INT0、INT1)综合实验 33实验八 直流电机转速测量与控制实验 37实验九 点阵LED实验 47实验十 PWM实验 49六. 实验思考4983恒科Keil C 超级仿真器说明书一、产品简介Keil C51 u Vision2 是德国Keil公司开发的基于Windows环境的8051软件开发平台,它集项目管理、源程序编辑、程序调试于一体,是一个强大的集成开发环境。U Vision2支持Keil的各种8051工具,包括:C编译器,宏汇编译器、连接/定位器及Object-hex转换程序,可以帮助用户快速有效的实现嵌入式系统的设计与调试。采用C语言进行单片机系统的开发,具有避免手工分配寄存器,移植容易等优点。 恒科Keil C超级仿真器的优点: 1、仿真8031内核的单片机。2、接支持Keil C51的IDE开发仿真环境,63K用户程序空间。3、全保留单片机特性,避免仿真正常而实际烧录芯片不正常的问题。4、仿真频率040MHz晶振可选。5、程序代码可重复转载。6、监控程序占用用户资源较少,全速运行不占用资源。7、可在Keil u Vision2下单步、断点、全速,可参考变量、RAM变量、结构变量等。8、支持汇编、C语言、混合调试。9、内部存储物理空间为68K,是伟福通用仿真器G6型的7倍,是伟福51专用仿真器的4倍。10、仿真频率可达40MHz。11、支持10个硬件断点。在Keil C51集成开发环境是使用工程方法来管理文件的,而不是单一文件的模式。所有的文件包括源文件程序(包括C程序,汇编程序)、头文件、甚至说明性的技术文档都可以放在工程项目文件里面统一管理。在使用Keil C51之前。您应该习惯这种工程的管理方式,对于刚刚使用Keil C51的用户来说,一般可以按照下面的步骤创建一个自己的Keil C51应用程序。1、建一个项目文件。2、工程选择一个目标器件(如ATMEL89C52)。3、创建源程序文件并输入程序代码且保存。4、把源文件添加到项目中。5、为工程项目设置软硬件调试环境。6、编译项目文件。7、硬件或者软件调试。二、硬件安装1、连接51CPU板,在实验箱右下角有三个插座:J1、J2、J3,用来连接51CPU板,在51CPU板上有一个小拨码开关:J18,是单片机的EA脚,是用来选择读片内还是片外ROM的,拨向左边为读片内8751 ROM,拨向右边为读片外8031 ROM。2、KEIL仿真器与实验箱的连接:将KEIL仿真器40芯的排线连到51CPU板的40芯插座上,仿真器的USB连接线连到微机的USB口。3、八段数码管右上角的拨码开关是用来设置工作模式的,将拨码开关同时向右边选择51单片机工作模式。三、KEIL C软件操作说明书如何新建一个项目文件?1、首先点击Keil u Vision2,进入u Vision2界面。点击工具栏Project选项中的New Project ,准备开始建立自己的项目。2、输入工程文件名称,并选择保存工程文件的目录。3、为项目文件选择一个目标器件(如ATMEL89C52)4、用鼠标对项目工作区的目标1,点击右键在弹出的菜单中选择“为目标目标1设置选项“5、在 “为目标目标1设置选项”中,点击“调试”菜单,在此菜单中可选择是使用硬件仿真还软件仿真,连接实验箱做实验时选择硬件仿真,点击硬件仿真选项后面的设置选项,在此对话框中选择串口和波特率,串口根据所连的电脑来决定,波特率为38400。6、点击“文件/新建”创建源程序文件并输入程序代码。7、在文本框输入源程序8、点击“文件/保存”对程序进行保存9、用鼠标对项目工作区的目标1,点击右键在弹出的菜单中选择添加文件到原代码组10、在弹出的添加文件框中,选择需要添加到项目的文件11、点击编译连接的图标,对项目文件进行编译12、点击“调试/启动/停止调试”进入调试界面13、在调试界面中可以对程序进行单步或者全速运行的调试14、若要查看内存的数据,点击“视图/存储器窗口”,在此窗口中输入不同的指令查看内部数据。四、系统组成超想3000TC开放式综合实验/仿真系统由仿真器、综合实验仪、软件、电源组成。超想3000TC综合实验仪屏气了传统实验仪的“单板式”设计方法,而采用可符合单片机开放过程的“仿真式”综合设计思想,使得所有的实验模块及CPU资源均全力对用户开放,从而充分满足“验证式”“模仿式”“探索式”“开发式”的由浅入深的各种实验要求。并且,实验平台作为一个独立的目标系统,能让用户进行脱机验证实验结果的实验,从而,是实验步骤与实际开发环境完全一致,学以致用。同时,仿真工具作为一个可独立使用的仿真器,从而,又可满足学生毕业设计,电子竞赛、教师科研所需。达到一机多用之目的。1、仿真器由于超想3000TC综合实验/仿真系统的“仿真器”与“实验平台”可分离使用,故原则上可配备任何品牌的仿真工具。由于本手册是围绕Keil C超级仿真器进行编写,所以,选用该产品成为最佳选择。作为仿真工具时,仿真器与实验仪完全脱离。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。本实验涉及到了8155 I0/RAM扩展芯片的工作原理以及74LS164器件的工作原理。(2)七段数码管的字型代码表显示字形gfedcba段码001111113fh1000011006h210110116bh310011114fh4110011066h511011016dh611111017dh7000011107h811111117fh911011116fhA111011177hB11111007chC011100139hD10111105ehE111100179hF111000171habfgecdpd7、程序框图8、实验步骤1.将KEIL仿真器上40芯排线一端和实验箱上51CPU板上的40芯排针连接起来,将仿真器连接的USB或串口线与PC机对应的USB或串口连接起来,打开实验箱电源。2.进入KEIL软件界面,点击项目/打开项目在C:KEILUV23000TC51配套实验例程中选实验一,内有ASM和C51两种程序,进入ASM文件夹打开LED项目文件3.点击“调试/启动/停止调试”,进入调试界面,点击“调试/运行”可看到8段数码管交替显示0-F9、实验程序;实验一 八段数码管显示OUTBIT equ 0e101h ; 位控制口CLK164 equ 0e102h ; 段控制口(接164时钟位)DAT164 equ 0e102h ; 段控制口(接164数据位)IN equ 0e103h ; 键盘读入口LEDBuf equ 60h ; 显示缓冲Num equ 70h ; 显示的数据DelayT equ 75h ; org 0000h ljmp StartLEDMAP: ; 八段管显示码 db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71hDelay: ; 延时子程序 mov r7, #0DelayLoop: djnz r7, DelayLoop djnz r6, DelayLoop retDisplayLED: mov r0, #LEDBuf mov r1, #6 ; 共6个八段管 mov r2, #00100000b ; 从左边开始显示Loop: mov dptr, #OUTBIT mov a, #00h movx dptr, a ; 关所有八段管 mov a, r0 mov B, #8 ; 送164,送完一个显示一个,动态显示DLP: rlc a ; 依次取出最右边的每一位 mov r3, a ; mov acc.0, c ANL A, #0FDH ;将PB1置0 mov dptr, #DAT164 ;将取出的每一位数据送入164,;用一个脉冲实现(PB1) movx dptr, a mov dptr, #CLK164 orl a,#02h ;将PB1置1 movx dptr, a anl a,#0fDh ;将PB1置0 movx dptr, a mov a, r3 djnz B, DLP ;判断8段是否都送完 mov dptr, #OUTBIT mov a, r2 movx dptr, a ; 显示一位八段管 mov r6, #1 call Delay mov a, r2 ; 显示下一位 rr a mov r2, a inc r0 djnz r1, Loop mov dptr, #OUTBIT mov a, #0 movx dptr, a ; 关所有八段管 retStart: mov dptr,#0e100h mov a,#03h ;给8155初始化,PA PB输出 movx dptr,a mov sp, #40h mov Num, #0MLoop: inc Num ; mov a, Num mov b, a mov r0, #LEDBufFillBuf: mov a, b anl a, #0fh mov dptr, #LEDMap movc a, a+dptr ; 数字转换成显示码 mov r0,a ; 显示在码填入显示缓冲 inc r0 inc b cjne r0, #LEDBuf+6, FillBuf mov DelayT,#99DispAgain: call DisplayLED ; 显示 djnz DelayT,DispAgain ljmp MLoop END10、问题思考 数码显示 第1个实验 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、实验说明:本实验仪提供了一个64的小键盘,向列扫描码地址(0e101H)逐列输出低电平,然后从行码地址(0e103H)读回,如果有键按下,则相应行的值应为低,如果无键按下,由于上拉的作用,行码为高。这样就可以通过输出的列码和读取的行码来判断按下的是什么键.。在判断有键按下后,要有一定的延时,防止键盘抖动。列扫描码还可以分时用作LED的位选通信号。7、程序框图8、实验程序CCON EQU 0E100H ;8155控制字地址OUTBIT EQU 0E101H ;LED显示位控制地址PACON EQU 0E101H ;PA口,键盘列输出CLK164 EQU 0E102H ;164时钟控制地址DAT164 EQU 0E102H ;164数据控制地址IN EQU 0E103H ;键盘读入口LED1 EQU 08H ;6个LED显示码的存放地址LED2 EQU 09H ;LED3 EQU 0AH ;LED4 EQU 0BH ;LED5 EQU 0CH ;LED6 EQU 0DH ;KEYLIST EQU 0EH ;按下键盘的列值KEYTEMP EQU 10H ;得到键盘的扫描值 ORG 0000H LJMP STARWAIT: ;循环程序 LCALL SHOW ; 调用 LED显示子程序 LCALL SCANKEY ;调用按键扫描程序. MOV A , KEYTEMPJZ WAIT ;判断是否有按键按下,有的话继续,否则;返回继续等待 LCALL GETKEY ; SJMP WAIT ;循环 RETSHOW: ;LED显示子程序 MOV R2 , #00100000B ;从最左边的LED开始显示 MOV B , #06H ; 6个LED MOV R1 , #LED1 ;取得第一位LED显示码地址SHOWLED: ;显示6个LED的循环程序 CLR A ;熄灭所有LED管 MOV DPTR ,#OUTBIT MOVX DPTR , A PUSH B MOV B , #8 ;B用来计数,8表示8段LED MOV A , R1 ;取得第一个显示码 MOV R0, A INC R1 ;指向下一个显示码SHOWBIT: ;给8段LED赋值的循环程序 MOV A , R0 ;取出显示码的每一位,从高位开始RLC AMOV R0 , A ; MOV ACC.0 , C CLR ACC.1 ;置0 做脉冲用MOV DPTR , #DAT164MOVX DPTR , A ;将显示码的每一位送入164中MOV DPTR , #CLK164 SETB ACC.1 ;置1做脉冲用MOVX DPTR , A CLR ACC.1 ;置0做脉冲用MOVX DPTR , A DJNZ B , SHOWBIT ;判断8位显示码是否都送入164中POP B MOV A , R2 MOV DPTR ,#OUTBIT ;显示该位LEDMOVX DPTR , A ;CALL DELAYRR A ;指向下一位LEDMOV R2 , A DJNZ B , SHOWLED ;判断6个LED是否都显示完毕 RETSCANKEY: ;键盘扫描子程序,判断是否有按键按下 MOV DPTR , #PACON CLR A MOVX DPTR , A MOV DPTR , #IN MOVX A , DPTR ;获取扫描结果 CPL A ANL A , #0FH MOV KEYTEMP , A ;扫描结果放入KEYTEMP中,KEYTEMP;为0时候表示没有按键按下 RETGETKEY: ;获取键盘显示码 ;思路:先获取按键的行值和列值,然后根据该按键的行和列的位置到KEYMAP表中去查询该按键的字面值,最后根据该按键的字面值到LEDMAP表中得到该按键的显示码,然后将该显示码送到;LED6中. MOV KEYLIST , #0 ;保存按键的列值 MOV B , #06H ;计数,6表示键盘有6列 MOV R0 , #11111110B ;从键盘的最左边开始扫描 GETKEY0: MOV DPTR , #PACON ;扫描键盘的每一列 MOV A , R0 MOVX DPTR , A MOV DPTR , #IN ;获取键盘扫描结果 MOVX A , DPTR CPL A ANL A , #0FH MOV KEYTEMP , A JNZ GETKEY1 ;判断该列是否有有按键按下 MOV A ,R0; RL A MOV R0 , A INC KEYLIST ;列值+1 DJNZ B , GETKEY0 ;判断键盘的6列是否都扫描完毕 RETGETKEY1: MOV A , KEYTEMP ;获取扫描结果 JB ACC.3 , LINE0 ;第0行 JB ACC.2 , LINE1 ;第1行 JB ACC.1 , LINE2 ;第2行 JB ACC.0 , LINE3 ;第3行LINE0: MOV A , KEYLIST ;按键的列值 ADD A ,#0 ;键盘为4*6格式,所以一行需要 +6;因为这是第0行所以 +0 MOV DPTR , #KEYMAP MOVC A , A+DPTR ;获取按键的字面值 ANL A , #0FH MOV DPTR , #LEDMAP MOVC A , A+DPTR ;获取按键的显示码 MOV LED6 , A ;将显示码送入LED6中 LJMP GETKEYENDLINE1: ;同上. MOV A , KEYLIST ADD A , #6 ; MOV DPTR ,#KEYMAP MOVC A , A+DPTR ANL A , #0FH MOV DPTR , #LEDMAP MOVC A , A+DPTR MOV LED6 , A LJMP GETKEYENDLINE2: ;同上. MOV A , KEYLIST ADD A , #6 ADD A , #6 MOV DPTR , #KEYMAP MOVC A , A+DPTR ANL A , #0FH MOV DPTR , #LEDMAP MOVC A , A+DPTR MOV LED6 , A LJMP GETKEYENDLINE3: ;同上. MOV A , KEYLIST ADD A , #6 ADD A , #6 ADD A , #6 MOV DPTR , #KEYMAP MOVC A , A+DPTR ANL A , #0FH MOV DPTR , #LEDMAP MOVC A , A+DPTR MOV LED6 , A LJMP GETKEYENDGETKEYEND: ;结束 LCALL SCANKEY ;调用键盘扫描子程序 MOV A , KEYTEMP JNZ GETKEYEND ;等到按键松开 RETLEDMAP: ; 八段管显示码 DB 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h DB 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71hKEYMAP: ; 键盘对应的数字 DB 07H,08H,09H,0AH,10H,00H DB 04H,05H,06H,0BH,11H,12H DB 01H,02H,03H,0CH,13H,14H DB 00H,0FH,0EH,0DH,15H,16HDELAY: MOV 20H , #0FH ;延时子程序DELAY1: DJNZ 20H , DELAY1 RET STAR: ;程序开始 MOV SP,#16HMOV DPTR , #CCON; 设计8155的工作方式PA和PB输出,PC输入MOV A , #03HMOVX DPTR,AMOV LED1 , #0FFH ;给6个LED管赋初值 8.8.8.8 (后两位为空) MOV LED2 , #0FFH MOV LED3 , #0FFH MOV LED4 , #0FFH MOV LED5 , #00HMOV LED6 , #00HLJMP WAIT;转到等待循环子程序END9、思考问题 1、如何能够让键盘输入两位数字。 *2、设计出一个简单的计算器,实现简单的加减运算。实验三 脉冲计数(定时/计数器的记数功能实验)1、实验目的: (1)熟悉8031定时/计数器的记数功能,(2)掌握初始化编程方法(3)掌握中断程序的调试方法2、实验内容: 定时/记数器0对外部输入的脉冲进行计数,并送显示器显示。3实验电路图:4、实验器材: (1)超想-3000TB综合实验仪 1 台 (2)超想3000仿真器 1 台(3)连线 若干根 (4)计算机 1 台5、实验连线: 方案1:总线插孔的P3.4接脉冲源的DOWN,按下脉冲按钮,观察数码管上计数脉冲的个数。 方案2:总线插孔的P3.4接脉冲源的0.25M,观察数码管上计数脉冲的个数。6、实验原理: MCS-51有两个16位的定时/计数器:T0和T1。计数和定时实质上都是对脉冲信号进行计数,只不过脉冲源不同而已.当工作在定时方式时,计数脉冲来自单片机的内部,每个机器周期使计数器加1,由于计数脉冲的频率是固定的(即每个脉冲为1个机器周期的时间),故可通过设定计数值来实现定时功能。当工作在计数方式时,计数脉冲来自单片机的引脚,每当引脚上出现一个由1到0的电平变化时,计数器的值加1,从而实现计数功能。可以通过编程来指定时计数器的功能,以及它的工作方式。读取计数器的当前值时,应读3次。这样可以避免在第一次读完后,第二次读之前,由于低位溢出向高位进位时的错误。7、程序框图 主程序流程图 二转十进制子程序 8、程序清单;“验证式”实验三 脉冲计数(定时/记数实验);对定时器0外部输入的脉冲信号进行计数且显示OUTBIT equ 0e101hCLK164 equ 0e102h ; 段控制口(接164时钟位)DAT164 equ 0e102h ; 段控制口(接164数据位)LEDBuf equ 40h ORG 0000hMOV SP,#60HMOV DPTR,#0e100H ;8155初始化 MOV A,#03HMOVX DPTR,AMOV TMOD,#05H ;定时器初始化MOV TH0,#00HMOV TL0,#00HSETB TR0LOOP0: MOV R2,TH0MOV R3,TL0LCALL LOOP1 ;调用二转十子程序,结果放在R4 R5 R6中MOV R0,#40HMOV A,R6LCALL PTDSMOV A,R5LCALL PTDSMOV A,R4LCALL PTDSLCALL DISPLAYSJMP LOOP0LOOP1: CLR A ;二转十子程序MOV R4,AMOV R5,AMOV R6,AMOV R7,#10HLOOP2: CLR CMOV A,R3RLC AMOV R3,AMOV A,R2RLC AMOV R2,AMOV A,R6ADDC A,R6DA AMOV R6,AMOV A,R5ADDC A,R5DA AMOV R5,AMOV A,R4ADDC A,R4DA AMOV R4,ADJNZ R7,LOOP2RETPTDS:MOV R1,A ;拆字子程序ACALL PTDS1MOV A,R1SWAP APTDS1:ANL A,#0FHMOV R0,AINC R0RETDelay: mov r7, #0 ; 延时子程序DelayLoop: djnz r7, DelayLoop djnz r6, DelayLoop retDISPLAY:setb 0d3h mov r0, #LEDBuf mov r1, #6 ; 共6个八段管 mov r2, #00000001b ; 从左边开始显示Loop: mov dptr, #OUTBIT mov a, #00h movx dptr, a ; 关所有八段管 mov a, r0 mov dptr,#LEDmap movc a,a+dptr mov B, #8 ; 送164DLP: rlc a mov r3, a mov acc.0, c anl a,#0fdh mov dptr, #DAT164 movx dptr, a mov dptr, #CLK164 orl a,#02h movx dptr, a anl a,#0fDh movx dptr, a mov a, r3 djnz B, DLP mov dptr, #OUTBIT mov a, r2 movx dptr, a ; 显示一位八段管 mov r6, #1 call Delay mov a, r2 ; 显示下一位 rl a mov r2, a inc r0 djnz r1, Loop mov dptr, #OUTBIT mov a, #0 movx dptr, a ; 关所有八段管 clr 0d3h retLEDMAP: ; 八段管显示码 db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71h END9、思考问题:1、把P3.4孔分别与“脉冲源”的2MHZ、1MHZ、0.5MHZ孔相连时,显示值反而比连0.25MHZ孔更慢,为什么?当fosc=6MHZ时,能够计数的脉冲信号最高频率为多少?实验四 A/D转换实验1、实验目的:掌握A/D转换与单片机接口的方法;了解A/D芯片0809转换性能及编程方法;2、实验内容: 利用综合实验仪上的0809做A/D转换器,综合实验仪上的电位器提供模拟量输入,编制程序,将模拟量转换成数字量,通过8155键显区数码管显示出来。3、实验电路图08094、实验器材: (1)超想-3000TB综合实验仪 1 台 (2)超想3000仿真器 1 台 (3)连线 若干根 (4)计算机 1 台5、实验连线:ADC0809的09IN0通道与模拟信号发生器的Vin0孔相连,ADC080片选信号CS09孔与译码器的YC2孔相连,脉冲源的0.5M与ADC0809的CLOCK相连。6、实验原理: A/D转换器的功能主要是将输入的模拟信号转换成数字信号,如电压、电流、温度测量等都属于这种转换。本实验中采用的转换器为ADC0809,它是一个8位逐次逼近型A/D转换器,可以对8个模拟量进行转换,转换时间为100S。其工作过程如下:首先由地址锁存信号ALE的上升沿将引脚ADDA、ADDB和ADDC上的信号锁存到地址寄存器内,用以选择模拟量输入通道;START信号的下降沿启动A/D转换器开始工作;当转换结束时,AD0809使EOC引脚由低电平变成高电平,程序可以通过查询的方式读取转换结果,也可以通过中断方式读取结果。CLOCK为转换时钟输入端,频率为100KHz-1.2MHz,推荐值为640KHz。 7、程序框图8、实验步骤: (1)设定仿真模式为程序空间在仿真器上,数据空间在用户板上(2)硬件诊断:调整综合实验仪上模拟信号发生器的电位器,使输入到此AD0809的IN0上电压为一定值。(3)编写程序,并编译通过 。本程序使用查询的方式读取转换结果。在读取转换结果的指令后设置断点,运行程序,在断点处检查并读出A/D转换结果,数据是否与Vin0相对应。修改程序中错误,使显示值随Vin0变化而变化。 9、实验程序 OUTBIT equ 0e101h ; 位控制口 CLK164 equ 0e102h ; 段控制口(接164时钟位) DAT164 equ 0e102h ; 段控制口(接164数据位) IN equ 0e103h ; 键盘读入口 LEDBuf equ 40h ; 显示缓冲 org 0000h mov sp,#60h mov dptr,#0e100h ;8155初始化 mov a,#03h movx dptr,a mov 40h,#00h ;显示缓冲器初始化 mov 41h,#08h mov 42h,#00h mov 43h,#09h mov 44h,#00h ;存放转换后数字的高位 mov 45h,#00h ;存放转换后数字的低位LOOP1: MOV R7,#40VI: LCALL DISPLAY DJNZ R7,VI mov a,#00h mov dptr,#0a000h movx dptr,a ;0809AD的通道开始转换 mov r7,#0fhloop2:djnz r7,loop2 movx a,dptr ;读取转换结果 mov r0,#45h ;拆字 lcall ptds sjmp loop1ptds:mov r1,a lcall ptds1 mov a,r1 swap aptds1: anl a,#0fh mov r0,a dec r0 retDelay: mov r7, #0 ; 延时子程序DelayLoop: djnz r7, DelayLoop djnz r6, DelayLoop retDISPLAY:setb 0d3h mov r0, #LEDBuf mov r1, #6 ; 共6个八段管 mov r2, #00100000b ; 从左边开始显示Loop: mov dptr, #OUTBIT mov a, #00h movx dptr, a ; 关所有八段管 mov a, r0 mov dptr,#LEDmap movc a,a+dptr mov B, #8 ; 送164DLP: rlc a mov r3, a mov acc.0, c anl a,#0fdh mov dptr, #DAT164 movx dptr, a mov dptr, #CLK164 orl a,#02h movx dptr, a a
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025广西北部湾大学招聘高层次人才53人考前自测高频考点模拟试题及答案详解(必刷)
- 安全培训表的制作课件
- 2025年大庆石化分公司春季高校毕业生招聘模拟试卷及答案详解(名师系列)
- 涂镀专业知识培训内容课件
- 2025湖北经济学院后勤集团招聘1人模拟试卷及答案详解(考点梳理)
- 2025黑龙江牡丹江东宁市人力资源和社会保障局招聘公益性岗位21人(2025年第一批)模拟试卷及答案详解1套
- Brand KPIs for clean beauty Juicy Chemistry in India-外文版培训课件(2025.9)
- 2025年上海中期期货股份有限公司社会招聘(2人)考前自测高频考点模拟试题及答案详解(全优)
- 2025北京市海淀区仁北高级中学招聘考前自测高频考点模拟试题及答案详解(名师系列)
- 安全培训自查自考课件
- 医院应急知识培训课件
- 2025-2030中国抗骨质疏松药物市场调研及未来增长预测报告
- 终极焊工考试试题及答案
- 国家能源安庆市2025秋招能源与动力工程类面试追问及参考回答
- 房屋安全性鉴定培训试题及答案解析
- 2025广西南宁上林县公安局面向社会招聘警务辅助人员50人笔试备考试题及答案解析
- 火锅店引流截流回流方案
- 黑龙江省齐齐哈尔市富拉尔基区2024-2025学年高一上学期期中考试生物试题含参考答案
- 2025年档案员考试试题及答案
- 仓库内安全培训资料课件
- 2025年4月自考03450公共部门人力资源管理试题
评论
0/150
提交评论