仿真图proteus7.8及以上
程序编译器:keil 4/keil 5
编程语言:C语言
设计编号:S0046
1.主要功能:
本设计旨在设计一个基于51单片机的多功能数字时钟闹钟proteus仿真设计,可以显示时、分、秒,并且可以设置时间和闹钟。
1、采用单片机内部定时器实现计时;
2、采用八位数码管显示时分秒;
3、可对时分秒分别进行加减设置,设置时对应数码管闪烁;
4、可设置闹钟,并且到时间后蜂鸣器每隔1s响一次,持续6s;
5、闹钟鸣响时,可手动消除闹钟。
需注意仿真中51单片机芯片是通用的,AT89C51,AT89C52都是51单片机的具体型号,内核是兼容的。无论stc还是at都一样,引脚功能都是一样的,程序也是一样的,芯片可以替换为STC89C52/STC89C51/AT89C52/AT89C51等51单片机芯片。
以下为本设计资料展示图:
2.仿真
开始仿真
打开仿真工程,双击proteus中的单片机,选择hex文件路径,然后开始仿真。开始仿真后数码管显示时间00:00:00。时间逐秒递增。
显示时间的情况下,按下设置键进入设置模式,时钟闪烁表示当前正在设置时钟,再按下设置键进入分钟设置模式,分钟闪烁,再按下设置键进入秒钟设置模式,秒钟闪烁。设置完秒钟再按设置退出设置模式,数码管正常显示。
按下功能切换按键显示闹钟时间。闹钟时间显示下按下设置键进入闹钟设置模式,时钟闪烁表示当前正在设置闹钟时钟,再按下设置键进入闹钟分钟设置模式,闹钟分钟闪烁,再按下设置键进入闹钟秒钟设置模式,闹钟秒钟闪烁。设置完秒钟再按设置退出设置模式,数码管正常显示闹钟时间。
闹钟时间到,蜂鸣器闹铃,蜂鸣器每隔1s响一次,持续6s,可以通过按键关停闹钟。
3. 程序代码
使用keil4或者keil5编译,代码有注释,可以结合报告理解代码含义。
/*******************************************************************************
* 函 数 名 : main
* 函数功能 : 主函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void main()
{
Timer0Init(); //定时器0初始化
xian1[0]=shi/10;//计算到显存 时钟的十位
xian1[1]=shi%10;// 时钟的个位
xian1[3]=fen/10;// 分钟的十位
xian1[4]=fen%10;// 分钟的个位
xian1[6]=miao/10; // 秒钟的十位
xian1[7]=miao%10; // 秒钟的个位
xian2[0]=shi0/10;
xian2[1]=shi0%10;
xian2[3]=fen0/10;
xian2[4]=fen0%10;
xian2[6]=miao0/10;
xian2[7]=miao0%10;
while(1)
{
if(mode)
display2();//显示闹钟
else
display1();//显示时间
if(!key1 &&(cixu==0)) //功能切换
{
mode=!mode;
while(!key1);
}
if(!key2)//选择
{
if(cixu<3)
cixu++;
else
cixu=0;
while(!key2);
}
if(!key3) //加
{
if(mode==0)
{
switch(cixu)
{
case 1:
if(shi<23)
shi++; //时钟+
break;
case 2:
if(fen<59)
fen++; //分钟+
break;
case 3:
if(miao<59)
miao++; //秒钟+
}
}
else
{
switch(cixu)
{
case 1:
if(shi0<23)
shi0++; //闹钟时钟+
break;
case 2:
if(fen<59)
fen0++; //闹钟分钟+
break;
case 3:
if(miao0<59)
miao0++; //秒钟分钟+
}
}
xian1[0]=shi/10;//计算到显存
xian1[1]=shi%10;
xian1[3]=fen/10;
xian1[4]=fen%10;
xian1[6]=miao/10;
xian1[7]=miao%10;
xian2[0]=shi0/10;
xian2[1]=shi0%10;
xian2[3]=fen0/10;
xian2[4]=fen0%10;
xian2[6]=miao0/10;
xian2[7]=miao0%10;
while(!key3);
}
if(!key4) //减
{
if(mode==0)
{
switch(cixu)
{
case 1:
if(shi>0)
shi--;
break;
case 2:
if(fen>0)
fen--;
break;
case 3:
if(miao>0)
miao--;
}
}
else
{
switch(cixu)
{
case 1:
if(shi0>0)
shi0--;
break;
case 2:
if(fen0>0)
fen0--;
break;
case 3:
if(miao0>0)
miao0--;
}
}
xian1[0]=shi/10;//计算到显存
xian1[1]=shi%10;
xian1[3]=fen/10;
xian1[4]=fen%10;
xian1[6]=miao/10;
xian1[7]=miao%10;
xian2[0]=shi0/10;
xian2[1]=shi0%10;
xian2[3]=fen0/10;
xian2[4]=fen0%10;
xian2[6]=miao0/10;
xian2[7]=miao0%10;
while(!key4);
}
if(!key5) //停止响铃
{
beep_flag=0;
beep=1;
while(!key5);
}
if((shi==shi0)&&(fen==fen0)&&(miao==miao0))//判断响铃
{
beep_flag=1;
beep=0;
}
}
}
4. 原理图
原理图使用AD绘制,可供实物参考,仿真不同于实物,经验不足不要轻易搞实物。
Proteus仿真和实物作品的区别:
1.运行环境:Proteus仿真是在计算机上运行的,而实物则是在硬件电路板上运行。
2.调试方式:在Proteus仿真中,可以方便地进行单步调试和观察变量值的变化,而在实物中则需要通过调试器或者串口输出等方式进行调试。
电路连接方式:在Proteus仿真中,可以通过软件设置进行电路连接的修改,而在实物中则需要通过硬件电路板和连接线进行修改。
3.运行速度:Proteus仿真通常比实物运行速度快,因为仿真是基于计算机运行的,而实物则需要考虑电路板上的物理限制和器件的响应时间等因素。
4.功能实现:在Proteus仿真中,可以通过软件设置实现不同的功能,而在实物中则需要根据电路设计和器件的性能进行实现。
元器件清单
元件 型号 数量
单片机 AT89C51 1
电容 10uf 1
电容 30pf 2
晶振 12MHZ 1
电阻 10k 1
按钮 6
数码管 8位共阴 1
电阻 1k 1
三极管 PNP 1
蜂鸣器 有源 1
排阻 10k 1
电源部分
排针 2P 1
电容 0.1uf 2
电容 100uf 2
稳压器 7805 1
5. 设计报告
6600+字设计报告,内容包含设计框图,引言,硬件设计介绍,软件设计介绍,仿真调试,总结和参考文献。
6. 设计资料内容清单&&下载链接
资料设计资料包括仿真,程序代码、讲解视频、功能要求、设计报告、软硬件设计框图等。
0、常见使用问题及解决方法–必读!!!!
1、仿真图
2、程序源码
3、开题报告
4、原理图
5、功能要求
6、元器件清单
7、设计报告
8、软硬件流程框图
9、讲解视频
Altium Designer 软件资料
KEIL软件资料
Proteus软件资料
单片机学习资料
答辩技巧
设计报告常用描述
鼠标双击打开查找更多51 STM32单片机课程毕业设计.url