当前位置: 首页 > news >正文

基于单片机打铃(3组上下课,LCD1602,24C02)系统Proteus仿真(含全部资料)

全套资料包含:Proteus仿真源文件+keil C语言源程序+AD原理图+流程图+元器件清单+说明书等

资料下载:↓↓↓

通过网盘分享的文件:资料分享
链接:百度网盘 请输入提取码提取码: tgnu


目录

资料下载:

Proteus仿真功能

项目文件资料:

一、Proteus仿真源文件

二、AD原理图文件

二、报告说明书

三、系统流程图

四、Keil c语言程序源代码


项目功能:

用单片机定时计数器及LCD1602接口实现实时时钟显示,并可设置三组的上下课作息时间,到时间控制蜂鸣器打铃,同时红色LED发光二极管点亮,液晶屏显示打铃状态(上课/下课)。


项目文件:

一、Proteus仿真源文件

​​

二、AD原理图文件

二、报告说明书

三、系统流程图

​​

四、器件清单

元件型号数量
单片机AT89C511
电容10uf1
电容30pf2
晶振12MHZ1
电阻10k1
按钮17
存储器24C021
LED红色1
电阻100欧1
电阻1k1
三极管PNP1
蜂鸣器有源1
显示器LCD16021
排阻10k1

五、Keil c语言程序源代码(部分)

#include "reg51.h" #include "lcd1602.h" #include"i2c.h" #define uchar unsigned char #define uint unsigned int sbit beep=P2^7;//蜂鸣器 sbit led=P3^4;//led uchar time=0,mode=0;//系统变量 uchar sec=0,miao=0,fen=0,shi=0;//计时 uchar fen1[]={0,0,0,0,0,0};//上下课 uchar shi1[]={0,0,0,0,0,0}; uchar flag=0;//打铃标志 uchar disp[]="00:00:00"; uchar key=0; uchar key_scan()//按键检测 { uchar i,j; i=0; j=0; P1=0x0f; if(P1!=0x0f) //检测有无按下 { delay_uint(1000); if(P1!=0x0f) //检测有无按下 { switch(P1)//检测行 { case 0x0e:i=3;break; case 0x0d:i=2;break; case 0x0b:i=1;break; case 0x07:i=0; } P1=0xf0; switch(P1)//检测列 { case 0xe0:j=13;break; case 0xd0:j=9;break; case 0xb0:j=5;break; case 0x70:j=1; } } } if(key!=i+j) { key=i+j; return key; } else return 0; } void main()//主函数 { uchar i=0; //初始化存储 fen1[0]=At24c02Read(0);//分钟 if(fen1[0]>59) { fen1[0]=1; At24c02Write(0,fen1[0]); } fen1[1]=At24c02Read(1); if(fen1[1]>59) { fen1[1]=2; At24c02Write(1,fen1[1]); } fen1[2]=At24c02Read(2); if(fen1[2]>59) { fen1[2]=3; At24c02Write(2,fen1[2]); } fen1[3]=At24c02Read(3); if(fen1[3]>59) { fen1[3]=4; At24c02Write(3,fen1[3]); } fen1[4]=At24c02Read(4); if(fen1[4]>59) { fen1[4]=5; At24c02Write(4,fen1[4]); } fen1[5]=At24c02Read(5); if(fen1[5]>59) { fen1[5]=6; At24c02Write(5,fen1[5]); } shi1[0]=At24c02Read(6+0);//小时 if(shi1[0]>59) { shi1[0]=0; At24c02Write(6+0,shi1[0]); } shi1[1]=At24c02Read(6+1); if(shi1[1]>59) { shi1[1]=0; At24c02Write(6+1,shi1[1]); } shi1[2]=At24c02Read(6+2); if(shi1[2]>59) { shi1[2]=0; At24c02Write(6+2,shi1[2]); } shi1[3]=At24c02Read(6+3); if(shi1[3]>59) { shi1[3]=0; At24c02Write(6+3,shi1[3]); } shi1[4]=At24c02Read(6+4); if(shi1[4]>59) { shi1[4]=0; At24c02Write(6+4,shi1[4]); } shi1[5]=At24c02Read(6+5); if(shi1[5]>59) { shi1[5]=0; At24c02Write(6+5,shi1[5]); } init_1602();//初始化LCD TMOD|=0X01;//初始化定时器 TH0=0X3C; TL0=0XB0; ET0=1;//打开定时器0中断允许 EA=1;//打开总中断 TR0=1;//打开定时器 while(1) { i=key_scan();//按键检测 led=beep; if(i==4)//OK { mode=0; } if(i==1)//设置上课1 { mode=1; write_com(1); } if(i==5)//设置下课1 { mode=2; write_com(1); } if(i==2)//设置上课2 { mode=3; write_com(1); } if(i==6)//设置下课2 { mode=4; write_com(1); } if(i==3)//设置上课3 { mode=5; write_com(1); } if(i==7)//设置下课3 { mode=6; write_com(1); } if(mode>0) { if(i==9)//小时加 { if(shi1[mode-1]<23) shi1[mode-1]++; At24c02Write(6+mode-1,shi1[mode-1]); } if(i==10)//小时减 { if(shi1[mode-1]>0) shi1[mode-1]--; At24c02Write(6+mode-1,shi1[mode-1]); } if(i==11)//分钟加 { if(fen1[mode-1]<59) fen1[mode-1]++; At24c02Write(mode-1,fen1[mode-1]); } if(i==12)//分钟减 { if(fen1[mode-1]>0) fen1[mode-1]--; At24c02Write(mode-1,fen1[mode-1]); } } } } //定时器中断 void Timer0() interrupt 1 { if(time<10)//0.5s time++; else { time=0; //打铃控制 if((shi==shi1[0])&&(fen==fen1[0])&&(miao<20)) { flag=1; } else if((shi==shi1[1])&&(fen==fen1[1])&&(miao<20)) { flag=2; } else if((shi==shi1[2])&&(fen==fen1[2])&&(miao<20)) { flag=3; } else if((shi==shi1[3])&&(fen==fen1[3])&&(miao<20)) { flag=4; } else if((shi==shi1[4])&&(fen==fen1[4])&&(miao<20)) { flag=5; } else if((shi==shi1[5])&&(fen==fen1[5])&&(miao<20)) { flag=6; } else { flag=0; } if(flag>0) beep=0; else beep=1; //显示 if(mode==0) { disp[0]=shi/10+0x30;//显示时间 disp[1]=shi%10+0x30; disp[3]=fen/10+0x30; disp[4]=fen%10+0x30; disp[5]=':'; disp[6]=miao/10+0x30; disp[7]=miao%10+0x30; write_string(2,0,"TIME "); write_string(2,5,disp); //打铃显示 if(flag>0) { if(flag%2==1)//上课 write_string(1,0,"attend a class "); else write_string(1,0,"dismiss a class"); } else { write_string(1,0," welcom! "); } } if(mode==1)//上课1 { write_string(1,0,"class1:UP"); disp[0]=shi1[0]/10+0x30;//显示时间 disp[1]=shi1[0]%10+0x30; disp[3]=fen1[0]/10+0x30; disp[4]=fen1[0]%10+0x30; disp[5]=' '; disp[6]=' '; disp[7]=' '; write_string(2,5,disp); } if(mode==2)//下课1 { write_string(1,0,"class1:DOWN"); disp[0]=shi1[1]/10+0x30;//显示时间 disp[1]=shi1[1]%10+0x30; disp[3]=fen1[1]/10+0x30; disp[4]=fen1[1]%10+0x30; disp[5]=' '; disp[6]=' '; disp[7]=' '; write_string(2,5,disp); } if(mode==3)//上课2 { write_string(1,0,"class2:UP"); disp[0]=shi1[2]/10+0x30;//显示时间 disp[1]=shi1[2]%10+0x30; disp[7]=' '; write_string(2,5,disp); } if(mode==4)//下课2 { write_string(1,0,"class2:DOWN"); disp[0]=shi1[3]/10+0x30;//显示时间 disp[1]=shi1[3]%10+0x30; disp[3]=fen1[3]/10+0x30; disp[4]=fen1[3]%10+0x30; disp[5]=' '; disp[6]=' '; disp[7]=' '; write_string(2,5,disp); } if(mode==5)//上课3 { write_string(1,0,"class3:UP"); disp[0]=shi1[4]/10+0x30;//显示时间 disp[1]=shi1[4]%10+0x30; disp[3]=fen1[4]/10+0x30; disp[4]=fen1[4]%10+0x30; disp[5]=' '; disp[6]=' '; disp[7]=' '; write_string(2,5,disp); } if(mode==6)//下课3 { write_string(1,0,"class3:DOWN"); disp[0]=shi1[5]/10+0x30;//显示时间 disp[1]=shi1[5]%10+0x30; disp[3]=fen1[5]/10+0x30; disp[4]=fen1[5]%10+0x30; disp[5]=' '; disp[6]=' '; disp[7]=' '; write_string(2,5,disp); } } //计时 if(sec<19) //1s sec++; else { sec=0; if(miao<59)//秒计时 miao++; else { else { fen=0; if(shi<23)//小时计时 shi++; else shi=0; } } } TH0=0X3C; TL0=0XB0; }

六、全套资料包含

​​

七:项目资源获取

需要完整的资料可以点击下面的名片关注,回复“资料”!

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

http://www.jsqmd.com/news/73940/

相关文章:

  • 【微实验】聚类还在用kmeans?来试试高斯混合模型(附MATLAB代码)
  • B站视频下载利器DownKyi:专业用户的终极操作指南
  • Redis 字符串类型完全指南:从原理到实战应用
  • 终极指南:如何用Universal x86 Tuning Utility释放Intel CPU电压调节潜力
  • Keye-VL-1.5:重新定义多模态视频理解的技术突破
  • DeepSeek + Tushare 王炸组合!我开源了一款 Fin-Agent,让 AI 帮你科学 “搞钱”!
  • 你还在用轮询?C#实时物联网通信的7种高级模式(含源码级示例)
  • 计算机Java毕设实战-基于springboot高校奖助学金系统课程成绩、体育成绩、加分申请、综合成绩、奖学金申请【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 计算机Java毕设实战-基于springboot高校教室资源管理系统的设计与实现基于java springboot+vue高校教室资源管理系统【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 2025年常州宠物医院权威推荐榜:专业诊疗与暖心服务口碑之选,常州宠物手术医院深度解析 - 品牌企业推荐师(官方)
  • B站视频转文字终极指南:一键提取视频内容神器
  • 2025 年 12 月智能升降家居系统厂家推荐榜:橱柜拉篮/化妆台/挂衣杆/柜门拉手,匠心智造与空间美学革新方案 - 品牌企业推荐师(官方)
  • 飞牛fnOS使用DNS验证方式,用acme自动签发SSL证书
  • 【2025最新】小白如何自学网络安全,零基础入门到精通,看这一篇就够了!
  • 传统SEO优化为何在技术层面需要3至6个月的较长周期?
  • 基于大数据的共享单车用户行为数据可视化分析系统
  • C语言的学习
  • [Error] Refinement limit exceeded for auto-refinement.
  • Wan2.2-T2V-A14B在AI营养师推荐食谱中的烹饪过程可视化
  • 原来让AI拥有记忆这么简单?手把手教你实现Agent长短期记忆,附实战案例
  • Bili2text视频转文字终极指南:解放你的双手与时间
  • 突破性MD-ML融合框架:引领离子液体基凝胶电解质设计新范式
  • 【API 设计之道】03 非标行为设计:当 REST 无法描述“取消订单”时怎么办?
  • AiPy Pro v0.10.4发布,支持Linux桌面操作系统,并同步发布《AiPy Pro智能体开发指南》
  • Wan2.2-T2V-A14B能否生成带有方言语音同步的区域化内容
  • 从零构建PHP扩展:基于Rust的高性能模块开发实战(完整源码级教程)
  • 2025 年 12 月苏作红木家具权威推荐榜:匠心传承与东方美学典范之选 - 品牌企业推荐师(官方)
  • 访问者模式
  • 2025年PVC地板厂家权威推荐榜:导电/防静电/同质透心/复合/商用/磁性/自沉式,专业解析各品类核心优势与选购指南 - 品牌企业推荐师(官方)
  • 算力新标杆:昇腾Atlas 800T NPU实战Llama-2-7b全流程评测与技术解析