1、北京化工大学信息科学与技术学院单片机原理及应用实验指导书郭 青2016年4月单片机实验指导书一、实验系统简介1 实验采用天祥电子公司的GTX TX-1D单片机实验箱。 2 实验板上单片机采用的是STC公司的STC89C52单片机作为主控模块,完全兼容AT89S52单片机,并配置有多种实验模块,可以通过连线将各模块有机结合,进行综合实验。 3 STC89C52可以在线编程,不需要频繁插拔,通过USB接口与PC机相连。 4 程序编译采用Keil C仿真编译系统,可进行编程以及程序编译,生成.OBJ以及.HEX目标文件 5 编译完成的.HEX文件通过USB接口写入到实验板上的单片机中,即编程,并直接
2、运行。 6 编程软件的文件名STC-isp V6.82E。 二、实验简要步骤1、启动运行环境 正确连接实验系统,确认各个开关处于正确位置,打开实验机电源。 2、编程 运行Keil C软件,建立工程,选择器件为STC89C52(如库中无STC MCU,可选择AT89C52),编写源程序,并添加到工程中,然后进行编译。 3、进行实验 运行STC-ISP V6.82E软件,点击选择单片机芯片STC89C516RD+,点击打开程序文件,选择欲加载的.HEX文件,点击下载,将程序写入到单片机中,当写入完成后即自动运行。 4、观察并记录实验结果。如现象不正确,返回第2步,修改源程序。三、用户手册,电路原理
3、图,工具软件等实验一、读程序存储器及简单I/O实验一、实验要求: 1、P1口作输出口,接8只发光二极管,程序存储器的0500H0509H单元依次存放着数字09的ASCII码,编程将其依次读出写入到内部RAM的30H39H单元,并同时送P1口输出显示。 2、P1口作输出口,接8只发光二极管,编写程序,使发光二极管循环点亮。 二、实验目的 1、熟悉实验系统的使用及调试方法。 2、学习80C51汇编语言程序编写。 3、学习P1口的使用方法。 4、学习延时子程序的编写和使用。 三、实验电路及连线 P1.0-P1.7通过锁存器74HC573接发光二极管D1-D8 P2.5接74HC573的锁存控制端LE
4、四、实验说明1、发光二极管为共阳极,当输入为0时点亮,1时熄灭。 2、为了使发光二极管显示的ASCII码(实验1)以及循环点亮(实验2)明确看清,可采用多重循环的软件延时。 3、74HC573的逻辑功能表如下所示:LE为1时,Q=D;LE为0时,锁存。 五、实验报告要求 列出实验步骤,写出实验的汇编程序,记录实验结果。 实验二、定时器/计数器实验一、实验要求: 1)使用STC89C52内部定时器0,按方式1工作,即作为16位定时器使用,每0.05秒T0溢出中断一次。P1口的P1.0P1.7分别接8个发光二极管。要求编写程序模拟一时序控制装置。开机后第一秒钟D4,D5亮,第二秒钟D3,D6亮,第
5、三秒钟D2,D7亮,第四秒D1,D8亮,第五秒D2,D7亮,第六秒D3,D6亮,第七秒D4,D5亮,第八秒D1,D2,D3,D4亮,第九秒D5,D6,D7,D8亮,第十秒全亮,第十一秒全灭。然后再从头循环。 2)使用STC89C52内部定时器0,工作在计数模式,按方式2工作,以按键S2作为计数输入,用一位(最低位)七段数码管循环显示按键次数09。二、实验目的 1、学习80C51内部定时/计数器的使用和编程方法。 2、学习中断处理程序的编程方法。 三、实验电路及连线同实验一,P1.0-P1.7接D1-D8按键电路如下图,S2一端接地,另一端接T0(P3.4),按下时,T0输入低电平0。七段数码管
6、电路如下图所示,P0口输出通过锁存器接数码管的段选及位选,P2.6与P2.7分别为段选及位选锁存器的锁存控制端(LE为1,Q=D;LE为0,锁存)。四、实验说明1)关于内部计数器的编程主要是定时常数的设置和有关控制寄存器的设置。 2)内部计数器用作定时器时,是对机器周期计数。因为实验系统的晶振是11.0592MHz,所以定时常数的设置可按以下方法计算: 机器周期=1211.0592MHz1.0857S (65536-定时常数)*1.0857S=50mS 定时常数4C00H3)在中断服务程序中,因为中断定时常数的设置对中断程序的运行起到关键作用,所以在置数前要先关对应的中断,置数完之后再打开相应
7、的中断。4)实验2中定时器T0工作在计数方式2,计数初值为FFH,每次按下S2键,T0溢出,申请中断,在中断服务程序内查表输出中断次数。5)七段数码管为共阴极,位选信号为0,段选信号为1时,对应的数码管亮,数字编码为五、实验报告要求 画汇编程序流程图,并记录实验的汇编程序。六、参考程序流程(实验1)主程序: 1、设置初始常数 2、开中断 3、等待中断 中断服务程序 1、保护现场 2、置计数常数 3、判断是否到1秒。是,步骤4;否,步骤7。 4、查表 5、显示数据 6、调整表格指针 7、恢复现场 8、中断返回 实验三、外部中断实验一、实验要求: 由AT89S52内部定时器0,按方式1工作,即作为
8、16位定时器使用每0.05秒T0溢出中断一次。P1口的P1.0P1.7分别接8个发光二极管。要求编写程序模拟一时序控制装置。开机后第一秒钟D4,D5亮,第二秒钟D3,D6亮,第三秒钟D2,D7亮,第四秒D1,D8亮,第五秒D2,D7亮,第六秒D3,D6亮,第七秒D4,D5亮,第八秒D1,D2,D3,D4亮,第九秒D5,D6,D7,D8亮,第十秒全亮,第十一秒全灭。然后再从头循环。由按键S14生成外部中断信号,当S14键按下时,为外部中断请求信号,此时发光二极管全灭,七段数码管全亮,同时蜂鸣器发声,持续时间为2秒。二、实验目的 1、进一步熟悉80C51内部定时器的使用和编程方法。 2、学习外部中
9、断的使用和编程方法。3、学习中断嵌套程序的编写方法。 三、实验电路及连线蜂鸣器电路键盘电路P1.0-P1.7接D1-D8,蜂鸣器接P2.3,按键S14的两端分别接INT0(P3.2)和T0(P3.4)。四、实验说明1. 为了实现S14按下时,INT0引脚输入低电平,T0(P3.4)引脚应设置为0。2. P2.3输出为低电平时,蜂鸣器发声。3外部中断0(高级)与定时器0(低级)形成两级中断嵌套。4外部中断时的2秒延时可以采用软件延时或使用定时器1。五、实验报告要求 1、画出实验电路原理图。 2、画汇编程序流程图,并记录实验的汇编程序。3、列出实验步骤,记录实验结果。 六、参考程序流程主程序: 1
10、、 设置T0,T1初始常数 2、 设置中断优先级3、 开中断 4、 启动T0计数5、等待中断 T0中断服务程序 1、保护现场 2、置计数常数 3、判断是否到1秒。是,步骤4;否,步骤7。 4、查表,显示数据 5、调整表格指针 6、恢复现场 7、中断返回 INT0中断服务程序1、保护现场 2、显示数据3、停止T04、置T1计数常数,启动T1计数 注:T1采用查询方式,也可采用中断嵌套5、判断是否到2秒。是,步骤6;否,等待。 6、停止T1计数 注:步骤4-6可由软件延时代替7、启动T0计数,恢复现场 8、中断返回实验四 单片机与PC机串行通信实验一、实验要求AT89S52串行通信口工作在方式1,
11、8位UART方式,允许接收,9600bps。在PC机上运行串口调试软件。编程实现,1)单片机接收PC机发送的数据并回送给PC机显示,并同时送发光二极管显示;2)AT89S52内部定时器0,按方式1工作,每1秒钟内部RAM30H单元内容加1,并通过串行通信口送PC机显示。二、实验目的1、学习80C51串行通信口的编程方法。三、实验线路P1.0-P1.7接D1-D8。用RS-232接口通信线连接实验系统与PC机。四、实验说明1、本次实验为两个程序。2、在PC机上运行串口调试软件,设置波特率为9600bps,无奇偶校验位。3、正确连线,编写并下载运行AT89S52串行通信程序。4、观察并验证实验结果
12、。五、实验报告要求 画程序流程图,附上完整的程序代码实验五、 扫描键盘及数码管显示实验一、实验要求P3口与行列式键盘接口,分别定义8个按键,每个按键对应一个发光二极管,编写键盘扫描程序,当按键按下时,对应的二极管点亮,同时在一位数码管上显示键值07;当没有定义的其它按键按下时,二极管及数码管全灭。二、实验目的1.学习在单片机系统中扩展行列式键盘的方法。 2.学习扫描键盘的实现方法。三、实验电路及连线键盘接口电路见实验三:矩阵键盘的四行分别与 P3.0-P3.3 连接,四列分别与 P3.4-P3.7 连接。P1.0-P1.7接D1-D8。七段数码管电路如下图所示,P0口输出通过锁存器接数码管的段
13、选及位选,P2.6与P2.7分别为段选及位选锁存器的锁存控制端(控制端为1,Q=D;控制端为0,锁存)。七段数码管为共阴极,位选信号为0,段选信号为1时,对应的数码管亮,数字编码为四、 实验说明编写键盘扫描程序,下载程序,并运行。五、实验报告1. 画出电气原理图;2. 附上完整的程序代码;3. 画出程序流程;实验六 I2C串行总线存储器读写实验一、实验要求由AT89S52内部定时器1,按方式1工作,每1秒钟24LC04的0001H单元内容加1,以S14键作为外部中断输入信号,S14键按下时,读取0001H单元内容并送七段数码管显示。二、实验目的1、进一步掌握定时器和外部中断的使用方法。2、学习
14、80C51与I2C串行总线器件的接口方法。3、学习80C51模拟I2C总线的编程方法。三、实验线路键盘及数码管电路见前述,AT24C02的接口电路图如下所示。SDA接P2.0,SCL接P2.1,A0、A1、A2接地四、实验说明1、以内部RAM 30H单元作为缓存,暂存定时信息,即1秒钟加1,然后再写入到24C02中。2、器件地址为0,采用字节写及读随意地址,读写地址均为0001H。3、参考教材中程序例子,编写模拟I2C总线的子程序。4、外部中断程序中,读24C02送七段数码管显示。五、实验报告要求 画程序流程图,说明24C02读写方法,记录实验的汇编程序。六、参考程序流程主程序略,参考实验三。
15、T1中断服务程序 1、保护现场 2、置计数常数 3、判断是否到1秒。是,步骤4;否,步骤6。 4、30H内容加1 5、调用写24C02子程序 6、恢复现场 7、中断返回 INT0中断服务程序1、保护现场 2、停止T1计数3、调用读24C02子程序4、读出的数据(在累加器A中)送数码管显示5、启动T1计数6、恢复现场 7、中断返回注:调用读24C02子程序会引起T1定时误差,此处忽略不计。写24C02子程序1、 发送起始位2、 发送写控制字节1010 0000B3、 发送应答位4、 发送两个地址字节,中间需发送应答位5、 发送30H内容6、 发送应答位7、 发送停止位8、 返回读24C02随意地
16、址子程序1、 发送起始位2、 发送写控制字节1010 0000B3、 发送应答位4、 发送两个地址字节,中间需发送应答位5、 发送应答位6、 发送起始位7、 发送读控制字节1010 0001B8、 发送应答位9、 读一个字节到ACC10、 发送非应答位11、 发送停止位12、 返回实验七、 AD/DA转换实验一、实验要求1)拧动 ADC0804 旁边的电位器,会在数码管的前两位显示 0-FF 之间的数值。2)通过用单片机控制 DAC0832 输出锯齿波,让开发板上发光二极管 D12 由暗到亮变化,循环下去。 二、实验目的1)学习如何用单片机控制 ADC0804 芯片进行数模转换,掌握数码管动态
17、扫描显示的原理。 2)学会用单片机控制数模转换芯片 DAC0832。 三、实验电路及连线ADC0804接口电路图,P1口接DB0DB7,P3.7接RD,P3.6接WR,P0.7通过74HC573接CSDAC0832接口电路,P0接DI07,P3.6接WR1(其它控制引脚为常通),P3.2接CS四、实验说明五、实验报告画出程序流程图,附上完整的程序代码; 实验八 综合实验一、实验要求利用实验系统提供的功能模块,进行组合,完成硬件电路和软件程序的设计调试。二、实验目的1、学习80C51单片机系统的设计和开发技术。2、进一步熟悉掌握单片机内部功能单元及应用接口的编程。3、提高并检验学生知识与实践的融
18、合能力。三、实验内容(供选择)1、定时器+串行通信。实验要求:每1秒钟内部RAM 30H的内容加1,并显示到PC机显示器上;将PC机键盘输入的数据(00-FF)显示到实验系统的数码管上。2、键盘+数码管+串行通信实验要求:在键盘上定义8个键,当键按下时最左侧的数码管显示键码(18),并送PC机显示;当按下其他键时,数码管及PC机显示“0”。3、外部中断+串行通信实验要求:以S14键盘输入产生中断信号,每按键一次,内部计数器加1,并将按键次数同时送最右侧数码管(09)和PC机显示。4、I2C存储器+串行通信实验要求:每1秒钟24C02的0002H单元内容加1,以S14键作为外部中断输入信号,有键
19、按下时,读取0002H单元内容送PC机显示。5、AD/DA转换+串行通信拧动ADC0804 旁边的电位器,在数码管的前两位显示 00-FF 之间的数值且发光二极管 D12亮度随之变化,并送PC机显示。 四、实验要求1、独立完成实验内容的设计。2、画出系统的功能模块方框图,电路图。3、画出程序设计流程图。4、搭建实验电路,编写实验程序并演示实验结果。五、实验报告每组制作一份介绍实验内容的word文档,内容包括:1)封面:实验题目,小组成员,班级,学号2)系统功能介绍,使用的功能模块列表。3)系统设计方框图。4)硬件电路介绍及电路图。5)软件设计流程介绍及流程图。6)程序代码。7)实验结果分析小结。