单片机实验报告.docx
《单片机实验报告.docx》由会员分享,可在线阅读,更多相关《单片机实验报告.docx(10页珍藏版)》请在冰豆网上搜索。
单片机实验报告
题目:
单片机组成原理实验报告
学院:
计算机科学与工程学院
专业:
信息安全
姓名:
学号:
2012年12月8日
实验一、输入输出接口编程
一、实验目的
1、掌握Keil软件的基本使用。
2、掌握单片机汇编语言基本编程。
二、实验内容
1、学习用Keil软件进行51单片机的软件开发;
学习Keil软件的一般操作,步骤为:
项目建立、程序录入、添加文件、编译生成HEX文件、仿真调试。
(见参考程序一)
2、霓虹灯控制程序设计
用P1口控制8个LED,按P3口输入信号的不同模式选择4种16次循环点亮方式,用软件延时实现1秒的扫描周期。
将生成的HEX文件下载到实验板上验证。
(见参考程序二)
三、实验原理
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口内含上拉电阻,当开关打开时逻辑值为1,开关闭合时逻辑值为0。
本实验中要实现循环输出,最常用的方法是循环计数实现循环次数控制,对计数器值进行查表转换得出输出值,输出到P1口进行显示,灯亮表示输出为“0”,灯灭表示输出为“1”。
本实验中的延时,用软件延时方法产生,延时时间=程序总机器周期数*循环次数*机器周期。
输出表格确定发光模式,实验中定义表格如下:
TAB1:
DB01H,02H,04H,08H,10H,20H,40H,80H(SW3,SW4为:
00)
TAB2:
DB03H,06H,0CH,18H,30H,60H,0CH,81H(SW3,SW4为:
01)
TAB3:
DB80H,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转换输出子程序
实验二、定时器/计数器编程
一、实验目的
1、掌握定时器的基本编程方法。
2、掌握计数器的基本编程方法。
二、实验内容
1、编写单片机程序,用T0作定时器产生周期为1秒的方波(用查询方式编程),从P3.6,P3.7口输出,将P3.7接到示波器显示该方波波形;用T1作计数器对从P3.6输出的方波进行计数,计数结果通过P1口输出到发光二极管显示。
(计算机仿真)
2、编写单片机程序,用T0作定时器产生周期为1秒的方波(用查询方式编程),从P3.6,P3.7口输出,将P3.6输出的方波接到P3.5口通过T1作计数器对该方波进行计数,计数值由LED显示,用存储示波器显示P3.7输出的方波。
(实验台验证)
三、实验原理
当晶振为22.1184M时,一个机器周期为0.54251微秒,要实现500毫秒的定时,需要921659个机器周期,对于51单片机内部定时器来说,最大只能定时65536个机器周期,定时35.535毫秒,不能满足要求,为此必须借助软件循环进行扩展。
实现的方法是:
用定时器中断定时10毫秒,再用软件扩展50倍即可得到500毫秒的定时。
当到达500毫秒时,对P3.7输出取反,可得到周期为1秒的方波。
选择模式1,每个10ms中断一次,设初值为X,根据下面公式,可求得X的值。
(216-计数初值)*机器周期=定时时间
有关定时计数器的特殊功能寄存器,请参考课本。
四、实验步骤:
1、用KEIL软件编写、汇编、调试给定内容的有关程序,并生成HEX文件;
2、用Proteus对单片机硬件电路图进行仿真;
3、下载到ZKSYS单片机实验板上验证有关程序。
实验三、外部中断的编程
一、实验目的
1、掌握外部中断的基本编程方法。
2、掌握计数器的扩展编程。
二、实验内容
设计单片机程序实现秒表功能;用一个开关对秒表进行启动和停止控制,用另一个开关对秒表进行清零。
用T0定时中断设计秒表计时,秒计数结果通过P1口及4094芯片送数码管显示(T0定时中断时间为10毫秒,秒表的显示间隔为1秒,即必须用软件和硬件结合使用实现)。
用外部中断INT0(边沿触发方式)对秒计数结果进行清零,用P3.5对秒计数进行启动和停止控制。
1、在生成HEX文件后,用Proteus软件对电路图进行计算机仿真;
2、程序下载到单片机实验板上验证;
(实验板数码管的驱动程序见附件)。
三、实验原理
T0定时中断10毫秒,进行100次中断得到1秒的定时,秒计数结果送P1口进行LED显示,将外部中断设置成边沿触发方式。
实验四、模数转换
一、实验目的
1、掌握A/D转换与单片机的接口方法;
2、掌握A/D芯片TLC549、TLC1549的编程方法;
3、掌握数据采集程序的设计方法;
二、实验内容
1、在PROTEUS软件仿真环境下,采用TLC549做A/D转换器,对电位器提供的模拟电压信号进行定时采样,结果送数码管模块显示;(仿真电路图如图4.1所示):
2、利用单片机实验板上的TLC1549做A/D转换器,对电位器提供的模拟电压信号进行采样,结果送数码管模块进行显示。
三、实验线路
1、TLC549实验电路原理图4.1如下:
图4.1实验电路原理图
2、TLC549是CMOS8位A/D转换器。
该芯片有一个模拟输入端口,3态的数据串行输出接口可以方便的和微处理器或外围设备连接。
TLC549仅仅使用输入/输出时钟(I/OCLOCK)和芯片选择(/CS)信号控制数据。
最大的输入输出时钟(I/OCLOCK)为1.1MHz。
CLK时钟位
DAT数据位
CS选片位
VCC电源(5V)
REF+正基准电压输入端
REF-负基准电压输入端
电位器RX1的首位两端分别接VCC、GND。
四、实验步骤
1、在KILL51软件下编辑TLC549的A/D转换源程序并汇编,运用PROTEUS软件仿真调试。
仿真步骤:
将TLC549的CLK接P1.0、DAT接P1.1、CS接P1.2,将模拟电压输入端连到电位器的电压输出端,并接电压表测量输入电压。
2、调节电位器,电压从0V到5V变化,记录数码管的显示数值。
记录到表中。
输入电压V
0
0.5
1
1.5
2
2.5
3
3.5
4
4.5
5
TLC549
A/D仿真结果
0
13
25
38
51
63
76
89
101
114
127
实验五、数模转换
一、实验目的
1、掌握模数转换芯片TLC5615的接口技术。
2、掌握模数转换芯片TLC5615的编程方法。
二、实验内容
TLC5615是一个串行10位的DAC芯片,只需通过3根串行总线就可以完成10位数据的串行输入。
要求:
1、编写程序实现下列要求:
通过DIP开关输入0~3FF位数值,由TLC5615变为模拟电压输出,记录数值与对应的对应关系。
2、利用TLC5615输出一个幅值从0V开始逐渐升至5V再降至0V、周期为1秒的三角波。
用示波器观察该波形。
三、实验线路
1、TLC5615引脚排列:
2、TLC5615的时序图:
从图中可以看出,TLC5615的16位移位寄存器分为高4位虚拟位,低2位填充位以及10位有效位。
如果选择12位数据序列工作方式,则向16位移位寄存器按先后输入10位有效位和地2位填充位,2位填充位数据任意。
四、实验步骤
1、用Proteus软件仿真,改变输入数据,使D/A输出电压从0V到5V变化,记录数码管的显示数值。
记录到表中。
输入数据
00H
33H
66H
9AH
0CDH
100H
133H
166H
19AH
1CDH
输出电压V
0
0.5
1
1.5
2
2.5
3
3.5
4
4.5
5
2、将编译好的三角波程序下载到实验板上,用示波器观察波形。
五、与显示编程
一、实验目的
1、掌握数码管显示程序的设计;
2、掌握键盘扫描程序的设计。
二、实验内容
设计单片机程序,读取键盘的按键值(键值为1~16),送数码管显示。
(选做:
用10进制显示键值)。
三、实验原理
数码管动态扫描显示的基本原理是,单片机依次向每个数码管发出段选码和对应的位选码,对数码管逐个循环点亮,选择适当的扫描速度,利用人眼的视觉暂留效应,使得虽然每个时刻只有一个数码管在显示,但得看上去好像同时显示,动态扫描在定时中断中调用,以保证准确的扫描速度。
需要显示的数字必须先进行译码变成能显示的段码才能进行显示,译码可以通过查表来实现。
键盘扫描的基本原理是,列线逐列输出低电平,同时检测行线的电平,如其中有低电平时,表明当位于前行列位置上的键被按下,然后由行和列确定键值。
在按键处理操作中,键被按下再被释放为一次按键操作,另外还进行键盘去抖动处理,用软件延时方法解决。
4、电路图: