单片机课程设计

发布 2022-10-05 00:04:28 阅读 9478

以单片机为核心元件,设计一个中断应用系统。

设计要求:p0口接8个led,依次左移点亮;

按int1按钮时,8个led灯依次右移点亮;

按int0按钮时,8个led闪烁5次(int0优先)。

定时/计数器是微控制器中非常重要的外围模块。它不仅可以完成定时、计数功能,在新型微控制器还为其他模块提供了重要的硬件基础,如:对外部引脚上输入信号捕捉(频率检测)、对外输出某一频率的方波(输出比较)、控制电机转速的pwm(脉宽调制)等。

在mcs-51单片机内部具有两个完全相同的定时计数器t0、t1(采用加1方式计数),用以实现系统的定时、计数功能。在传统的计算机编程中,常常使用软件循环的方式产生所要求的延时功能,如前面程序中delay延时子程序。软件演示的缺点就意味着它占用的cpu的资源。

cpu靠消耗延时子程序中的指令运行时间来完成延时需要,这就意味着cpu此时不能去做其他任何的事情,降低了cpu的工作效率。

硬件定时计数器相当于为cpu配备了一个硬件手表,如果需要定时延时时,不需要cpu自己去数秒,而是借助手表定时时间到,这块手表就会议中断的方式来提醒cpu进行相应的操作。当然,cpu也可以以自己查询的方式来观察手表的定时时间到否,只是这种方式仍然会占用cpu的资源罢了。

使用定时计数器编程时的初始设定工作,可以概括为五个步骤:

1)根据要求设定定时计数器的工作方式(定时或者计数)

2)设定定时计数器的工作模式(四种模式之一)

3)计算并向定时计数器添加定时或计数的初值tc。

4)启动定时计数器开始工作(setb tr1或setb tr0)。

5)开放定时计数器的中断允许位(如果采用中断方式编程)。

定时器的功用是用来确定时间。如果要求单片机在一定的时间后产生某种控制,可将定时器/计数器设为定时器。如下图1,将定时/计数器t0设为定时器,实际上就是将定时/计数器与外部中断断开,而与内部信号接通,对内部信号进行计数。

图1 单片机定时器用法示意图。

计数器的功能是用来计数。在单片机内有一个定时/计数器t0,可以用编程的方法将它设为计数器,当作计数器用时,它有16位,最大计数值216=65536。当脉冲信号输入时,计数器对脉冲进行计数,计数达到最大值65536时,计数器溢出,会输出一个中断请求信号到中断系统,中断系统接受中断请求后,执行中断子程序。

任意计数的方法与任意定时的方法类似,也是先进行预先置数,然后才开始计数。

定时器/计数器控制寄存器tcon

寄存器tcon的功能主要是接收各种中断源送来的中断请求信号,同时也对定时器/计数器进行启动/停止控制。寄存器tcon的字节地址是88h,它有8位,每位均可进行位寻址。

各位的地址和名称如下:

图2tf0和tf1:分别是定时器/计数器0和1的中断请求标志位。当定时器/计数器工作产生溢出时,会将tf0或tf1位置“1”,表示定时器/计数器有中断请求。

tr0和tr1:分别是定时器/计数器0和1的启动/停止位。在编程时,若将tr0或tr1设置为“1”,那么相应的定时器/计数器就开始工作,若设置为“0”,相应的定时器/计数器则会停止工作。

ie0、ie1、it0、it1:用作中断的控制。

在单片机复位时,寄存器tcon的各位均为“0”

工作方式控制寄存器tmod

寄存器tmod的功能是控制定时器/计数器t0、t1 的工作方式和操作模式。寄存器tmod的字节地址是89h,高4位用来控制定时器/计数器t1,低4位用来控制定时器/计数器t0,它们对定时器/计数器t1、t0的控制功能一样。在上电(给电路加电源)和复位时,寄存器tmod中的数据为00h。

不可以对它进行位操作。寄存器tmod各位的名称如下:

图3下面以高4位控制定时器/计数器t1为例来说明各位的具体功能:

gate:门控位,用来控制计数器的启动是否受外部中断请求信号的影响。gate=1,计数器1的启动受芯片引脚int1 (p3.

3)的控制,即除了需要将寄存器tcon的tr1位置“1”外,还要使引脚int1为高电平;gate=0,只要寄存器tcon的tr1位置“1”,就可以启动t1开始工作。

:定时、计数功能设置位。 c/t=0,将定时器/计数器设置为定时器工作方式;c/t=1,将定时器/计数器设置为计数器工作方式。

m1、m0位:定时器/计数器工作方式选择位。m1、m0位取不同值得组合,可以将定时器/计数器设置位不同的工作方式。m1、m0位不同取值与定时器/计数器工作方式的关系见下表:

图4本课题主要是使用定时/计数器作为延时控制,让三盏灯实现交替闪烁。其中应用了t1的汇编程序,并使用到对定时器初值的计算、方式及模式设定等初始化方法,同时这一课题也对秒脉冲的设计打下了良好的基础。

本课题主要是基于汇编语言的简单的定时/计数器的应用。首先,通过本课题我们可以对at89c51单片机有初步了解,并对定时/计数器的定义和应用有所掌握,为将来单片机的学习也有很大帮助。再者,本课题可以加深到一些实用性很强的硬件设施中去,比如节日彩灯,交通灯,机器用的信号灯,等等。

在完成本课题的基础上我们又可以对深层次实用性强的单片机课题进行探索和研究。所以说,对本课题的研究有着深远的意义。

如图5所示。nn

nn图5振荡器和时钟电路用于产生单片机正常工作时所需要的时钟信号。时钟电路一般包括内部时钟模式和外部时钟模式。本课题使用内部时钟模式:

内部时钟模式是采用单片机内部振荡器来工作的模式,51系列单片机内部半酣一个高增益的单机反相放大器,引脚xtal1和xtal2分别为片内反相放大器的输入端和输出端口,其工作频率为0—33mhz。对于intel公司的8051,工作频率为1.2—12mhz。

当单片机工作与内部时钟模式的时候,只需要在xtal1和xtal2连接一个晶体振荡器或者陶瓷振荡器,并接两个电容后接地即可,使用时对于电容的选择有一定的要求,具体要求如下:

当外接晶体振荡器的时候,电容值一般选择c1=c2=30±10pf;

当外接陶瓷振荡器的时候,电容值一般选择c1=c2=40±10pf;

在本课题中采用晶体振荡器,故选择30pf的电容c1和c2。如下图所示。

图6在复位状态下,cpu和整个硬件资源,特别是特殊功能寄存器都处于初始化的状态。

单片机复位的原理是在时钟电路开始工作后,在单片机的rst引脚世家24个时钟振荡脉冲(即两个机器周期)以上的高电平,单片机便可以实现复位。复位器件,单片机的ale引脚的psen引脚均输出高电平。当rst引脚从高电平跳变到低电平后,单片机便从0000h单元开始执行程序。

本课题中为使用手动加上电复位电路,如下图所示:

图7按照课题要求,使用p0.0,p0.1,p0.2三个输出端口,接上高电平形成回路。如下图所示:

图8前文中已经有提到过,本课题应用的单片机是at89c51,该硬件设计中包括电源电路、复位电路、led发光二极管显示电路。电路元器件可在proteus界面中library中查询并插入电路。

所用原件如下图所示:

图9 所用原件。

完整电路图如图所示:

图10系统源程序: org 0000h

ljmp main

org 0100h

main: mov sp, #60h ;初始化堆栈。

mov tmod, #010h ;使用十六位模式[方式2 m1=1 m0=0]

mov th1, #3ch ;初始化定时器1的溢出时间为50ms

mov tl1, #0b0h ;th为高位,tl为低位

setb tr1启动定时器1

setb p0.0

clr p0.1

setb p0.2

mov r7,#00h ;用r7计数。

mov r1,#00h

单片机课程设计

可变程序控制器是集微机技术 自动化技术 通讯技术于一体的通用工业控制装置。它可靠性强 性能 比高 使用方便,已在工业控制的各个领域里得到了极为广泛的应用,成为实现工业自动化的一种强有力的工具 1 plc的定义有许多种。国际电工委员会 iec 对plc的定义是 可编程控制器是一种数字运算操作的电子系统...

单片机课程设计

目录。内容提要2 关键词2引言3 一 硬件电路设计3 一 电路板原理3 二 电路元器件3 二 软件设计3 一 秒钟设计方案3 二 时钟设计方案4 结语7单片机时钟设计。内容摘要 一 在实验板上用动态扫描显示00 59秒钟,具体要求如下 一 6m晶振 二 l9 l10显示00 59十进制数并循环,间隔...

单片机课程设计

1 选题背景。1.1 家庭智能防盗报警系统设计的背景及目的。随着经济的发展,人们对防盗 防劫 防火保安设备的需求量大大增加。针对偷盗 抢劫 火灾 煤气泄漏等事故进行检测和报警的系统,其需求也越来越高。家居智能是以家为平台,兼备建筑 自动化,智能化于一体的高效 舒适 安全 便利的家居环境。自动化的家居...