系统的功能分析
(末尾附文件)
框架图:
原理图:
声光报警电路(低电平有效)设计
有源蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。
LED灯即发光二极管,它是半导体二极管的一种,可以把电能转化成光能。发光二极管与普通二极管一样是由一个PN结组成,也具有单向导电性。
本系统所采用的报警模块为5V有源蜂鸣器模块,电路中采用三极管9012来驱动,只要单片机引脚为低电平,蜂鸣器就会鸣叫报警,反之则不鸣叫,可以通过控制单片机相关引脚方波输出形式控制蜂鸣器的鸣叫方式。同时,将LED灯串联个电阻与蜂鸣器并联,串联电阻为限流电阻,当蜂鸣器间隔鸣叫的时候,LED指示灯将闪烁报警。可以通过控制单片机引脚方波输出形式控制蜂鸣器的鸣叫方式。电路简单可靠,不需额外占单片机的I/O口。其电路原理图如下图所示。
4位共阳数码管驱动电路设计
数码管,也称作辉光管,是一种可以显示数字和其他信息的电子设备。玻璃管中包括一个金属丝网制成的阳极和多个阴极。大部分数码管阴极的形状为数字。管中充以低压气体,通常大部分为氖加上一些汞和/或氩。给某一个阴极充电,数码管就会发出颜色光,视乎管内的气体而定,一般都是橙色或绿色。
led数码管(LED Segment Displays)由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。数码管实际上是由七个发光管组成8字形构成的,加上小数点就是8个。这些段分别由字母a,b,c,d,e,f,g,dp来表示。当数码管特定的段加上电压后,这些特定的段就会发亮,以形成我们眼睛看到的字样了。常用LED数码管显示的数字和字符是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。本设计中选择4位共阳数码管来显示数据。4位共阳数码管一共12个引脚,4个位选,8个段选。1、2、3、4、5、7、10、11为段选,6、8、9、12为四个数码管的位选。每个位选通过三极管进行驱动,在本设计中,Q1-Q5三极管均为驱动电路。R3-R5均为限流电阻,保护三极管。当单片机控制位选的引脚为低电平时,则相关位的数码管可以亮,否则,相关位的数码管不亮。单片机控制段选的引脚通过高低电平的组合即可显示不同的数据信息。其具体电路原理图如下图所示。
系统软件设计
部分代码
#include <reg52.h> //调用单片机头文件
#define uchar unsigned char //无符号字符型 宏定义 变量范围0~255
#define uint unsigned int //无符号整型 宏定义 变量范围0~65535
#include <intrins.h>//数码管段选定义 0 1 2 3 4 5 6 7 8 9
uchar code smg_du[]={0x28,0xEE,0x32,0xA2,0xE4,0xA1,0x21,0xEA,0x20,0xA0,0x60,0x25,0x39,0x26,0x31,0x71,0xff}; //断码//数码管位选定义
sbit smg_we1 = P3^4; //数码管位选定义
sbit smg_we2 = P3^5;
sbit smg_we3 = P3^6;
sbit smg_we4 = P3^7;uchar dis_smg[8] = {0x90,0xf5,0x1c,0x34,0x71,0x32,0x12,0xf4}; //显示内容
bit flag_500ms;
sbit beep = P2^3;
uchar a_a;
uchar menu_1; //设置参数用uchar fen,miao,weimiao; // 倒计时数
uchar num_value; // 用做中间的变量
bit flag_num_en ; // 倒计时器开始计时使能标志位
uchar set_fen = 30; // 设置倒计时数的启始值
uchar set_miao = 0; // 设置倒计时数的启始值 /***********************1ms延时函数*****************************/
void delay_1ms(uint q)
{uint i,j;for(i=0;i<q;i++)for(j=0;j<120;j++);
}/***********************数码位选函数*****************************/
void smg_we_switch(uchar i) //选择i位单独显示
{switch(i){case 0: smg_we1 = 0; smg_we2 = 1; smg_we3 = 1; smg_we4 = 1; break;case 1: smg_we1 = 1; smg_we2 = 0; smg_we3 = 1; smg_we4 = 1; break;case 2: smg_we1 = 1; smg_we2 = 1; smg_we3 = 0; smg_we4 = 1; break;case 3: smg_we1 = 1; smg_we2 = 1; smg_we3 = 1; smg_we4 = 0; break;}
}/*************定时器0初始化程序***************/
void time_init()
{EA = 1; //开总中断TMOD = 0X01; //定时器0、工作方式1ET0 = 1; //开定时器0中断 TR0 = 1; //允许定时器0定时
}/***********************数码显示函数*****************************/void display()
{uchar i;for(i=0;i<4;i++){ P1 = 0xff; //消隐 smg_we_switch(i); //位选P1 = dis_smg[i]; //段选 delay_1ms(1); }
}
.
链接:https://pan.baidu.com/s/1_0cRVISgIYQkS2gSAQSRZA
提取码:n4r2
.