微机控制系统实习报告.docx

上传人:b****5 文档编号:7399666 上传时间:2023-01-23 格式:DOCX 页数:13 大小:378.37KB
下载 相关 举报
微机控制系统实习报告.docx_第1页
第1页 / 共13页
微机控制系统实习报告.docx_第2页
第2页 / 共13页
微机控制系统实习报告.docx_第3页
第3页 / 共13页
微机控制系统实习报告.docx_第4页
第4页 / 共13页
微机控制系统实习报告.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

微机控制系统实习报告.docx

《微机控制系统实习报告.docx》由会员分享,可在线阅读,更多相关《微机控制系统实习报告.docx(13页珍藏版)》请在冰豆网上搜索。

微机控制系统实习报告.docx

微机控制系统实习报告

微机控制系统实习报告

 

课题:

电子钟设计

 

系院:

机械与控制工程学院

专业:

自动化

组成员:

陈增林(3070419150)

叶明广(3070419131)

陈其宇(3070419132)

庞业煌(3070419145)

电子钟设计

1、设计要求

电子钟的设计要求是用单片机组成一个具有键盘模块、显示模块、闹铃模块、单片机模块的电子钟,键盘采用4*4的键盘,键盘具有调整时间,设置闹铃开或关等功能。

显示模块使用三个二联(0.5)数码管显示时、分、秒。

数码管的驱动使用到三极管9012来驱动。

单片机是使用上电复位。

二、设计方案

本设计采用AT89S52单片机为核心控制器件,系统组成框图如下图1所示。

AT89S51是美国ATMEL公司生产的低功耗,高性能CMOS8位单片机,片内含4kbytes的可系统编程的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚。

它集Flash程序存储器既可在线编程(ISP)也可用传统方法进行编程及通用8位微处理器于单片芯片中,ATMEL公司的功能强大,低价位AT89S51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。

图1系统组成框图

3、硬件设计

原理电路图如图2所示,电路板PCB图如图3所示,图4为电源的PCB图。

图3电子钟PCB图

图4电源PCB图

4、软件设计

1、程序流程图

程序流程图如图5所示

....................................

图五(a)主程序

图五(b)键功能程序流程图

2、参考程序

#include

#defineucharunsignedchar

#defineuintunsignedint

#definekeyP3

voidmsec(uintx);

voidxianshi();

ucharjianpan(void);

voidnaolingsheji();

voidtiaoshijian();

sbitnling=P1^0;//蜂鸣器

sbitkaiguan=P1^1;//闹铃开关

bitdian,keep=1;

uchari,sum;

uintk,n;

ucharhour,min,sec;

ucharhour1,min1,sec1;

ucharshijian[6]={1,2,3,4,5,6};//时间时--秒

ucharnaoling[6]={1,2,3,4,5,6};//闹铃时--秒

codeuintshuzu[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};

ucharweixuan[6]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};//位选初始化

voidmain()

{

//********定时初始化*********************

TMOD=0x01;

TL0=(65536-20000+35)%256;//35为实际校正

TH0=(65536-20000+35)/256;//35为实际校正

IE=0x82;

TR0=1;

//***************************************

kuaiguan=0;

while

(1)

{

shijian[0]=hour/10;//时间

shijian[1]=hour%10;

shijian[2]=min/10;

shijian[3]=min%10;

shijian[4]=sec/10;

shijian[5]=sec%10;

naoling[0]=hour1/10;//闹铃

naoling[1]=hour1%10;

naoling[2]=min1/10;

naoling[3]=min1%10;

naoling[4]=sec1/10;

naoling[5]=sec1%10;

tiaoshijian();//调时间

naolingsheji();//闹铃设计

}

}

//*********进入定时T0中断*******************

voidtimet()interrupt1

{

TL0=(65536-20000+35)%256;//35为实际校正

TH0=(65536-20000+35)/256;//35为实际校正

xianshi();

sum++;

if(sum==25||sum==50)

dian=~dian;//点闪

if(sum==50)

{

nling=1;//整点报时1s

sum=0;

sec++;

if(sec==60){sec=0;min++;}

if(min==60){min=0;hour++;}

if(hour==24){hour=0;}

}

}

//*********送数显示*********************

voidxianshi()

{

for(i=0;i<6;i++)

{

P2=weixuan[i];//位选

if(keep==1)

{

if(dian==0&&(i==1||i==3))//时间显示

P0=shuzu[shijian[i]]|0x80;

else

P0=shuzu[shijian[i]];

}

else

if(dian==0&&(i==1||i==3))//闹铃显示

P0=shuzu[naoling[i]]|0x80;

else

P0=shuzu[naoling[i]];

msec

(1);

P2=0xff;

}

}

//*********调时间**************************

voidtiaoshijian()

{

uchark,w;

k=jianpan();

switch(k)

{

case15:

nn:

shijian[0]=10;//调现在时间

shijian[1]=10;

shijian[2]=10;

shijian[3]=10;

shijian[4]=10;

shijian[5]=10;

do

{

k=jianpan();

if((k>=0)&&(k<=9))//0-9有效

{

shijian[w]=k;

w++;

msec(200);

}

}

while(w<6);

w=0;

hour=shijian[1]+shijian[0]*10;//送时间显示

min=shijian[3]+shijian[2]*10;

sec=shijian[5]+shijian[4]*10;

if(hour>23||min>59||sec>59)//超范围时无效

gotonn;break;

case14:

mm:

keep=0;//调闹铃时间

naoling[0]=10;

naoling[1]=10;

naoling[2]=10;

naoling[3]=10;

naoling[4]=10;

naoling[5]=10;

do

{

k=jianpan();

if((k>=0)&&(k<=9))//0-9有效

{

naoling[w]=k;

w++;

msec(200);

}

}

while(w<6);

w=0;

hour1=naoling[1]+naoling[0]*10;//送闹铃显示

min1=naoling[3]+naoling[2]*10;

sec1=naoling[5]+naoling[4]*10;

if(hour1>23||min1>59||sec1>59)//超范围时无效

{gotomm;}

keep=1;break;

case13:

keep=~keep;//看闹铃开/关

msec(255);break;

case12:

kaiguan=~kaiguan;//闹铃开关

msec(200);

break;

default:

break;

}

}

//*********闹铃设计**************************

voidnaolingsheji()

{

if(min==0&&sec==0)

nling=0;//整点报时

if(kaiguan==1&&hour==hour1&&min==min1&&n==1)

{

k++;

if(k==5000)

{

nling=~nling;

k=0;

}

}

}

//*********键盘扫描*************************

ucharjianpan(void)

{

//static;静态变量

ucharn,m,leiyu;

ucharbijiao=0x01;

key=0x0f;

if(key!

=0x0f)

{

msec(10);//消除抖动

if(key!

=0x0f)//判断是否确有按键按下

{

for(n=0;n<4;n++)//行扫描

{

leiyu=0x10;

key=~bijiao;

for(m=0;m<4;m++)//列扫描

{

if((key&leiyu)==0)

{

return(n*4+m);//有按下是取出键值

}

else

leiyu=leiyu<<1;//扫描下一列

}

bijiao=bijiao<<1;//扫描下一行

}

}

}

return(22);//没按键按下时返回0

}

//*********延时1ms**********************

voidmsec(uintx)

{

ucharj;

while(x--)

{

for(j=0;j<125;j++)

{;}

}

}

5、调试

 

6、实习心得

历时三个星期的综合电子实习就要结束了,三个星期以来,我们为了那个课题做了很多工作,在这个过程中感觉学到了很多东西。

我们组选的题目不是实习指导书里的的,设计课题是电子钟设计,这个设计的要求是用单片机组成一个具有键盘模块、显示模块、闹铃模块、单片机模块的电子钟,键盘采用4*4的键盘,键盘具有调整时间,设置闹铃开或关等功能。

显示模块使用三个二联(0.5)数码管显示时、分、秒。

数码管的驱动使用到三极管9012来驱动。

单片机是使用上电复位。

选好题目,明确功能要求之后就开始资料的收集。

完成这些资料的准备之后我们开始了电路图的设计,按照设计的电路图画好PCB图之后开始软件部分的设计,软件部分主要设计到相关实验程序的编写,完成这些后就可以进行电路板的制作,制作过程在这里就省略了。

做好电路板之后就开始原件的焊接,完成这一步就进到了最后一步,调试作品的过程,通常来说调试是最难的一部分。

在调试过程是让。

处理好这些细节之后我们的作品也就完成了。

经过这次实习,我觉得我们以前在学校所接触的书本上的东西远远不够,我们应该更多的投入到实际之中,更多的接触社会,只存在于理论中,不仅让我们觉得枯燥乏味,不易理解,而且让我们不能真正明白和懂得知识理论和实际的差距,学习更多的理论的同时我们也要积极接触社会实践,希望学校可以给我们更多这样的机会。

以上是我本次实习学到的一些知识还有我的一些理解,总的来说收获很多,学到了很多,我想我们都应该认真的对待类似的实习或实践,这些都是我们能够学到操作本领的地方,可以让我们不满足于书本,学到更多的有用的知识。

这样我们以后离开学校走上社会,也不至于仅仅是些空口空谈,没有一点实际技巧的人,可以让我们更加好的融入社会,适应社会,希望以后有更多实践自己动手的机会。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 药学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1