《单片机原理及应用》电子时钟课程设计报告Word文件下载.docx
- 文档编号:22440565
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:14
- 大小:154.53KB
《单片机原理及应用》电子时钟课程设计报告Word文件下载.docx
《《单片机原理及应用》电子时钟课程设计报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《《单片机原理及应用》电子时钟课程设计报告Word文件下载.docx(14页珍藏版)》请在冰豆网上搜索。
有四个设计项目供选择:
步进电机控制、直流电机调速、电子琴或电子时钟。
设计内容与要求:
(1)选择其中一个设计项目,进行设计方案的比较和论证,确定设计思路和方案;
(2)进行硬件设计,画出硬件结构框图,完成电路原理图的设计和元器件选型,必要时应给出重要电路参数的设计和计算过程,以及元器件参数的选型依据;
(3)编写单片机的软件程序,先理清软件设计思路并绘制程序流程图,再编写具体的汇编语言或C语言程序语句,并注释说明。
成绩评定依据:
(分值百分比)
(1)确定设计思路和方案——20%;
(2)画出硬件结构框图、原理图的设计、元器件选型,给出电路参数的设计依据——30%;
(3)绘制程序流程图,再编写程序语句,并注释说明——30%;
(4)设计成果的功能完善程度、创新点、演示效果,撰写设计报告的规范性——20%。
三、
设计方案
根据定时中断的原理,数码管显示和键盘扫描电路,以及和MCS51单片机的接口方式,通过软件编程,实现时间初值设置,时钟运行和显示。
可供使用的硬件电路:
1)七段数码管显示电路;
2)8155和74LS164“串转并”实现的键盘扫描和数码管控制显示电路;
3)串并转换数码管显示电路:
通过74LS164实现串入并出,控制四个七段数码管的显示。
MCS-51单片机有一个全双工的串行通信接口,当工作于方式0时,为同步移位寄存器输入/输出方式,常用于扩展I/O口,这时串行数据通过RxD引脚输入或输出,引脚TxD输出同步移位信号,收/发数据都为8位,低位在前,波特率为振荡频率的1/12。
七段数码管的字型代码表如下表:
四、硬件和软件设计
1总原理图
1-1数码管显示部分
1-2按键部分
2操作步骤
2-1硬件操作
1)LED环境
2)PC环境
与PC联机状态,在keilc软件输入程序。
点击
图标,设置“输出”项
。
图标编译文件,编译通过后,点击
图标开始调试,等待下载完成。
3)观察运行结果
图标用连续方法运行该程序。
此时数码管上实时显示时间值。
并按相关按钮对时间进行调整
4)终止运行
按
“暂停图标”或实验箱上的“RST”按键,使系统无条件退出该程序的运行返回监控状态。
2-2软件仿真操作
1)进入Proteus仿真系统
2)点击File/OpenDesign,导入设计好的仿真原理图。
右击AT89C51芯片,选择“EditProperties/ProgramFile”载入在keilc软件产生的.HEX文件,并“OK”。
3)观察仿真结果
点击“Play”,数码管上实时显示时间值。
3)时间调整
按“暂停/开始”按钮,数码管停止计时。
按一次“选择”按钮,选中“秒”,并按“上调”或“下调”按钮调整秒;
再按一次“选择”按钮,将选中“分”,按相关按钮对分上调/下调。
调整完后,再按“暂停/开始”按钮,数码管继续实时计时。
3程序源代码
/******************************电子时钟********************************/
#include<
reg51.h>
#defineuintunsignedint
#defineucharunsignedchar
sbitCLK=P1^1;
sbitDIN=P1^2;
sbitk1_up=P1^3;
//设置上调按钮
sbitk2_down=P1^4;
//下调按钮
sbitk_3=P1^5;
//暂停/开始按钮
sbitk_4=P1^6;
//选择按钮
bitflag=0;
ucharcodetable1[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
/*共阴极0~9*/
ucharzzq[4]={0};
//显示缓存
ucharsecond,minute;
ucharnum_stop=0,us,k_num;
voiddelay(uintt)//延迟子程序
{
uintj;
while(t--)
for(j=125;
j>
0;
j--);
}
voidWrite_164(ucharData)
//写入74LS164芯片
{
uchari;
CLK=1;
for(i=0;
i<
8;
i++)
{
if((Data>
>
7)&
0x01)
DIN=1;
else
DIN=0;
CLK=0;
CLK=1;
Data<
<
=1;
}
}
voidnumber_m_s(uchars,charm)
zzq[0]=s%10;
zzq[1]=s/10;
zzq[2]=m%10;
zzq[3]=m/10;
}
voidspeak_164(void)//164送数
Write_164(table1[zzq[0]]);
Write_164(table1[zzq[1]]);
Write_164(table1[zzq[2]]|0x80);
Write_164(table1[zzq[3]]);
voidt0_1()//T0初始化子程序
TMOD=0x01;
//定时器T0工作方式1
TH0=(65535-50000)/256;
//50ms
TL0=(65535-50000)%256;
EA=1;
//开总中断
ET0=1;
TR0=1;
voidk_stop()//按键——暂停/开始
{
if(k_3==0)
delay(5);
while(!
k_3);
flag=!
flag;
voidchoose_m_s()//按键——选择
if(k_4==0)
delay(5);
if(k_4==0)
k_4);
k_num++;
if(k_num==3)
k_num=1;
voidkey_m_s()//按键---上/下调
k_stop();
//暂停
while(flag)//只有在暂停状态才能调整
TR0=0;
//停止计时
choose_m_s();
//调用选择按键
if(k_num!
=0)//当有按下选择键
if(k1_up==0)//上调
{
delay(5);
if(k1_up==0)//去抖
{
while(!
k1_up);
/*按键弹起有效*/
if(k_num==1)//上调秒
second++;
if(second==60)
second=0;
if(k_num==2)//上调分
minute++;
if(minute==60)minute=0;
}
if(k2_down==0)//下调
if(k2_down==0)
{
while(!
k2_down);
if(k_num==1)//下调秒
second--;
if(second==0)
second=59;
}
if(k_num==2)//下调分
minute--;
if(minute==0)
minute=59;
}
number_m_s(second,minute);
//更新数据speak_164();
//显示数据
delay(200);
}
//取消暂停
k_num=0;
/*保证每次暂停时,都要按“选择键”才能调整*/
//恢复计时
voidmain()
t0_1();
//定时中断
while
(1)
key_m_s();
//按键扫描
voidtime0()interrupt1//中断服务子程序
//重新赋值
us++;
if(us==20)//1秒钟
second++;
if(second==60)//1分钟
second=0;
minute++;
if(minute==60)//1小时
minute=0;
}
us=0;
number_m_s(second,minute);
/*以1秒为单位更新数据*/
speak_164();
//显示数据
4效果图
五、设计总结
通过这几天的单片机的实训,我在理论的基础上更深刻的掌握了单片机的深层内容及实际生活中的应用,让我对这门课有了许多新的了解弥补了在课堂上学习的不足。
实训锻炼了自己动手能力和思维能力,还有在软件方面的编程能力,让我受益匪浅,同时也暴露出一些平时学习上的问题,让我深刻反思。
这些问题的发现将为我以后的学习和工作找明道路,查漏补缺为进一步学习作好准备。
通过实训,让我懂得了如何编写一些简单的程序,学会了如何制作单片机应用程序,并且可以在今后的日常生活中灵活运用。
相信这对我们以后的学习和工作都会有很大的帮助。
六、参考文献
[1].单片机原理及接口技术(第二版),李全利,北京:
高等教育出版社,2009年。
[2].单片机原理及应用(第二版),李建忠,西安:
西安电子科技大学出版社,2008。
[3].单片机原理及应用,冯文旭等,北京:
机械工业出版社,2008。
[4].单片机基础(第3版),李广弟等,北京:
北京航空航天大学出版社,2007。
[5].单片机高级教程:
应用与设计(第2版),何立民,北京:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机原理及应用 单片机 原理 应用 电子 时钟 课程设计 报告
