1、单片机实验指导实验一 清零程序一、实验目的(1)掌握汇编语言设计和调试方法;(2)熟悉MCS-51 单片机实验系统。二、实验内容程序一:把2000H20FFH的内容清零。三、程序框图清零四、实验步骤程序一:用连续或单步方式运行程序,检查200020FF中执行程序前后的内容变化。五、思考(1)对于清零程序,假使把2000H20FFH中的内容改成FF,如何修改本程序?(2)如何用断点方式调试程序?ORG 0000HSE01: MOV R0,#00H MOV DPTR, #2000HLOO1: CLR A MOVX DPTR, A INC DPTR INC R0 CJNE R0, #00H, LOO
2、1LOOP: SJMP LOOP END实验二 拆字程序一、实验目的(1)掌握汇编语言设计和调试方法;(2)熟悉MCS-51 单片机实验系统。二、实验内容把2000H的内容拆开,高位送2001H低位,低位送2002H低位,2001H、2002H,高位清零,一般本程序用于把数据送显示缓冲区时用。三、程序框图 拆字 四、实验步骤用连续或单步方式运行程序,检查20002002H中内容变化情况。五、思考编写程序:把2000H、2001H的低位分别送入2002H高低位,一般本程序用于把显示缓冲区的数据取出拼装成一个字节。ORG 0000HSE02: MOV DPTR, #2000H MOVX A, DP
3、TR MOV B, A SWAP A ANL A, #0FH INC DPTR MOVX DPTR, A INC DPTR MOV A, B ANL A, #0FH MOVX DPTR, A SJMP $END实验三 P1口亮灯实验一、实验目的(1)学习P1口的使用方法;(2)学习延时子程序的编写。二、实验预备知识(1)P1口对准双向口,每一位都可独立地定义为输出或输入。(2)本实验中延时子程序采用指令循环来实现,机器周期(12/6MHz)*指令所需机器周期数*循环次数,在系统时间允许的情况下可以采用此方法。三、实验内容P1口作为输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。四、程
4、序框图五、实验电路六、实验步骤A2区的P10P17用8芯排线连接到D1区的LED1LED8,运行程序后,观察发光二极管闪亮移位情况。七、思考(1)改变延时常数,使发光二极管闪亮时间改变;(2)修改程序,使发光二极管闪亮移位方向改变。ORG 0000HSE18: MOV P1, #0FFHLO34: MOV A, #0FEHLO33: MOV P1, A LCALL SE19 RL A SJMP LO33SE19: MOV R6, #0A0HLO36: MOV R7, #0FEHLO35: DJNZ R7,LO35 DJNZ R6,LO36 RET END实验四 定时流水灯实验(定时器简单应用)
5、一、实验目的通过学习单片机定时器的简单定时操作,掌握单片机定时器使用的一般方法。二、实验内容 利用查询方式,利用定时器T0(或T1),实现在8051单片机的P1.0引脚输出一个周期为1S的连续方波,并通过L1指示观察其输出。(fosc=6MHz)三、实验原理图四、实验步骤用排线连接A2区P1口和D2区LED1LED8,编写定时控制程序,观察LED发光情况6MHz的晶振,采用50ms定时,工作方式1,循环10次来实现。X=65536-500/2*10-3=40536=9E58HTH=9EHTL=58H查询方式源代码:ORG 0000HMAIN: MOV TMOD, #10H ;T1工作方式1 M
6、OV R3, #10LOOP1: MOV TH1, #9EH MOV TL1, #58H SETB TR1 NOPLOOP: JNB TF1, LOOP CLR TF1 CLR TR1 DJNZ R3, LOOP1 MOV R3, #10 CPL P1.1 SJMP LOOP1 END中断方式源代码:ORG 0000H LJMP MAIN ORG 001BH LJMP TF1INT ORG 0030HMAIN: MOV TMOD, #10H MOV R3,#10 MOV TH1, #9EH MOV TL1, #58H SETB ET1 SETB TR1 SETB EAHERE: SJMP HE
7、RETF1INT: CLR TR1 MOV TH1, #9EH MOV TL1, #58H SETB TR1 DJNZ R3, LOOP CPL P1.1 MOV R3, #10LOOP: RETI END 实验五 数据区传送程序一、实验目的(1)掌握RAM中的数据操作;(2)熟悉8031(8051)指令系统,掌握程序设计方法。二、实验内容把R2、R3源RAM区首址内的R6、R7字节数据传送到R4、R5目的RAM区。三、程序框图数据区传送四、实验步骤在R2、R3中输入源首址(例如0000H),R4、R5中输入目的地址(例如2000H),R6、R7中输入字节数(例如1FFFH),运行程序,检查0
8、0001FFFH中内容是否和20003FFFH中内容完全一致。ORG 0000H SJMP MAINMAIN: MOV R2,#00H MOV R3,#00H MOV R4,#20H MOV R5,#00H MOV R6,#1FH MOV R7,#0FFHSE22: MOV DPL, R3 MOV DPH, R2 MOVX A, DPTR MOV DPL, R5 MOV DPH, R4 MOVX DPTR, A CJNE R3, #0FFH, LO42 INC R2LO42: INC R3 CJNE R5, #0FFH, LO43 INC R4LO43: INC R5 CJNE R7, #00
9、H, LO44 CJNE R6, #00H, LO45 SJMP $ NOPLO44: DEC R7 SJMP SE22LO45: DEC R7 DEC R6 SJMP SE22 END实验六 简单I/O扩展实验一、实验目的(1)掌握P3口、P1口简单使用;(2)学习延时程序的编写和使用。二、实验内容1.P3口做输入口,外接一脉冲,每输入一个脉冲,P1口按十六进制加一。2.P1口做输出口,编写程序,使P1口接的8 个发光二极管D1D8按16进制加一方式点亮发光二极管。三、实验说明P3口是准双向口,它作为输出口时与一般的双向口使用方法相同,由准双向口结构可知:当P3口作为输入口时,必须先对它置高
10、电平,使内部MOS管截止,因内部上拉电阻是20K40K,故不会对外部输入产生影响。若不先对它置高,且原来是低电平,则MOS管导通,读入的数据是不正确的。四、实验程序框图 五、实验线路图 六、实验步骤A2区INT1用插针连至D1区SW1孔,A1区P10P17用排线连至D1区LED1LED8。连续运行程序。开关SW1每拨动一次,LED1LED8发光二极管按16进制方式加一点亮。ORG 0000HMAIN: JB P3.3,MAIN LCALL DELAY JB P3.3,MAINL1: JNB P3.3,L1 LCALL DELAY INC A MOV P1,A LJMP MAINDELAY: M
11、OV R6,#0FFHL2: MOV R7,#0FFHL3: DJNZ R7,L3 DJNZ R6,L2 RET END实验七 键盘实验一、实验目的 利用实验仪上提供的按键K1K7作为电子琴按键,控制蜂鸣器发声,使用户了解计算机发声原理,熟悉定时器和键盘扫描电路的工作原理及编程方法。(蜂鸣器34KHz的方波)二、实验内容 编写一段程序,用P3.3口控制(输出7种音阶标称频率的方波),使B5区的蜂鸣器发出不同的音调。程序检测按键的状态,当按下某一键时,蜂鸣器发出对应的音调。三、实验电路六、实验步骤 (1)用导线将A2区的P3.3口(INT1)和B5区的BUZZ接口相连,然后将D1区的J53接口和
12、A2区的J61接口一一对应相连。(2)编写按键的动态键盘扫描程序,根据不同音阶的频率编写蜂鸣器的音调控制程序。BUZZ EQU P3.3 ORG 0000H LJMP MAIN ORG 000BH LJMP INT_T0 ORG 0100H MAIN: MOV SP,#60H ;初始化堆栈向量 MOV 30H,#00 ;定时器初值清零 MOV 31H,#00 MOV P1,#0FFH ;设置P1口为输入模式 MOV TMOD,#01H ;设置定时器0为工作模式1 SETB ET0 ;开定时器0中断 SETB EA ;开总中断 CLR TR0 ;关闭定时器0START: MOV R0,P1 CJ
13、NE R0,#0FFH,KEY1 ;键盘扫描 CLR TR0 SJMP STARTKEY1: CJNE R0,#0FEH,KEY2 ;K1键按下 MOV 30H,#0FBH ;设置音阶1 MOV 31H,#0E9H LJMP SET_TIMERKEY2: CJNE R0,#0FDH,KEY3 ;K2键按下 MOV 30H,#0FCH ;设置音阶2 MOV 31H,#5CH LJMP SET_TIMERKEY3: CJNE R0,#0FBH,KEY4 ;K3键按下 MOV 30H,#0FCH ;设置音阶3 MOV 31H,#0C1H LJMP SET_TIMERKEY4: CJNE R0,#0F
14、7H,KEY5 ;K4键按下 MOV 30H,#0FCH ;设置音阶4 MOV 31H,#0EFH LJMP SET_TIMERKEY5: CJNE R0,#0EFH,KEY6 ;K5键按下 MOV 30H,#0FDH ;设置音阶5 MOV 31H,#045H LJMP SET_TIMERKEY6: CJNE R0,#0DFH,KEY7 ;K6键按下 MOV 30H,#0FDH ;设置音阶6 MOV 31H,#92H LJMP SET_TIMERKEY7: CJNE R0,#0BFH,NOKEY ;K7键按下MOV 30H,#0FDH ;设置音阶7 MOV 31H,#0D6HSET_TIMER
15、: SETB TR0 ;发声 SJMP STARTNOKEY: CLR TR0 ;无键按下 SJMP START INT_T0: ;T0中断服务程序 MOV TH0,30H ;定时器附初值 MOV TL0,31H CPL BUZZ ;输出方波 RETI END 实验八 D/A接口实验一、 实验目的熟悉D/A转换的工作原理,学习使用并行数模转换芯片ADC0832进行数字信号到模拟信号的转换过程。二、 实验内容通过片外总线方式访问并行模拟数字转换器芯片ADC0832,掌握数字信号到模拟信号的转换方法。三、 实验原理图四、 实验步骤1. 将DAC0832模块插入PARK2区2. 将模块上的JP1跳线
16、帽跳至右侧的VCC处3. 将A7区的P2_CS连接到A2区的A154. 将A7区的P2_IO2和P2_INT分别接入C4区的A-和AOUT,C4区的A+接D2区的GND.5. 将C4区的V+和V-分别接至C1区的+12V和-12V6. 运行程序,使用万用表观察C4区的AOUT处的电压是否和程序输出电压相同。ORG 0000HLJMP MAINORG 0100HMAIN: MOV DPTR, #7FFFH MOV A, #0FFHLOOP: MOVX DPTR, A LJMP LOOP END实验九 A/D接口实验一、 实验目的熟悉A/D转换的工作原理,学习使用并行模数转换芯片ADC0809进行
17、电压信号的采集和数据处理。二、 实验内容通过片外总线方式访问并行模拟数字转换器芯片ADC0809,掌握模拟电压的通用采集方法。三、 实验原理图四、 实验步骤1. 将ADC0809模块插入PARK2区2. 将D2区1K电位器的左端金属孔通过导线连接到该区的GND金属孔,而右端的金属孔通过导线连接到该区的VCC金属孔3. 将D2区1K电位器的中间金属孔链接到A7去的P2_IO2金属孔4. 将A7区的P2_IO3P2_IO5分别连接到A2区的A2A0,P2_INT连接到A2区的INT0。5. 将A7区的P2_CS连接到A2区的A156A1区P10P17用排线连至D1区LED1LED87. 运行程序,设置断点,观察转换值是否与万用表测试值相同或者与对应的LED亮灭是否一 致。ORG 0000HMAIN: MOV R1, #30H MOV DPTR, #7FF8H MOV R7, #02HLOOP: MOVX DPTR, A MOV R6,#20HDELAY: NOP NOP NOP DJNZ R6,DELAY MOVX A, DPTR MOV R1, A INC DPTR INC R1 DJNZ R7, LOOP LJMP MAIN END
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1