基于51单片机的校园电子打铃器 proteus仿真原理图程序设计
硬件设计
(末尾附文件)
功能:
1、8位数码管显示当前时间。
2、使用DS1302获得时钟信号,能够进行时钟设置
3、能够设置10组打铃时间,并具有临时打铃功能,打铃的时长为5S钟
4、使用1602液晶屏幕显示。
仿真图:
程序设计
#include <all.h>u8 LCD1602_Cursor_address=0; //光标标记
// uchar code degree[]={0x16,0x09,0x08,0x08,0x08,0x09,0x06,0x00}; //摄氏度 符号bit lcd_busy_test(void) //忙状态监测
{bit result;RS=0; RW=1;EN=1;_nop_();_nop_();_nop_();_nop_();result = (bit)(DB&0x80);EN=0;return result;
}void lcd_write_cmd (u8 cmd) //写命令
{while (lcd_busy_test());RS=0;RW=0;EN=0;_nop_();_nop_();DB=cmd ;_nop_();_nop_();_nop_();_nop_();EN=1;_nop_();_nop_();_nop_();_nop_();EN=0;
}void lcd_position (u8 pos)//显示起始位置
{if(pos<16)lcd_write_cmd (pos|0x80);elselcd_write_cmd (((pos)-16)|0xC0);
}void lcd_write_data (u8 dat)//写数据
{while (lcd_busy_test());RS=1;RW=0;EN=0;_nop_();_nop_();DB=dat ;_nop_();_nop_();_nop_();_nop_();EN=1;_nop_();_nop_();_nop_();_nop_();EN=0;
}//初始化
void lcd_start (void)
{lcd_write_cmd (0x01);delay_ms(1);lcd_write_cmd (0x02);delay_ms(1);lcd_write_cmd (0x06);delay_ms(1);lcd_write_cmd (0x0c);delay_ms(1);lcd_write_cmd (0x14);delay_ms(1);lcd_write_cmd (0x38);delay_ms(1);}void lcd_CLS()
{data u8 i;lcd_position(0x80);for(i=0;i<16;i++)lcd_write_data(' ');lcd_position(0xc0);for(i=0;i<16;i++)lcd_write_data(' ');
}void LCD_1602_Cursor_address() //光标状态
{switch(LCD1602_Cursor_address){case 0:lcd_write_cmd(0x0c);break;//不显示//(先开启 0x0f,后地址,上0x8,下0xc) case 1:lcd_write_cmd(0x0f);lcd_write_cmd(0xcb);break;//时间秒 case 2:lcd_write_cmd(0x0f);lcd_write_cmd(0xc8);break;//时间分case 3:lcd_write_cmd(0x0f);lcd_write_cmd(0xc5);break;//时间时case 4:lcd_write_cmd(0x0f);lcd_write_cmd(0x8c);break;//星期case 5:lcd_write_cmd(0x0f);lcd_write_cmd(0x8a);break;//时间日case 6:lcd_write_cmd(0x0f);lcd_write_cmd(0x87);break;//时间月case 7:lcd_write_cmd(0x0f);lcd_write_cmd(0x84);break;//时间年}
}void lcd_printf_Ds1302() //正常模式显示
{lcd_position(3);lcd_write_data(Time[6]/16%16+'0');//时间年显示lcd_write_data(Time[6]%16+'0');lcd_write_data('/');lcd_write_data(Time[5]/16%16+'0');//时间月显示lcd_write_data(Time[5]%16+'0');lcd_write_data('/');lcd_write_data(Time[4]/16%16+'0');//时间日显示lcd_write_data(Time[4]%16+'0');lcd_write_data('/');lcd_write_data(Time[3]%16+'0');//星期显示lcd_position(20);lcd_write_data(Time[2]/16%16+'0');//时间时显示lcd_write_data(Time[2]%16+'0');lcd_write_data('/');lcd_write_data(Time[1]/16%16+'0');//时间分显示lcd_write_data(Time[1]%16+'0');lcd_write_data('/');lcd_write_data(Time[0]/16%16+'0');//时间秒显示lcd_write_data(Time[0]%16+'0');
}void lcd_printf_Ring() //铃声调整数据显示
{lcd_position(20);lcd_write_data(Ring_Data[Ring][2]/16%16+'0');//时间时显示lcd_write_data(Ring_Data[Ring][2]%16+'0');lcd_write_data('/');lcd_write_data(Ring_Data[Ring][1]/16%16+'0');//时间分显示lcd_write_data(Ring_Data[Ring][1]%16+'0');lcd_write_data('/');lcd_write_data(Ring_Data[Ring][0]/16%16+'0');//时间秒显示lcd_write_data(Ring_Data[Ring][0]%16+'0');
}void Alarm_Clock() //铃声调整数据处理
{if(Key4x4A=='+'){Key4x4_tt=0;Key4x4A=0;Ring_Data[Ring][LCD1602_Cursor_address-1]++;if((Ring_Data[Ring][LCD1602_Cursor_address-1]&0x0f)>9) //十进制转BCD码(Ring_Data[Ring][LCD1602_Cursor_address-1])+=6;if(Ring_Data[Ring][0]>0x59) //数据限制Ring_Data[Ring][0]=0x00;if(Ring_Data[Ring][1]>0x59) //数据限制Ring_Data[Ring][1]=0x00;if(Ring_Data[Ring][2]>0x23) //数据限制Ring_Data[Ring][2]=0x00;lcd_printf_Ring(); //铃声调整数据刷新}if(Key4x4A=='-'){Key4x4_tt=0;Key4x4A=0;if(Ring_Data[Ring][LCD1602_Cursor_address-1]>0) //数据限制Ring_Data[Ring][LCD1602_Cursor_address-1]--;if((Ring_Data[Ring][LCD1602_Cursor_address-1]&0x0f)>9) //十进制转BCD码(Ring_Data[Ring][LCD1602_Cursor_address-1])-=6;lcd_printf_Ring(); //铃声调整数据刷新}
}void Time_Settings() //时间调整数据处理
{if(Key4x4A=='+'){Key4x4_tt=0;Key4x4A=0;Time[LCD1602_Cursor_address-1]++;if((Time[LCD1602_Cursor_address-1]&0x0f)>9) //十进制转BCD码(Time[LCD1602_Cursor_address-1])+=6;if(Time[0]>0x59) //数据限制Time[0]=0x00;if(Time[1]>0x59) //数据限制Time[1]=0x00;if(Time[2]>0x23) //数据限制Time[2]=0x00;if(Time[3]>0x07) //数据限制Time[3]=0x07;if(Time[4]>0x31) //数据限制Time[4]=0x00;if(Time[5]>0x12) //数据限制Time[5]=0x00;if(Time[6]>0x99) //数据限制Time[6]=0x00;lcd_printf_Ds1302(); //时间调整数据刷新}
.
文件仅供参考:
链接:https://pan.baidu.com/s/1yUigOtG7_7a2sxrYD_KB-Q
提取码:tviy
.
基于51单片机的校园电子打铃器 proteus仿真原理图程序设计相关推荐
- 基于51单片机的时钟电子秤称重系统proteus仿真原理图PCB
功能介绍: 0.本系统采用STC89C52作为单片机 1.采用LCD1602液晶显示当前时间和检测重量 2.按键可更改时间和设置超重报警阈值 3.采用HEX711和称重支架传感器获取物体重量信息,传入 ...
- 基于51单片机HX711的电子秤称重计价proteus仿真程序设计
设计要求 1.利用压力传感器检测重量信号,经放大和A/D转换,送单片机进行处理,并在液晶屏上显示出被称重量值: 2.最小显示单位为1克: 3.量程超过报警值蜂鸣器报警 资料下载地址:基于51单片机HX ...
- 基于51单片机的16键电子琴音乐盒设计proteus仿真原理图程序
功能: 0.本项目采用STC89C52作为单片机系统的控制MCU 1.LCD1602液晶实时显示时间和当前工作模式 2.支持电子琴模式和歌曲模式(内置8首歌曲) 3.短触'设置/切换'键可切换工作模式 ...
- 基于51单片机声音噪声分贝检测采集显示proteus仿真原理图PCB程序设计
硬件设计 (末尾附文件) 功能说明: 1.基于STC89C51/52(与AT89S51/52.AT89C51/52通用)单片机作为主控制器 2.采用LCD1602液晶显示屏实时显示分贝值: 3.使用小 ...
- 基于51单片机的智能蓝牙路灯街灯控制系统proteus仿真原理图PCB
功能: 0.本系统采用STC89C52作为单片机 1.液晶实时显示时间/环境光强/工作模式 2.每隔5s向蓝牙串口发送一次信息 3.支持路灯故障检测 4.工作时间18~24时,两个路灯同时点亮,24时 ...
- 基于51单片机的水温温度PID算法控制系统proteus仿真原理图PCB
1.本系统采用STC89C52作为单片机 2.采用液晶LCD1602液晶实时显示相关数据 3.采用矩阵键盘可设置PID相关参数 4.采用L298驱动功率电阻模拟加热过程 5.当温度超过设定值的一定范围 ...
- 基于51单片机的智能护眼台灯设计proteus仿真原理图PCB
功能介绍: 0.本系统采用STC89C52作为单片机 1.LCD1602液晶实时显示当前时间/环境光强/工作模式 2.当检测到人体距离灯光太近时,蜂鸣器报警提醒 3.当使用时间超过设定阈值时,蜂鸣器报 ...
- 基于51单片机的智能饮水机烧水控制系统proteus仿真原理图PCB
功能介绍: 0.本系统采用STC89C52作为单片机 1.LCD1602液晶实时显示当前温度和设定温度 2.当温度到达100℃时,蜂鸣器报警提醒水烧开了 3.按键可更改预设温度值,当温度低于设定温度5 ...
- 基于51单片机太阳能风能太阳能风光互补路灯proteus仿真原理图PCB
功能: 0.本系统采用STC89C52作为单片机 1.手动模式下,由手动开关控制小灯的亮灭 2.自动模式下,由光强决定小灯的亮灭 3.本系统具备太阳能和风能两种方式给系统的锂电池充电,锂电池再经过升压 ...
最新文章
- mysql substr 中文乱码_刚碰到的MySql乱码的问题
- PHP学习笔记-PHP与JavaScript的交互
- vc sp6 中英文和补丁下载地址
- LinkedList源码分析(基于Java8)
- 64 大小_32位和64位Windows系统差别在哪里
- 定义一个手表_华米Amazfit Pop评测:一款功能全面的“性价比”手表
- html展示pdf文件流,使用pdfjs提供的viewer.html展示pdf文件流
- 8-1:C++继承之对继承的理解和继承的基本使用,继承的格式
- “乐享生活,随心而行”,第四届APEC车联网研讨会即将在上海召开
- 关于返回二维数组排序后序号数组的问题求解
- Spring Boot 定时任务,怎么实现任务动态增删启停?
- 使用screen来保存你的远程会话
- J2EE和J2se的区别
- ArduinoUNO实战-第二章-HelloWorld
- pacman使用介绍
- 新手入门matlab之线性系统频域分析
- ospf在NBMA网络中的实验(保姆级别)
- pdcp层的作用_LTE系统中PDCP子层功能研究
- pcb 受潮_硬盘SATA接口断裂及PCB板受潮_希捷 Barracuda 3TB 7200转 64MB_固态硬盘评测-中关村在线...
- Graph Embedding模型【Node2Vec】学习笔记