news 2026/3/29 19:50:53

基于单片机倒数计数器(LCD,独立按键)系统Proteus仿真(含全部资料)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于单片机倒数计数器(LCD,独立按键)系统Proteus仿真(含全部资料)

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

资料下载:↓↓↓

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


目录

资料下载:

Proteus仿真功能

项目文件资料:

一、Proteus仿真源文件

二、AD原理图文件

二、报告说明书

三、系统流程图

四、Keil c语言程序源代码


项目功能:

利用AT89S52单片机结合字符型LCD显示器设计一个简易的倒数计数器,可用来煮方便面、煮开水或小睡片刻等。做一小段时间倒计数,当倒计数为O时,则发出一段音乐声响,通知倒计数终了,该做应当做的事。
定时闹钟的基本功能如下。
字符型LCD (16x2)显示器。显示格式为"TIME分分:秒秒”。
用4个按键操作来设置当前想要倒计数的时间。一旦按下键则开始倒计数,当计数为0时,发出一阵音乐声。
程序执行后工作指示灯LED闪动,表示程序开始执行,按下操作键K1~K4动作如下。
K1一可调整倒计数的时间1—60分钟。
K2一设置倒计数的时间为5分钟,显示"05: 00”。
K3一设置倒计数的时间为10分钟,显示"10: 00”。
K4-设置倒计数的时间为20分钟,显示"20: 00”。
复位后LCD的画面应能显示倒计时的分钟和秒数,此时按下K1键可以在LCD上显示出设置画面。此时,若
A.按操作键K2-一增加倒计数的时间1分钟。
B.按操作键K3—一减少倒计数的时间1分钟。
C.按操作键K4一—设置完成。


项目文件:

一、Proteus仿真源文件

​​

二、AD原理图文件

二、报告说明书

三、系统流程图

​​

四、器件清单

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

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

//音符半周期us 1908 1706 1520 1436 1276 1136 1012 956 854 760 718 638 568 506 478 426 380 358 320 284 254 #include <reg51.h> #include <intrins.h> #include "lcd1602.h" #define uchar unsigned char #define uint unsigned int sbit S1=P1^0;//按钮定义 sbit S2=P1^1; sbit S3=P1^2; sbit S4=P1^3; sbit K1=P3^4; sbit K2=P3^5; sbit K3=P3^6; sbit K4=P3^7; sbit beep=P2^7;//蜂鸣器 sbit led=P2^6; uchar ge_num=1;//歌曲编号 //音符半周期us 1908 1706 1520 1436 1276 1136 1012 956 854 760 718 638 568 506 478 426 380 358 320 284 254 //半周期 uint code music[22]={0x0fff,1908,1706,1520,1436,1276,1136,1012,956,854,760,718,638,568,506,478, 426, 380, 358, 320, 284, 254}; //节拍编码,一个16拍半周期数 uint code pai16[22]={1,80, 88, 99, 105, 117, 132,148, 157,175,196,208,234,264,295,313, 351, 394, 418, 471, 528, 589}; //简谱,半周期us+节拍时间(16分拍倍数) uchar code gequ1[]={ 10,2,0,1,10,2,9,6,7,2,0,1,7,2,8,2,0,1,8,4,0,12,10,2,0,1,10,2,9,2,8,2,9,2,12,2,0,1,12,2,10,2,0,1,10,8, 0,8,13,2,0,1,13,2,12,4,10,2,9,2,10,4,9,4,8,8,10,4,9,2,8,2,9,6,7,2,0,1,7,2,6,2,0,1,6,8,0,8,10,2,0,1, 10,2,9,6,7,2,0,1,7,2,8,2,0,1,8,4,0,12,10,2,0,1,10,2,9,2,8,2,9,2,12,2,0,1,12,2,10,2,0,1,10,8,0,4, 0,4,13,2,0,1,13,2,12,4,10,2,9,2,10,4,9,4,8,8,10,4,9,2,8,2,9,6,8,2,0,1,8,10,0,4,0,12, 10,2,12,2,13,4,15,4,14,6,12,2,10,4,0,4,8,2,0,1,8,6,13,2,0,1,13,2,12,2,10,2,9,2, 10,8,0,12,10,2,12,2,13,4,15,4,14,6,10,2,15,4,0,2,10,2,9,6,13,2,0,1,13,2,12,2,10,2,9,2, 8,2,0,1,8,2,0,1,8,8,0,4,10,4,6,1,9,1,10,1,12,1,10,4,6,1,9,1,10,1,13,1,10,4,5,1,7,1,8,1,12,1,10,4,0,1,10,2,12,2,13,4,10,4,9,4,5,4, 8,8,0,1,8,8,0,4,10,2,0,1,10,2,9,6,7,2,8,8,0,12,10,2,0,1,10,2,9,2,8,2,12,2, 12,2,10,2,0,1,10,8,0,8,13,2,0,1,13,2,12,4,10,2,9,2,10,4,9,4,8,8,10,4,9,2,8,2,9,6,7,2, 7,2,6,2,0,1,6,8,0,8,10,2,0,1,10,2,9,6,7,2,0,1,7,2,8,2,0,1,8,4,0,12,10,2,0,1,10,2,9,2,8,2,9,2,12,2, 12,2,10,2,0,1,10,8,0,8,13,2,0,1,13,2,12,4,10,2,9,2,10,4,9,4,8,8,10,4,9,2,8,2,9,6,8,4, 8,8,0,12,0,8,10,2,12,2,13,4,15,4,14,6,12,2,10,4,0,4,8,2, 8,6,13,2,0,1,13,2,12,2,10,2,9,2,10,8,0,8,10,2,12,2,13,4,15,4,14,6,10,2,15,4,0,4,10,2, 9,6,13,2,0,1,13,2,12,2,10,2,9,2,8,12,0,8,10,2,12,2,13,4,15,4,14,6,12,2,10,4,0,4,8,2, 8,6,13,2,0,1,13,2,12,2,10,2,9,2,0,1,9,2,10,2,0,1,10,8,0,8,10,2,12,2,13,6,15,2,14,4,10,4,15,4,0,4,10,2, 9,6,13,2,0,1,13,2,12,2,10,2,9,2,8,2,0,1,8,2,0,1,8,8,0,8,10,2,12,2,13,4,15,4,14,6,10,2,16,2,15,2,0,2,10,2, 9,6,13,2,0,1,13,2,12,2,10,4,9,1,8,1,0,1,8,2,0,1,8,8,0,8,10,4,9,6,7,2,0,1,7,2,8,2,0,1,8,4,0,8, 10,4,9,6,12,2,0,1,12,2,10,2,0,1,10,8,0,8,13,4,12,4,10,2,9,2,10,6,9,2,8,8, 10,4,9,2,8,2,9,8,8,4,6,8,0xff }; uchar code gequ2[]={ //一剪梅 14,3, 12,3, 13,8,13,2, 15,1, 14,1, 13,1, 12,1, 10,1,12,1,10,12,6,1,8,1, 9,8,0,1,9,2,10,1,9,1,8,1,9,1,7,1, 6,12,0,1,6,2,0,1, 6,2, 10,4, 9,1, 8,1, 7,1, 8,2, 7,2, 6,1, 5,1, 6,12,0,1, 6,2, 8,4,0,1, 6,1, 8,1, 9,4, 10,1, 11,1, 10,1, 9,1, 10,12,0,1, 10,1, 12,1, 13,6, 12,1, 10,1, 9,6, 8,1,9,1, 10,6, 9,1, 10,1, 6,8, 7,2, 7,1, 6,1, 5,2, 7,4, 5,1, 3,1, 10,2, 8,1, 7,1, 6,12,0,1,6,2, 6,10,0,1, 6,2, 13,4, 12,2, 10,1, 12,1, 10,1, 12,1, 13,4, 12,2, 9,4, 10,1, 12,1, 10,8, 7,1,6,5,7,1,6,5,12,1,13,1, 10,1, 9,1, 10,6,0,1,10,8, 6,2, 13,4, 12,2, 10,1, 12,1, 10,1, 12,1, 13,4, 12,2, 9,4, 10,1, 12,1, 10,8, 8,1,6,7,10,1,9,1,10,4,12,1,13,1, 10,1, 9,1, 10,6,0,1,10,8, 6,2, 13,4, 12,2, 10,1, 12,1, 10,1, 12,1, 13,4, 12,2, 9,4, 10,1, 12,1, 10,8, 7,1,6,7,7,1,6,7, 0xff }; uchar code gequ3[]={ //花心 10,2, 12,2, 0,1, 12,12, 0,1, 12,2, 13,2, 12,2, 10,8, 9,2, 10,2, 0,1, 9,12, 6,4, 8,10, 0,1, 5,4, 0,1, 5,4, 6,4, 0,2, 8,2, 9,2, 10,4, 8,4, 9,2, 0,1, 9,1, 10,1, 9,2, 8,2, 7,4, 8,4, 0,1, 8,10, 0,2, 12,2, 0,1, 12,4, 13,4, 0,1, 15,2, 0,1, 15,2, 0,1, 15,4, 12,4, 13,2, 0,1, 13,1, 15,1, 13,2, 12,2, 10,4, 12,4, 0,1, 12,10,0,1, 5,2, 0,1, 5,2, 6,2, 8,2, 0,1, 8,2, 9,2, 10,4, 8,4, 9,2, 10,2, 15,4, 13,2, 12,2, 0,1, 12,8, 10,4,12,4,0,1,10,2,0,1,10,2,0,1,10,2,9,2,10,2, 9,2,8,2,0,1,9,2,0,1,9,2,0,1,9,2,10,2,9,4,8,2,7,2, 7,2,0,1,7,2,0,1,7,2,0,1,7,2,0,1,7,2,8,2,9,2,8,2,0,1,8,10,0,1,12,2,13,2,15,2,0,1, 15,2,16,2,15,4,13,2,12,2,0,1,12,6,13,2,12,2,10,4,12,4,0,1,10,2,0,1,10,2,0,1,10,2,0,1,10,4,9,2, 8,2,0,1,9,2,0,1,9,2,0,1,9,2,10,2,9,4,8,2,7,2,0,1,7,2,0,1,7,2, 0xff }; uchar gequ=0;//指定播放歌曲 uint times=0;//节拍数 uint num=0;//计数 uchar a=0xfc,b=0x18;//定时器初值 uint first=1;//公共变量 uint time=0; //计时 uchar shunxu=0;//显示控制 //============================= uchar miao=0,fen=1,sec=0;//倒计时 uchar mode=0;//模式 uchar start=0; uchar disp[]="00:00"; void delay(uint i)//延时 { uchar k; while(i--) for(k=0;k<110;k++); } //主函数 void main() { init_1602();//初始化 write_string(2,0,"shi jian zhuyu"); TMOD=0X11;//定时器0,工作方式1。 TH0=0XFC; //定时1ms TL0=0X18; TH1=0X3C; //定时50ms TL1=0XB0; ET0=1;//打开定时器0中断允许 ET1=1; TR1=1; EA=1;//打开总中断 while(1) { if(!TR0) { if(!S1)//乐曲1 { beep=1;delay(1000);gequ=0;num=0;ge_num=1; write_string(2,0,"shi jian zhuyu"); while(!K1); } if(!S2)//乐曲2 { beep=1;delay(1000);gequ=1;num=0;ge_num=2; write_string(2,0,"Yi Jian Mei "); while(!K2); } if(!S3)//乐曲3 { beep=1;delay(1000);gequ=2;num=0;ge_num=3; write_string(2,0,"Hua Xin "); while(!K3); } } if(!S4)//停止 { TR0=0;beep=1; num=0; } if(!K1)//设置 { mode=1; //TR1=1; } if(!K2)//加 { if(mode==0) { fen=5; miao=0; start=1; } else { if(fen<60) fen++; } while(!K2); } if(!K3)//减 { if(mode==0) { fen=10; miao=0; start=1; } else { if(fen>1) fen--; } while(!K3); } if(!K4)//设置完成 { if(mode==0) { fen=20; miao=0; } else { mode=0; start=1; } while(!K4); } //led闪烁 if(start) { if(sec<10) led=0; else led=1; } else led=1; } } //定时器0中断 void Timer0() interrupt 1 { TH0=a; //给定时器赋初值 TL0=b; switch(gequ) { case 0: if(gequ1[num]!=0) beep=!beep; if(times<first)//节拍数未到,计数+1 times++; //计时 else { times=0; //节拍清零 num+=2; //下一个音符 if(gequ1[num]==0xff) //结束 { num=0; TR0=0;//关闭定时器 beep=1; } a=(65536-music[gequ1[num]])/256; //设置初值 b=(65536-music[gequ1[num]])%256; first=gequ1[num+1]*pai16[gequ1[num]]; } break; case 1: if(gequ2[num]!=0) beep=!beep; if(times<first)//节拍数未到,计数+1 times++; //计时 else { times=0; //节拍清零 num+=2; //下一个音符 if(gequ2[num]==0xff) //结束 { num=0; TR0=0;//关闭定时器 beep=1; } a=(65536-music[gequ2[num]])/256; //设置初值 b=(65536-music[gequ2[num]])%256; first=gequ2[num+1]*pai16[gequ2[num]]; } break; case 2: if(gequ3[num]!=0) beep=!beep; if(times<first)//节拍数未到,计数+1 times++; //计时 else { times=0; //节拍清零 num+=2; //下一个音符 if(gequ3[num]==0xff) //结束 { num=0; TR0=0;//关闭定时器 beep=1; } a=(65536-music[gequ3[num]])/256; //设置初值 b=(65536-music[gequ3[num]])%256; first=gequ3[num+1]*pai16[gequ3[num]]; } } } //定时器1中断 void Timer1() interrupt 3 { if(sec<20)//1s sec++; else { sec=0; if(start) { if(miao>0)//倒计时 miao--; else { if(fen>0) { miao=59; fen--; } else { TR0=1;//启动音乐 start=0;//停止计时 } } } } //显示 disp[3]=miao/10+0x30; disp[4]=miao%10+0x30; if(mode) write_string(1,3,"SET "); else write_string(1,3,"TIME"); write_string(1,7,disp); TH1=0X3C; //定时50ms TL1=0XB0; }

六、全套资料包含

​​

七:项目资源获取

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

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

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

32B参数新标杆:DeepSeek-R1-Distill-Qwen-32B如何应对企业AI落地挑战

导语 【免费下载链接】DeepSeek-R1-Distill-Qwen-32B DeepSeek-R1-Distill-Qwen-32B&#xff0c;基于大规模强化学习&#xff0c;推理能力卓越&#xff0c;性能超越OpenAI-o1-mini&#xff0c;适用于数学、代码与推理任务&#xff0c;为研究社区提供全新小型密集模型。,222 项…

作者头像 李华
网站建设 2026/3/28 6:07:30

NoteGen(Markdown笔记)

链接&#xff1a;https://pan.quark.cn/s/702e3ce2d5f1软件介绍以下是将上述文案总结成一段的下载链接描述&#xff1a; 下载链接为下载地址&#xff0c;在这里您可以获取所需资源。这是一个方便快捷的途径&#xff0c;将上述文案中的关键信息总结起来&#xff0c;您可以找到我…

作者头像 李华
网站建设 2026/3/29 14:56:31

IEC 60068-2-64医疗器械宽带随机振动测试标准应用

随着医疗技术的快速发展&#xff0c;医疗器械在各种复杂环境中的可靠性和安全性日益受到重视。IEC 60068-2-64:2019标准为宽带随机振动测试提供了国际化规范&#xff0c;对医疗设备的质量控制具有重要指导意义。医疗器械在其生命周期中会面临多种振动环境。从生产工厂到医院的运…

作者头像 李华
网站建设 2026/3/25 15:21:56

本地AI革命:EmbeddingGemma开启3亿参数级嵌入模型离线应用新纪元

在当今AI驱动的数字生态中&#xff0c;一个颠覆性的技术突破正在悄然改变我们与人工智能交互的方式。EmbeddingGemma——这款仅有3.08亿参数的轻量级开源嵌入模型&#xff0c;正以其惊人的性能重新定义本地AI应用的可能性。想象一下&#xff0c;在你的笔记本电脑、家用台式机&a…

作者头像 李华