具体功能实现:
当按下开关时,蜂鸣器报警,同时LED旋转式亮灯。
使用器件:
AT89C51、按键、电阻、蜂鸣器(SOUNDER)、8只LED灯
Proteus仿真原理图:
仿真:
知识介绍:
Proteus布线
为了让整个原理图看上去简洁明了,我们对元器件的导线进行标号,而不是直接和芯片相连。
定时中断系统简图
定时器资源
定时器个数:3个(T0,T1,T2),T0和T1与传统的51单片机兼容,T2是此型号单片机增加的资源。
(T0和T1的操作方式是所有51单片机共有的)
中断号:
外部中断0 interrupt 0
定时器0 interrupt 1
外部中断1 interrupt 2
定时器中断1 interrupt 3
串口中断 interrupt 4
中断系统
执行现程序的过程中,出现某些急需处理的异常情况或特殊请求,CPU暂时中止现行程序,而转去对这些异常情况或特殊请求进行处理,在处理完毕后CPU又自动返回到现行程序的断点处,继续执行原程序。
主要代码(C语言)KEIL5实现:
#include
#include #define uint unsigned int #define uchar unsigned char sbit SPK = P3^7; uchar FRQ = 0x00; void Delayms(uint ms) { uchar i; while(ms--) { for(i=0;i<120;i++); } } void main() { P2 = 0x00; TMOD = 0x11; TH0 = 0x00; TL0 = 0xff; IT0 = 1; IE = 0x8b; IP = 0x01; TR0 = 0; TR1 = 0; while(1) { FRQ++; Delayms(1); } } void EX0_INT() interrupt 0 { TR0 = !TR0; TR1 = !TR1; if(P2 == 0x00) P2 = 0xe0; else P2 = 0x00; } void T0_INT() interrupt 1 { TH0 = 0xfe; TL0 = FRQ; SPK = ~SPK; } void T1_INT() interrupt 3 { TH0 = -45000/256; TL0 = -45000%256; P2 = _crol_(P2,1); } 定时器计算如何快速得到?(无需计算) 打开51单片机烧录软件STC-ISP,找到“定时器计算器”,根据红色方框中的进行设置,可以快速得到定时器初始化代码,可直接使用。 在此项目中为什么LED灯高电平有效? LED灯的特性之一是单向导电性,阳极大于阴极才能够导通,阴极接地可以想象成0,所以阳极置1可以达到阳极大于阴极。问题解答:
Q
Q
A
相关文章