news 2026/5/26 7:21:20

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于单片机打铃(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; }

六、全套资料包含

​​

七:项目资源获取

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

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/25 11:59:44

不是吧,都2025年了你别说你还不会Spring MVC基本应用

1.1 经典三层结构 在JavaEE开发中&#xff0c;几乎全部都是基于B/S架构的开发。那么在B/S架构中&#xff0c;系统标准的三层架构包括&#xff1a;表现层、业务层、持久层。三层架构在我们的实际开发中使用得非常多&#xff0c;接下来我们详细了解下这三层架构。 表现层&#…

作者头像 李华
网站建设 2026/5/25 8:40:42

Wan2.2-T2V-A14B是否开放LoRA微调接口?社区开发者关注焦点

Wan2.2-T2V-A14B是否开放LoRA微调接口&#xff1f;社区开发者关注焦点 在AI生成内容&#xff08;AIGC&#xff09;浪潮席卷全球的今天&#xff0c;文本到视频&#xff08;Text-to-Video, T2V&#xff09;技术正从实验室走向实际生产环境。相比图像生成&#xff0c;视频生成不仅…

作者头像 李华
网站建设 2026/5/26 6:46:44

第九篇 异常统一处理

异常统一处理的优势提高代码可维护性 通过集中管理异常处理逻辑&#xff0c;避免重复代码&#xff0c;减少因异常处理分散导致的维护困难。统一处理机制使修改和扩展异常处理策略更加便捷。增强系统健壮性 统一捕获未处理的异常&#xff0c;防止程序意外终止。通过预设的降级策…

作者头像 李华
网站建设 2026/5/26 5:54:22

NVIDIA Profile Inspector完全攻略:释放显卡隐藏性能

NVIDIA Profile Inspector完全攻略&#xff1a;释放显卡隐藏性能 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector NVIDIA Profile Inspector是一款能够深度挖掘NVIDIA显卡性能的利器。与官方控制面板相比…

作者头像 李华