硬件设计

(末尾附文件)

功能:
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仿真原理图程序设计相关推荐

  1. 基于51单片机的时钟电子秤称重系统proteus仿真原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 1.采用LCD1602液晶显示当前时间和检测重量 2.按键可更改时间和设置超重报警阈值 3.采用HEX711和称重支架传感器获取物体重量信息,传入 ...

  2. 基于51单片机HX711的电子秤称重计价proteus仿真程序设计

    设计要求 1.利用压力传感器检测重量信号,经放大和A/D转换,送单片机进行处理,并在液晶屏上显示出被称重量值: 2.最小显示单位为1克: 3.量程超过报警值蜂鸣器报警 资料下载地址:基于51单片机HX ...

  3. 基于51单片机的16键电子琴音乐盒设计proteus仿真原理图程序

    功能: 0.本项目采用STC89C52作为单片机系统的控制MCU 1.LCD1602液晶实时显示时间和当前工作模式 2.支持电子琴模式和歌曲模式(内置8首歌曲) 3.短触'设置/切换'键可切换工作模式 ...

  4. 基于51单片机声音噪声分贝检测采集显示proteus仿真原理图PCB程序设计

    硬件设计 (末尾附文件) 功能说明: 1.基于STC89C51/52(与AT89S51/52.AT89C51/52通用)单片机作为主控制器 2.采用LCD1602液晶显示屏实时显示分贝值: 3.使用小 ...

  5. 基于51单片机的智能蓝牙路灯街灯控制系统proteus仿真原理图PCB

    功能: 0.本系统采用STC89C52作为单片机 1.液晶实时显示时间/环境光强/工作模式 2.每隔5s向蓝牙串口发送一次信息 3.支持路灯故障检测 4.工作时间18~24时,两个路灯同时点亮,24时 ...

  6. 基于51单片机的水温温度PID算法控制系统proteus仿真原理图PCB

    1.本系统采用STC89C52作为单片机 2.采用液晶LCD1602液晶实时显示相关数据 3.采用矩阵键盘可设置PID相关参数 4.采用L298驱动功率电阻模拟加热过程 5.当温度超过设定值的一定范围 ...

  7. 基于51单片机的智能护眼台灯设计proteus仿真原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 1.LCD1602液晶实时显示当前时间/环境光强/工作模式 2.当检测到人体距离灯光太近时,蜂鸣器报警提醒 3.当使用时间超过设定阈值时,蜂鸣器报 ...

  8. 基于51单片机的智能饮水机烧水控制系统proteus仿真原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 1.LCD1602液晶实时显示当前温度和设定温度 2.当温度到达100℃时,蜂鸣器报警提醒水烧开了 3.按键可更改预设温度值,当温度低于设定温度5 ...

  9. 基于51单片机太阳能风能太阳能风光互补路灯proteus仿真原理图PCB

    功能: 0.本系统采用STC89C52作为单片机 1.手动模式下,由手动开关控制小灯的亮灭 2.自动模式下,由光强决定小灯的亮灭 3.本系统具备太阳能和风能两种方式给系统的锂电池充电,锂电池再经过升压 ...

最新文章

  1. 20 Java程序员面试宝典视频课程之HTML5新标签、功能
  2. open一个页面并关闭父页(小技巧)
  3. mysql “group by ”与order by的研究--分类中最新的内容
  4. Java集合框架:总结
  5. EFCore查询语句生成流程、让EFCore支持批量Update/Delete/MergeInto
  6. string 大小写转换
  7. 计算机组成原理——Cache与主存的地址映射
  8. python绘制动态图-数据可视化
  9. nginx服务器模块、web请求处理机制及事件驱动模型、进程功能和进程间通信
  10. [Math Processing Error] 问题的解决(F5刷新页面与 Ctrl/Shift + F5 刷新页面的区别)
  11. 软件one pin错误是啥意思_理想ONE,从交车就开始道歉,是有礼貌的新势力
  12. 兰州石化学院计算机证书领取,关于领取2019年9月全国计算机等级考试证书的通知...
  13. 【R爬虫-1】BBC Learning English
  14. 一个layer可以跟着画完的线移动ios程序 好玩啊。
  15. 【2021 年 MathorCup 高校数学建模挑战赛—赛道A二手车估价问题】1 数据分析及可视化
  16. [Kerberos基础]-- kerberos认证原理---讲的非常细致,易懂
  17. 一文读懂麦克风典型应用电路
  18. 虚拟化查看服务器sn,linux 查看服务器sn号
  19. 0基础学编程需要哪些基础?
  20. java并发编程(并发编程的三个问题)

热门文章

  1. VUE+bpmn.js+iview 页面绘制流程图
  2. Thinkpad E440安装Ubuntu 14.04遇到的问题
  3. 红米 android8 刷机,又一部红米“吃奥利奥”:全网通版Note 3安卓8.0刷机包放出...
  4. 安装VMware时警告此产品安装程序不支持降级
  5. LORA和NB-IoT,谁才是真正的低功耗?本文使用低功耗分析仪来分析真相:LORA和NB都是LPWAN里最主要的技术, 专为低带宽、低功耗、远距离、大量连接的物联网应用而设计。
  6. 使用Flink CDC 2.2.1进行ETL-Oracle-MySQL
  7. CRSNet: Dilated Convolutional Neural Networks for Underatanding the Highly Congested Scenes
  8. linux --gitblit安装
  9. 14 款 Chrome 官方出品主题 ~ 颜值绝绝子~
  10. 青少年编程-Python画图“爱笑的眼睛机器人”第二幕