单片机Word格式文档下载.docx

上传人:b****1 文档编号:14358050 上传时间:2022-10-22 格式:DOCX 页数:17 大小:50.83KB
下载 相关 举报
单片机Word格式文档下载.docx_第1页
第1页 / 共17页
单片机Word格式文档下载.docx_第2页
第2页 / 共17页
单片机Word格式文档下载.docx_第3页
第3页 / 共17页
单片机Word格式文档下载.docx_第4页
第4页 / 共17页
单片机Word格式文档下载.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

单片机Word格式文档下载.docx

《单片机Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《单片机Word格式文档下载.docx(17页珍藏版)》请在冰豆网上搜索。

单片机Word格式文档下载.docx

每个口的工作模式由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;

P47=!

P47;

P46=!

P46;

}

}

五、实验结果及分析:

通过本次的实验熟悉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!

”并用串口助手工具软件进行调试。

iap15w4k58s4.h"

intrins.h"

delay.h"

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灯状态翻转一次。

STC15F2K60S2.H"

sbitled=P1^6;

voidTimer1Init(void)

{

=0x40;

TL1=0xFB;

TH1=0xFF;

TR1=1;

Timer1Init();

while(TF1==1);

TF1=0;

led=!

led;

本实验是通过定时器来达成在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秒取反一次即亮灭一次;

四、实验主程序:

sbitled1=P1^6;

sbitled4=P4^7;

P1M1=0;

P1M0=0;

//设置为准双向口

P4M1=0;

P4M0=0;

IT0=1;

//中断0下降沿触发

IT1=1;

//中断1下降沿触发

EA=1;

//全局中断开

EX0=1;

//外部中断0开

EX1=1;

//外部中断1开

//在此添加其他程序

voidISR_Key0(void)interrupt0using1

led1=~led1;

//INT0按下触发一次,led1取反一次

voidISR_Key1(void)interrupt2using1

//INT1按下触发一次,led4取反一次

led4=~led4;

#defineuintunsignedint

uinttime_0;

sbitled2=P1^7;

sbitled3=P4^6;

voidTimer0Init(void)//5毫秒@11.0592MHz

AUXR|=0x80;

//定时器时钟1T模式

//设置定时器模式

TL0=0x00;

//设置定时初值

TH0=0x28;

//清除TF0标志

TR0=1;

//定时器0开始计时

//开放CPU中断

ET0=1;

//开放T0中断

P1M1=0;

Timer0Init();

while

(1)

if(time_0==200)

{time_0=0;

led1=~led1;

//led1取反一次

led2=

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 化学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1