单片机
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《单片机实验报告》
姓名:成灏
学号:1345533106
班级:13电气1班专业:电气工程及其自动化学院:电气与工程信息学院
目录
实验一流水灯 (2)
实验二串口输出 (5)
实验三定时器的应用 (7)
实验四中断:定时器中断、外部中断 (9)
实验五扩展RAM应用 (12)
实验六数码管的动态显示 (15)
实验七PCA应用 (19)
实验一、流水灯
一、实验目的
1.了解15单片机的引脚结构。
2.根据所学汇编语言编写代码实现LED灯的流水功能。
3.利用开发板下载hex文件后验证功能。
二、实验原理
STC15单片机有所有I/O端口均有4种工作模式:准双向口、推挽输出、仅为输出(高阻状态)、开漏模式。每个I/O端口的驱动能力均可达到20mA,但40引脚及以上单片机整个芯片最大工作电流不要超过90mA。每个口的工作模式由PnM1和PnM0(n=0,1,2,3,4,5)两个寄存器的相应位来控制。单片机流水的实质是单片机各引脚在规定的时间逐个上电,使LED灯能逐个亮起来但过了引脚通电的时间后便灭灯的过程,实验中通过对I/O口的设置,来对8个LED灯进行控制,要实现逐个亮灯即将I/O某一端口的各端口逐一置零,中间使用时间间隔隔开各灯的亮灭。
三、实验内容:
1)新建keil工程,注意单片机型号,要产生HEX文件;
2)STC下载工具里记得添加单片机型号和相应的头文件“STC15F******”
3)编写代码实现单片机开发板四个流水灯依次点亮
四、实验主程序
#define MAIN_Fosc 22118400L
#include "STC15Fxxxx.H"
#define uchar unsigned char
uchar dat=0; uchar i;
void Timer0Init(void)
{
AUXR &= 0x7F;
TMOD &= 0xF0;
TL0 = 0xB0;
TH0 = 0x3C;
TF0 = 0;
}
void main()
{
Timer0Init();
P17=1; P16=1;
P46=1;P47=1;
while(1)
{
TR0 = 1;
if(TF0==1)
{
TF0=0;
P17=!P17; DelayMS(500);
P16=!P16; DelayMS(500);
P47=!P47; DelayMS(500);
P46=!P46; DelayMS(500);
}
}
五、实验结果及分析:
通过本次的实验熟悉keil仿真软件的使用。了解并熟悉单片机I/O口和LED 灯的电路结构,学会构建简单的流水灯电路。掌握C51中单片机I/O口的编程方法和使用I/O口进行输入输出的。
实验二、串口输出
一实验目的
1. 掌握ARM的串行口工作原理。
2. 学习并编程实现ARM的UART通讯。
3. 掌握S3C44B0X寄存器配置方法。
二实验原理
串行通信接口电路一般由可编程的串行接口芯片、波特率发生器、EIA与TTL 电平转换器以及地址译码电路组成。采用的通信协议有两类:异步协议和同步协议。随着大规模集成电路技术的发展,通用的同步(USRT)和异步(UART)接口芯片种类越来越多,它们的基本功能是类似的。采用这些芯片作为串行通信接口电路的核心芯片,会使电路结构比较简单。下面介绍了异步串行通信的基本原理、串行接口的物理层标准以及S3C44B0X串行口控制器。
异步串行方式是将传输数据的每个字符一位接一位(例如先低位、后高位)地传送。数据的各不同位可以分时使用同一传输通道,因此串行I/O可以减少信号连线,最少用一对线即可进行。接收方对于同一根线上一连串的数字信号,首先要分割成位,再按位组成字符。为了恢复发送的信息,双方必须协调工作。在微型计算机中大量使用异步串行I/O方式,双方使用各自的时钟信号,而且允许时钟频率有一定误差,因此实现较容易。但是由于每个字符都要独立确定起始和结束(即每个字符都要重新同步),字符和字符间还可能有长度不定的空闲时间,因此效率较低。
图1给出异步串行通信中一个字符的传送格式。开始前,线路处于空闲状态,送出连续“1”。传送开始时首先发一个“0”作为起始位,然后出现在通信线上的是字符的二进制编码数据。每个字符的数据位长可以约定为5位、6位、7位或8位,一般采用ASCII编码。后面是奇偶校验位,根据约定,用奇偶校验位将所传字符中为“1”的位数凑成奇数个或偶数个。也可以约定不要奇偶校验,这样就取消奇偶校验位。最后是表示停止位的“1”信号,这个停止位可以约定持续1位、1.5位或2位的时间宽度。至此一个字符传送完毕,线路又进入空闲,持续为“1”。经过一段随机的时间后,下一个字符开始传送才又发出起始位。
三、实验内容:
实验板上有USB接口,将该接口与PC机的串口连接,可以实现单片机与PC 机的串行通信,进行双向数据传输。本实验要求当PC机向实验板发送的字母在实验板上显示“Everything is ok!”并用串口助手工具软件进行调试。
四、实验主程序
#include "iap15w4k58s4.h"
#include "intrins.h"
#include "delay.h"
#include "uart.h"
void main()
{
DelayMS(100);
UartInit();
DelayUS(100);
while (1)
{
DelayMS(1000);
SendString("everything is ok!\r\n");
}
}
五、实验结果及分析
此次课程设计让我对电平转换和单片机串口通信知识有了更深入地了解,在其过程中我也初步掌握了一些技能,比如keil和protel的熟练使用。实验过程中很多问题出现了,但是我并没有灰心,而是更加坚定了前进的步伐,当最后信息成功地在PC机上显示时,那时的心情无法言语,希望以后能够以此为基础更好地学习。