标题:
单片机校园打铃系统源程序+Proteus仿真
[打印本页]
作者:
YF12
时间:
2020-7-12 17:41
标题:
单片机校园打铃系统源程序+Proteus仿真
主频率 12M
功能:
1、使用DS1302获得时钟信号,能够进行时间设置
2、能够设置10组打铃时间,并具有临时打铃功能,打铃的时长为5S钟
3、1602液晶屏幕显示数据。
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
12.png
(35.76 KB, 下载次数: 69)
下载附件
2020-7-12 17:30 上传
使用方法: 按键“÷”时间调整,多次按下调整位
按键“X”打铃时间调整,多次按下调整位
按键“=”打铃时间数组调整
按键“+”数据加
按键“-”数据减
按键“/C”退出
单片机主频率 12M
单片机源程序如下:
/*
主频率 12M
项目名称: 校园打铃系统
功能:
1、8位数码管显示当前时间。
2、使用DS1302获得时钟信号,能够进行时钟设置
3、能够设置10组打铃时间,并具有临时打铃功能,打铃的时长为5S钟
4、使用1602液晶屏幕显示。
使用方法: 按键“÷”时间调整,多次按下调整位
按键“X”打铃时间调整,多次按下调整位
按键“=”打铃时间数组调整
按键“+”数据加
按键“-”数据减
按键“/C”退出
*/
#include "all.h"
u8 Mode=0; //模式标记
u8 Ring_Sign=0; //打铃标记
void main(void)
{
u8 i=0,q=0,s;
lcd_start(); //屏幕初始化
lcd_CLS(); //清屏
Init_Ds1302(); //DS1302初始化
Timer0Init(); //定时器(铃声)初始化
P37=0;
TR0 = 1; //启动定时器0
while(1)
{
Key4x4_2(); //4X4按键数据(松手后)读取
Key_Mode(); //模式判断
if(Mode>0) //非正常模式进入
{
if(LCD1602_Cursor_address==0)//非正常模式光标一定存在
LCD1602_Cursor_address=1;
if(Mode==1) //时间调整
{
Time_Settings(); //数据调整
lcd_position(16); //模式标记
lcd_write_data('N');
lcd_write_data('z');
}
else //铃声时间调整
{
Alarm_Clock(); //数据调整
lcd_position(0); //模式标记
lcd_write_data(Ring/10+'0');
lcd_write_data(Ring%10+'0');
lcd_position(16);
lcd_write_data('S');
lcd_write_data('j');
}
LCD_1602_Cursor_address(); //光标闪烁
delay_ms(35); //闪烁频率不能太高
}
else //正常模式进入
{
Read_Time_Ds1302(); //读取时钟信息
lcd_printf_Ds1302(); //时间数据刷新
i=10;
while(i--) //判断是否打铃时间
{
for(q=0;q<3;q++) //秒分时对比
{
if(Time[q]==Ring_Data[i][q])
Ring_Sign=1;
else //秒分时只要有一个不符合就不允许打铃
{
Ring_Sign=0;
goto Goto; //无条件跳到Goto
}
}
Goto:
if(Ring_Sign)
{
s=(Time[0]+5); //打铃时间调整
Time_Data=1; //打铃
}
}
if(Time[0]>s) //时间到停止打铃
{
Time_Data=0;
}
}
}
}
复制代码
所有资料51hei提供下载:
电子时钟.zip
(170.3 KB, 下载次数: 101)
2020-7-12 17:36 上传
点击文件名下载附件
程序和仿真
下载积分: 黑币 -5
作者:
YF12
时间:
2020-7-18 07:53
忘记加临时打铃功能了,只需要 Time_Data=1; 铃声就会响起来,可以自己判断键盘上面哪一个按键被按下就马上响。
作者:
杨国福
时间:
2021-5-23 16:34
请问头文件all. h什么意思
作者:
YF12
时间:
2021-5-29 11:03
杨国福 发表于 2021-5-23 16:34
请问头文件all. h什么意思
一个头文件,all就是全部的意思,all.h里面我包含了全部的头文件。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1