




免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
STC15F2K60S2-01-IO跑马灯(寄存器版)基本操作本文将以流水灯为例,对STC15F2K60S2单片机的普通IO口的基本操作进行详细介绍。先看效果图:本例是通过控制开发板上D1、D2、D3、D4四个LED在一定时间内的亮与灭来实现流水灯的效果,下面我们来详细介绍一下实现的过程。打开开发板原理图,找到D1、D2、D3、D4这四个LED硬件原理图:从原理图中,我们不难发现,只要分别给P16、P17、P47、P46这四个IO一个低电平,对应的LED就会被点亮。那么怎么才能让STC15F2K60S2单片机这四个IO口输出低电平呢?虽然不简单,但也不是很复杂。首先,我们需要来配置这四个IO口的模式,从芯片手册上我们可以知道,STC15F2K60S2单片机的所有I/O口均可由软件配置成4种工作类型之一,即:准双向口/弱上拉、推挽输出/强上拉、仅为输入(高阻)或开漏输出功能,每个口用2个控制 寄存器中的相应位控制每个 引脚的工作类型。那么我们来先看P16、P17口,这两个IO口是在P1端口上,从STC提供的芯片手册上,我们可以看到P1口的配置如下:也就是说,P1口的四种工作类型,是通过设置P1M1、P1M0的值来确定的。这里我们演示流水灯用的是普通输入输出功能,也就是我们需要将P1M1、P1M0都设置成0就可以了!同样,P46、P47也是一样的设置:在这里就偷下懒,直接把所有I/O口都设置成准双向口了。说到这里,可能有人会有疑惑:如果我只需要将某个I/O口设置成准双向口,其他的I/O口要用作别的功能,那该怎么设置呢?这个很简单,我们只需要按位设置。举个例子,如果我们有这么一个需求,需要将P1.7为开漏,P1.6为强推挽输出,P1.5为高阻输入,其余I/O口均为准双向口,那么我们只需要如下设置即可:P1M1 = 10100000B;P1M0 = 11000000B;还需要提醒一下,虽然STC15F2K60S2单片机的每个I/O口在弱上拉/强推挽输出/开漏模式时,都能承受20mA的灌电流(还是要加限流电阻,如1K,560R,472R等),在强推挽输出时能输出20mA的拉电流(也要加限流电阻),但整个单片机的工作电流推荐不要超过90mA,即从MCU-VCC流入的电流建议不要超过90mA,从MCU-GND流出电流建议不要超过90mA,整体流出/流出电流建议都不要超过90mA。另外还需要特别说明的是,虽然STC15F2K60S2单片机的所有IO口上电复位后均为准双向/弱上拉模式,但是由于P1.7和P1.6口 还可以分别作为外部晶振或时钟电路的引脚XTAL1和XTAL2,所以,P1.7和P1.6上电复位后的模式不一定就是准双向口/弱上拉模式。当P1.7和P1.6作为外部晶体或时钟电路的引脚XTAL1和XTAL2使用时,其上电复位后的模式是高阻输入。接下来现在我们要开始写程序来实现流水灯的效果了。首先,我们一定要将单片机的头文件加载进来,因为头文件里给我们定义好了单片机所有管脚的所有地址及功能,我们在程序里只需要直接调用就好了。#include STC15Fxxxx.H该语句的功能是让链接器通过头文件里的函数声明找到函数实际代码所在的位置即所在的库文件,这样才能使用该函数的实际代码,函数的实际代码的实现过程是先让链接器通过头文件里函数的申明找到函数实际代码所在的位置即所在的库文件,再通过#include语句把链接器所找到的函数实际代码用链接器把函数的实际代码链接到当前文件即所要执行的程序。接下来,我们定义好主时钟频率:#define MAIN_Fosc 22118400L此处是通过使用预处理宏定义命令来定义的系统时钟,简单理解,就是相当于定义了一个常量MAIN_Fosc,然后给这个变量赋一个值22118400。接下来就开始写主函数的代码了:此处直接将所有IO口都配置成准双向口了,没有单独去配置了。IO口工作模式配置好了,就该来配置某一位IO口的输出状态了:之前从原理图上我们知道,要想LED亮灯,只需要将该IO口的状态设置成低电平模式就好了,那么单片机是如何实现的呢?其实很简单,我们只需要这样写就好了:P16 = 0;这样P16口就会被拉低了,对应的LED就会被点亮。同样,如果要让LED灭,只需要将P16口设置成高电平就好了,即:P16 = 1;其他的IO口均是同样的操作,在此就不多说了。写到这里,很多接触过单片机的人可能会疑惑,为什么我在这里可以直接写P16而不用先定义呢?别的单片机可是必须要先写:sbit P16= P16;才可以使用P16这个变量的哦!确实,我在主函数里没有先定义P16这个变量,那是因为在单片机的头文件里已经给我们定义好了:这就是我之前为什么要把头文件包含进去的原因。在主函数里,我们还看到用了一个delay_ms的延时函数,那么我们来看下这个函数的功能吧:从上图中我们可以看出,通过改变delay_ms()括号内的值,即可改变延时的时间。当然这个只是粗略的延时,精确延时可以通过定时器去实现,今后会做详细介绍。在文章最后还需要跟大家特别说明一下,当调用自定义函数时,若自定义函数是在主函数后面,则自定义函数需要先声明然后才能调用,声明方法很简单:void delay_ms(u8 ms);即可!若
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年心血管科常见心血管疾病影像学诊断模拟答案及解析
- 2025年传染病防控知识考察试卷答案及解析
- 生物医药发展新质生产力
- 2025年胃肠病学常见疾病诊治考核答案及解析
- 民族团结与家乡变化课件
- 2025年产科紧急情况处理演练答案及解析
- 2025年耳鼻喉科常见急性疾病处理策略模拟考试卷答案及解析
- 新质生产力的“三新”解读
- 2025年妇产科产前诊断常见问题考核模拟测试答案及解析
- 2025年肝胆外科胆囊息肉处理技术考试答案及解析
- 卒中防治中心建设情况汇报
- 遗体异地接收证明范本
- GB/T 42676-2023半导体单晶晶体质量的测试X射线衍射法
- (完整版)贵州三年级地方课程教案
- 临床基本检查方法和检查程序课件
- 红金消结片对“乳腺增生”的疗效观察
- 青海2023届高校毕业生就业报告出炉:医学和法学就业率最高
- 生理学 第九章 感觉器官的功能
- 静脉血栓栓塞症预防与护理课件
- 西门子低压电器快速选型手册
- 养羊与羊病防治技术课件
评论
0/150
提交评论