微机控制系统实习报告文档格式.docx

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

微机控制系统实习报告文档格式.docx

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

微机控制系统实习报告文档格式.docx

直流稳压电源工作流程为降压、整流(把交流电变直流电),输入滤波、三端稳压器稳压、输出滤波五部分。

 

220V的交流电从直流稳压电源插头经保险管送到变压器的初级线圈,并从次级线圈感应出经约9V的交流电压送到4个二极管。

二极管在电路中的符号有短线的一端称为它的负极(或阴极),有三角前进标志的一端称为它的正极(或阳极)。

基本作用是只允许电流从它的正极流向它的负极(即只能按三角标示的方向流动),而不允许从负极流向正极。

交流电的特点是方向和电压大小一直随时间变化,用通俗的话说,它的正负极是不固定的。

但是不管从变压器中出来的两根线中哪根电压高,电流都能而且只能由D3或D4流入右边的电路,由D1或D2流回去。

这样,从右边的电路来看,正极永远都是D3和D4连接的那一端,负极永远是D1和D2连接的那一端。

这便是二极管整流的原理。

二极管把直流稳压电源交流电方向变化的问题解决了,但是它的电压大小还在变化。

而电容器有可以存储电能的特性,正好可以用来解决这个问题。

在电压较高时向电容器中充电,电压较低时便由电容器向电路供电。

这个过程叫作滤波。

图中的C1便是用来完成这个工作的。

经过C1滤波后的比较稳定的直流电送到三端稳压集成电路LM317T的Vin端(3脚)。

LM317T是一种这样的器件:

由Vin端给它提供工作电压以后,它便可以保持其+Vout端(2脚)比其ADJ端(1脚)的电压高1.25V。

因此,我们只需要用极小的电流来调整ADJ端的电压,便可在+Vout端得到比较大的电流输出,并且电压比ADJ端高出恒定的1.25V。

我们还可以通过调整PR1的抽头位置来改变输出电压-反正LM317T会保证接入ADJ端和+Vout端的那部分电阻上的电压为1.25V。

所以当抽头向上滑动时,直流稳压电源输出电压将会升高。

2.1.3控制模块

STC89C52有40引脚,双列直插(DIP)封装,所用引脚功能如下:

1.VCC——运行时加+4.5V

2.GND——接地

3.XTAL1——振荡器反相放大器及内部时钟发生器的输入端

4.XTAL2——振荡器反相放大器的输出端

5.RST——复位输入,高电平有效,在晶振工作时,在RST引脚上作用2个机器周期以上的高电平,将使单片机复位。

WDT溢出将使该引脚输出高电平,设置SFTAUXR的DISRTO位(地址8EH)可打开或关闭该功能。

DISRTO位缺省为RESET输出高电平打开状态。

6.EA/VPP——片外程序存储器访问允许信号。

欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地),如果EA端为高电平(接Vcc端),CPU则执行内部程序存储器中的指令。

7.

 a.晶振电路

b.复位电路

以上三部分构成了单片机最小系统,其中P0和P2口的部分管脚接显示模块,P3口接控制模块。

2.1.4显示模块

1602LCD主要技术参数:

显示容量:

16×

2个字符

芯片工作电压:

4.5—5.5V

工作电流:

2.0mA(5.0V)

模块最佳工作电压:

5.0V

引脚功能说明:

1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如下表1所示:

表1:

引脚接口说明表

编号

符号

引脚说明

1

VSS

电源地

9

D2

数据

2

VDD

电源正极

10

D3

3

VL

液晶显示偏压

11

D4

4

RS

数据/命令选择

12

D5

5

R/W

读/写选择

13

D6

6

E

使能信号

14

D7

7

D0

15

BLA

背光源正极

8

D1

16

BLK

背光源负极

第1脚:

VSS为地电源。

第2脚:

VDD接5V正电源。

第3脚:

VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。

第4脚:

RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。

第5脚:

R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。

当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。

第6脚:

E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。

第7~14脚:

D0~D7为8位双向数据线。

第15脚:

背光源正极。

第16脚:

背光源负极。

硬件连接原理图如下:

2.1.5按键电路

“功能”按键(按此键,选择要设置的变量);

“增”按键(设置中对所选择变量加一);

“减”按键(设置中对所选择变量减一)。

2.1.6报时部分模块

整点时,发光二极管亮,喇叭响。

2.2软件设计

2.2.1基本资源的使用

本次实验采用了STC89C52型单片机,1602LCD液晶显示屏,蜂鸣器、发光二极管。

为了实现时分秒显示,报时,时分秒设置功能,用到了单片机的外部中断,计时器中断,及I/O端口。

2.2.2程序设计的基本思路

主程序循环显示当前的时间并扫描“功能”按键对应P3.1是否有按下;

“加”按键对应INT0中断用来设置日期和时间,每按下一次可分别对年、月、日、时、分、秒进行加1设置,“减”按键对应INT1中断用来设置日期和时间,每按下一次可分别对年、月、日、时、分、秒进行减1设置。

3仿真与调试结果

本实验采用Keil4和Protues7联合仿真调试:

显示时间:

设置日期:

仿真结果:

经过多次的反复测试与分析,掌握了硬件的设计与分析的能力,对所学的知识得到很大的提高与巩固。

最终实现功能:

(1)能显示阳历年、月、日、星期、小时、分、秒

(2)显示模块采用LCD液晶显示,要求能用按键调整日期、时间。

(3)能进行声光整点报时。

4心得体会

我们在这一次电子时钟的设计过程中,很是受益匪浅。

通过对在大学三年多里所学的知识的回顾,特别是对所学知识——单片机的应用,并充分发挥对所学知识的理解及书面表达能力,最终完成了。

这为今后进一步深化学习,积累了一定宝贵的经验。

撰写报告的过程也是专业知识的学习过程,它使我们运用已有的专业基础知识,对其进行设计,分析和解决一个理论问题或实际问题,把知识转化为能力的实际训练。

培养了我运用所学知识解决实际问题的能力。

通过这次实习的设计我们发现,只有理论水平提高了;

才能够将课本知识与实践相整合,理论知识服务于教学实践,以增强自己的动手能力。

这个实习十分有意义我们获得很深刻的经验。

通过这次实习,我们知道了理论和实际的距离,也知道了理论和实际相结合的重要性,也从中得知了很多书本上无法得知的知识。

我们的学习不但要立足于书本,以解决理论和实际教学中的实际问题为目的,还要以实践相结合,理论问题即实践课题,解决问题即课程研究,学生自己就是一个专家,通过自己的手来解决问题比用脑子解决问题更加深刻。

学习就应该采取理论与实践结合的方式,理论的问题,也就是实践性的课题。

这种做法既有助于完成理论知识的巩固,又有助于带动实践,解决实际问题,加强我们的动手能力和解决问题的能力。

通过我们小组成员的通力合作,各展己长,分工合作,最终顺利完成了本次实习的任务,并且达到了任务要求。

附录

附录1原件清单

附录2硬件电路原理图

电源部分

时钟部分

附录3仿真电路图

附录4作品实物图

附录5程序清单

#include<

reg51.h>

#defineucharunsignedchar

#defineuintunsignedint

Ucharcodetable[]="

2010-12-31FRI"

;

ucharcodetable1[]="

06:

59:

55"

//要显示的字符

ucharcodetable2[]={'

M'

'

O'

N'

T'

U'

E'

W'

D'

H'

F'

R'

I'

S'

A'

};

voidkeyscan();

bitbell=0;

charbnum=0;

sbitRS=P0^5;

sbitRW=P0^6;

sbitE=P0^7;

sbitcm=P3^0;

sbitk1=P3^1;

sbitk2=P3^2;

sbitk3=P3^3;

sbitk4=P3^4;

sbitDQ=P3^7;

//speaker

chari=0,t=12,knum=0,p,q;

charsec=55,min=59,hour=6,day=31,days=31,mon=12,year=10;

voiddelay(uintz)//延时函数

{

uintx,y;

for(x=z;

x>

0;

x--)

for(y=110;

y>

y--);

}

voidwrite_com(ucharcom)//写命令函数

RS=0;

RW=0;

P2=com;

E=1;

//高脉冲

delay(5);

E=0;

voidwrite_dat(uchardat)//写数据函数

RS=1;

P2=dat;

voiddisplay(uchar*p)//1602显示

while(*p!

='

\0'

{

write_dat(*p);

p++;

delay(5);

}

voidinit()//1602初始化

write_com(0x38);

write_com(0x0c);

write_com(0x06);

write_com(0x01);

write_com(0x80+0x01);

//赋初值

display(table);

write_com(0x80+0x40+0x03);

display(table1);

voiddisdate(ucharadr,ucharb)

ucharc,d;

write_com(0x80+adr);

c=b/10+0x30;

d=b%10+0x30;

write_dat(c);

write_dat(d);

/*********************************主函数*********************************/

voidmain()

DQ=0;

TMOD=0x01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

EA=1;

ET0=1;

TR0=1;

init();

while

(1)

{

keyscan();

voidtimer0()interrupt1

i++;

if(i==20)

i=0;

sec++;

if(bell==1)

{

if(bnum==hour*2)

{

bell=0;

bnum=0;

DQ=0;

}

else

DQ=~DQ;

bnum++;

}

if(sec==60)

sec=0;

min++;

if(min==60)

min=0;

hour++;

if((hour>

=7)&

&

(hour<

=23))bell=1;

if(hour==24)

{

hour=0;

day++;

p=(2000+year)%4;

q=(2000+year)%400;

switch(mon)

{

case(4||6||9||11):

days=31;

break;

case2:

if((p=0)&

(q!

=0))days=30;

elsedays=29;

default:

days=32;

}

if(day==days)

day=1;

mon++;

if(mon==13)

{

mon=1;

year++;

disdate(0x03,year);

}

disdate(0x06,mon);

disdate(0x09,day);

t+=3;

if(t==21)t=0;

write_com(0x80+0x0d);

write_dat(table2[t]);

write_dat(table2[t+1]);

write_dat(table2[t+2]);

}

disdate(0x43,hour);

disdate(0x46,min);

disdate(0x49,sec);

}

/********************************按键检测*********************************/

voidkeyscan()

cm=0;

if(k1==0)

if(k1==0)

{

knum++;

while(!

k1);

switch(knum)

case1:

TR0=0;

write_com(0x80+0x04);

write_com(0x0f);

case2:

write_com(0x80+0x07);

case3:

write_com(0x80+0x0a);

case4:

write_com(0x80+0x40+0x04);

case5:

write_com(0x80+0x40+0x07);

case6:

write_com(0x80+0x40+0x0a);

case7:

write_com(0x80+0x0f);

default:

knum=0;

write_com(0x0c);

TR0=1;

if(knum!

=0)

if(k2==0)

delay(5);

if(k2==0)

while(!

k2);

if(knum==1)

year++;

if(year==99)year=0;

disdate(0x03,year);

write_com(0x80+0x04);

if(knum==2)

if(mon==13)mon=1;

write_com(0x80+0x07);

if(knum==3)

day++;

if(day==32)day=1;

disdate(0x09,day);

write_com(0x80+0x0a);

if(knum==4)

hour++;

if(hour==24)hour=0;

disdate(0x43,hour);

write_com(0x80+0x40+0x04);

if(knum==5)

min++;

if(min==60)min=0;

disdate(0x46,min);

write_com(0x80+0x40+0x07);

if(knum==6)

sec++;

if(sec==60)sec=0;

disdate(0x49,sec);

write_com(0x80+0x40+0x0a);

if(knum==7)

t+=3;

write_com(0x80+0x0d);

write_dat(table2[t]);

write_dat(table2[t+1]);

write_dat(table2[t+2]);

write_com(0x80+0x40f);

if(k3==0)

delay(5);

if(k3==0)

while(!

k3);

if(knum==1)

year--;

if(year==-1)year=99;

disdate(0x03,year);

write_com(0x80+0x04);

if(knum==2)

mon--;

if(mon==0)mon=12;

disdate(0x06,mon);

write_com(0x80+0x07);

if(knum==3)

day--;

if(day==0)day=31;

write_com(0x80+0x0a);

if(knum==4)

hour--;

if(hour==-1)hour=23;

disdate(0x43,hour);

write_com(0x80+0x40+0x04);

if(knum==5)

min--;

if(min==-1)min=59;

disdate(0x46,min);

write_com(0x80+0x40+0x07);

if(knum==6)

sec--;

if(sec==-1)sec=59;

disdate(0x49,sec);

write_com(0x80+0x40+0x0a);

if(knum==7)

t-=3;

if(t==-3)t=18;

write_com(0x80+0x40f);

}

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

当前位置:首页 > 人文社科 > 广告传媒

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

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