时间:2024年2月4日
题目:单片机组成原理实验报告
学院:计算机科学与工程学院
专业:信息安全
姓名:
学生卡:
20 年 12 月 8 日##
实验一、输入输出接口编程
1 实验目的
1.掌握Keil软件的基本使用。
2.掌握单片机汇编语言的基本编程。
2.实验内容
1、学习使用Keil软件进行51单片机的软件开发;
学习Keil软件的一般操作。 步骤为:工程创建、程序录入、添加文件、编译生成HEX文件、仿真调试。 (见参考流程一)
2.霓虹灯控制程序设计
利用P1口控制8个LED,根据P3口输入信号的不同模式选择4种16周期的点亮模式,利用软件延时实现1秒的扫描周期。 将生成的HEX文件下载到实验板进行验证。 (参见参考程序2)
3 实验原理
1.Keil软件的练习
假设(R0)=20H,(R1)=25H,(20H)=80H,(21H)=90H,
(22H)=0A0H、(25H)=0A0H、(26H)=6FH、(27H)=76H。 执行完程序后,询问程序完成了什么功能,并写出运行结果。 (见参考流程一)
2.霓虹灯控制程序设计
电路原理图如下,所需元件为:AT89C51、SW-SPST、LED-RED
图中,单片机的P1口作为输出口,连接8个LED。 8 个 LED 连接到一个公共阳极。 端口逻辑值为0时点亮LED。 P3端口用作连接2个SW-SPST开关的输入端口。 P3端口包含上述Pull电阻,开关打开时逻辑值为1,开关闭合时逻辑值为0。
本实验中为了实现循环输出,最常用的方法是循环计数来控制循环次数。 将计数器值转换成表格得到输出值,输出到P1口进行显示。 灯亮表示输出为“0”,灯灭表示输出为“0”。 输出为“1”。
本实验中的延迟是使用软件延迟方法产生的。 延迟时间=程序总机器周期数*周期数*机器周期。
输出表决定发光模式。 实验中定义的表如下:
TAB1:DB 01H,02H,04H,08H,10H,20H,40H,80H(SW3、SW4为:00)
TAB2:DB 03H,06H,0CH,18H,30H,60H,0CH,81H (SW3、SW4 分别为:01)
TAB3:DB 80H,40H,20H,10H,08H,04H,02H,01H (SW3、SW4为:10)
TAB4:DB用户自定义(SW3、SW4为:11)
输入信号使用P3端口的2位,例如P3.2和P3.3,可以确定4种模式。
实验程序框图如下:
图 1.1 主程序 图 1.2 转换输出子程序
实验 2. 定时器/计数器编程
1 实验目的
1.掌握定时器的基本编程方法。
2、掌握计数器的基本编程方法。
2.实验内容
1、编写单片机程序,使用T0作为定时器,产生周期为1秒的方波(查询模式下编程),从P3.6和P3.7端口输出,将P3.7连接到示波器显示方波波形; 使用T1作为计数器,对P3.6输出的方波进行计数,计数结果通过P1口输出到LED显示屏。 (计算机模拟)
2、编写单片机程序,使用T0作为定时器,产生周期为1秒的方波(查询模式下编程),从P3.6、P3.7口输出,将方波输出连接到P3.6~P3.5 该端口使用T1作为计数器对方波进行计数,计数值通过LED显示,通过存储示波器显示P3.7输出的方波。 (实验台验证)
3 实验原理
当晶振为22.1184M时,一个机器周期为0.54251微秒。 要实现500毫秒定时,需要921659个机器周期。 对于51单片机的内部定时器来说,最大定时只能是65536个机器周期,定时为35.535毫秒。 这些要求无法满足,必须借助软件周期进行扩展。 实现方法是:用定时器中断计时10毫秒,然后用软件扩展50倍,得到500毫秒的计时。 当达到500毫秒时,将P3.7输出反转,得到周期为1秒的方波。
选择模式1,每10ms中断一次,并设置初始值为X。根据下面的公式,可以得到X的值。
(216-初始计数值)*机器周期=计时时间
定时器计数器的特殊功能寄存器请参考教材。
4、实验步骤:
1、使用KEIL软件按照给定内容编写、汇编、调试相关程序,并生成HEX文件;
2、利用Proteus对单片机硬件电路图进行仿真;
3、下载到ZKSYS单片机实验板,验证相关程序。
实验3.外部中断的编程
1 实验目的
1.掌握外部中断的基本编程方法。
2.掌握计数器的扩展编程。
2.实验内容
设计单片机程序,实现秒表功能; 使用一个开关启动和停止秒表,使用另一个开关清除秒表。
利用T0定时中断设计秒表计时,秒计数结果通过P1口和4094芯片送至数码管显示(T0定时中断时间为10毫秒,秒表显示间隔为1秒,即它必须使用软件和硬件的组合来实现)。 使用外部中断INT0(边沿触发方式)清除第二计数结果,使用P3.5启动和停止第二计数。
1、生成HEX文件后,使用Proteus软件对电路图进行计算机仿真;
2、下载程序到单片机测试板进行验证;
(实验板数码管驱动见附件)。
3 实验原理
T0定时器中断10毫秒。 执行 100 次中断以获得 1 秒的计时。 第二次计数结果发送至P1口进行LED显示。 将外部中断设置为边沿触发模式。
实验4.模数转换
1 实验目的
1、掌握A/D转换与单片机的接口方法;
2、掌握A/D芯片TLC549、TLC1549的编程方法;
3、掌握数据采集程序的设计方法;
2.实验内容
1、在PROTEUS软件仿真环境中,采用TLC549作为A/D转换器,定时采样电位器提供的模拟电压信号,并将结果送至数码管模块显示; (仿真电路图如图4.1所示):
2、使用单片机实验板上的TLC1549作为A/D转换器,对电位器提供的模拟电压信号进行采样,并将结果发送到数码管模块进行显示。
3、实验线
1、TLC549实验电路原理图4.1如下:
图4.1 实验电路原理图
2. TLC549 是一款 CMOS 8 位 A/D 转换器。 该芯片具有一个模拟输入端口和一个三态数据串行输出接口,可以轻松连接到微处理器或外围设备。 TLC549仅使用输入/输出时钟(I/O CLOCK)和片选(/CS)信号来控制数据。 最大输入输出时钟(I/O CLOCK)为1.1MHz。
CLK时钟位
DAT数据位
CS片选位
VCC电源(5V)
REF+ 正参考电压输入端
REF- 负参考电压输入端
电位器RX1的前两端分别连接VCC和GND。
4. 实验步骤
1、在KILL51软件下编辑汇编TLC549的A/D转换源程序,并使用PROTEUS软件进行仿真调试。 仿真步骤:将TLC549的CLK连接到P1.0,DAT连接到P1.1,CS连接到P1.2,将模拟电压输入端连接到电位器的电压输出端,连接电压表测量输入电压。
2、调节电位器,将电压从0V变为5V,记录数码管的显示值。 记录到表中。
实验5.数模转换
1 实验目的
1.掌握模数转换芯片TLC5615的接口技术。
2、掌握模数转换芯片TLC5615的编程方法。
2.实验内容
TLC5615是一款串行10位DAC芯片,仅通过3条串行总线即可完成10位数据的串行输入。 要求:
1、编写程序实现如下需求:通过拨码开关输入一个0~3FF数字值,将TLC5615改为模拟电压输出,记录该值与对应值的对应关系。
2、使用TLC5615输出一个三角波,其幅度从0V开始,逐渐上升到5V,然后下降到0V,周期为1秒。 用示波器观察该波形。
3、实验线
1、TLC5615引脚排列:
2、TLC5615的时序图:
从图中可以看出,TLC5615的16位移位寄存器分为高4位虚拟位、低2位填充位和10位有效位。 若选择12位数据序列工作模式,则依次向16位移位寄存器输入10个有效位和2个填充位,其中2个填充位可选。
4. 实验步骤
1、使用Proteus软件进行仿真,改变输入数据,使D/A输出电压从0V变为5V,记录数码管的显示值。 记录到表中。
2、将编译好的三角波程序下载到实验板上,用示波器观察波形。
5. 显示编程
1 实验目的
1、掌握数码管显示程序的设计;
2.掌握键盘扫描程序的设计。
2.实验内容
设计一个单片机程序,读取键盘的按键值(按键值为1~16)并发送给数码管显示。 (可选:使用十进制显示键值)。
3 实验原理
数码管动态扫描显示的基本原理是单片机依次向每个数码管发送段选择码和相应的位选择码,一个周期逐个点亮数码管,选择合适的扫描速度,利用人眼的视觉暂留效应。 ,这样虽然每一时刻只显示一个数码管,但看上去一定是同时显示的。 动态扫描在定时中断中调用,保证扫描速度准确。 需要显示的数字必须先解码为可显示的段码才能显示。 通过查表即可实现解码。
键盘扫描的基本原理是列线逐列输出低电平,同时检测行线的电平。 如果其中有低电平,则表明位于前一行、列位置的按键被按下,然后由行、列按键值来确定。 在按键处理操作中,按键的按下和释放作为按键操作。 另外,键盘的去抖是通过软件延迟的方法来解决的。
4、电路图:
第 2 部分:微控制器实验报告练习
1.KeilC51开发环境学习实验
1.简述创建项目的步骤
2、画出调试状态下仿真器的内存空间分配图,并根据图解释MON51内部监控程序。
功能,并解释ORG指令的功能。
3、简述DPflash程序的功能。
4. Keilc 51 软件将用户调试程序在线下载到仿真器并准备菜单命令开始调试并运行。
2. 串口转并行I/O口实验
以下是74HC164芯片的内部原理图:
2.1. 简单解释一下串并转换的功能。
2.2画出74HC164芯片的真值表,并根据真值表进行解释:
A:时钟引脚为低电平时有何作用?
B:为什么实验中B引脚设置为高电平? (参考内部原理图)
2.3. 如果实验中要输出的数据为#CCH,那么输出引脚Q0~Q7(用二进制数据标记)的信号是什么?
2.4 简单解释CLEAR引脚的功能
2.5 简述RLC指令的功能
3. 并行转串行I/O口实验
以下是74HC165芯片的内部原理图:
3.1 简述并串转换的功能 3.2 根据内部原理图,说明165器件内部使用的是什么触发器? 3.3 根据触发器的类型,解释SER引脚的功能。 3.4 解释一下PL引脚的功能? 3.5 如果拨码开关的状态为11001100B,那么并串转换完成后得到的值是多少?
4. 串行模数转换实验
4.1 画出实验电路原理图。
4.2 解释参考高电平和参考低电平的功能。
4.3 计算该电路图A/D转换的分辨率。
4.4查阅相关资料,解释A/D转换芯片的三个性能指标(分辨率、误差、转换时间)的含义。
5、时钟中断实验
5.1 简述时钟的四种工作模式
5.2 解释如何计算时钟定时器的初始值
5.3 根据本实验的内容,讲解TMOD寄存器和TCON寄存器的控制方法。
5.3 简述CPU响应中断的条件
6. 串口通信实验
6.1 简述TTL电平规范和RS232电平规范的区别,以及MAX232芯片的作用。
6.2 简述产生9600波特率定时器初始值的计算方法,并进行计算。
6.3 简述三种串口通信方式的区别。
7.数码管
7.1 简述共阴极和共阳极数码管的区别。
7.2. 计算共阴、共阳极数码管分别显示数字5时的驱动代码。
7.3. 简述数码管的静态显示和动态显示方法。