单片机原理和接口技术实验报告.doc
《单片机原理和接口技术实验报告.doc》由会员分享,可在线阅读,更多相关《单片机原理和接口技术实验报告.doc(29页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、单片机原理与其接口技术实验指导书实验1 Keil C51的使用(汇编语言)一.实验目的:初步掌握Keil C51(汇编语言)和ZY15MCU12BD型综合单片机实验箱的操作和使用,能够输入和运行简单的程序。二.实验设备:ZY15MCU12BD型综合单片机实验箱一台、具有一个RS232串行口并安装Keil C51的计算机一台。三.实验原理与环境:在计算机上已安装Keil C51软件。这个软件既可以与硬件(ZY15MCU12BD型综合单片机实验箱)连接,在硬件(单片机)上运行程序;也可以不与硬件连接,仅在计算机上以虚拟仿真的方法运行程序。如果程序有对硬件的驱动,就需要与硬件连接;如果没有硬件动作,
2、仅有软件操作,就可以使用虚拟仿真。 四:实验容:1.掌握软件的开发过程:1)建立一个工程项目选择芯片确定选项。2)加入C 源文件或汇编源文件。3)用项目管理器生成各种应用文件。4)检查并修改源文件中的错误。5)编译连接通过后进行软件模拟仿真。6)编译连接通过后进行硬件仿真。2.按以上步骤实现在P1.0输出一个频率为1Hz的方波。3.在2的基础上,实现同时在P1.0和P1.1上各输出一个频率同为1Hz但电平状态相反的方波。 五:程序清单: ORG 0000HAGAIN: CPL P1.0MOV R0,#10;延时0.5秒LOOP1:MOV R1,#100LOOP2:MOV R2,#250DJNZ
3、 R2,$DJNZ R1,LOOP2DJNZ R0,LOOP1SJMP AGAINEND六:实验步骤:1.建立一个工程项目选择芯片确定选项如图1-1所示:ProjectNew Project输入工程名test保存工程文件(鼠标点击保存按钮)图1-1创建工程名弹出下一界面。如图1-2所示:选CPU厂家(Atmel)选CPU型号(89C51), 选好后确定图1-2选厂家,选CPU 型号接着选晶振频率与生成HEX 文件等。如图1-3所示:ProjectOptions for Target Target 1在Target中更改CPU 晶振频率为12MHz在Output中选择生成HEX 格式其它采用缺省
4、设置选好后确定。图1-3选晶振频率与生成HEX 文件等窗口2.建立汇编源文件如图1-4所示:FileNew, 弹出源文件编辑窗口。输入以下源文件:ORG 0000HAGAIN: CPL P1.0MOV R0,#10;延时0.5秒LOOP1:MOV R1,#100LOOP2:MOV R2,#250DJNZ R2,$DJNZ R1,LOOP2DJNZ R0,LOOP1SJMP AGAINEND图1-4进入编辑源文件窗口源程序编写完后,FileSave As 将文件以test.asm保存在E:test 目录下,获得汇编语言源程序。3.用项目管理器生成(编译)各种应用文件点击Target 1 前之+
5、号出现Source Group1点击它并按鼠标右键会生弹出下拉菜单见图1-5编译文件文件窗口选择Add Files to Group Source Group 1 点击add向项目中添加Test.asm源文件点击close关闭Add Files to Group Source Group 1窗口在Source Group 1 前会出现一个+号点击之弹出test. asm文件名点击该文件名主窗口中会出现该程序图1-5进入编译文件文件窗口编译:ProjectBuild target 就会生成一系列到文件如OBJ 文件LST 文件HEX文件等。4.检查并修改源文件中的错误如果在源文件中存在错误在Ou
6、tput 窗口中会出现错误提示信息,你可以在源程序中进行修改,然后存盘后重新Build 观察错误提示信息。5.编译连接通过后进行软件模拟仿真DebugStart/Stop Debug Session进入软件模拟的仿真窗口,可使用单步、设断点来进行调试和除错。6.编译连接通过后进行硬件仿真实验箱的仿真串口必须与PC 机串口连接,通电,拨位开关K10必须拨在B端,连接P10和L00,连接P11和L01,设置硬件实时仿真调试选项:ProjectOptions for Target TargetlDebug.硬件实时仿真调试选项窗口,见图1-5选硬件仿真选项,按确定按钮确定。图1-5硬件实时仿真调试选
7、项窗口进入硬件实时调试窗口后,可打开各种观察窗口,进行单步断点运行到光标连续执行等操作,无误后可连续运行观察LED发光管的显示效果。注意退出时须按单片机的复位按键SS10,在进行硬件连接前最好也先按单片机的复位按键SS10。7.修改以上程序,实现同时在P1.0和P1.1上各输出一个频率为1Hz但电平状态相反的方波。七:试验总结: 通过第一次实验我熟悉了Keil C51(汇编语言)和ZY15MCU12BD的基本操作过程,但还不是很熟练,课后要加强练习。实验2 十六进制与十进制的转换一:实验目的:实践汇编语言顺序结构的编程方法,掌握十六进制数转换成十进制数的编程实现,掌握单步运行程序的基本技巧。二
8、:实验设备:ZY15MCU12BD型综合单片机实验箱一台、具有一个RS232串行口并安装Keil C51的计算机一台。三:实验原理与环境:将十六进制数转换成十进制数有多种方法,比较典型的是用待转换数除以权值的方法,即依次除以100、10,则各次的商和最后的余数就是所需要的十进制数。四:实验容:将放在片RAM30H中的2位十六进制数转换成3位十进制数,按照从高位到低位的顺序分别放入31H33H中(即非压缩的BCD码)。在本实验中,要求使用单步方式运行,以便观察各单元的变化过程。五:程序清单:LJMP 0100H ORG 0100H MOV A,30H MOV B,#16 DIV AB MOV R
9、0,B MOV B,#16 MUL AB ADD A,R0 MOV B,#10 DIV AB MOV 33H,B MOV A,33H MOV 33H,A MOV B,#10 DIV AB MOV 32H,B MOV A,32H MOV 32H,A MOV 31H,A SJMP $ END六:实验步骤:1.建立一个工程,将在预习中做好的*.asm文件加入。2.调出存储器编辑窗口,将30H单元修改成某一值。3.在希望停下来的指令上设断点,然后运行,在断点处停下来后,再单步运行,可以看到各单元的变化情况。运行完最后一条指令后,在31H33H中应获得30H中十六进制数对应的十进制数。七:试验总结:这个
10、实验麻烦的就是编程实现十六进制与十进制的转换,尤其是算数运算指令的使用。实验过程中还不是很熟练;还有一个体会就是算法对编写程序至关重要,如果编写程序之前没有确立算法,那么编程将无法下手。实验3 8段LED显示器动态显示实验目的:掌握8段LED显示器的使用与显示程序的设计方法。实验设备:ZY15MCU12BD型综合单片机实验箱一台、具有一个RS232串行口并安装Keil C51的计算机一台。实验原理与环境:1. 实验箱上有6位8段LED显示器,采用动态方式驱动。即使一位LED显示器显示容一段时间,然后下一位LED显示器显示容一段时间,周而复始。只要刷新频率不小于50Hz,就可以获得清晰稳定的显示
11、效果。2.MCS-51CPU通过一片8255对8段LED显示器进行段驱动和位驱动,8255的A口、B口、C口、控制口的地址分别为片外RAM的4000H、4001H、4002H、4003H。3.LED显示器的各段由8255的B口驱动,低电平对应段发光,高电平对应段熄灭。各段的驱动位如图3-1,各显示字的字形代码如下所示:显示字 字形代码 显示字 字形代码 显示字 字形代码 0 C0H 0. 40H - BFH 1 F9H 1. 79H 灭 FFH 2 A4H 2. 24HD4D3D6D2D1D5D0D7 3 B0H 3. 30H 4 99H 4. 19H 5 92H 5. 12H 6 82H 6
12、. 02H 7 F8H 7. 78H 8 80H 8. 00H 9 90H 9. 80H A 88H A. 08H B 83H B. 03H图3-1 8段LED各段控制位 C C6H C. 46H D A1H D. 21H E 86H E. 06H F 8EH F. 0EH 4. LED显示器的各位由8255的A口驱动,低电平对应位发光,高电平对应位熄灭。 LED显示器 对应位口位 左起第一位 D0 左起第二位 D1 左起第三位 D2 左起第四位 D3 左起第五位 D4 左起第六位 D5实验容: 1.编写一个6位LED显示器驱动子程序(在主程序中已对接口芯片8255做好必要的初始化)。字形表按
13、0F、0.F.、-、灭的顺序排列。该子程序的要求如下: 入口:待显示数(00H1FH)放在20H25H( 分别对应显示器的左起第1第6位)中。 出口:每位LED显示0.5mS后返回。占用:R0、R1、R2、A、PSW、DPTR。显示子程序的流程图如图3-2和图3-3:N开始置显示数地址指针初值20H显示器位码指向左起第一位取出待显示数查出字形代码字形代码送段口位码送位口软件延时0.5mS关闭所有显示位位码指向下一位显示数地址指针加1显示地址指针超出?返回Y图3-2 显示子程序流程图YN开始显示地址指针R0=20H位码初值 R2=FEHA(R0)DPTR 表头首址A(A+DPTR)DPTR400
14、1H(DPTR)AAR2DPTR4000H(DPTR)A软件延时0.5mS(用R1作计数器)AFFH(DPTR)AR2左移R0R0+1R026H?返回图3-3 显示子程序的详细流程图 2.子程序自身无法运行,为了运行这个子程序,另编写一个主程序。这个主程序的功能是首先对8255进行初始化,然后就反复调用显示子程序,显示20H25H中的待显示容。 首先在20H起始的6个字节中置入00H0FH,然后连续运行此程序,应显示0F;在20H起始的6个字节中置入10H1FH,然后连续运行此程序,应显示0.F.;若置入20H、21H,则显示-、灭。开始8255初始化A口、B口方式0输出C口任意调用显示子程序
15、设置堆栈栈底SP软件延时0.5秒等待8255复位结束图3-4 显示主程序流程图3. 按以下框图编写一段程序,运行后会在显示器上应出现连续向左移动的0F。20H25H清0调用显示子程序330次,运行时间约1秒(20H)(21H)(21H)(22H)(22H)(23H)(23H)(24H)(24H)(25H)(25H)(25H)+1(25H)(25H)#0FH开始8255初始化A口、B口方式0输出C口任意设置堆栈栈底SP软件延时0.5秒等待8255复位结束图3-5 实验内容3流程图6位LED显示器驱动子程序程序清单: ORG 0000HMOV SP,#6FHMOV 20H,#00 MOV 21H,
16、#00 MOV 22H,#00 MOV 23H,#00 MOV 24H,#00 MOV 25H,#00MOV DPTR,#4003H ;8255初始化 MOV A,#10000001B ; A口、B口方式0输出,C口高4位输出,低4位输入 MOVX DPTR,A ;ACALL DELAY500MS;延时0.5秒 LOOP3:LCALL DISP;调用显示子程序SJMP LOOP3 DISP:MOV R0,#20H MOV R2,#0FEHDISP1:MOV A,R0 MOV DPTR,#TAB MOVC A,A+DPTR MOV DPTR,#4001H MOVX DPTR,A MOV A,R2
17、 MOV DPTR,#4000H MOVX DPTR,A CALL DELAY500US MOV A,#0FFH MOVX DPTR,A MOV A,R2 RL A MOV R2,A INC R0 CJNE R0,#26H,DISP1 RETDELAY500MS: PUSH 00H MOV R0,#25;延时0.5秒 NEXT: ACALL DELAY20MS DJNZ R0,NEXT POP 00H RETDELAY500US:PUSH 03H MOV R3,#250 DJNZ R3,$ POP 03H RETDELAY20MS:PUSH 06H PUSH 07H MOV R7,#99 AG
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 原理 接口 技术 实验 报告
限制150内