单片机.docx
- 文档编号:1442218
- 上传时间:2022-10-22
- 格式:DOCX
- 页数:17
- 大小:50.83KB
单片机.docx
《单片机.docx》由会员分享,可在线阅读,更多相关《单片机.docx(17页珍藏版)》请在冰豆网上搜索。
单片机
《单片机实验报告》
姓名:
成灏
学号:
1345533106
班级:
13电气1班
专业:
电气工程及其自动化
学院:
电气与工程信息学院
实验一、流水灯
一、实验目的
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)编写代码实现单片机开发板四个流水灯依次点亮
四、实验主程序
#defineMAIN_Fosc22118400L
#include"STC15Fxxxx.H"
#defineucharunsignedchar
uchardat=0;uchari;
voidTimer0Init(void)
{
AUXR&=0x7F;
TMOD&=0xF0;
TL0=0xB0;
TH0=0x3C;
TF0=0;
}
voidmain()
{
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机向实验板发送的字母在实验板上显示“Everythingisok!
”并用串口助手工具软件进行调试。
四、实验主程序
#include"iap15w4k58s4.h"
#include"intrins.h"
#include"delay.h"
#include"uart.h"
voidmain()
{
DelayMS(100);
UartInit();DelayUS(100);
while
(1)
{
DelayMS(1000);
SendString("everythingisok!
\r\n");
}
}
5、实验结果及分析
此次课程设计让我对电平转换和单片机串口通信知识有了更深入地了解,在其过程中我也初步掌握了一些技能,比如keil和protel的熟练使用。
实验过程中很多问题出现了,但是我并没有灰心,而是更加坚定了前进的步伐,当最后信息成功地在PC机上显示时,那时的心情无法言语,希望以后能够以此为基础更好地学习。
实验三、定时器的应用
一、实验目的:
熟悉keil仿真软件、protues仿真软件的使用和单片机定时程序的编写。
了解15单片机中定时、计数的概念,熟悉15单片机内部定时/计数器的结构与工作原理。
掌握中断方式处理定时/计数的工作过程,掌握定时/计数器在C15中的设置与程序的书写格式以及使用方法。
二、实验原理
STC15单片机内部有2个16位的定时/计时器T0和T1。
它们即可用作定时器工作方式,又可由于计算器工作方式。
其中T0由TH0和TL0计数器构成;T1由TH1和TL1计数器构成。
工作于定时器方式时,通过对机器周期的计数来实现定时。
TMOD是定时/计时器的工作方式寄存器,由它确定定时/计时器的工作方式和功能;TCON是定时/计时器的控制寄存器,用于控制T0、T1的启动与停止以及记录计数计满溢出标志;AUXR称为辅助寄存器。
其中T0x12、T1x12用于设定T0、T1内部技术脉冲的分频系数。
P3.4、03.5分别为定时/计时器T0、T1的外部计数脉冲输入端。
三、实验内容
用STC15单片机定时/计数器实现:
连续输入5个单次脉冲使单片机控制的LED灯状态翻转一次。
四、实验主程序
#include"STC15F2K60S2.H"
sbitled=P1^6;
voidTimer1Init(void)
{
TMOD&=0x40;
TL1=0xFB;
TH1=0xFF;
TR1=1;
}
voidmain()
{
Timer1Init();
while
(1)
{
while(TF1==1);
TF1=0;
led=!
led;
}
}
5、实验结果及分析
本实验是通过定时器来达成在LED数码管从00秒到59秒的显示过程的。
首先,利用定时器先实现定时100ms,在累计记数到10次后就得到了1秒的效果,接着在LED数码管上相应的显示01,当到09时把十位记上1,以此类推得到在LED数码管上从00显示到59,最后,再置00。
这样就达到了实验效果。
通过本次LED数码管进行51定时器实验,让我知道了对教材应该熟悉,因为教材是基础的,只有把基础的搞好了才能够进行其它层次的学习。
其次此次试验我还懂得了有时候可以通过软件的仿真来验证书上的一些理论行的东西。
通过C语言的编程,对LED灯的控制及51定时器的应用让我对单片机理解更加明了。
实验四、中断:
定时器中断、外部中断
一、实验目的
1、掌握15单片机定时器基本知识;
2、掌握定时器的基本编程方法;
3、学会使用定时器中断。
2、实验原理
外部中断通过IT0、IT1来设置中断请求的触发方式。
当IT0/1为1时,外部中断0为下降沿触发;当IT0/1为0时,无论是上升沿还是下降沿,都会引发外部中断0。
一旦输入信号有效,则置位IE0/1标志,向CPU申请中断。
定时/计数器T0/T1溢出中断:
当定时/计数器T0/T1溢出中断时,定时/计数器T0/T1中断请求标志位TF0/1置位,向CPU申请中断。
一个完整的中断过程包括4个步骤:
中断请求、中断响应、中断服务与中断返回。
三、实验内容:
1、外部中断:
按INT0键第四个灯取反;
按INT1键第一个灯取反。
2、定时器中断:
单片机开发板上的四个灯每隔1秒取反一次即亮灭一次;
四、实验主程序:
1、外部中断:
#include"STC15Fxxxx.H"
sbitled1=P1^6;
sbitled4=P4^7;
voidmain()
{
P1M1=0;P1M0=0;//设置为准双向口
P4M1=0;P4M0=0;//设置为准双向口
IT0=1;//中断0下降沿触发
IT1=1;//中断1下降沿触发
EA=1;//全局中断开
EX0=1;//外部中断0开
EX1=1;//外部中断1开
while
(1)
{
//在此添加其他程序
}
}
voidISR_Key0(void)interrupt0using1
{
led1=~led1;//INT0按下触发一次,led1取反一次
}
voidISR_Key1(void)interrupt2using1
{
//INT1按下触发一次,led4取反一次
led4=~led4;
}
2、定时器中断:
#include"STC15Fxxxx.H"
#defineuintunsignedint
uinttime_0;
sbitled1=P1^6;
sbitled2=P1^7;
sbitled3=P4^6;
sbitled4=P4^7;
voidTimer0Init(void)//5毫秒@11.0592MHz
{
AUXR|=0x80;//定时器时钟1T模式
TMOD&=0xF0;//设置定时器模式
TL0=0x00;//设置定时初值
TH0=0x28;//设置定时初值
TF0=0;//清除TF0标志
TR0=1;//定时器0开始计时
EA=1;//开放CPU中断
ET0=1;//开放T0中断
}
voidmain()
{
P1M1=0;P1M0=0;//设置为准双向口
Timer0Init();
while
(1)
{
if(time_0==200)
{time_0=0;
led1=~led1;//led1取反一次
led2=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机