单片微机原理实验指导书(学生用)_第1页
单片微机原理实验指导书(学生用)_第2页
单片微机原理实验指导书(学生用)_第3页
单片微机原理实验指导书(学生用)_第4页
单片微机原理实验指导书(学生用)_第5页
已阅读5页,还剩95页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、单片微机原理及应用实验指导书湖南理工学院机械与电气工程系前 言单片微机及相关的应用技术是近代超大规模集成电路技术与计算机技术发展的产物,已经深入到国民经济与人民生活的各个领域。单片微机原理及应用课程已经被几乎所有工科院校中仪器仪表、测控技术、光机电一体化、电子、通信、计算机、自动化等类专业列为本科主干专业课程,是培养现代电子技术应用类专业人才的重要技术课程。通过本实验课程的学习,将使学生在课堂理论课学习的基础上,进一步加深对理论知识的理解,学习、掌握单片微机的软件编程技术、硬件扩展技术、以及小型应用系统设计技术等相关的技能,锻炼和提高动手能力。为今后在相关领域中从事与单片微机有关的设计、开发、

2、应用等工作打下良好的基础。实验课所用的实验设备为:“LJD-2008+微机实验开发系统”,该实验设备支持MCS-51系列单片机的软、硬件实验与仿真开发,实验开发系统配置的Keil C仿真开发软件,在Windows环境下可使用汇编语言或C语言设计实验程序,可采用源程序模拟方式调试程序,也可以在目标机上以监控方式调试程序。余晓峰 2006年3月10日LJD-2008 实验系统使用注 意 事 项1、 LJD-2008系统自带5V、+12V、-12V、-5V电源 。 请在使用的时候注意实验仪上的电源引出线。 2、 自带CPU内有测试监控程序,外接仿真器时需要拔掉本机CPU。 3、 所有的实验程序全部调

3、试通过,说明书中的程序有重复的部分没有全部列出,完整的程序请参考随机光盘相应的文件。 4、 LJD-2008监控程序已经包含所有实验,具体操作请参考附录。 验机方法: 打开电源,实验仪LCD显示屏显示“欢迎使用LJD-2008实验系统”然后开始自检,等2秒显示“LJD-2008实验系统正常”表示机器正常,如果显示“LJD-2008实验系统错误”,表示机器有错误,请关电源检查,或者和本公司技术部联系。 目录第一章 系统概述5第二章 LJD-2008实验系统的地址分配11第三章 Vision2集成开发环境14第四章 基本实验指导204、1、实验1 “LJD-2008+单片机实验开发系统”使用学习2

4、04.2、实验2 顺序、分支、循环三种结构程序的基本编程训练214.3、实验3 并行I/O口实验224.4、实验4 中断系统及应用实验224.5、实验5 定时/计数器应用实验254.6、实验6 单片机并行口扩展实验(1) 27第五章 选修实验 295.1、实验一、点阵式L C D ( 1 2 8 X 6 4 ) 模块显示实验 295.2、实验二、 三色16X 16 矩阵L E D 应用实验525.3、实验三、A/D(ADC0809、)转换实验555.4、实验四、DAC 0832 输出0-5V电压转换实验605.5、实验5、电机(直流电机、步进电机、继电器)控制实625.6、实验6、I 2 C

5、总线芯片的读、写实验695.5、实验7、IC 卡(SE4442 控制)读、写实验815.5、实验8、“看门狗”(813L)复位控制实验100第一章:系 统 概 述1.1 整体架构HNIST型单片机实验系统分为多个模块,各模块之间相对独立。图1.1 HNIST型单片机实验系统整体1.2 核心板图1.2 HNIST型单片机实验系统核心板1.3 主要模块1、流水灯对流水灯的操作可能是初学者最先体会到成就感的一个项目,该实验板的流水灯由四个发光二极管组成,流水灯的旁边设有四个针头的排针,这样可以用连接线接入单片机的任意I/O口来控制流水灯。我们可以用这几个发光二极管实现跑马灯、交通灯等功能。2、数码管

6、数码管是该实验板上最能验证程序功能的输出器件。数码管旁边有四个跳线帽,分别用来控制四个数码管工作状态。当然这种控制只是在硬件上的控制,在软件上的控制则可以通过对74SL573锁存器的编程实现。数码管可用于静态显示和动态扫描。3、4×4矩阵键盘我们可以通过键盘来控制流水灯的亮灭,也可用它来控制数码管上数字或字母的显示。键盘和数码管结合可以通过编写程序来实现计算器功能、日历等。4、EEPROMAT24C02在单片机应用中,作为EEPROM储存器用,与单片机通过I2C通信。优点是掉电后仍可以保存数据。比如单片机运行时,手动设置了一些参数,可以用它保存起来。即可对其进行读操作又可进行写操作,

7、并且在断电后可保存数据。5、实时时钟芯片本实验板含有1片DS1302芯片,内含有1个实时时钟/日历和31字节静态RAM,通过简单的串行接口与单片机进行通信。实时时钟/日历电路提供秒、分、时、日、日期、月、年的信息,每月的天数和闰年的天数可自动调整。时钟操作可通过AM/PM指示决定采用24或12小时格式。DS1302与单片机之间能简单地采用同步串行的方式进行通信。另外该芯片含备份电源接口,掉电后时钟仍然能够正确的运行。第二章 LJD-2008实验系统的地址分配LJD-2008 实验系统的各个元件的地址分配: - 表(1):RTC(DS12C887)的地址分配以及符合定义 秒寄存器 = # 800

8、0H SECOND = # 8000H 秒闹钟 = # 8001H SECOND_ALARM = # 8001H 分寄存器 = # 8002H MINUTE = # 8002H 分闹钟 = # 8003H MINUTE_ALARM = # 8003H 时寄存器 = # 8004H HOUR = #8004H 时闹钟 = # 8005H HOUR_ALARM = #8005H 星期寄存器= # 8006H WEEK = #8006H 日寄存器 = # 8007H DATE = #8007H 月寄存器 = # 8008H MONTH = #8008H 年寄存器 = # 8009H YEAR = #

9、8009H A寄存器 = # 800AH REG_A = #800AH B寄存器 = # 800BH REG_B = #800BH C寄存器 = # 800CH REG_C = #800CH D寄存器 = # 800DH REG_D = #800DH 世纪寄存器= # 8032H CENTURY = #8032H 一般的RAM = # 800EH #807FH (8032 除外) 表(2):LCD(字符、图形)的地址分配以及符合定义 LCD 写命令地址= # 0E000H W_C_GLCD = # 0E000H 写数据地址= # 0E001H W_D_GLCD = # 0E001H读状态地址=

10、# 0E002H R_ B_GLCD = #8402H 读数据地址=# 0E003H R_ D_GLCD = # 0E003H(DG-128x64 带2级 国标汉字库) 表(3):可以自定义扩展控制(8255)的地址分配及符合定义 8255-2 端口A 寄存器= # 8200H A_8255_2 = # 8200H 端口B 寄存器= # 8201H B_8255_2 = # 8201H 端口C 寄存器= # 8202H C_8255_2 = # 8202H 控制端口 寄存器= # 8203H D_8255_2 = # 8203H 表(4):可编程定时/计数扩展控制(82C53)的地址分配及符合

11、定义 82C53 写计数器0= # 8400H W_0_82C53 = # 8400H 写计数器1 = # 8401H W_1_82C53 = # 8401H 写计数器2 = # 8402H W_2_82C53 = # 8402H 写命令控制寄存器 = # 8403H W_D_82C53 = # 8403H 读计数器0 = # 8400H R_0_82C53 = # 8400H 读计数器1 = # 8401H R_1_82C53 = # 8401H 读计数器2 = # 8402H R_2_82C53 = # 8402H 读命令控制寄存器 = # 8403H R_D_82C53 = # 8403

12、H 表(5):可编程串行口扩展控制(82C51)的地址分配及符合定义 82C51 写数据地址= # 8300H W_D_82C51= #8300H 写命令地址= # 8301H W_C_82C51= #8301H 读数据地址= # 8300H R_ D_82C51= #8300H 读状态地址= # 8301H R_ B_82C51= #8301H 表(6):可编程键盘/显示扩展控制( 82C79 )的地址分配及符合定义82C79 写数据地址= # 8100H W_D_82C79= # 8100H 写命令地址= # 8101H W_C_82C79= # 8101H 读数据地址= # 8100H

13、R_ D_82C79= # 8100H 读状态地址= # 8101H R_ B_82C79= # 8101H 表(7):扩展简单 I / O (74HC244, 74HC273)的地址分配及符合定义 74HC244 读入地址= # 8600H R_D_244 = # 8600H 74HC273 输出地址= # 8700H W_D_273= # 8700H 表(8):A/D扩展(ADC0809、MC7135, AD574)的地址分配及符合定义 A/D 芯片的分配 符 号 定 义 通 道 号 0809的读(写)地址=# 0A000H W_D_0809 = # 0A000H 0-7通道对应 00H

14、07H AD574的启动地址=#0D200H W_C_574 = # 0D200H 读高8位结果地址=#0D201H R_DH_574 = # 0D201H 读低4位结果地址=#0D202H R_DL_574 = # 0D202H MC7135通道地址= #0D000H W_C_7135 = # 0D000H 0 7通道对应 10H 17H 结果读出地址=#0D100H R_D_7135 = #0D100H 表(9): D/A扩展(DAC0832)的地址分配及符合定义 D/A转换的地址= # 0C000H W_D_0832 = # 0C000H 第三章 Vision2集成开发环境1、 软件简介

15、KEILVision2 是流行的单片机开发环境之一,它集可视化编辑、编译、调试、仿真与一体,支持51 汇编、PLM 和C 语言的混合编程,功能强大、界面友好、易学易用。安装KEIL Vision2 的方法同一般的软件安装。安装完成后将在Windows桌面生成一个®KEIL Vision2 图标。运行该软件,启动屏幕如下:图、KEIL Vision2 启动界面KEIL Vision2 启动界面随后进入KEIL Vision2 的工作界面:2、创建一个项目要创建一个应用项目,需要下列步骤操作l 启动 Keil Vision,新建一个项目文件并从器件库中选择一个器件。l 新建一个源文件并把

16、它加入到项目中。l 增加并设置选择器件的启动代码。l 针对目标硬件设置工具选项。l 编译项目并生成可以编程PROM的HEX文件。下面逐步介绍:(1)、在KEIL Vision2 集成开发环境中,打开菜单Project->New Project;(2)、在弹出的Create New Project对话框中,选择目标项目的文件夹,并输入项目名称。(3)、根据需要,选择ATMEL 89C51 或其它51 系列单片机作为目标设备。选择目标单片机(4)、这时需要建立一个源文件。建立一个汇编或C文件,如果已经有源程序文件,可以忽略这一步。选择File/New选项,在弹出的对话框中,输入一个源程序。在

17、此处输入源程序(5)、选择 File/Save选项,选择文件的存放路径并输入源程序文件名,注意一定要填上扩展名,如果C源程序文件,扩展名为.C;如果是汇编语言源程序文件,扩展名为.ASM后缀,单击保存。(6)、单击对象Target1前的加号,展开的内容Source Group1,用右键单击Source Group1,在弹出的快捷菜单中选择Add File to Source Group1选项。(7)、在弹出的对话框中找到刚才的文件,单击ADD按键,这时目录里就有源程序文件了。(8)、项目设置,用鼠标右键单击对象Target1,在弹出的菜单中选择Options forTraget对话框选项,弹出

18、的Options for Target1对话框中有8个选项卡, Target1选项卡中设置工作频率为12MHz,其它为默认选项,然后选中Debug页如下图,如选择Use Simulator 表示使用软件仿真;如选择Use:“ KEIL Monitor-51 Driver”表示使用监控方式。设置使用KEIL Monitor-51 DriverN注意:由于每次仿真器复位后用户代码区都将被自动擦除,所以如果用户需要启动调试时加载用户代码,“Load Application at Startup”选项也必须打勾。在监控方式下还要对串口进行设置,单击“Settings”选择您要使用的计算机串行端口。KE

19、IL Vision2 默认设置为COM1/57600。本实验系统支持57600bps(57.6Kbps)的波特率。最后单击“确定”按钮保存设定。8个选项卡的详细介绍请参考Keil C使用手册。3、使用Keil进行调试的基本技巧(1)、进入和退出仿真状态只有在用户程序编绎和连接成功后才能进行调试工作,点击菜Debug->Start/Stop将进入/退出硬件仿真状态。(2)、如何运行程序在Keil 的IDE 中有以下几种运行方式:A)、Run 全速运行,遇到断点停下,或用户按动Stop按钮或RST CPU按钮停止.B)、Step 单步跟踪运行一条指令,如果该语句为C 中的调用子程序语句或汇编

20、中的CALL指令,Step指令,将跟踪进入子程序内部。C)、Step over 单步运行完一条指令,如果该语句为C 中的调用子程序语句或汇编中的CALL指令,Step over 指令将全速完成该子程序的运行停在下一指令处。D)、Step out 跳出当前函数,进入子程序内部后,点击Step out将立即完成该函数并跳出该子函数。E)、Run till Cursor Line 从当前位置运行到光标处。(3)、如何设置和删除断点设置断点/删除断点最简单的方法是用鼠标双击待设置断点的源程序行或反汇编程序行或用断点设置命令bs (4)、如何查看和修改寄存器的内容仿真时主寄存器的内容显示在主寄存器窗口,

21、用户除了可以观察以外还可自行修改,用鼠标点击选中一个单元,例如单元DPTR,然后再单击DPTR 的数值位置,出现文字框后输入相应数值按回车键即可。另外的输入方法是使用命令行窗口,例如输入A=0X34将把A 的数值设置为0X34。5、如何观察和修改变量点击View->Watch & Call stack Window 出现相应窗口,选择Watch 1-3 中的任一个窗口,按动F2 在Name 栏填入用户变量名,如:Temp1 Counter 等,但必须是存在的变量。如果想修改数值可单击Value 栏,出现文本框后输入相应数值。用户可以连续修改多个不同的变量,uVision2 IDE

22、 提供了观察变量更简单的方法。在用户程序停止运行时移动鼠标光标到要观察的变量上停大约一秒钟就弹出一个变量提示块出来。6、如何观察存储器区域在Keil中可以区域性的观察和修改所有的存储器数据。Keil IDE 把MCS-51内核的存储器资源分成4个部分A 内部可直接寻址RAM data ,IDE表示为D:xxB 间接寻址RAM区idata ,IDE表示为I:xxC RAM区xdata ,IDE表示为X:xxxxD 代码区code ,IDE表示为C:xxxx这四个区域都可以在Keil 的 Memory Windows 中观察和修改。IDE 集成环境中点击菜单View->Memory Wind

23、ows,便会打开Memory 窗口, Memory 窗口可以同时显示4 个不同的存储器区域。点击窗口下部分的编号可以相互切换显示。在地址输入栏内输入待显示的存储器区起始地址如D:45h 表示从内部可直接寻址RAM 的45H 地址处开始显示;x:3f00H 显示外部RAM,从3f00H 地址开始; c:0X1234显示代码区域,从1234H 地址开始;I:32H 显示内部间接寻址空间,从32H 地址开始显示。格式的切换: 在区域显示中缺省的显示单元为字节(byte),但是可以选择其他显示方式,在Memory 显示区域内按动鼠标右键在弹出的菜单中可以选择的显示方式为:Decimal 按照十进制方式

24、显示Unsigned 按照有符号的数字显示又分char 单字节int 整型long 长整型Singed 按照无符号的数字显示又分char 单字节int 整型long 长整型ASCII 按照ASCII 码格式显示Float 按照浮点格式进行显示Double 按照双精度浮点格式显示在Memory 窗口中显示的数据可以修改,修改方法如下:在鼠标对准要修改的存储器单元,按动鼠标右键,在弹出的菜单中选择“Modify Memory at 0x”在弹出对话框的文本输入栏内输入相应数值后按回车键修改完成。注代码区数据不能更改。第四章 基本实验指导本章实验结合各章理论进行,其中实验1、2为纯软件实验,采用Sm

25、iulator方式;后面的实验为软、硬件结合实验,利用实验箱实现。建议每个学生先建立一个文件夹,实验中的项目文件和源程序文件都放在这个文件夹中。实验1 “LJD-2008+单片机实验开发系统”使用学习1. 实验目的(1)、了解实验设备的结构与组成,掌握Keile C平台的使用。(2)、熟悉指令系统和寻指方式。(3)、编辑、编译、链接、装载、全速/单步/断点运行、单片机内部资源查看与改写,会查找和排除简单故障。2.实验步骤(1)、启动Keil C,出现主界面后,建立一个新的工程。(2)、在源程序输入窗口键入以下实验程序:INDEX EQU 20HSUM EQU 21HORG 0000HSTART

26、:MOV INDEX,#5MOV A,#0LOOP:ADD A, INDEXDJNZ INDEX,LOOPMOV SUM,ASJMP $END以上文件以FIRST.ASM存盘,预分析程序的执行结果。(3)、构造对象,以Simmulator方式启动仿真。打开汇编窗口,查看汇编代码,理解指令的存储格式。(4)、打开寄存器窗口和片内数据存储器窗口。单步执行程序,观察累加器的内容和PSW的内容的变化以及内部数据存储器中20H单元内容的变化。(5)、将断点设定在SJMP $指令行,观察程序运行的最终结果,即21H单元的内容的变化。3.程序设计选题(1)、将外部数据存储器0001H和0002H单元的内容互

27、换,观察互换的结果。(2)、将外部数据存储器0001H单元的内容的高低4位相交换,观察互换的结果。(3)、完成8位数除以8位数,观察结果的商、余数和PSW中的状态标志。即R2/R1=R3R4。(4)、将外部数据存储器0001H单元的内容的奇数位取反,偶数位不变,观察处理结果。实验2 顺序、分支、循环三种结构程序的基本编程训练1.实验目的(1)、通过拆字程序、拼字程序、数据排序程序和分类统计程序进步掌握三种结构程序的设计方法。(2)、进一步掌握软件的编辑、编译、排错、调试方法。(3)、进一步掌握十进制数的机内表示方法和有符号数据的机内表示方法。2.实验内容(1)、在仪器仪表等工业应用中要进行十制

28、数的处理,一方面要以压缩BCD码的格式存储信息,另外又要把存储的结果一位一位的以十进制方式显示出来,这就要用到拆字和拚字程序。(2)、拆字程序:定义一个压缩BCD码数据并保存在片外RAM8000H单元,分离为非压缩BCD码数存入片内RAM30H和31H单元,以断点调试方式观察分离结果。(3)、拚字程序:定义一个二位的非压缩BCD码数据并保存在片外RAM8000H和8001H单元,拚接为压缩BCD码数据存入片内RAM30H单元,以断点调试方式观察拚接结果。(4)、用DB伪指令定义10个无序数据,采用冒泡排序的方法将其从小到大或从大到小排序后存入片外RAM2000H开后的单元,调试程序观察排序结果

29、。(5)、用DB伪指令定义10个包含0、正数、负数的一组数据,分别统计其中各数的个数,统计结果保存到内部RAM30H、31H、32H单元,调试程序观察统计结果。3.程序设计选题(1)、完成两个4字节数的BCD码数的相加,和存入内部数据存储器24H20H单元,观察运算结果。(2)、将外部数据存储器中的10个十六进制数转换成ASCII码存放回原单元,观察转换结果。实验3 并行I/O口实验1.实验目的(1)、熟悉51单片机并行口输入方式和输出方式的编程。(2)、掌握子程序的设计和调用方法。(3)、掌握子程序的仿真和调试方法。2. 实验电路和程序段 驱 动位 驱 动a b c d e f g hLE1

30、 LE2 . LE3 LE4 LE5 LE6 LE7 LE8如图,实验电路为8个数码显示器的的测试电路。数码显示器的8个段连接实验箱上的8个逻辑电平开关,位驱动的每一引脚对应连接单片机的P1.0P1.7。(1)、数码显示电路的测试:将逻辑电平开关全置于逻辑1,以秒为时间单位,编程轮流点亮8个数码管。若每个数码管都显示8.,则数码管及其显示电路工作正常。(2)、动态扫描电路的原理分析:以10ms为时间单位,编程轮流点亮8个数码管,观察显示结果是否稳定。以2ms为时间单位,编程轮流点亮8个数码管,观察显示结果是否稳定。(3)、将P1.7接逻辑电平开关,作输入引脚使用,ag各段不变,H段浮空。当开关

31、为逻辑1时,8个数码管以秒为单位间隔闪烁。当开关为逻辑0时,8个数码管分为高低4个两组,以秒为单位间交叉闪烁。实验4 中断系统及应用实验1. 实验目的(1)、了解中断的产生和响应过程,掌握中断程序的编制。(2)、学习利用中断实现单步运行的方法。(3)、加深对边沿触发方式和电平触发方式的理解。(4)、考察中断优先权的控制。2、实验电路与实验内容89C51 单稳电路P3.2KVccVccP1.0P1.1P1.7P1.7INT00(1)、利用中断实现单步运行的方法。实验电路如图: 图4.单步运行电路连接示意图按图4连接线路,调试并运行如下程序,观察单步运行过程。实验程序如下:;主程序ORG 0000

32、H LJMP MAIN ORG 0003H LJMP EXINT0MAIN: CLR IT0 CLR A MOV P1,A MOV IE , #81H ;开中断LOOP: CPL A MOV P1, A SJMP LOOP ;中断服务程序EXINTO: JNB P3.2 , EXINTOWAIT : JB P3.2 ,WAIT RETIa)、预分析程序的功能和实验现象。b)、单片机上电复位后启动程序执行,这时,虽然INT0引脚为低电平,但由于复位后特殊功能寄存器IE各位为零,禁止中断,所以在设置完IE后(程序中执行完MOV IE,#81H)再执行一条指令才能进入中断程序。若P3.2(INT0)

33、引脚为低电平,则程序陷入中断中断服务程序中。每按一次按键产生一个正脉冲,这样 当执行RETI指令从中断服务程序返回时P3.2引脚刚好为低电平中断请求信号有效,因此返回主程序中执行完一条指令后又会进入中断服务程序,达到通过外部按键控制程序单步运行的目的。(2)、按下图所示电路连线,分析边沿触发方式的外中断和电平触发方式的外中断的中断请求信号的撤除有什么不同。考察中断优先级。实验程序如下(两中断源均为边沿方式):;主程序MODW0 EQU 70H MODW1 EQU FEH ORG 0000H LJMP MAIN ORG 0003H LJMP EXINT0 ORG 0013H LJMP EXINT

34、1 ORG 0050HMAIN: MOV SP , #60H SETB IT0 SETB IT1 CLR PX0 SETB PX1 MOV IE , #85H SJMP $;中断服务程序EXINT1: PUSH ACC MOV R2,#08H LP1: MOV A ,#MODW0 MOV P1 , A LCALL DELY500 SWAP A MOV P1 , A LCALL DELY500 DJNZ R2, LP1 POP ACC RETIEXINT0: PUSH ACC MOV R3 , #08H MOV A , #MODW1LP0: MOV P1 , A LCALL DELY500 RR

35、 A DJNZ R3 , LP0 POP ACC RETIDELY500为延时500ms的子程序,该子程序由同学们自己设计。a)、两中断源都在边沿触发方式下作如下操作:启动程序运行,观察指示灯如何变化?按下按键手不松观察指示灯如何变化,松开手后观察批示灯如何变化?b)、修改程序两中断源都在边沿触发方式下作如下操作:启动程序运行,观察指示灯如何变化?按下按键手不松观察指示灯如何变化,松开手后观察指示示灯如何变化?C)、考察自然优先级。两中断源均为电平触发方式,优先级均为0,将单片机的P3.2(INT0)和P3.3(INT1)接逻辑电平开关,拨开关使P3.2和P3.3输出低电平,启动程序运行观察执

36、行结果。再拨开关使P3.2输出高电平,观察程序运行的结果。d)、考察优先权的控制。修改程序使INT1为高优先级,INT0为低优先级,拨开关使P3.2输出低电平,P3.3输出高电平,启动程序运行,观察运行结果。在程序运行过程中,拨开关使P3.3输出为低电平,程序运行的结果说明了什么?3.程序设计题,自编程并通过调试。使8个数码管显示H,每中断一次,H左移1位。参考实验3的实验电路。实验5 定时/计数器应用实验1.实验目的(1)、学习利用定时/计数器扩展外中断的方法。(2)、了解定时/计数器的应用,掌握其编程方法。2.实验电路3.实验内容(1)、利用定时/计数器扩展外断。按实验电路图连线,实验程序

37、如下:MODW0 EQU 0F0H MODW1 EQU 0FEH ORG 0000H LJMP MAIN ORG 000BH LJMP EXT0 ORG 001BH LJMP EXT1 ORG 0050HMAIN: MOV SP , #60H MOV TMOD , #66HMOV TH0,#0FFHMOV TL0,#0FFHMOV TH1,#0FFHMOV TL1,#0FFH SETB TR0SETB TR1 CLR PT0 SETB PT1 MOV IE , #85H SJMP $;中断服务程序EXT1: PUSH ACC MOV TH1,#0FFHMOV TL1,#0FFH MOV R2,

38、#08H LP1: MOV A ,#MODW0 MOV P1 , A LCALL DELY500 SWAP A MOV P1 , A LCALL DELY500 DJNZ R2, LP1 POP ACC RETIEXT0: PUSH ACCMOV TH0,#0FFHMOV TL0,#0FFH MOV R3 , #08H MOV A , #MODW1LP0: MOV P1 , A LCALL DELY500 RR A DJNZ R3 , LP0 POP ACC RETIDELY500为延时500ms的子程序,该子程序由同学们自己设计。(1)、预分析程序的功能。录入程序,以Monitor-51 D

39、river方式仿真调试。按下按键观察程序的执行结果;在指示灯停止闪烁后松开按键观察程序的执行结果。按下按键,指示灯下在闪烁时松开按键观察程序的执行结果。程序执行的结果与边沿方式的外中断的结果是否相同?(2)、定时/计数器的扩展应用。设计实现下列功能的程序,并在实验箱上实现。a、 用定时/计数器T0产生秒闪烁信号,控制P1.0引脚上的指示灯以秒频率闪烁。b、 用定时/计数器T0和T1级连扩展方式产生秒闪烁信号,控制P1.0引脚上有指示灯以秒频率闪烁。实验6 单片机并行口扩展实验(1)1、实验目的(1)、学会单片机与8255、数码显示和键盘的接口掌握编程应用技术。(2)、学习动态扫描显示的基本工作

40、原理。2、实验电路a b c d e f g hLE1 LE2 . LE3 LE4 LE5 LE6 LE7 LE8PA7PA0PB0PB7&8255APC3PC2PC1PC0段 驱 动位 驱 动0 1 2 34 5 6 78 9 A BC D E FX0 X1 X2 X3 RL0RL1RL2RL3 按图示电路连线,其中:PA为段驱动端口与数码显示器的a,b,c,d,e,f,g等各段数据相连,输出段数据;PB口为扫描口,一方面连接数码显示器的扫描端,另一方面连接键盘扫描端RL0、RL1、RL2、RL3,输出扫描信息;PC口与键盘行扫描输入端相连。注意:单片机和8255A之间之间已经在实验

41、箱内部连接好。其地址见下表:8255-2 端口A 寄存器= # 8200H A_8255_2 = # 8200H 端口B 寄存器= # 8201H B_8255_2 = # 8201H 端口C 寄存器= # 8202H C_8255_2 = # 8202H 控制端口 寄存器= # 8203H 开 始初始化显示缓冲区显示提示信息击键否?设定基准时间A键否?B键否?设定定闹时间查询定闹时间C键否?关 闭 显 示D键否?YNYYYYNNNND_8255_2 = # 8203H 2、实验内容(1)、系统启动后,首先在显示器上显示“- - - - - - - - ”提示输入基准时间。(2)、4×

42、;4矩阵键盘中,将A、B、C、D定义为功能键。按A键后,即可按××××××格式输入时分秒基准时间。如,输入143024表示14点30分24秒。输入过程中LED自动向右滚动显示。如果输入的是合法时间,系统即开始正常运行。并按“××-××-××”格式动态显示当前时间。例如:“11 36 - 52”否则,重新显示“- - - - - - - - ”提示输入合法的基准时间。(3)、设定定闹时间。在正常运行时,按“B”键即可按“×××××

43、;×”格式输入定闹时间。其输入方法与基准时间的输入完全相同。设定合法的定闹时间后10秒钟,系统恢复当前时间的动态显示。(4)、查询定闹时间。在正常运行时,按“C”键,系统按“××-××-××”格式显示当前定闹时间,若用户未开启定闹功能,则显示“OP”,10秒钟后,系统恢复当前时间的动态显示。(5)、正常运行时,按“D”键,系统关闭显示器,进入低功耗工作状态。再按一次“D”键又恢复正常显示。(6)、主程序流程图同学们按以按散转程序的结构画出主程序流程图。(7)、设计、调试并实现该程序。第五章 选修实验实验1 点阵式L C D

44、( 1 2 8 X 6 4 ) 模块显示实验LJD128X64 液晶显示模块概述1)、LJD128X64 液晶显示模块是128×64 点阵的汉字图形型液晶显示模块,可显示汉字及图形,内置8192 个中文汉字(16X16 点阵)、128 个字符(8X16 点阵)及64X256 点阵显示RAM(GDRAM)。可与CPU 直接接口,提供两种界面来连接微处理机:8-位并行及串行两种连接方式。具有多种功能:光标显示、画面移位、睡眠模式等。2)、外观尺寸:93×70×14mm(4X8),84×44×14mm(2X8),115×32×14

45、mm(2X10)3)、视域尺寸:73×39mm(4X8), 70×20mm(2X8),85×20mm(2X10), 132×39mm(4X16),补充说明:外观尺寸可根据用户的要求进行适度调整。一、LJD128X64(128X64)引脚说明1)、逻辑工作电压(VDD):4.55.5V2)、电源地(GND):0V3)、LCD 驱动电压(V0):0-10V4)、工作温度(Ta):060(常温) / -2075(宽温) 保存温度(Tstg):-55125二、位并行连接时序图模块有并行和串行两种连接方法(时序如下):MPU 写资料到模块MPU 从模块读出资料三、

46、用户指令集备注:a、当模块在接受指令前,微处理顺必须先确认模块内部处于非忙碌状态,即读取BF标志时BF 需为0,方可接受新的指令;如果在送出一个指令前并不检查BF 标志,那么在前一个指令和这个指令中间必须延迟一段较长的时间,即是等待前一个指令确实执行完成,指令执行的时间请参考指令表中的个别指令说明。B、“RE”为基本指令集与扩充指令集的选择控制位元,当变更“RE”位元后,往后的指令集将维持在最后的状态,除非再次变更“RE”位元,否则使用相同指令集时,不需每次重设“RE”位元。四、具体指令介绍: 不需每次重设“RE”位元1)、清除显示功能:清除显示屏幕,把DDRAM 位址计数器调整为“00H”2

47、)、位址归位功能:把DDRAM 位址计数器调整为“00H”,游标回原点,该功能不影响显示DDRAM3)、位址归位功能:把DDRAM 位址计数器调整为“00H”,游标回原点,该功能不影响显示DDRAM 功能:执行该命令后,所设置的行将显示在屏幕的第一行。显示起始行是由Z 地址计数器控制的,该命令自动将A0-A5 位地址送入Z 地址计数器,起始地址可以是0-63 范围内任意一行。Z 地址计数器具有循环计数功能,用于显示行扫描同步,当扫描完一行后自动加一。4)、显示状态开/关功能: D=1;整体显示ON C=1;游标ON B=1;游标位置ON5)、游标或显示移位控制功能:设定游标的移动与显示的移位控

48、制位:这个指令并不改变DDRAM 的内容6)、功能设定7)、设定CGRAM 位址功能:设定CGRAM 位址到位址计数器(AC)8)、设定DDRAM 位址功能:设定DDRAM 位址到位址计数器(AC)9)、读取忙碌状态(BF)和位址功能:读取忙碌状态(BF)可以确认内部动作是否完成,同时可以读出位址计数器(AC)的值10)、写资料到RAM功能:写入资料到内部的RAM(DDRAM/CGRAM/TRAM/GDRAM)11)、读出RAM 的值功能:从内部RAM 读取资料(DDRAM/CGRAM/TRAM/GDRAM)12)、待命模式(12H)功能:进入待命模式,执行其他命令都可终止待命模式13)、卷动

49、位址或IRAM 位址选择(13H)功能:SR=1;允许输入卷动位址SR=0;允许输入IRAM 位址14)、反白选择(14H)功能:选择4 行中的任一行作反白显示,并可决定反白的与否15)、睡眠模式(015H)功能:SL=1;脱离睡眠模式SL=0;进入睡眠模式16)、扩充功能设定(016H)功能:RE=1;扩充指令集动作RE=0;基本指令集动作G=1;绘图显示ON G=0;绘图显示OFF17)、设定IRAM 位址或卷动位址(017H)功能:SR=1;AC5AC0 为垂直卷动位址SR=0;AC3AC0 写ICONRAM 位址18)、设定绘图RAM 位址(018H)功能:设定GDRAM 位址到位址计数器(AC)五、显示坐标关系图形显示坐标3、字符表代码(02H-7FH)六、显示步骤1、显示资料RAM(DDRAM)显示资料RAM 提供64×2个位元组的空间,最多可以控制4 行16 字(64 个字)的中文字型显示,当写入显示资料RAM 时,可以分别显示CGROM、HCGROM 与CGRAM 的字型;ST7920A 可以显示三种字

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论