当前位置:文档之家› 单片机例题

单片机例题

单片机例题
单片机例题

定时/计数器应用1

本题要求:AT89C51单片机扩展16KB外部程序存储器,目代码存放于外部存储器中,P1.0口接一个发光二极管,编写程序,控制发光二极管闪烁,时间间隔1s,采用AT89C51内部定时器计时。

基础知识:关于内部计数器的编程,主要是定时常数的设置和有关控制寄存器的设置。内部计数器在单片机中主要有定时器和计数器两个功能。本题目使用的是定时器,定时1s。CPU运行定时中断方式,实现每1s输出状态发生一次反转,即发光管每隔1s亮一次。

定时器有关的寄存器有工作方式寄存器TMOD和控制寄存器TCON。TMOD 用于设置定时器/计数器的工作方式0~3,并确定用于定时还是计数。TCON主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。

内部计数器用作定时器时,是对机器周期计数。每个机器周期的长度是12个振荡器振荡周期。本题中单片机晶振采用12MHz,定时/计数器工作于方式2(8位自动重装方式)定时器,定时器100微妙中断一次,所以定时常数的设置可按以下方法计算:

机器周期=12/12MHz=1μs

(256?定时常数)×1μs=100μs

定时常数=156。然后对100微妙中断次数计数10000次,就是1s。

在本题的中断处理程序中,因为中断定时常数的设置对中断程序的运行起到关键作用,所以在置数前要先关对应的中断,置数完成之后再打开相应的中断。

在Proteus ISIS编辑环境中按表1所列的元件清单添加元件,并在Proteus ISIS 的编辑区域中按图1所示的原理图连接硬件电路。

表1 元件清单

元件名称所属类所属子类

AT89C51 Microprocessor ICs 8051 Family

CAP Capacitors Generic

CAP-POL Capacitors Generic

CRYSTAL Miscellaneous

RES Resistors Generic

BUTTON Switches & Relays Switches

LED-YELLOW Optoelectronics LEDs

NOT Simulator Primitives Gates

图1 电路原理图

1、程序流程

主程序

定时器中断服务程序

2、源程序

定时/计数器应用2

本题要求:用AT89C51单片机的定时/计数器T0产生2s的定时时间,每当2s定时到来,更换指示灯闪亮,每个指示灯闪亮的时间为0.2s。即,开始D1指示灯闪亮0.2s,当2s定时到来之后,D2开始闪亮0.2s,如此循环,0.2s的闪亮时间也由定时/计数器T0来完成。扩展32KB外部程序存储器,目代码存放于外部存储器中。

基础知识:AT89C51单片机的内部16位定时/计数器是一个可编程定时/计数器,它既可以工作在13位定时方式,也可以工作在16位定时方式和8位定时方式。只要通过设置特殊功能寄存器TMOD,即可完成。定时/计数器的启动时间也是通过软件设定TCON寄存器来完成的。

本题目中选择16位定时工作方式,对于T0来说,最大定时65536μs,即65.536ms,无法达到所需的2s定时,须通过软件来处理这个问题。若取T0的最大定时为50ms,即要定时1s需经过40次的50ms的定时。对于这40次可以采用软件方法来统计。因此,设定TMOD=00000001B,即TMOD=01H。

要给T0定时/计数器的TH0,TL0装入预置初值,通过下面的公式可以计算

?

TH0=(2 ?50000)256

TL0=(2 ?50000) MOD 256

定时2s,采用16位定时50ms,共定时40次才可达到2s,每50ms产生一次中断,定时的40次数在中断服务程序中完成,同样,对于0.2s的定时,需要4次中断才可达到0.2s。由于每次2s定时完成时,D1~D4要交替闪亮。采用ID 号来识别,当ID=0时,D1闪亮;当ID=1时,D2在闪亮;当ID=2时,D3闪亮;当ID=3时,D4闪亮。

在Proteus ISIS编辑环境中按表1所列的元件清单添加元件,并在Proteus ISIS 的编辑区域中按图1所示的原理图连接硬件电路。

表1 元件清单

元件名称所属类所属子类

AT89C51 Microprocessor ICs 8051 Family

CAP Capacitors Generic

CAP-ELEC Capacitors Generic

CRYSTAL Miscellaneous

RES Resistors Generic LED-YELLOW Optoelectronics LEDs

图1 电路原理图

1、程序流程

2、源程序

定时/计数器应用3

本题要求:用AT89C51单片机的定时/计数器T0产生1s的定时时间,作为秒计数时间,当1s产生时,秒计数加1;秒计数到60时,自动从0开始。扩展32KB外部程序存储器,目代码存放于外部存储器中。

基础知识:AT89C51单片机的内部16位定时/计数器是一个可编程定时/计数器,它既可以工作在13位定时方式,也可以工作在16位定时方式和8位定时方式。只要通过设置特殊功能寄存器TMOD,即可完成。定时/计数器的启动时间也是通过软件设定TCON寄存器来完成的。

本题目中选择16位定时工作方式,对于T0来说,最大定时65536μs,即65.536ms,无法达到所需的1s定时,须通过软件来处理这个问题。若取T0的最大定时为50ms,即要定时1s需经过20次的50ms的定时。对于这20次可以采用软件方法来统计。因此,设定TMOD=00000001B,即TMOD=01H。

要给T0定时/计数器的TH0,TL0装入预置初值,通过下面的公式可以计算

?

TH0=(2 ?50000)256

TL0=(2 ?50000) MOD 256

一、硬件设计

在Proteus ISIS编辑环境中按表3所列的元件清单添加元件,并在Proteus ISIS 的编辑区域中按图3所示的原理图连接硬件电路。

表3 元件清单

元件名称所属类所属子类

AT89C51 Microprocessor ICs 8051 Family

CAP Capacitors Generic

CAP-ELEC Capacitors Generic

CRYSTAL Miscellaneous

RES Resistors Generic 7SEG-COM-CAT-GRN Optoelectronics 7-Segment Displays PULLUP Modelling Primitives Digital [Miscellaneous]

图3 电路原理图

二、程序设计

1、程序流程

2、源程序

PWM输出控制

本题要求:用电位器调节AT89C51的PWM输出占空比,将A/D转换后的数据作为延时常数。当电位器阻值发生变化时,ADC0808输出的值发生相应变化,进而调节单片机输出的PWM占空比。

基础知识:PWM是单片机上常用的模拟量输出方法,通过外接的转换电路,可以将脉冲的占空比变成电压。程序中通过调整占空比来调节输出模拟电压。占空比是指脉冲中高电平与低电平的宽度比。

一、硬件设计

在Proteus ISIS编辑环境,按表1所列的元件清单添加元件。按原理图连接硬件电路(包括晶振和复位电路)

表1 元件清单

元件名称所属类所属子类

AT89C51 Microprocessor ICs 8051 Family

CAP Capacitors Generic

CAP-ELEC Capacitors Generic

CRYSTAL Miscellaneous —

RES Resistors Generic

POT-HG Resistors Variable

ADC0808 Data Converters A/D Converters

二、程序设计 1、程序流程

2、源程序

1、单片机概述

1.1 8051单片机简介

1.2 8051引脚介绍

1.3 8051单片机定时/计数器

2、硬件设计

2.1 8051单片机振荡电路2.2 8051单片机复位电路

2.3 “题目要求的电路设计”

3、软件设计

3.1 程序流程图

3.2 源程序

4、设计结果

4.1 电路原理图

4.2 程序运行结果图

参考文献

相关主题
文本预览
相关文档 最新文档