news 2026/6/23 21:38:37

基于单片机倒数计数器(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/6/23 13:39:31

AMD Nitro-E:轻量级文本到图像扩散模型家族的技术突破与性能解析

AMD Nitro-E&#xff1a;轻量级文本到图像扩散模型家族的技术突破与性能解析 【免费下载链接】Nitro-E 项目地址: https://ai.gitcode.com/hf_mirrors/amd/Nitro-E 在人工智能图像生成领域&#xff0c;高效与高质量的平衡一直是开发者追求的核心目标。AMD近期推出的Nit…

作者头像 李华
网站建设 2026/6/23 13:32:06

AI学习与职业发展:一次关于证书与能力的真实思考

在职业发展的某个阶段&#xff0c;许多职场人都会面临相似的困惑&#xff1a;在人工智能技术快速发展的背景下&#xff0c;如何通过系统性学习来增强自己的职业竞争力&#xff1f;作为从传统内容领域转向数字策略方向的从业者&#xff0c;我也曾面临选择学习路径的难题。经过近…

作者头像 李华
网站建设 2026/6/23 0:26:54

详细描述一条 SQL 在 MySQL 中的执行过程

一条 SQL 在 MySQL 中的执行&#xff0c;是一个贯穿服务层与存储引擎层的精密过程。第一阶段&#xff1a;服务层处理&#xff08;连接、解析与规划&#xff09;连接器 职责&#xff1a;管理客户端连接、身份认证与权限校验。详细过程&#xff1a;客户端通过TCP连接后&#xff0…

作者头像 李华
网站建设 2026/6/23 15:33:48

Ubuntu22.04 5080配置深度学习环境

废话不多说&#xff0c;我直接上配置 首先是Ubuntu22.04的系统&#xff0c;5080的显卡&#xff0c;目前(2025年12月11日)只能用最新的cuda128的版本&#xff0c;太低都不能用。 然后用mamba创建python3.11的环境 涉及到的torch和torchvision以及torchaudio版本如下所示 一定要…

作者头像 李华
网站建设 2026/6/23 15:31:05

Wan2.2-T2V-A14B在虚拟演唱会背景制作中的大规模应用

Wan2.2-T2V-A14B在虚拟演唱会背景制作中的大规模应用 当一场虚拟演唱会上&#xff0c;歌手还未开口&#xff0c;舞台背后的水墨长江已随旋律缓缓流淌&#xff0c;古船顺流而下&#xff0c;白鹭惊起飞掠镜头&#xff0c;天空由晴转雨&#xff0c;涟漪荡开——这一切并非出自数十…

作者头像 李华