导航:首页 > 操作系统 > 基于c51单片机的警灯警笛

基于c51单片机的警灯警笛

发布时间:2022-05-29 11:38:34

❶ C51单片机程序设计题,要求用C语言做,模拟交通灯控制单片机电路,答案要详细具体。

晚上随手写,也未调试,权当看看

程序有不严谨地方还得调试修改

#include<REGX51.H>

#defineSTATUS_1S 1

#defineSTATUS_2S 2

#defineSTATUS_3S 3

#defineSTATUS_4S 4

#defineSTATUS_5S 5

#defineSTATUS_15S 15

#defineSTATUS_28S 28

#defineSTATUS_29S 29

#defineSTATUS_30S 30

unsignedcharflag,status,status_temp=1,status_temp_;

sbitK1 = P0^0;

sbitK2 = P0^1;

sbitRLED = P0^2;

sbitYLED = P0^3;

sbitGLED = P0^4;

voidInit(void)

{

ET0=1;

TR0=1;

RLED=0; //亮

YLED=0;

GLED=0;

while(status_temp)

{

switch(status)

{

caseSTATUS_1S: //1S

{

RLED=1; //灭,闪一次

YLED=1;

GLED=1;

} break;

caseSTATUS_2S: //1S

{

RLED=0; //亮,闪一次

YLED=0;

GLED=0;

} break;

caseSTATUS_3S: //1S

{

RLED=1; //灭

YLED=1;

GLED=1;

status_temp=0;

} break;

}

}

status_temp=1;

ET0=0;

TR0=0;

}

voidInit_Timer0(void)

{

TMOD=0x01;

// ET0=1;

// TR0=1;

EA=1;

TH0=0X3C;

TL0=0XB0; //未计算,偷楼上的

}

voidM_Start(void)

{

TH0=0X3C;

TL0=0XB0;

ET0=1;

TR0=1;

RLED=0; //红亮

while(status_temp)

{

switch(status)

{

caseSTATUS_1S:

{

if(status_temp_==1)

{

YLED=0;

}

} break;

caseSTATUS_2S:

{

if(status_temp_==1)

{

YLED=1;

}

} break;

caseSTATUS_3S:

{

if(status_temp_==1)

{

YLED=0;

status_temp_=0;

}

} break;

caseSTATUS_15S: //15S灭,绿亮

{

RLED=1;

GLED=0;

} break;

caseSTATUS_28S:

{

GLED=1;

} break;

caseSTATUS_29S:

{

GLED=0;

} break;

caseSTATUS_30S:

{

GLED=1;

status=0;

status_temp_=1;

} break;

}

}

ET0=0;

TR0=0;

status=0;

status_temp=1;

YLED=1;

}

voidM_End(void)

{

TH0=0X3C;

TL0=0XB0;

ET0=1;

TR0=1;

RLED=0; //亮1次

YLED=0;

GLED=0;

while(status_temp)

{

switch(status)

{

caseSTATUS_1S: //1S

{

RLED=1; //灭一次

YLED=1;

GLED=1;

} break;

caseSTATUS_2S: //1S

{

RLED=0; //亮二次

YLED=0;

GLED=0;

} break;

caseSTATUS_3S: //1S

{

RLED=1; ////灭二次

YLED=1;

GLED=1;

} break;

caseSTATUS_4S: //1S

{

RLED=0; ////亮三次

YLED=0;

GLED=0;

} break;

caseSTATUS_5S: //1S

{

RLED=1; ////灭三次

YLED=1;

GLED=1;

status_temp=0;

} break;

}

}

status_temp=1;

ET0=0;

TR0=0;

}

main()

{

Init();//单片机初始化

Init_Timer0();//定时器初始化

while(1)

{

if(K1==0)

M_Start();//模拟开始

if(K2==0)

M_End();//模拟结束

}

}

voidinterrupt_time0()interrupt1 //核对头文件,一致就好

{

TH0=0X3C;

TL0=0XB0;

flag++;

if(flag==20)

{

status++;

flag=0;

}

}

❷ C51单片机流水灯蜂鸣器程序

P2是端口啊,所以P2=_crol_(P2,1);这句中等号左边的P2表示的读取P2端口,这时的值取决于外围电路,而不是原来的赋值。所以需要一个变量来解决这个问题。

由你的代码看,是直流蜂鸣器,它的声音频率是无法改变的。而你也只是要改变鸣叫和不鸣叫的间隔频率(只是纠正一下名词),但这个程序不行。修改如下:
void sp()
{
speak=1;
Delay_ms(5);
speak=0;

Delay_ms(5);
}
void main(void)
{
uchar j,k,a;
a=0xfe;
P2=0xfe;
Delay_ms(500);
while(1)
{
for(j=0;j<7;j++)
{
a=_crol_(a,1);
P2=a;
sp();
Delay_ms(500);
}
for(k=0;k<7;k++)
{
a=_cror_(a,1);
P2=a;
sp();
Delay_ms(500);
}
}
}

❸ 关于C51单片机温度报警程序的问题 谁能帮我在每段程序后加汉字解释 及怎么实现温度显示及蜂鸣器报警的

#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define out P0 ;
#define INT8U unsigned char //宏定义
#define INT16U unsigned int
sbit smg1=P2^0;
sbit smg2=P2^1;
sbit smg3=P2^2;
sbit smg4=P2^3;
sbit Beep=P1^5; //蜂鸣器引脚定义
sbit led=P1^6;
sbit led1=P1^7; //设置灯光报警键
sbit DQ=P2^4; //ds18b20端口
void init_ds18b20(void); //ds18b20初始化子程序
void delay(uchar); //ds18b20工作延时子程序
uchar readbyte(void);//向ds18b20读一个字节数据
/*******************************************************************************/
void writebyte(uchar);//向ds18b20写一个字节数据
uint retemp();//计数变量
uchar key;
uchar a,b,c,d; //计数变量
uchar x[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uint retemp()
{
uint a,b,t;
init_ds18b20(); //初始化ds18b20
writebyte(0xcc); // 跳过读序列号的操作
writebyte(0x44); // 启动温度转换
init_ds18b20();
writebyte(0xcc); //跳过读序号列号的操作
writebyte(0xbe); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度
a=readbyte(); //读出温度低位LSB
b=readbyte(); //读出温度高位MSB
t=b; //将温度高八位送t
t<<=8; //乘以256移到高八位
t=t|a; //高低八位组合成温度值
if(t<0x8000) //如果温度为正计算正温度值
{
key=0;
t=t*0.625;
}
else //否则温度为负,取反
{
key=1;
t=(~t+1)*0.625;
}
return(t); //返回温度值
}
void main()
{
uint i,t;
EA = 1; //开总中断
TMOD = 0x01; //定时器0工作方式1
TR0=1;
delay(100);
while(1)
{
t=retemp(); 读温度值
a=x[t/1000]; //温度千位数
b=x[t/100%10]; //温度百位数
c=x[t/10%10]-0x80; //温度十位数
d=x[t%10]; //温度个位数
if(key==1) //如果key=1
a=0xbf; //a为“负号"
if((key==0)&&(t>320)) //如果key=0 且t大于320
{
led1=0; //点亮led1
ET0=1; //开启定时器0中断
}
else if(t<290) //如果温度小于290
{
led=0; //点亮led
ET0=1; //开启定时器0中断
}
else //否则
{
led1=1; //关闭led1
led=1; //关闭led
ET0=0; //关闭定时器0中断
}
for(i=0;i<50;i++) //循环50次
{smg1=1;P0=a;delay(100);smg1=0; //显示千位
smg2=1;P0=b;delay(100);smg2=0; //显示百位
smg3=1;P0=c;delay(100);smg3=0; //显示十位
smg4=1;P0=d;delay(100);smg4=0; //显示个位
}
}
}
/*ds18b20工作延时子程序*/
void delay (uchar i)
{
do
{_nop_();
_nop_();
_nop_();
i--;
}
while(i);}
/*ds18b20初始化子程序*/
void init_ds18b20()
{
uchar x=0;
DQ=0; //单片机将DQ拉低
delay (120);
DQ=1; //拉高总线
delay(16);
delay(80);
}
/*读一个字节*/
uchar readbyte ()
{uchar i=0,date=0;
for(i=8;i>0;i--)
{
DQ=0; // 给脉冲信号
delay(1);
DQ=1; // 给脉冲信号
date>>=1;
if(DQ)date|=0x80;
delay(11);
}
return(date);
}
/*写一个字节*/
void writebyte(uchar dat)
{uchar i=0;
for(i=8;i>0;i--) //写8位数
{
DQ=0;
DQ=dat&0x01; //写dat的D0位
delay(12);
DQ=1;
dat>>=1;
delay(5);
}
}
/**************************************************
*函数名:中断函数
*描 述:产生矩形脉冲使蜂鸣器发声
**************************************************/
void BeepTimer0(void) interrupt 1
{
Beep = ~Beep;
TH0 = 65335 / 256; //定时器赋初值
TL0 = 65335 % 256;
}

❹ C51单片机中有源蜂鸣器的程序怎么写啊,还有就是,有源蜂鸣器是高电平触发还是低电平触发

由于单片机驱动能力有限,常常连接三极管驱动蜂鸣器。

这得看三极管的型号,不同的型号程序稍有不同。

主要是设置是“1”还是“0”驱动,这得看你的电路的连接。

1)如果连接PNP三极管驱动,设置P3_3=0,则蜂鸣器一直响;如果设置

P3_3=0;//响

delay_500ms();

P3_3=1;//不响

delay_500ms();//蜂鸣器每一秒响一次

2)如果连接NPN三极管驱动,设置P3_2=1,则蜂鸣器一直响;如果设置

P3_2=1;//响

delay_500ms();

P3_2=0;//不响

delay_500ms();//蜂鸣器每一秒响一次

❺ 做基于c51单片机,DS18B20,共阳4位数码管的温度控制报警,不会改数码管显示程序,要按开发板原理图。

看你电路,数码管就是P0口输出字模,P2口输出位选

❻ C51单片机系列警报器编程

#include<stc89xx.h>
#define uchar unsigned char
sbit fmq=P4^4;
sbit key=P1^7;
bit flag;
uchar times;
uchar cnt;
void t0isr() interrupt 1
{
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
if(flag)
{
fmq=~fmp;
num++;
if(num>=10)
{
flag=~flag;
num=0;
}
}
else
{
cnt++;
cnt%=2;
if(cnt==0)
{
fmq=~fmq;
num++;
if(num>=10)
{
num=0;
flag=~flag;
}
}
}
}
main()
{
TMOE=0x01;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
ET0=1;
EA=1;
while(1)
{
if(key==0)
{
TR0=1;
}
else TR0=0;
}

}

❼ C51单片机报警程序,怎样把报警时长定为15s

if(js==30)----你这是30,报警多少秒?
{
js=0;
flag1=0;
...
改大一些,是不是就加长了?

❽ 基于单片机防盗报警系统的设计的毕业论文

第1章 绪 论
随着经济的发展,人们对防盗、防劫、防火保安设备的需求量大大增加。针对偷盗、抢劫、火灾、煤气泄漏等事故进行检测和报警的系统,其需求也越来越高。本设计运用单片机技术设计了一新颖红外线防盗报警器。而本设计中的输入部分主要是各种各样的传感器。不同类型的探测器用不同的手段探测各种入侵行为;不同作用的传感器,也可检测出不同类型的情况。
本章节主要介绍了本设计的选题背景、课题介绍、本文主要工作、方案论证。
1.1选题背景
单片机现在已越来越广泛地应用于智能仪表、工业控制、日常生活等很多领域,可以说单片机的应用已渗透到人类的生活、工作的每一个角落,这说明它和我们每个人的工作、生活密切相关,也说明我们每个人都有可能和有机会利用单片机去改造你身边的仪器、产品、工作与生活环境。
红外技术已经成为先进科学技术的重要组成部分,他在各领域都得到广泛的应用。由于他是不可见光,因此用他做防盗报警监控器,具有良好的隐蔽性,白天黑夜均可使用,而且抗干扰能力强。这种监控报警装置广泛应用与博物馆、单位要害部门和家庭的防护[1]。
通常红外线发射电路都是采用脉冲调制式。红外接收电路首先将接收到的红外光转换为电信号,并进行放大和解调出用于无线发射电路的调制信号。当无人遮挡红外光时,锁相环输出低电平,报警处于监控状态;一旦有人闯入便遮挡了红外光,则锁相环失锁,输出高电平,驱动继电器接通无线发射电路,监控室便可接收到无线报警信号,并可区分报警地点[2]。
当我们考虑的范围广一点:若是在小区每一住户内安装防盗报警装置。当住户家中无人时,可把家庭内的防盗报警系统设置为布防状态,当窃贼闯入时,报警系统自动发出警报并向小区安保中心报警[3]。周界报警系统:在小区的围墙上设置主动红外对射式探测器,防止罪犯由围墙翻入小区作案,保证小区内居民的生活安全[4]。

目 录
第1章 绪 论 3
1.1选题背景 3
1.2课题介绍 4
1.3本文主要工作 5
1.4方案选择论证 5
1.4.1单片机的选择 5
1.4.2显示器工作原理及其选择 6
1.4.3液晶显示和数码显示 6
1.4.4 防盗报警选择传感器的选择 7
2.1硬件系统总体设计 8
2.2 AT89C51芯片的介绍 9
2.2.1引脚功能 9
2.2.2 结构原理 11
2.2.3 AT89C51定时器/计数器相关的控制寄存器介绍 12
2.2.4 MAX708芯片介绍 13
2.3 单片机复位设置 14
2.4 8255A芯片介绍 14
2.4.1 8255A的引脚和结构 15
2.4.2 8255的工作方式 16
2.4.3 8255的控制字 18
2.5 AT89C51与8255的接口电路 19
2.6 显示部分 20
2.6.1七段显示译码器 20
2.6.2 7448译码驱动 21
2.6.3 单片机与7448译码驱动器及LED的连接 23
2.6.4外部地址锁存器 23
第3章 检测信号放大电路设计 24
3.1 热释红外线传感器典型电路 25
3.2 红外光敏二极管警灯电路 26
3.2.1 光敏二极管控制电路 27
3.3红外线探测信号放大电路设计 28
3.3.1光电耦合器驱动接口 30
3.3.2 集成电路运算放大器 31
3.3.3 精密多功能运算放大器INA105 31
3.3.4 低功耗、双运算放大器LM358 34
第4章 电源设计 35
4.1 单片机系统电源 35
4.2检测部分电源 35
5.1 主程序设计 37
5.2 核对子程序设计 38
5.3 中断子程序设计 38
5.4 读数子程序设计 39
5.5 程序设计说明 40
5.6 程序清单 41
第6章 调试 45
6.1安装调试 45
6.2音响(和继电器)驱动线路具体连接 45
6.3 程序修改 46
6.4 程序执行过程 47
结论 48
参考文献 49
致谢 51
原理图 52

基于单片机控制的红外防盗报警器的设计

[摘要]:随着社会的不断进步和科学技术、经济的不断发展,人们生活水
平得到很大的提高,对私有财产的保护意识在不断的增强,因而对防盗措施提
出了新的要求。 本设计就是为了满足现代住宅防盗的需要而设计的家庭式电子
防盗系统。
目前市面上装备主要有压力触发式防盗报警器、开关电子防盗报警器和压力遮光触发式防盗报警器等各种报警器,但这几种比较常见的报警器都存在一些缺点。本系统采用了热释电红外传感器,它的制作简单、成本低,安装比较方便,而且防盗性能比较稳定,抗干扰能力强、灵敏度高、安全可靠。这种防盗器安装隐蔽,不易被盗贼发现。同时它的信号经过单片机系统处理后方便和PC机通信,便于多用户统一管理。
本设计包括硬件和软件设计两个部分。硬件部分包括单片机控制电路、红外探头电路、驱动执行报警电路、LED控制电路等部分组成。处理器采用51系列单片机AT89S51。整个系统是在系统软件控制下工作的。系统程序可以划分为以下几个模块: 数据采集、键盘控制、报警和显示等子函数。

[关键词]:单片机、红外传感器、数据采集、报警电路。

Infrared burglar alarm design controls which based
on the monolithicintegrated circuit
Abstract :Along with society's unceasing progress and science and technology,economical unceasing development, the people living standard obtainsthe very big enhancement, to private property protection consciousnessin unceasing enhancement, thus set the new request to the securitymeasure. This design is for satisfy the family type electron securitysystem which the modern housing security needs to design.
At present in the market condition equips mainly has the pressure totouch the hair style burglar alarm, the switch electron burglar alarmand the pressure shields light the hair style burglar alarmand so on each kind of alarm apparatus, but these kind of quite commonalarm apparatuses all have some shortcomings. This system used hashotly released the electricity infrared sensor, its manufacturesimple, cost low, installm the antijamming ability strong, thesensitivity high, safe was reliable. This kind of security installmenthiding, was not easily discovered by the bandits and thieves.Simultaneously its signal after monolithic integrated circuit systemprocessing the convenience and P the C machine correspondence, isadvantageous for the multiuser unification management.
This design designs two parts including the hardware and software. Thehardware partially including the monolithic integrated circuit controlcircuit, infrared pokes head in the electric circuit, the actuationexecution alarm circuit, the LED control circuit and so on the partialcompositions. The processor uses 51 series monolithic integratedcircuits AT89S51, the overall system is works under the systemsoftware control. The system program may divide into following severalmoles: The data acquisition, the keyboard control, reports to thepolice with the demonstration small steelyard function.

Key words: AT89S51 monolithic integrated circuit, infrared sensor,data acquisition, alarm circuit.

目 录
1. 绪论 1 1.1 前言 1

1.2 设计任务与要求 1
2. 热释电红外传感器概述 2
2.1 PIR传感器简单介绍 2
2.2 PIR 的原理特性 2
2.3 PIR 结构特性 3
3. AT89S51单片机概述 6
3.1 AT89S51单片机的结构 6
3.1.1管脚说明 8
3.1.2 主要特性 11
3.1.3 振荡器特性 11
3.2 AT89S51单片机的工作周期 12
3.3 AT89S51单片机的工作过程和工作方式 13
3.4 AT89S51的指令系统 16
4. 方案设计 18
4.1 系统概述 18
4.2 总体设计 19
4.3 系统硬件选择 19
4.4 硬件电路实现 20
4.5 软件的程序实现 21
5. 结论概述 27
5.1 主要结论 27
5.2 结束语 27
致谢 28
参考文献 29

❾ c51单片机怎么编程让蜂鸣器发出嘟嘟嘟的声

你可以在 网络 上搜索 “单片机播放音乐”,你会得到很多答案,也能比较深刻解决这个问题。
单片机发声音,是编程 在 接有 蜂鸣器 的端口 间歇的输出某种频率的脉冲。
单片机在端口输出频率脉冲的最简单的方法 是使用 延时。

void beep()
{
unsigned char i,j,k;
for(i=0;i<18;i++)
{
for(j=0;j<250;j++)
{
for(k=0;k<120;k++) ;
SPK=!SPK;//发声音
}
for(j=0;j<130;j++)
{
for(k=0;k<120;k++) ; //间歇时间
}
}
}

❿ c51单片机: 利用定时器+蜂鸣器实现定时报警功能,30秒内,每一秒响一下,30秒时间到了,蜂鸣器长鸣 求程序

参考程序:
#include <reg52.h>

sbit Beep = P3^0;
unsigned char t1s,t50ms;
unsigned char flag30s = 0,flag1s = 0;

void delayms(unsigned int xms)
{
unsigned int i,j;
for(i=0; i<xms; i++)
for(j=0; j<110; j++);
}

void Alarm(void)
{
Beep = 0;
delayms(200);
Beep = 1;
}

void main()
{
TMOD = 0x01;
TH0 = 0x3C;
TL0 = 0xB0;//50ms中断一次
EA = 1;
ET0 = 1;
TR0 = 1;
while(1)
{
if(flag30s)Beep = 0;//30s到蜂鸣器一直响
if(flag1s)//1s到,蜂鸣器响一下
{
flag1s = 0;
Alarm();
}
}
}

void TIM0(void) interrupt 1
{
TH0 = 0x3C;
TL0 = 0xB0;
t50ms++;
if(t50ms == 20)//1s
{
t50ms = 0;
t1s++;
flag1s = 1;
if(t1s == 30)//30s
{
TR0 = 0;
flag30s = 1;
}
}
}

阅读全文

与基于c51单片机的警灯警笛相关的资料

热点内容
自己购买云主服务器推荐 浏览:419
个人所得税java 浏览:761
多余的服务器滑道还有什么用 浏览:189
pdf劈开合并 浏览:28
不能修改的pdf 浏览:751
同城公众源码 浏览:488
一个服务器2个端口怎么映射 浏览:297
java字符串ascii码 浏览:78
台湾云服务器怎么租服务器 浏览:475
旅游手机网站源码 浏览:332
android关联表 浏览:945
安卓导航无声音怎么维修 浏览:332
app怎么装视频 浏览:430
安卓系统下的软件怎么移到桌面 浏览:96
windows拷贝到linux 浏览:772
mdr软件解压和别人不一样 浏览:904
单片机串行通信有什么好处 浏览:340
游戏开发程序员书籍 浏览:860
pdf中图片修改 浏览:288
汇编编译后 浏览:491