《单片机原理与接口技术》 课件 2.7 IAP15F2K61S2单片机的IO口程序设计实例_第1页
《单片机原理与接口技术》 课件 2.7 IAP15F2K61S2单片机的IO口程序设计实例_第2页
《单片机原理与接口技术》 课件 2.7 IAP15F2K61S2单片机的IO口程序设计实例_第3页
《单片机原理与接口技术》 课件 2.7 IAP15F2K61S2单片机的IO口程序设计实例_第4页
《单片机原理与接口技术》 课件 2.7 IAP15F2K61S2单片机的IO口程序设计实例_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二章C51

程序设计基础2.7

IAP15F2K61S2单片机的I/O口程序设计实例单片机原理与接口技术任务1

点亮发光二极管任务要求:点亮8个发光二极管,在上电时关闭继电器、轰鸣器。知

识点

:1.发光二极管限流电阻的选择。2.74HC573

、74HC138

、ULN2003

的使用。3.继电器、轰鸣器的工作原理及控制。一、发光二极管(LED)限流电阻的选择LED具有许多优点,它不仅有工作电压低(1.5~3

V)、体积小、寿命长、可靠性高等优点,而且响应速度快(≤100ns)、亮度比较高。一般LED的工作电流选在5~10mA,

不允许超过最大值(通常为50mA)。VCC10pIN3STEPDGNDIN7GND10ULN2003M74HC573MIRU25BY5Y5CJI3P42/WR74HC02U6

VCCGND

11OE

VCC

LED2

Q1Q2D3

Q3

D4Q4D5

Q5

D6

Q6D7

Q7

D8Q8GND2019

R风

R32

1k

v=C2310pP00P01P0223418

RR

L2自

R33

Ik17

民LED

R40

1kP03

5D

P04

616LBKK

R41

Ik15

LeD

RR

15R42

1kP05

714R

LED

R43IkP06

813

只R

17

LBD

R44

IkP07

912

18

LED

R45

Ik10LEDvCC

SP1NBUZZBUZZERGNDU25D74HCO2U24Y2Y3Y4Y6G2B74HC138U25A74HC02U25C74HC02LED

模块电路图NRELAYDIODEmlm2vccOUT1OUT2OUT3OUT5OUT6OUT7COMP25P27二VCC

GNDY7WRY6WRY4C.GN191817161514二

13二GND

KIQ1

Q2Q3

Q4Q5

Q6Q7

Q8DID3D5

D6D7

D8P02

P03

P04P05

P06Y4WRM74HC573MIRRELAY-SPDTU10

IN1IN5

IN6N

RELAYGNDY7CccWROE2016二、工作原理分析任务1要求:点亮开发板的8个发光二极管,上电时关闭继电器、轰鸣器。1.74HC138

译码器电路74HC138译码器是一款高速CMOS器件,其引脚兼容低功耗肖特基TTL(LSTTL)系列。可接受3位二进制加权地址输入

(C

、B

、A,C

是高位),U25B74HCO2U25D1274HC02U24Y0Y2Y3Y4Y5G2B74HC138Y5CJ13P42/WRGNDU25A74HCO2U25C74HCO2Y7WRY6WRY5WRY4WRVCCGNDY7CG1、G2A、G2B三个引脚为使能端,

G1G2A

G2B=100时,74HC138

工作,此时,74HC138

提供8个互斥的低电平有效输出

(Y~Y₇)。开发板上74HC138

C、B

、A

分别由P2.7

、P2.6

、P2.5。Y5CJ13P42/WRCON3U25B74HCO2U25D1274HC02U24Y0Y¹Y3Y4Y5Y774HC138U25A74HCO2U25C74HCO2Y5WRY4WRY7WRY6WRY7CY6CP27VCCGNDM74HC573M1R锁存器为八路3态输出的非反转透明锁存器,OE引脚为输出使能端,LE

引脚为锁存使能端。当LE

为高电平时,输出同步,当LE

为低电平时,符合建立时间和保持时间的数据将会被锁存二

、工

作原理分析任务1要求:点亮开发板的8个发光二极管,上电时关闭继电器、轰鸣器。2.74HC573

锁存器电路ysC.10pPO4二

P0510pQ414R40

R41Ktevc1918171615二13STEPANRELAY

NMOTOR10M74HC573MIRVCCQ1

Q2Q3

Q4Q5

Q6Q8OUTIOUT2

OUT3

OUT4

OUT5

OUT6

OUT7COMDI

D2D4

D5D6

D7D8IN6IN7GNDM74HCS573MIRULN2003U6输入输出LED0~D7Q0~Q7HXX高阻LLX不变LOEHLLLHHH电路中,M74HC573M1R(U6)锁存器的锁存使能端Y4C=Y4+WR

。编程采用IO

模式,即将J13

2

3

,WR=0

。Y₄是译码器输入P2.7~P2.5

100时的有效输出。当=0时,Y4C=1,M74HC573M1R(U6)锁存器工作。

通过P0

口即可控制LED

的亮灭情况。二、工作原理分析任务1要求:点亮开发板的8个发光二极管,上电时关闭继电器、轰鸣器。3.ULN2003

达林顿阵列芯片电路GNDRELAY-SPDTNRELAYDIODESTEPA_RELAYvccU10IN1IN2IN3IN4IN5IN6IN7GNDULN2003GNDPO0P02二P04P05P06P0710U9LED1D2D3D4D5D6D7D8GNDYSCC26

10pGNDOUT1

OUT2OUT3

OUT4OUT5

OUT6OUT7COMVCCQ1

Q2Q3

Q4Q5

Q6Q7

Q820191817二16二151615109M74HC573M1R电路中ULN2003的作用是驱动继电器

(K1)和轰鸣器

(

BUZZER)。ULN2003

是一款高耐压、大电流驱动反向器件,由7个NPN达林顿管组成,单个达林顿管集电极可输出500mA

电流,每个都有内置2.7K

基极电阻,在5V

的工作电压下,它能与TTL

和CMOS

电路直接相连。常用于单片机、PLC等控制电路,能直接驱动继电器、显示屏、步进电机等负载。当Y5C=1,M74HC573M1R(U9)锁存器

工作。蜂鸣器一端接VCC,

只需给另一端

给高电平则不响,即令P06=0。继电器一

端接VCC,

只需给另一端RELAY

给高电平则

不吸合,即令P04=0。

故PO赋值为0。vcRELAY-SPDTNRELAYDIODEGND1P00P02二P04二10INIIN3IN5IN7GNDULN2003YSC.10pGNDSTEPASTEPCNMOTOROED5D7GNDVCCQ2

Q3Q4

Q5Q7

Q8OUT2OUT4

OUT5OUT6

OUT7COM201918二16二144.程序设计流程要点◆分时控制两个锁存器U6、U9,

避免同时工作冲突。◆保留P2.0~P2.4(低5位)数据,不影响外围设备,通过P2&0x1F实现数据保留。◆锁存器选择指令:控制U6:P2

=(P2&Ox1F)|0x80(0x80为U6

选通地址,与保留的低5位数据组合)控制U9:P2=(P2&Ox1F)|0xAO(0xA0为U9

选通地址,与保留的低5位数据组合)程序如下:

#include"STC15F2K60S2.h"//IAP15F2K61S2单片机对应的头文件

void

jf_init()//继电器和轰鸣器初始化函数P2=(P2&0x1f)|0xa0;//Y5C=1,

打开锁存器U9P0=0;P2&=0x1f;//Y5C=0,

关闭锁存器U9void

main()jf_init();//

关闭继电器和轰鸣器P2=(P2&0x1f)|0x80;//Y4C=1,关闭锁存器U6while(1)P0=0;//LED

亮请同学们编译并调试程序,观察运行效果。)

t任务2

LED流水灯控制任务要求:将开发板上的8个发光二极管间隔400

ms依次循环左移、右移点亮,每次只有一个LED亮。上电关闭继电器、轰鸣器。知识点:1.软件延时函数测试。2.循环移位函数的使用。RegistermaincBegister

Ydlue7define

u16unsigned

int

调趣试式8

kdefine

u8unsigned

char9

vo

id

jf_init()//继电器和轰鸣器初始化函数

10日(11

P2=(P260x1f)10xa0;//Y5C=1,打开锁存器U912

P0=0;13

P25=0x1f;//Y5C=0,打开锁存器U9

14-115

void

delay(u16k)

//0.2ms延时函数

16日17

u16i,j;18

for(i=k;i>0;i--)19

for(j=182:j>0:j--);20L21

void

main()

22日1D

23

jf_init(;

/

/

关闭

继电

器24

P2=(P260x1f)10x80;//Y4C=1,打开锁存器U625

while(1)26白

(27

PO=0;

/

/

L

E

D电

亮28

delay(1);R20rIr2r3r4r6r7回Sysraur1床一办tstatet8e出

p0a00

运行0x000:00Dm000x000:00Da000:000n00a00Dr07Ox07C:0:00030x00D00007760.000064670x00回Pajec三Registers一、软件延时函数测试CUseryadminDesktop

(单片机程序实例2LED2DSV1i

vproi-Vhslon Build

Time

Elapsed:00:00:01图2.12LED闪烁调试界面Build

Output

".AObjects\1"-0Error(s),0Warning(8)。■

电.\Objects\1"-0Error(s),0Warning(s),

Bui1dTimeElapsed;00:00:01第

遇可如

中☆

谭律胆振酷

B000

·

□··棚·

四·

菌·Registers

4区maineReristerValue

12P0=0;P26=0x1f;//Y5C=0,打开锁存器U9L}voiddelay(u16

k)//0.2ms延时函数日u16i,j;for(i=k;i>0;1--)for(j=182;j>0;j--);Lvoid

main()日

(jf_init();//关闭继电器和轰鸣器P2=(P260x1f)10x80;//Y4C=1,打开锁存器U6while(1)(

PO=0;//LE

D电点

delay(1);PO=

0xff

;7/LED熄灭delay(1);Regsr0r1r2r3r4r5r6r7Sys却ArC

sur1dptrstatese0=00Dx00Ox000=00Ox000x000x000x000x000m07Ox09C:0x0017Ox00Ox0000

32170000601314151617181920212223242526日

2728团

2930313233回Pojet三RegistersBuldOutputP000tgistersVdlaeeg0=000r00Ox00Ox00Ox00000006742□已花费的时间·

□·

·

圈··

困··maine12

P0=0;13

P26=0x

1

f

;

/

/Y

5C

=

0

,

器U

9插入断点1v

id

delay(u16k)

//0.2ms

延时函数1

6日17

u16i,j;for

(i=k;i>0;i--)19

for

(j=

182;j>0;j--);21

void

main()22日

jf_init();

//关闭继电器和轰鸣器24

P2=(P2&0x1f)10x80;//Y4C=1,打开锁存器U625

while

(1)26日

P0=0;

//LED电点亮delay(1

);PO=0xff;//LED熄灭delay(1

);3132oLJcUsersladmin\Desktopv单片机程序实例2LEDA烁L1.uvpro]-pVisionil

Edt

iew

Projec

Flash

Debug

Peripherals

Tools

SVCs

Window

Helpd山可

吟2良

律课胜

@o

回·4ilda

Output.\Obyects\1”-0

Error(5),0Warning(s),a1ldTimeElapsed:00:00:01图2.13

(a)delay(1)语句执行前C:Usersladmin\Desktop\单片机程序实例2

LED内烟1.Avproj-μVisionFleEdtViewProjecFlashDebugPeripheralsTools

svcsWindowHelp图2.13(b)delay(1)语句执行后

风legisterr0

r1中日.二、循环移位函数的使用Keil编译系统提供的C51内部函数库有循环移位和延时等操作函数。内部函数的原型声明包含在头文件intrins.h中。本例实现循环左移和循环右移将用到C51库函数的“_crol_(c,b)”和“_cror_

(c,b)”两个函数。可以Keil界面中点击“Help”菜单,选择“uvisionhelp”,调出帮

助对话框,在搜索框输入关键字

“crol”,点回车,即得到搜索结果,选中需要查看的内容。⑧C51DevelopmentToos

×隐章

查找

上一步

前进

打印

选项O日录(Q

引搜家⑤

收健入关键字进行查找0McrolceldTLbrary

Routineerer_1LibraryRoutinecSEGA51AsemblerStatemertctypehcWORDDdadatDATAA51

Asembler

StatementDATABL51LinkerDirectiveDATEA51AssemblerDirectiveDBA51AssemblerStatementDBITA51AssemblerStatemert

DBYTEDD

A51Asembler

StatementDEBUGA51AssemblerDirectiveDEBUGe51Compiler

Directive

decDEFNEDEFINEA51AssemblerDirective

DEFNEc51CompilerDirectiveDefineddialogDIRDISABLEe51

Compler

Directve_crol_循环左移函数Summary*ineludeunsigneduanignedu58LgmedcLnrina.h>char_erol_

(

char

e,charb);1"charatertorotate

lefeDescription

The_crol_routinerotatesthebitpattermforthecharacterc

leftbits.Thisroutine

is

implemented

as

an

intrinsic

function.

Return

Value

The_crol_routne

retums

the

rotated

value

of

a.See

Also

cror,irolL,iror,IroL,Irorinelude

(Intrins,hvoidtest_erol

(vo1dchar

a:char

b:0xA5;b-_erel_

(a,3):1CopyrightOKail,An

ARM

Cempany.Al

rghts

reserved.)("Bnew

1a

Gx2D//bit

posit1cna

to

zotate

/Example{for(i=0;i<8;i++){P0=_crol_(0xfe,i);//

初始值为0xfe,点亮L1delay(2000);//400ms}P0=0xff;delay(2000);//400msfor(i=0;i<8;i++)PO=_cror_(0x7f,i);//0xfe;delay(2000);P0=0xff;delay(2000);请同学们编译并调试程序,观察运行效果。u8

i;jf_init();P2=(P2&0x1f)|0x80;//Y4C=0;

while(1)三、main函数voidmain()任务3

存储器映射编程方法任务要求:采用MM模式(存储器映射扩展方式),修改【例2.2】。知识点:1.存储器映射编程方法原理。2.接口电路的地址计算。一、工作原理分析MM模式实际上是存储器映射编程,是一种可以像操

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论