当前位置:文档之家› 单片机实验报告

单片机实验报告

单片机实验报告学院:姓名:学号:指导老师:目录第一章实验内容、目的及要求 (2)一、内容 (2)二、目的及要求 (3)第二章实验 (3)实验一数字量输入输出实验 (3)实验二定时器/计数器实验 (4)实验三A/D、D/A转换实验 (11)实验四串行通信设计 (20)第三章实验体会 (28)第一章实验内容、目的及要求一、内容实验一数字量输入输出实验阅读、验证C语言程序功能。

使用汇编语言编程,完成实验指导书之“3.1 数字量输入输出实验”基本实验项目。

实验二定时器/计数器实验阅读、验证C语言程序功能。

使用汇编语言编程,完成实验指导书之“3.3 定时/计数器实验”基本实验项目。

提高部分:定时器控制LED灯由单片机内部定时器1,按方式1工作,即作为16位定时器使用每0.05秒钟T1溢出中断一次。

P1口的P1.0-P1.7分别接八个发光二极管。

编写程序模拟时序控制装置。

开机后第一秒钟L1,L3亮,第二秒钟L2,L4亮,第三秒钟L5,L7亮,第四秒钟L6,L8亮,第五秒钟L1,L3,L5,L7亮,第六秒钟L2,L4,L6,L8亮,第七秒钟八个LED灯全亮,第八秒钟全灭,以后又从头开始,L1,L3亮,然后L2,L4亮……一直循环下去。

实验三A/D、D/A转换实验阅读、验证C语言程序功能。

使用汇编语言编程,完成实验指导书之“4.3 A/D转换实验”项目(P64)和“4.4 D/A转换实验”项目。

提高部分:(要求:Proteus环境下完成)小键盘给定(并显示工作状态),选择信号源输出波形类型(D/A 转换方式),经过A/D采样后,将采样数据用LED灯,显示当前模拟信号值大小及变化状态。

实验四串行通讯实验阅读、调试C语言程序功能。

使用汇编语言编程,完成实验指导书之“3.7 串口通讯实验”项目。

(要求:实验仪器上完成)提高部分:(要求:Proteus环境下完成)利用单片机实验系统,实现与PC机通讯。

功能要求:将从实验系统键盘上键入的数字,字母显示到PC机显示器上,将PC机键盘输入的字符(0-F)显示到单片机实验系统的数码管上。

二、目的及要求1、学习Keil C51集成开发工具的操作及调试程序的方法,包括:仿真调试与脱机运行间的切换方法;2、熟悉TD-51单片机系统板及实验系统的结构及使用;3、进行MCS51单片机指令系统软件编程设计与硬件接口功能设计;4、学习并掌握Keil C51与Proteus仿真软件联机进行单片机接口电路的设计与编程调试;完成指定MCS51单片机综合设计题。

第二章实验实验一数字量输入输出实验一、实验目的了解P1 口作为输入输出方式使用时,CPU 对P1 口的操作方式。

二、实验内容P1 口是8 位准双向口,每一位均可独立定义为输入输出。

编写实验程序,将P1 口的低4位定义为输出,高4 位定义为输入,数字量从P1 口的高4 位输入,从P1 口的低4 位输出控制发光二极管的亮灭。

三、实验步骤实验参考程序及实验步骤如下。

实验参考程序:(DigitIO.C)#include "SST89x5x4.H"void main(void){unsigned char data i; //data 为存储器类型说明while(1){P1 = P1 | 0xF0; //声明高4 位为输入i = P1;P1 = (i>>4)&0x0F;}}汇编:ORL P1(0x90),#B(0xF0)MOV 0x08,P1(0x90)MOV A,0x08SWAP AANL A,#0x0FMOV R7,AMOV A,R7ANL A,#0x0FMOV P1(0x90),ASJMP main(C:0800)实验步骤:1. 按图3-1-1 所示,连接实验电路图,图中“圆圈”示需要通过排线连接;2. 编写实验程序,编译链接无误后进入调试状态;3. 运行实验程序,观察实验现象,验证程序正确性;4. 按复位按键,结束程序运行,退出调试状态;5. 自行设计实验,验证单片机其它IO 口的使用。

实验接线图:实验二定时器/计数器实验一、实验目的1. 了解MCS-51 单片机定/计数器的工作原理与工作方式;2. 掌握定时/计数器T0 和T1 在定时器和计数器两种方式下的编程;3. 学习定时/计数器T2 的可编程时钟输出功能。

二、实验内容1. 使用定时器0 与定时器1 进行定时,在P1.0 和P1.1 引脚上输出方波信号,通过示波器观察波形输出,测量并记录方波周期。

2. 将定时/计数器1 设定为计数器方式,每次计数到10 在P1.0 引脚上取反一次,观察发光二极管的状态变化。

3. 定时器2 可以作为时钟发生器使用,并在P1.0 引脚上输出占空比为50%的方波。

编程定时器2,使用示波器测量输出时钟,测量时钟周期。

三、实验原理通常,8051 单片机内部有2 个16 位定时/计数器,即定时器0(T0)和定时器1(T1)。

增强型单片机SST89E554RC 内部还有一个16 位定时器T2,与其相关的特殊功能寄存器有TL2、TH2、RCAP2L、RCAP2H、T2CON 等。

定时器/计数器/特殊功能寄存器定时器/计数器2 控制寄存器(T2CON)各位的含义简述如下:TF2:定时器溢出标志,当定时器溢出时置位,必须由软件清除。

当RCLK=1 或TCLK=1时此位将不会被置位。

EXF2:定时器2 外部标志,当EXEN2=1 并且T2EX 引脚上出现负跳变引起捕捉或重载发生时此位置1。

如果定时器 2 中断使能,EXF2=1 会引起中断,此位必须软件清除。

DCEN=1时,EXF2 不会引起中断。

RCLK:接收时钟标志,RCLK=1,串行口使用T2 的溢出脉冲作为方式1 和3 下的接收时钟;RCLK=0,串行口使用T1 的溢出脉冲作为接收时钟。

TCLK:发送时钟标志,与RCLK 的作用相同。

EXEN2:定时器2 外部使能标志。

EXEN2=1 且T2 未被用于串口时钟时,若T2EX 引脚上出现负跳变则出现捕捉或重载。

EXEN2=0 时,T2 忽略T2EX 引脚上的变化。

TR2:启动/停止定时器2,为1 时启动定时器2。

C/T2#:定时器/计数器选择。

C/T2#=1 为计数功能;C/T2#=0 为定时功能。

CP/RL2#:捕捉/重载标志。

CP/RL2#=1,当EXEN2=1 且T2EX 引脚上出现负跳变时捕捉发生。

CP/RL2#=0,T2 溢出时重载发生,或当EXEN2=1 且T2EX 引脚上出现负跳变时重载发生。

如果RCLK=1 或TCLK=1,此位会被忽略,T2 溢出时自动重载。

定时器/计数器2 模式寄存器(T2MOD)各位的含义简述如下:T2OE:定时器2 输出使能位。

DCEN:递减计数使能位。

四、实验步骤定时器实验按照实验要求编写实验程序,参考例程如下:(Timer.C)#include "SST89x5x4.h"sbit Wave1 = P1^0;sbit Wave2 = P1^1;void main(){TMOD = 0x11; //定时器方式寄存器TH0 = 0x0F8; //定时器0 计数初值TL0 = 0x00;TH1 = 0x0F8; //定时器1 计数初值TL1 = 0x00;TR0 = 1; //启动定时器0TR1 = 1; //启动定时器1while(1){if(TF0 == 1) //定时器0 溢出标志{TH0 = 0x0F8;TL0 = 0x00;Wave1 = ~Wave1;TF0 = 0;}else if(TF1 == 1) //定时器1 溢出标志{TH1 = 0x0F8;TL1 = 0x00;Wave2 = ~Wave2;TF1 = 0;}}}汇编:MOV TMOD(0x89),#0x11MOV TH0(0x8C),#IPA(0xF8)CLR AMOV TL0(0x8A),AMOV TH1(0x8D),#IPA(0xF8)MOV TL1(0x8B),ASETB TR0(0x88.4)SETB TR1(0x88.6)JNB TF0(0x88.5),C:0821MOV TH0(0x8C),#IPA(0xF8)CLR AMOV TL0(0x8A),ACPL Wave1(0x90.0)CLR TF0(0x88.5)SJMP C:0812JNB TF1(0x88.7),C:0812MOV TH1(0x8D),#IPA(0xF8)CLR AMOV TL1(0x8B),ACPL Wave2(0x90.1)CLR TF1(0x88.7)SJMP C:0812MOV R0,#0x7FCLR AMOV @R0,ADJNZ R0,C:0833MOV SP(0x81),#0x07LJMP main(C:0800)实验步骤:(1)编写实验程序,编译、链接后联机调试;(2)运行实验程序,使用示波器观察P1.0 与P1.1 引脚上的波形并记录周期;(3)改变计数初值,观察实验现象,验证程序功能。

计数器实验实验参考例程:(Count.C)#include "SST89x5x4.h"sbit P10Value = P1^0;void main(){TMOD = 0x60; //设定定时器1 计数方式TH1 = 0xF6; //计数初值TL1 = 0xF6;TR1 = 1; //启动定时器1for(;;){while(TF1 == 0); //判定时器1 溢出标志P10Value = ~P10Value;TF1 = 0;}}实验步骤:(1)按下图连接实验线路图;(2)编写程序,联机调试;(3)运行实验程序,按单次脉冲KK1,观察发光管D0 的状态,每10 次变化一次;(4)实验结束,按复位按键退出调试。

五、定时器控制LED灯要求:由单片机内部定时器1,按方式1工作,即作为16位定时器使用每0.05秒钟T1溢出中断一次。

P1口的P1.0-P1.7分别接八个发光二极管。

编写程序模拟时序控制装置。

开机后第一秒钟L1,L3亮,第二秒钟L2,L4亮,第三秒钟L5,L7亮,第四秒钟L6,L8亮,第五秒钟L1,L3,L5,L7亮,第六秒钟L2,L4,L6,L8亮,第七秒钟八个LED灯全亮,第八秒钟全灭,以后又从头开始,L1,L3亮,然后L2,L4亮……一直循环下去。

1)硬件构造如下:2)程序如下:#include<reg51.h>unsigned char count;void main(){unsigned char value, i;TMOD=0x01;TH0=0x4C;TL0=0x00;ET0=1;PT0=1;EA=1;TR0=1;while(1){ if( count==20)P1=05H;if (count==40)P1=0AH;if (count==60)P1=50H;if (count==80)P1=0A0H;if (count==100)P1=55H;if (count==120)P1=0AAH;if (count==140)P1=0FFH;if (count==160)P1=00H;count=0;}}void Timer0()interrupt 1{TR0=0;TH0=0x4C;TL0=0x00;TR0=1;count++;}实验三A/D、D/A转换实验一、A/D转换实验1)实验目的1. 学习理解模/数信号转换的基本原理;2. 掌握模/数转换芯片ADC0809 的使用方法。

相关主题