版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、微机原理课程实验指导书(XL600实验仪)机电系摘录2015.8实验一 P1口实验及延时子程序设计一、 实验目的与要求利用单片机的P0口、P1口作为I/O口进行实验验证,掌握利用P0口、P1口作为输入口和输出口的编程方法,理解并掌握延时子程序的设计方法。实验要求:(1) 编写一段程序,用P0口作为输出口,利用延时子程序达到控制LED输出跑马灯的效果。(2) 编写一段程序,用P1输入拨动开关的状态来控制P0口输出状态。二、 实验参考步骤1、 启动KEIL软件,选择菜单“工程新建工程”以建立工程(扩展名为.uv2,如T1a.uv2)。CPU型号可选择Atmelat89c52;无需添加标准文件头。2
2、、 选择菜单“文件新文件”以建立一个新的文本编辑窗口,在窗口中输入参考源程序1并保存(扩展名为.asm),如test1a.asm,然后将其加入到源程序组1中(在source groupet右键点击菜单然后选中add files to group source group 1,注意文件扩展名为.asm)。3、 在工程菜单的选项“目标1属性”(options for target target1)中设置相应的选项,包括“输出(output)产生hex文件(creat hex)”选项以便汇编生成HEX代码供编程器使用,在“调试(debug)使用KeilMonitor-51 Driver”的设置中选择
3、相应的串口号。4、 使用“工程”(Project)中的“编译全部文件”(rebuild all target files)完成相应的文件编译,如果程序格式正确将生成相应HEX代码文件,如T1a.hex。如果提示有编译错误请自行修改源程序然后再重新编译。5、 用8PIN连线将P0(JP51)连接到8路指示灯部分的JP32,再完成仿真器与计算机之间的连线并通电。6、 在KEIL软件中启动“调试(debug)开启仿真模式 (startstop debug session) ”,然后用“运行”(run)命令实现全速运行的仿真。7、 记录实验现象然后在KEIL软件中启动“中断运行调试(debug)关闭仿
4、真模式” (先halt退出运行再Stop Debugging,不要点击得太快!)退出仿真,选择 “工程(project)关闭工程”(close project)可关闭当前工程。8、 参考步骤14完成参考源程序2的建立与输入,如新项目T1b.uv2和新的源程序test1b.asm,完成编译与仿真设置。9、 用8PIN连线将P0(JP51)连接到8路指示灯部分的JP32,将P1口连接到JP40的拨动开关。10、 仿真运行,注意拨动不同开关位观察指示灯的变化状态,记录后中断调试并退出仿真状态.11、 根据参考源程序1和参考源程序2进行思考、修改和拓展,自行设计程序目标并编程验证。三、 参考程序1、
5、用P0口作为输出口,利用延时子程序达到控制LED输出跑马灯的效果。ORG0000HLJMPMAIN ORG0100HMAIN:MOVA,#0FFH;初值全1,灯全灭MOVP0,A; 送P0口显示CLR C; CY清零,循环中通过移位指令使灯亮MAIN_LP:LCALLDELAY; 延时RLC A; 循环移位MOVP0,A; 新值送P0口,点亮下一个LEDJMPMAIN_LP; 不停循环;=DELAY:MOVR7,#0FFH; 延时子程序MOVR6,#0FFHDLY_LP:NOPNOPDJNZR6,DLY_LPMOVR6,#0FFHDJNZR7,DLY_LPRETEND2、 编写一段程序,用P1
6、口输入控制P0口输出状态,试用P1口控制P0口输出学生自己学号的最后两位数码的组合BCD码(如38表示为0011 1000),试验成功后请拍照作为实验现象的原始数据。ORG0000HLJMPMAIN ORG0100HMAIN:MOVA,#0FFH;初值全1 MOVP1,A; 置位P1口准备输入MOVA,P1;将拨动开关状态通过P1口输入 OUTP0:MOVP0,A; 新值送P0口JMPMAIN; 不停循环END思考与拓展:试根据参考程序1中多个状态变化的累计时间估算出延时子程序的时间并进行验算,通过修改R6和R7的赋值使每个状态变换的时间为N*10ms(其中N值为学号的最后两位数值,如恰好是0
7、0则取值为50)。实验二 定时器实验一、 实验目的与要求利用定时器控制产生占空比可变的PWM波,通过实验验证进一步加强对定时器功能的认识,掌握定时器的使用方法。1、用P1.0口输出PWM波,利用按键控制占空比的增加和降低,用示波器查看P1.0口的输出波形。2、引导学生进行利用现有程序演示定时器动态显示数码管实验,了解数码管动态扫描方式。掌握实验基础内容后根据参考源程序进行修改和拓展,自行设计程序目标并编程验证。二、 实验参考步骤1、 启动KEIL软件,选择菜单“工程新建工程”以建立工程(扩展名为.uv2,如T2a.uv2)。2、 选择菜单“文件新文件”以建立一个新的文本编辑窗口,在窗口中输入参
8、考源程序1并保存(扩展名为.asm),如test2a.asm,然后将其加入到源程序组1中。3、 在工程菜单的选项“目标1属性”中设置相应的选项,包括“输出产生hex文件”选项以便汇编生成HEX代码供编程器使用,在“调试使用KeilMonitor-51 Driver”的设置中选择相应的串口号。4、 使用“工程”中的“编译全部文件”完成相应的文件编译,如果程序格式正确将生成相应HEX代码文件,如T2a.hex。如果提示有编译错误请自行修改源程序然后再重新编译。5、 用单根连线将P1.0(JP44)连接到8路指示灯部分(JP32)的LED0,将P1.6、P1.7(JP44)分别连接到JP37的K01
9、、K02。6、 完成仿真器与计算机之间的连线并通电。7、 在KEIL软件中启动“调试开启仿真模式”,然后用“运行”命令实现全速运行的仿真。8、 观察实验现象并分别依次按下K01、K02,观察并记录实验现象然后在KEIL软件中启动“中断运行调试(debug)关闭仿真模式”退出仿真,选择 “工程关闭工程”可关闭当前工程。9、 参考步骤14完成参考源程序2的建立与输入,如新项目T2b.uv2和新的源程序test2b.asm,完成编译与仿真设置。10、 用8PIN连线将P0口连接到数码管数据输入端,P2口连接到数码管控制端。11、 输入程序并仿真运行,注意数码管的显示内容。12、 根据参考源程序1和参
10、考源程序2进行思考、修改和拓展,自行设计程序目标并编程验证。三、 参考程序1、 利用定时器控制产生占空比可变的 PWM 波,通过按K01可PWMH值增加,则占空比增加,LED 灯渐暗。按K2,PWM值减小,则占空比减少,LED 灯渐亮。 PWMH DATA 40H ;高电平脉冲的个数PWM DATA 41H ;PWM周期COUNTER DATA 42H;TEMP DATA 43HOUTPWMEQU P1.0;PWM波输出引脚OUTPWMbEQU P1.1;PWM波输出引脚b,用于外接示波器探头INCKEY EQU P1.6 ;K01, PWMH值增加键。 DECKEY EQU P1.7;K02
11、, PWMH值减小键。ORG 0000HAJMP MAINORG 000BHAJMP INTT0ORG 0100HMAIN:MOV SP,#60H;给堆栈指针赋初值MOV PWMH,#02H ;赋初值MOV COUNTER,#01HMOV PWM, #15HMOV TMOD, #02H;定时器0在模式2下工作 MOV TL0, #38H; 每200s产生一次溢出MOV TH0, #38H;自动重装初值SETB ET0;使能定时器0中断SETB EA ;使能总中断SETB TR0;开始计时KSCAN:SETB INCKEY;端口输入状态,扫描按键SETB DECKEYJNB INCKEY,K1C
12、HECK;扫描K01,如果按下跳转到KEY1处理程序JNB DECKEY,K2CHECK;扫描K02,如果按下跳转到KEY2处理程序SJMP KSCANK1CHECK: JB INCKEY,K1HANDLE;若按下K01后释放,跳转到KEY1处理程序,可考虑加延时去抖动程序SJMP K1CHECKK1HANDLE:MOV A,PWMH;CJNE A,PWM,K1H0;判断是否到达上边界SJMP KSCAN;是,则不进行任何操作K1H0:MOV A,PWMHINC ACJNE A,PWM,K1H1;如果在加1后到达最大值CLR TR0;定时器停止SETB OUTPWM;置输出为高电平SETB O
13、UTPWMbSJMP K1H2K1H1: CJNE A,#02H,K1H2;如果加1后到达下边界SETB TR0;重开定时器K1H2: INC PWMH;增加占空比SJMP KSCANK2CHECK: JB DECKEY,K2HANDLE;若按下K02后释放,跳转到KEY1处理程序,可考虑加延时去抖动程序SJMP K2CHECKK2HANDLE: MOV A,PWMH;CJNE A,#01H,K2H0;判断是否到达下边界,是,则不进行任何操作SJMP KSCAN;K2H0:MOV A,PWMH;MOV TEMP,PWMDEC ACJNE A,#01H,K2H1;如果在减1后到达下边界CLR T
14、R0;定时器停止CLR OUTPWM;输出为低电平CLR OUTPWMbSJMPK2H2K2H1:DEC TEMP;CJNE A,TEMP,K2H2;如果到达上边界SETB TR0;启动定时器K2H2:DEC PWMHSJMP KSCAN;降低占空比INTT0:PUSH PSW PUSH ACCINC COUNTERMOV A,COUNTERCJNE A,PWMH,INTT01CLR OUTPWMCLR OUTPWMbINTT01:CJNE A,PWM,INTT02MOV COUNTER,#01HSETB OUTPWMSETB OUTPWMbINTT02:POPACCPOP PSWRETIEN
15、D2、 数码管显示演示程序: 在8个LED数码管上依次显示1,2,3,4,5,6,7,8。引用端口:数码管数据p0,数码管控制p2;DIS_DIGIT EQU 40H;位选通值, 传送到P2口用于选通当前数码管的数值,; 如等于0xfe时, 选通P2.0口数码管DIS_INDEX DATA 41H;显示索引, 用于标识当前显示的数码管和缓冲区的偏移量DIS_BUF DATA 50H;显于缓冲区起始地址ORG 0000HAJMP MAINORG 000BHAJMP INTT0ORG 0100HMAIN:MOV P0,#0FFH; 初始化I/O口MOV P2,#0FFHMOV TMOD, #02H
16、;定时器0在模式2下工作 MOV TL0, #38H; 每200s产生一次溢出MOV TH0, #38H;自动重装初值SETB ET0 ;使能定时器0中断SETB EA ;使能总中断MOVDPTR, #DIS_CODE; 设定显示初值为18MOVA,#1;初值为1,以后顺序加1MOVC A,A+DPTRMOV DIS_BUF,AMOVA,#2MOVCA,A+DPTRMOV DIS_BUF+01H,AMOVA,#3MOVCA,A+DPTRMOV DIS_BUF+02H,AMOVA,#4MOVCA,A+DPTRMOV DIS_BUF+03H,AMOVA,#5MOVCA,A+DPTRMOV DIS_
17、BUF+04H,AMOVA,#6MOVCA,A+DPTRMOV DIS_BUF+05H,AMOVA,#7MOVCA,A+DPTRMOV DIS_BUF+06H,AMOVA,#8MOVCA,A+DPTRMOV DIS_BUF+07H,ADISPLAY:MOV DIS_DIGIT,#0FEH; 初始从第一个数码管开始扫描MOV DIS_INDEX,#0SETB TR0; 启动定时器0,开始动态扫描显示MAIN_LP:NOP; 主程序循环,可增加其它代码以改变50H57H中的值以改变显示内容SJMP MAIN_LP;=INTT0:; 定时器0中断服程序, 用于数码管的动态扫描PUSH ACCPUSH
18、 PSWMOV P2,#0FFH; 先关闭所有数码管MOV A,#DIS_BUF; 获得显示缓冲区基地址ADD A,DIS_INDEX; 获得偏移量MOV R0,A; R0 = 基地址 + 偏移量MOV A,R0; 获得显示代码MOV P0,A; 显示代码传送到P0口MOV P2,DIS_DIGIT; MOVA,DIS_DIGIT; 位选通值左移, 下次中断时选通下一位数码管RLAMOVDIS_DIGIT,AINCDIS_INDEX; DIS_INDEX加1, 下次中断时显示下一位ANLDIS_INDEX,#0x07; 当DIS_INDEX等于8(0000 1000B)时, 清0POP PSW
19、POP ACCRETI DIS_CODE: DB 28h,7eh,0a2h,62h,74h,61h,21h,7ahDB 20h,60h,30h,25h,0a9h,26h,0a1h,0b1h;09和ABCDEF的数码管显示代码END四、 思考与拓展:1、 试根据参考程序1中PWM波控制周期的大小进行验算,调整定时时间初值并进行调试验算,使PWM波控制周期为N ms(其中N值为学号的最后两位数值,如恰好是00则取值为50)。2、 尝试改变参考程序2的显示内容为学生自己的学号的后8位。*上述拓展题如果修改验证成功请自行拍照作为原始数据并保留修改后的源程序作为实验报告中相应的程序内容,相应的改动内容请
20、添加必要的说明。实验三 串口通信实验一、 实验目的与要求利用开发板的串口仿真功能,掌握串口通信的编程方法。实验要求:(1) 利用串行口向PC机发送字符“0x55”,利用串口调试软件在计算机端观察接收到的数据是否与预期一致。(2) 利用串行口向PC机发送字符串,利用串口调试软件在计算机端观察接收到的数据是否与预期一致(3) 观察分析参考程序3,利用开发板接收PC机发送过来的16进制数据并用数码管显示。(4) 掌握实验基础内容后根据参考源程序进行修改和拓展,自行设计程序目标并编程验证,比如修改发送程序的内容,实现由上位机控制数码管显示内容等。二、 实验参考步骤*由于串口功能要用于实验,所以本次实验
21、采用程序写入开发板后直接运行方式进行实验,不能采用Keil仿真运行方式进行。1、 启动KEIL软件,选择菜单“工程新建工程”以建立工程(扩展名为.uv2,如T3a.uv2)。2、 选择菜单“文件新文件”以建立一个新的文本编辑窗口,在窗口中输入参考源程序1并保存(扩展名为.asm),如test3a.asm,然后将其加入到源程序组1中。3、 在工程菜单的选项“目标1属性”中设置相应的选项,包括“输出产生hex文件”选项以便汇编生成HEX代码供编程器使用,不使用“调试使用KeilMonitor-51 Driver”功能。4、 使用“工程”中的“编译全部文件”完成相应的文件编译,如果程序格式正确将生成
22、相应HEX代码文件,如T3a.hex。如果提示有编译错误请自行修改源程序然后再重新编译。5、 完成仿真器与计算机之间的通信连线并通电。在开发板中将“编程仿真”功能按钮设置为编程状态。图3-1 XLISP操作界面6、 在计算机端先启动XLISP软件,如图31所示。在“操作”界面可以检测编程器是否正常,不正常的话可尝试检查开发板中的“编程/仿真”功能按钮设置是否正确或者在“选项”中进行串口测试。7、 用XLISP软件中的“文件打开”功能打开步骤4中生成的.hex文件;利用“智能一键通”功能快速完成指令代码的写入,写入成功后关闭XLISP软件。(由于编程串口要用于下面的串口调试,所以记得要“关闭”软
23、件以释放相应的串口控制而不是将窗口最小化!)8、 打开串口调试软件,设置相应的串口号、波特率和其他通信参数,打开串口通信功能。9、 在开发板中将“编程仿真”功能按钮设置为仿真状态,复位开发板功能,此时可以看到串口调试软件不断接收到“0X55”的数据,切换为文本显示功能则为“U”字符。10、 观察并记录实验现象,然后在开发板中将“编程仿真”功能按钮设置为编程状态,然后在串口调试软件中“关闭串口”以释放对该串口控制,防止下次XLISP软件编程时串口控制冲突。11、 参考步骤18完成参考源程序2的建立与输入,如新项目T3b.uv2和新的源程序test3b.asm,完成编译生成T3b.hex。12、
24、连接仿真板上的P1.7引脚到JP37上的K01按钮,在开发板中将“编程仿真”功能按钮设置为仿真状态,复位开发板功能,此时可以通过按下P1.7连接的K01按钮向PC机发送字符串,串口调试软件切换为文本显示功能。13、 观察并记录实验现象,然后在开发板中将“编程仿真”功能按钮设置为编程状态,然后在串口调试软件中“关闭串口”以释放对该串口控制,防止下次XLISP软件编程时串口控制冲突。14、 参考步骤14完成参考源程序2的建立与输入,如新项目T3c.uv2和新的源程序test3c.asm,完成编译生成T3c.hex。15、 用8PIN连线将P0口连接到数码管数据输入端,P2口连接到数码管控制端。16
25、、 参考步骤58完成代码的写入和串口调试软件的设置,打开串口通信功能。17、 在开发板中将“编程仿真”功能按钮设置为仿真状态,复位开发板功能,利用串口调调试软件逐次向开发板端发送不同的十六进制数值,如00,01,02,03,04,05,06,07,08,09,0a,0b,0c,0d,0e,0f, 00,01,02,03,,11,01,02等,注意观察数码管的显示内容和串口调试软件中显示接收到仿真板发送回来的内容。18、 观察现象并记录完毕后,在开发板中将“编程仿真”功能按钮设置为编程状态,然后在串口调试软件中“关闭串口”以释放对该串口控制,防止下次XLISP软件编程时串口控制冲突。19、 根据
26、参考源程序1和参考源程序2进行思考、修改和拓展,自行设计程序目标并编程验证。三、 参考程序1. 利用串口向PC机发送字符“0x55”。ORG0000HLJMPMainORG00F0HMain:MOV TMOD,#22H ;设置T1为方式2MOV SCON,#40HMOV TH1,#0F3H;设置速率4800,(12M晶体)MOV TL1,#0F3HMOV PCON,#80H ;定时器1开始计数SETB TR1next: lcall delaymov a,#55hmov r3,#01setb p1.7jnb p1.7,SENDWTmov a,#56hmov r3,#02setb p1.6jnb
27、p1.6,SENDWTsjmp next SENDWT:CLR TImov sbuf,a;发送数据JNB TI,$;djnz r3, SENDWTljmp nextdelay: mov r7,#0l0:mov r6,#0djnz r6,$djnz r7,l0ret;END2. 利用串口向PC机发送字符串ORG 0000HLJMP MAINORG 0100HMAIN:MOV TMOD,#22H ;设置T1为方式2MOV SCON,#40HMOV TH1,#0F3H;设置速率4800,(12M晶体)MOV TL1,#0F3HMOV PCON,#80H ;定时器1开始计数SETB TR1MAINLO
28、OP:setb p1.7jb p1.7,MAINLOOPmov dptr,#tabsend$:CLR TImov a,#0movc a,a+dptrcjne a, #81h, send_SBUF;81作为输出字符串的结束标志,不发送ljmp MAINLOOPsend_SBUF:MOV SBUF, aJNB TI, $inc dptrsjmp send$ tab:db 0dh,0ahdb .$.$.,0dh,0ahdb .$.,0dh,0ahdb .$.,0dh,0ahdb .$.,0dh,0ahdb .$.,0dh,0ahdb .$.,0dh,0ahdb .$.,0dh,0ahdb .$.,0
29、dh,0ahdb .$.,0dh,0ahdb 81h;END3. 利用仿真板接收PC机发送过来的16进制数据并用数码管显示。DIS_DIGIT EQU 40H;位选通值, 传送到P2口用于选通当前数码管的数值,; 如等于0xfe时, 选通P2.0口数码管DIS_INDEX DATA 41H;显示索引, 用于标识当前显示的数码管和缓冲区的偏移量DIS_LONG DATA 8HRXD_INDEXEQU 43H;串口接收索引, 用于标识当前接收的数据位于显示缓冲区的第几位DIS_BUF DATA 50H ;显于缓冲区起始地址ORG 0000HAJMP MAINORG 000BHAJMP INTT0O
30、RG 0100HMAIN:MOV P0,#0FFH; 初始化I/O口MOV P2,#0FFHMOV TMOD, #22H;定时器0在模式2下工作 MOV PCON,#80H MOV SCON,#40HMOV TH1,#0F3H;设置速率4800,(12M晶体)MOV TL1,#0F3HSETB TR1 ;定时器1开始计数SETB RENMOV TH0, #38H; 每200s产生一次溢出MOV TL0, #38H;自动重装初值SETB ET0 ;使能定时器0中断SETB EA ;使能总中断MOVDPTR, #DIS_CODE; 开始设定显示初值为全0MOVA,#0;取“0”的段码到BMOVCA
31、,A+DPTRMOV B,Amov DIS_INDEX,#0mov r7,#DIS_LONG;数码管位数,用于计算要清零的数据区长度nextdata:MOV a,#DIS_BUFADD a,DIS_INDEXmov r1,aMOV R1,Binc DIS_INDEXdjnz r7 ,nextdataDISPLAY:MOV DIS_DIGIT,#0FEH; 初始从第一个数码管开始扫描MOV DIS_INDEX,#0SETB TR0; 启动定时器0,开始动态扫描显示MAIN_LP: mov RXD_INDEX,#DIS_BUFCLR RINEXTRD:JNB RI,$MOV A,SBUFCLR R
32、Imov b,aclr csubb A,#80h ;大于等于80h的当回车处理JNC RST_Rmov a,bMOVDPTR, #DIS_CODE;MOVCA,A+DPTR mov r1,RXD_INDEXmov r1,aINC RXD_INDEXmov a,RXD_INDEXCJNE a,#DIS_LONG+DIS_BUF,NEXTRD;mov b,#39hRST_R:CLR TImov a,bmov sbuf ,ajnb TI,$CLR TISJMP MAIN_LPINTT0:; 定时器0中断服程序, 用于数码管的动态扫描PUSH ACCPUSH PSWMOV P2,#0FFH; 先关闭所
33、有数码管MOV A,#DIS_BUF; 获得显示缓冲区基地址ADD A,DIS_INDEX; 获得偏移量MOV R0,A; R0 = 基地址 + 偏移量MOV A,R0; 获得显示代码MOV P0,A; 显示代码传送到P0口MOV P2,DIS_DIGIT; MOVA,DIS_DIGIT; 位选通值左移, 下次中断时选通下一位数码管RLAMOVDIS_DIGIT,AINCDIS_INDEX; DIS_INDEX加1, 下次中断时显示下一位ANLDIS_INDEX,#0x07; 当DIS_INDEX等于8(0000 1000B)时, 清0POP PSWPOP ACCRETI DIS_CODE:
34、DB 28h,7eh,0a2h,62h,74h,61h,21h,7ahDB 20h,60h,30h,25h,0a9h,26h,0a1h,0b1hDB 0ffh;09和ABCDEF的数码管显示代码,偏移量10H对应为0FFH即该管熄灭END思考与拓展:1、试根据参考程序1和参考程序2分析如何修改程序以实现利用不同的按键发送不同的字符串分段完成学生学号的完整显示,完成程序的设计并调试记录。3、观察参考程序3的实验现象,试利用PC机仿真串口发送数据控制数码管显示为学生自己的学号的后8位并拍照记录。实验四 A/D转换实验一、 实验目的与要求目的:掌握A/D芯片与单片机的接口方法及ADC性能;了解单片机
35、实现数据采集的方法。实验内容:利用AD 0804读取电位器输出电压并送数码管显示,引导学生修改程序。二、 实验参考步骤1、 启动KEIL软件,选择菜单“工程新建工程”以建立工程(扩展名为.uv2,如T4a.uv2)。2、 选择菜单“文件新文件”以建立一个新的文本编辑窗口,在窗口中输入参考源程序1并保存(扩展名为.asm),如test4a.asm,然后将其加入到源程序组1中。3、 在工程菜单的选项“目标1属性”中设置相应的选项,包括“输出产生hex文件”选项以便汇编生成HEX代码供编程器使用,在“调试使用KeilMonitor-51 Driver”的设置中选择相应的串口号。4、 使用“工程”中的
36、“编译全部文件”完成相应的文件编译,如果程序格式正确将生成相应HEX代码文件,如T4a.hex。如果提示有编译错误请自行修改源程序然后再重新编译。5、 将ad0804 的wr引脚连接P3.6 ,rd引脚接p3.7 ad0804数据接P1口,八路发光管接P0口,完成仿真器与计算机之间的连线并通电。6、 在KEIL软件中启动“调试开启仿真模式”,然后用“运行”命令实现全速运行的仿真,调节电位器控制电压输入,观察指示灯状态。7、 根据指示灯状态记录对应的AD结果,利用万用表测量对应的输入电压值进行比较,验证AD结果是否正确。8、 通过多次改变输入值的方式重复步骤7并记录调试结果,然后在KEIL软件中
37、启动启动“中断运行调试(debug)关闭仿真模式”退出仿真,选择 “工程关闭工程”可关闭当前工程。9、 根据参考源程序1进行思考、修改和拓展,自行设计程序目标并编程验证,比如利用数码管显示AD值,或者利用AD值控制PWM波的占空比等。10、 有兴趣的同学可以完成参考程序二的仿真演示并自行分析其程序设计思想。三、 参考程序1. 参考程序1:0804的基本应用。程序演示目的:实验者转动电位器以改变输入电压,利用ad0804读取AD结果并利用P0口显示AD结果; 硬件连接: 将ad0804的 wr引脚接P3.6,rd引脚接P3.7,ad0804数据口接P1口, P0口接八路发光管。;*;0804的基
38、本应用,转动电位器,P0口显示AD结果 ;硬件连接:八路发光管接p0口,ad0804 wr接p3. 6,rd接p3.7;ad0804数据接p1口。;程序假设p3.5脚作为ad0804的片选供大家参考,;实际上该引脚直接接地芯片一直选通。;* ;/定义ADC的连接端口ad_cs equ P3.5 ;芯片选择ad_wr equ P3.6 ;转换开始ad_rd equ P3.7 ;RD=LOW,数字信号输出ad_input_port equ p1 org 0000h ajmp main org 0100hmain: lcall Adc_Start lcall delay1ms lcall adc_r
39、ead mov p0,a ajmp mainAdc_Start: ;/ 启动AD转换 clr ad_cs nop clr ad_wr nop setb ad_wr nop setb ad_cs nop retAdc_Read: ;/ 读AD转换 mov ad_input_port,#0ffh clr ad_cs nop clr ad_rd nop nop mov a,AD_INPUT_PORT nop setb ad_rd nop setb ad_cs retdelay1ms: ;/ AD转换读取延时程序,显示读到的数值movr7,#10tt1:movr6,#50djnzr6,$;2usdjn
40、zr7,tt1retend2参考程序二:通过AD0804进行AD转换并将结果送数码管显示,实验者通过转动电位器改变输入电压,数码管高三位可显示000-255之间的AD结果。;*;AD 0804控制程序:转动电位器,数码管高三位依次显示000-255,;连接:数码管数据接P0,数码管控制接P2,ad0804 wr接p3.6 ;rd接p3.7 ad0804数据接p1口 *;程序假设p3.5脚作为ad0804的片选供大家参考,;实际上该引脚直接接地就芯片一直选通。;*;/定义ADC的连接端口ad_cs equ P3.5 ;芯片选择ad_wr equ P3.6 ;转换开始ad_rd equ P3.7
41、;RD=LOW,数字信号输出ad_input_port equ p1 ;定义数据位bit_delay EQU 20h.0DIS_DIGIT EQU 40H;位选通值, 传送到P2口用于选通当前数码管的数值,; 如等于0xfe时, 选通P2.0口数码管DIS_INDEX DATA 41H;显示索引, 用于标识当前显示的数码管和缓冲区的偏移量DIS_BUF DATA 50H ;显于缓冲区起始地址 org 0000h ajmp main ORG 000BHlJMP INTT0 org 0100hMAIN:MOV TMOD, #02H;定时器0在模式2下工作 MOV TL0, #38H; 每200s产生一次溢出MOV TH0, #38H;自动重装初值SETB ET0 ;使
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 防火窗的施工方案(3篇)
- 风电场夏季施工方案(3篇)
- 神经外科患者的护理效果评价
- 职业规划自我剖析
- 一对一职业规划辅导
- 财产安全教育主题班会
- 计算机维修职业规划范文
- 飞机桨叶打磨抛光工安全意识水平考核试卷含答案
- 液体洗涤剂制造工岗前工作质量考核试卷含答案
- 白蚁防治工岗前安全专项考核试卷含答案
- 2025年呼吸科护理工作总结暨下一步工作计划
- 2025年东营市中考英语试题(附答案)
- 吊装桥板施工方案(3篇)
- 2025年佳木斯市直机关遴选公务员笔试真题汇编及答案解析(夺冠)
- 蜜雪冰城风险管理体系
- 丰田现地现物培训课件
- 2025年全国高校辅导员素质能力大赛基础知识测试题及答案
- 输电线路施工外破率控制QC成果报告
- 2025年全科医学副高真题解析含答案
- 2025年中国航信校园招聘笔试复习指南及备考建议
- 典当行管理规章制度及执行细则
评论
0/150
提交评论