—實訓報告—(单片机实训报告)学院系别:机电工程学院
专业班级:电信BK31901
设计学生:张欢
指导老师:陈老师、阎老师
设计时间:2012年10月19日
万年历组装与调试及单片机实训报告
2012-10-219| 电信BK31901班张欢
一、实习时间:2012年10月15日至2012年10月19日
二、实习地点:机电实训楼
三、实习目的与要求:
1熟练C语言中if语句、for语句、while语句的使用。
2.掌握万年历的基本原理,学会分析基本的电路原理图。
3.学会利用Keil软件和proteus软件进行设计。
四、实习内容:
1.利用Keil软件对数码管(秒表)液晶(时钟)编程,并进行编译和链接。
2.掌握AT89C51芯片I/O口的功能及作用。
3.灵活运用C语言对中断、定时计数器及数码管进行编程设计。
4认真掌握proteus仿真软件,并用proteus画出电路图软件进行仿真。
5.掌握万年历的工作原理,学会贴片电容,贴片电阻,晶振集成块的识别与测试,进一步掌握和熟练焊接技术。
五、运用Keil软件对数码管及液晶进行编程设计并用proteus仿真
1.用数码管显示0—60的源程序:
#include<reg51.h>
#define uint unsigned char
#define uchar unsigned int
sbit K1=P3^7;
uchar i,Second_Counts,Key_Flag_Idx;
bit Key_State;
uchar code DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f};
void DelayMS(uint x)
{ uchar t;
while(x--)
for(t=0;t<500;t++);}
void Key_Byent_Handle()
{ if(Key_State==0)
{Key_Flag_Idx=(Key_Flag_Idx+1)%3;
switch(Key_Flag_Idx)
{case 1:EA=1;ET0=1;TR0=1;break;
case 2:EA=0;ET0=0;TR0=0;break;
case 0:P0=0x3f;P2=0x3f;i=0;Second_Counts=0; }}} void main()
{P0=0x3f;
P2=0x3f;
i=0;
Second_Counts=0;
Key_Flag_Idx=0;
Key_State=1;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
while(1)
{if(Key_State!=K1)
{DelayMS(10);//开关消抖
Key_State=K1;
Key_Byent_Handle();}}}
void DSY_keyfresh() interrupt 1
{TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
if(++i==2)
{i=0;
Second_Counts++;
P0=DSY_CODE[Second_Counts/10];
P2=DSY_CODE[Second_Counts%10];
if(Second_Counts==60)
Second_Counts=0;}}
2.用液晶显示年、月、日、字符串的源程序:
#include<reg52.h>
unsigned char code tab[]="welcome BK31901"; unsigned char code tab1[] ="2012-10-19"; unsigned char num;
sbit RS=P1^2;
sbit RW=P1^1;
sbit E =P1^0;
void delay(unsigned int z)
{unsigned int x,y;
for(x=z;x>0;x--)
for(y=0;y<150;y++);}
void write_com(unsigned char cmd)
{RS=0;
RW=0;
E=1;
P2=cmd;
E=0;
delay(2);}
void write_data(unsigned char dat)
{RS=1;
RW=0;
E=0;
P2=dat;
E=0;
delay(2);}
void init()
{write_com(0x38);
write_com(0x08);
write_com(0x01);
write_com(0x0f);
write_com(0x06);}
int main()
{init();
write_com(0x80);
for(num=0;num<17;num++)
{write_data(tab[num]);}
write_com(0x80-0x42);
for(num=0;num<11;num++)
{ write_data(tab1[num]);}
while(1);
return 0;}
3.用proteus画出电路图软件进行仿真
六、作品实物图片
七、心得体会
在本次单片机实训中,我们从焊接贴片电阻、贴片电容、电子元器件开始,到组装、调试、检验合格,完成了万年历的整个过程。
这样不仅加深了我们对理论知识的理解,而且增强了我们的实际动手能力,还引起了我们的浓厚兴趣,为后续的专业课的学习起到了很大的作用。
通过一个星期的学习,我了解到了焊插件元件与贴片元件的技巧等。
这些知识不仅在课堂上有效,对以后的电子工艺课的学习有很大的指导意义,在日常生活中更是有着现实意义;也对自己的动手能力是个很大的锻炼。
实践出真知,纵观古今,所有发明创造无一不是在实践中得到检验的。
没有足够的动手能力,就奢谈在未来的科研尤其是实验研究中有所成就。
总之,在这次实习之中我们学到了很多东西,在理论上,动手上,甚至在态度都有了提高。
通过这次实习我发现要干好一件事情必须要不怕困难,坚持到底,只有这样才会战胜困难,赢得最后的胜利!。