摘要:本文介绍了在89c51单片机系统中设计外部中断流水灯、蜂鸣器的一种方法。
关键词:中断;LED;蜂鸣器
一、设计目标
通过本次课题设计,应用《单片机原理及应用》等所学相关知识及查阅资料,完成简易的外部中断设计,以达到理论与实践更好的结合、进一步提高综合运用所学知识和设计的能力的目的。达到巩固、充实和综合运用所学知识解决实际问题的目的。
通过本次设计的训练,可以使我在基本思路和基本方法上对基于STC-89C52单片机的嵌入式系统设计有一个比较感性的认识,加深对理论方面的理解。了解软硬件的有关知识,并掌握软硬件设计过程、方法及实现,并具备一定程度的设计能力。为以后设计和实现应用系统打下良好基础。
二、采用设备
由于单片机集成了运算器电路、控制电路、存储器、中断系统、定时器/计数器以及输入/输出口电路等,所以用单片机设计控制电路省去了很多分立元器件。由于单片机是可编程芯片,并且它可以运用C语言编写,对于一些功能,可以调用C语言库函数。使编写程序变得非常简单。所以该课题用单片机实现,不仅功能易于实现,而且精确度高,稳定性好,抗干扰能力强。并且由于其成本低、体积小、技术成熟和功耗小等优点,且技术比较成熟。性价比也相当高。
综上所述,并通过各个方面综合比较为达到最佳效果。我采用本系统就是充分利用了89C52芯片的I/O引脚。系统以采用52系列单片机STC-89C52为中心器件来设计的外部中断,实现了中断程序为LED灯灭、蜂鸣器响声停止功能,中断程序由本人独立完成。
三、设计的原理
3.1、用89C52单片机试验仪来实现
本课题用到的是89C52单片机试验仪,主要元件为89C52单片机、LED灯,键盘,蜂鸣器等。
89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的89C52单片机可提供许多较复杂系统控制应用场合。
89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线, 89C52可以按照常规方法进行编程,但不可以在线编程。
图1.AT89C52引脚图
3.2 中断传送方式:
中断方式则是在外设为数据传送做好准备之后,就向CPU发出中断请求信号(相当于通知CPU)。CPU接收到中断请求信号之后立即作出响应,暂停正在执行的原程序(主程序),而转去外设的数据输入输出服务,待服务完之后,程序返回。CPU再继续执行被中断的原程序。
外部中断
外部中断是指从单片机外部引脚输入请求信号。输入/输出的中断请求、实时事
件的中断请求、掉电和设备故障的中断请求都可以作为外部中断源,从引脚INT0、INT1输入。
外部中断请求、有两种触发方式:电平触发及跳变(边沿)触发。这两种触发方式可以通过对特殊功能寄存器TCON编程来选择。
3.3实现控制LED和蜂鸣器的原理
LED灯为共阳极接法,其阴极分别接P0口的八个输出。P0口各位送低电平,对应各口的LED灯亮。蜂鸣器有P1.5口控制,低电平时响,高电平时不响。P0口作为输出口,用来控制LED的亮灭,要使其亮只需要让P0.0-P0.7口保持低电平 就可以使8个灯亮起来。同时通过P1.5端控制蜂鸣器发生,当1.5输出低电平时候使蜂鸣器发出声音,按下按键可调节P0的高低电平,从而控制程序中LED灯的亮灭和蜂鸣器的声音。
四、逻辑电路图
4.1LED小灯原理图
4.2扬声器原理图
图3. 扬声器电路
4.3单片机的独立按键原理图
图4. 独立按键电路图
五、软件设计
5.1、C语言的特点及选择
C语言它把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像汇编语言一样对位、字节和地址进行操作, 而这三者是计算机最基本的工作单
元。语言简洁,使用方便,灵活,运算丰富,表达化类型多样化,数据结构类型丰
富,具有结构化的控制语句,程序设计自由度大,有很好的可重用性,可移植性等
特点。在本设计中采用C语言编写软件程序。
5.2 程序代码
#include
void delay(int z) { }
void main() { }
TCON=0;//TCON取值0或1时,对中断的现象不同 EA=1; //开总中断 EX0=1; //开外中断 0 while(1) { P0=0; }
delay(6000); //延时 P0=0xFF;
delay(6000); //延时
for(m=0;m