硬件设计

(末尾附文件)

功能:
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. mysql substr 中文乱码_刚碰到的MySql乱码的问题
  2. PHP学习笔记-PHP与JavaScript的交互
  3. vc sp6 中英文和补丁下载地址
  4. LinkedList源码分析(基于Java8)
  5. 64 大小_32位和64位Windows系统差别在哪里
  6. 定义一个手表_华米Amazfit Pop评测:一款功能全面的“性价比”手表
  7. html展示pdf文件流,使用pdfjs提供的viewer.html展示pdf文件流
  8. 8-1:C++继承之对继承的理解和继承的基本使用,继承的格式
  9. “乐享生活,随心而行”,第四届APEC车联网研讨会即将在上海召开
  10. 关于返回二维数组排序后序号数组的问题求解
  11. Spring Boot 定时任务,怎么实现任务动态增删启停?
  12. 使用screen来保存你的远程会话
  13. J2EE和J2se的区别
  14. ArduinoUNO实战-第二章-HelloWorld
  15. pacman使用介绍
  16. 新手入门matlab之线性系统频域分析
  17. ospf在NBMA网络中的实验(保姆级别)
  18. pdcp层的作用_LTE系统中PDCP子层功能研究
  19. pcb 受潮_硬盘SATA接口断裂及PCB板受潮_希捷 Barracuda 3TB 7200转 64MB_固态硬盘评测-中关村在线...
  20. Graph Embedding模型【Node2Vec】学习笔记

热门文章

  1. Java 设计模式归纳(观察者、工厂、单例、策略、适配器、命令、装饰者、外观、模板方法、状态
  2. 双轮载人平衡车设计完整教程之软件篇
  3. android 复杂的列表视图新写法MultiType
  4. 萤石开放平台接入摄像头
  5. 大学生学计算机电脑推荐,推荐一款大学生用笔记本电脑
  6. tinymix调试音频i2s
  7. 手写 redux-thunk
  8. 学习笔记_逻辑运算符
  9. Dreamweaver软件介绍及下载安装
  10. 这4件事,你知道吗?锤子回故乡,华为很随意,苹果傍大款