微机综合实践课程设计.docx

上传人:b****1 文档编号:10562976 上传时间:2023-05-26 格式:DOCX 页数:35 大小:736.67KB
下载 相关 举报
微机综合实践课程设计.docx_第1页
第1页 / 共35页
微机综合实践课程设计.docx_第2页
第2页 / 共35页
微机综合实践课程设计.docx_第3页
第3页 / 共35页
微机综合实践课程设计.docx_第4页
第4页 / 共35页
微机综合实践课程设计.docx_第5页
第5页 / 共35页
微机综合实践课程设计.docx_第6页
第6页 / 共35页
微机综合实践课程设计.docx_第7页
第7页 / 共35页
微机综合实践课程设计.docx_第8页
第8页 / 共35页
微机综合实践课程设计.docx_第9页
第9页 / 共35页
微机综合实践课程设计.docx_第10页
第10页 / 共35页
微机综合实践课程设计.docx_第11页
第11页 / 共35页
微机综合实践课程设计.docx_第12页
第12页 / 共35页
微机综合实践课程设计.docx_第13页
第13页 / 共35页
微机综合实践课程设计.docx_第14页
第14页 / 共35页
微机综合实践课程设计.docx_第15页
第15页 / 共35页
微机综合实践课程设计.docx_第16页
第16页 / 共35页
微机综合实践课程设计.docx_第17页
第17页 / 共35页
微机综合实践课程设计.docx_第18页
第18页 / 共35页
微机综合实践课程设计.docx_第19页
第19页 / 共35页
微机综合实践课程设计.docx_第20页
第20页 / 共35页
亲,该文档总共35页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

微机综合实践课程设计.docx

《微机综合实践课程设计.docx》由会员分享,可在线阅读,更多相关《微机综合实践课程设计.docx(35页珍藏版)》请在冰点文库上搜索。

微机综合实践课程设计.docx

微机综合实践课程设计

 

桂林电子科技大学

微机综合实践课程设计

指导老师:

吴兆华

学生:

刘芯豪

学号:

 

桂林电子科技大学机电工程学院

《微机综合实践课程设计》设计报告

一、设计题目

步进电机控制系统设计

二、设计内容与要求

用8051单片机设计一个控制系统,控制8*8点阵式LED循环显示“★”、“●”和心形图,要求通过按键来选择要显示的图形。

显示时间可调。

三、设计目的意义

随着社会的发展,单片机因其高可靠性和高性价比,在工业控制系统、 智能化仪器仪表和智能接口等诸多领域内得到了极为广泛的应用。

LED电子显示屏是利用发光二极管构成的点阵模块或像素单元组成可变面积的显示屏幕,它具有高清晰度、色彩鲜艳、视角大、工作稳定、寿命长、功耗低等优点。

由于采用单元模块化结构,屏体大小可按用户要求灵活拼制;它的超高亮度,使它在户内外显示中具有不可替代的作用。

随着信息产业的高速发展,LED显示作为信息传播的一种重要手段,已广泛应用于室内外需要进行服务内容和服务宗旨宣传的公众场所,例如户内外公共场所广告宣传、机场车站旅客引导信息、公交车辆报站系统、证券与银行信息显示、餐馆报价信息豆示、高速公路可变情报板、体育场馆比赛转播、楼宇灯饰、交通信号灯、景观照明等。

显然,LED显示已成为城市亮化、现代化和信息化社会的一个重要标志。

因此,本设计具有很强的现实应用性,且是对我们所学知识应用的一个很好的检验。

 

1、通过学习单片机原理,初步了解如何用汇编语言实现对51单片机系统进行控制。

通过简单图形显示控制的设计,将所学的知识融会贯通,锻炼独立设计、制作和调试单片机应用系统的能力,为进一步的科研实践活动打下一定的基础。

 

2、通过单片机最小系统的应用,掌握单片机内部定时/计数器应用与编程、及硬件调试、设计方法。

 

3、在这次的动手设计之后,领会单片机的应用系统的软硬件调试的方法,掌握单片机编程方法,及软件keil C51的使用方法,熟悉软件调试过程及方法,对单片机系统和LED显示技术有了进一步的理解。

4、课程设计中让我们对点阵的工作原理有了了解,知道其点亮方式和扫描显示图形,当我们在做扩展屏幕的时候会有一些直接的参考,为下一次可能用到而积累知识。

5、制作电路板需要动手使用电烙铁,焊锡,培养自己动手操作能力。

6、本次做硬件电路使用AltiumDesigner电路设计软件,让我们对这个软件有一定的了解并掌握其软件的基本功能,如何导入软件库,如何添加元器件的封装,如何使用原理图库绘制原理图,如何使用PCB封装库绘制元器件封装,如何在PCB中摆放元器件,如何选择我们需要的线宽等等。

7、根据课题要求,从提出并选择设计方案、查找确定所用元器件、设计并搭制硬件电路、编程写入并调试等一系列过程,锻炼了分析、解决问题的能力及相互学习的精神。

8、在制作电路板之前,还是用了proteus仿真软件对电路图进行仿真,验证我们所设计的原理图是否合理,功能能否按照要去实现,最重要的还是学会了一个电路仿真软件,当我们身边没有单片机开发板时也可以通过仿真软件来设计我们的电路,验证我们的程序。

9、为我们以后的工作积累经验,培养团队的合作精神和分工协调能力,为今后能独立承担起电路设计、能进行微机单片机应用系统的开发与设计工作打下一定的基础。

10、本次课程设计我们三个人一个小组,每个人设计一个方案,最终经过讨论分析得到了我们小组最终的一个整体方案,培养我们对方案分析,解决问题和团队合作的能力。

四、系统硬件电路图

4.1系统框图

硬件电路的设计框图如图1所示。

 

图1硬件电路的设计框图

4.2电路设计软件AltiumDesigner

我们在制作硬件,得到我们所需要的成品,需要运用各种软件,工具来实现我们的目的。

首先知道我们需要什么元器件,运用什么样的电路图,得到我们所需要的电路图如何将电路放到我们的铜板上面,焊接元器件,调试电路等等各种步骤,都需要我们了解,并亲自动手操作。

右图是我们的小组制作的硬件电路。

我们采用的软件是AltiumDesigner电路设计软件,AltiumDesigner是原Protel软件开发商Altium公司推出的一体化的电子产品开发系统,主要运行在Windows操作系统。

这套软件通过把原理图设计、电路仿真、PCB绘制编辑、拓扑逻辑自动布线、信号完整性分析和设计输出等技术的完美融合,其主要功能有:

1.原理图设计;

2.印刷电路板设计;

3.FPGA的开发;

4.嵌入式开发;

5.3DPCB设计。

基于这些优点,AltiumDesigner可以为设计者提供了全新的设计解决方案,使设计者可以轻松进行设计,使用这款软件将使电路设计的质量和效率大大提高。

我们的本次课设只需使用其前面的两点便可,有助于我们比较成功的完成课程设计任务。

4.3元器件清单

Footprint

Comment

LibRef

Designator

Description

Quantity

RAD0.1

30PF

CAP

C1,C2

2

RB.1/.2

CAP-2

CAP-2

C3

1

XTAL-1

CRY

CRY

CY1

1

RB.1/.2

LED

LED

D1

1

SIP2

CON2

CON2

J1Soures

Connector

1

SIP-8*2

点阵

CON8*2

J2

1

sip-4

CON4

CON4

J5

Connector

1

SW1

SW4

SW4

KEY1,KEY2,

KEY3,KEY4,S1

5

AXIAL0.4

1k

RES

R1,R3

2

AXIAL0.4

10k

RES

R2

1

SIP-9

10k

排阻

R4

1

DIP-40

51

51

U1

1

18

4.4电路的设计及注意事项

4.4.1电路原理图和PCB的设计

第一步:

新建一个工程

绘制一个完整的电路图,我们的第一步是建立一个工程文件,我们的后续工作都在这个工程文件下面进行,建立工程的步骤为:

File—New—Project—PCBProject。

如下图所示步骤:

然后得到我们的工程文件,但这只是一个空的工程,里面什么都没有,只是给我们开辟了一个空间,我们需要在这个空间里面加入我们的原理图。

第二步:

新建一个原理图

建立完工程之后接下来我们需要建立一个能够画电路图的原理图,步骤为:

File—New—Schematic。

如下图所示步骤

第三步:

新建一个PCB

原理图只是给我们提供绘制理论电路的地方,只是一个简单的物理电路图,最终需要制作刻录电路图形在电路板上面的是PCB,建立好工程和电路图之后我们还需要建立一个PCB,它是联系理论电路与实物电路的桥梁,步骤为:

File—New—PCB。

如下图所示步骤

最后得到有一个完整的工程文件,里面包含我们的“.SchDoc”和“.PcbDoc”两个文件,在这个工程文件中根据我们的方案绘制电路图和PCB。

4.4.2注意事项

绘制原理图的注意事项:

1、我们要保证所需要的原理图元器件在我们的原理图库中存在,如果没有,我们建立一个原理图库,绘制我们需要的元器件,步骤为:

File—New—Library—SchematicLibrary。

绘制好元器件之后并对元器件添加封装和设置器件的参数;

2、放置每一种元器件的第一个时,按下TAB键,修改元器件的属性,则再次放下该器件时已经具有封装、参数值以及顺序编号;

3、连线不方便或者距离较远时,利用网络标号来表示电器链接;

4、使用ERC来检查我们的电路原理图连线是否有问题,从而消除电路漏连,重复编号等错误,提高我们电路原理图设计的可靠性;

5、放置电路原理图之前,有些器件可能是没有添加有封装,或者封装错误,所以当我们选择元器件的时候先按下TAB键来添加或者修改我们元器件合适的封装,防止我们使用了错误的封装无法安插元器件,减少错误的发生。

绘制PCB的注意事项:

1、绘制PCB的第一步是元器件的布局,根据PCB走线最短原则,按照电路图将电路划分成不同的功能模块,如电源部分,驱动部分,CPU部分的放置,然后根据PCB的尺寸和安装整体移动各相关模块,这样就能保证相同模块内的走线最短,各个模块之间的连接最合理;

2、布局时充分利用CrossProbe工具图标迅速找到PCB和Sch中对应的元器件,方便布局;

3、可以从Sch通过CrossProbe工具图迅速找到PCB中对应的元器件,也可以从PCB中通过CrossProbe工具图迅速调到原理中相应元器件或网络标号相应的位置;

4、在进行布线时,很多同学都喜欢使用自动布线功能,方便,节省时间。

我们最好不要使用自动布线,采用模块化布局,然后边调整边走线的方式,使我们的电路图形看起来更加简洁美观。

5、导线宽度设计,布线之前我们需要设计我们的线性规则,导线的宽度至少为28mil,防止导线宽度过小,在腐蚀电路图形时导线断开,有些同学在腐蚀电路板的时候因为导线宽度设计不合理,制作电路板时导线被腐蚀掉;

6、线间距设计,至少为10mil,防止导线挨得过近,产生短路,或者在信号流通时产生信号干扰;

7、焊盘设计,焊盘用于焊锡与元器件的连接,我们的焊盘大小设计要合理,按照手工焊接的话,我们的焊盘直径为75mil,孔的大小约为40mil,设计合理的焊盘大小,防止在钻孔的时候把焊盘钻掉。

4.5电路原理图

4.6图形显示PCB

五、程序流程图与源程序

5.1程序流程图

5.1.1主程序流程图

5.1.2中断子程序流程图

外中断0子程序流程图

 

定时器0中断子程序流程图

5.2源程序清单

5.2.1汇编语言程序

CNTAEQU30H

COUNTEQU31H

ORG00H;程序起始地址

LJMPSTART

ORG03H;外中断0程序入口

LJMPINIT0

ORG0BH;定时器0中断程序入口地址

LJMPT0X

ORG30H

START:

MOVCNTA,#00H;初始化

MOVCOUNT,#00H

MOVR0,#20

MOVTMOD,#01H;T0工作模式1

MOVTH0,#(65536-50000)/256;设置初值

MOVTL0,#(65536-50000)MOD256

MOVIP,#01H

CLRC

SETBTR0;启动定时器0

SETBET0;定时器0中断允许

SETBEX0

SETBIT0

SETBEA;开总中断

WT1:

MOVR6,#5;消抖

MOVR7,#248

D1:

DJNZR7,$;R7减1不为0则继续减,直至为零

DJNZR6,D1;R6减1不为0则转到D1处

JBP1.0,WT2;辨别按键状态,若按键没按下,则转到WT2处

MOVCOUNT,#00H;显示第一个图形

WT2:

MOVR6,#5

MOVR7,#248

D2:

DJNZR7,$

DJNZR6,D2

JBP1.1,WT3

MOVCOUNT,#01H;显示第二个图形

WT3:

MOVR6,#5

MOVR7,#248

D3:

DJNZR7,$

DJNZR6,D3

JBP1.2,WT4;显示第三个图形

MOVCOUNT,#02H

WT4:

MOVR6,#5

MOVR7,#248

D4:

DJNZR7,$

DJNZR6,D4

JBP1.1,NEXT

L1:

LCALLDELAY

NEXT:

SJMPWT1;

DELAY:

MOVR6,#250

L2:

NOP

NOP

DJNZR6,L2

RET

LOOP:

NOP

MOVDPTR,#TAB;TAB表首地址送DPDR

MOVA,CNTA;

MOVCA,@A+DPTR;查表TAB

MOVP2,A

MOVDPTR,#GRAPH;GRAPH表首地址送DPDR

MOVA,COUNT

MOVB,#8

MULAB

ADDA,CNTA

MOVCA,@A+DPTR;查表GRAPH

MOVP0,A

INCCNTA

MOVA,CNTA

CJNEA,#8,NEX

MOVCNTA,#00H

LJMPLOOP

INIT0:

CLREX0

MOVA,R0

ADDCA,#20

MOVR0,A

CJNER0,#100,NEX

MOVR0,#20

SETBEX0

T0X:

NOP

MOVTH0,#(65536-50000)/256;重置初值

MOVTL0,#(65536-50000)MOD256

DJNZR0,NEX

INCCOUNT

MOVR1,COUNT

CJNER1,#02H,NEX

MOVCOUNT,#00H

NEX:

RETI

TAB:

DB0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH

GRAPH:

DB00H,08H,78H,3CH,3CH,78H,08H,00H;"★",0

DB00H,3CH,7EH,7EH,7EH,7EH,3CH,00H;"●",1

DB00H,0CH,1H,3H,7CH,3EH,1EH,0CH;"心形",2*

END

5.2.2C语言程序

#include

#defineucharunsignedchar

#defineuintunsignedint

uchartable[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//列扫描数组

ucharFigure[3][8]={//字模取模方式阴码逆向逐列式

{0x00,0x08,0x78,0x2C,0x2C,0x78,0x08,0x00},/*"★",0*/

{0x00,0x3C,0x7E,0x7E,0x7E,0x7E,0x3C,0x00},/*"●",1*/

{0x00,0x0C,0x1E,0x3E,0x7C,0x3E,0x1E,0x0C},/*"心形",2*/

};

ucharlie;//列扫描

ucharhang;//行扫描

uchartime;//定时时间

uchartemp;//暂存P1口状态

uintcount=20;

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

/*函数功能:

延时函数*/

/*voiddelay(uintz)*/

/*入口参数:

z*/

/*出口参数:

无*/

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

voiddelay(uintn)

{

uinti,j;

for(i=n;i>0;i--)

for(j=110;j>0;j--);

}

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

/*函数功能:

检查P1口哪个按键按下*/

/*voidcheck()*/

/*入口参数:

无*/

/*出口参数:

无*/

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

voidcheck()

{

temp=P1;

temp=temp&0x1f;

if(temp!

=0x1f)

{

delay(5);

temp=P1;

temp=temp&0x1f;

if(temp!

=0x1f)

switch(temp)

{

case0x1e:

hang=0;break;

case0x1d:

hang=1;break;

case0x1b:

hang=2;break;

default:

break;

}

}

}

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

/*函数功能:

主函数*/

/*voidmain()*/

/*入口参数:

无*/

/*出口参数:

无*/

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

voidmain()

{

TMOD=0x01;//选择T0工作模式1

TH0=(65536-50000)/256;//定时时间为50ms

TL0=(65536-50000)%256;

EA=1;//打开总中断

EX0=1;//打开外部中断0

ET0=1;//打开定时器0中断

IT0=1;//外中断0下降沿触发

TR0=1;//打开定时器0

IP=0x01;//设置外中断0为高优先级

while

(1)

{

check();

for(lie=0;lie<8;lie++)

{

P0=Figure[hang][lie];

P2=table[lie];

delay

(1);

}

}

}

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

/*函数功能:

外部中断0调整图形显示时间*/

/*voidInit0()interrupt0*/

/*入口参数:

无*/

/*出口参数:

无*/

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

voidInit0()interrupt0

{

count=count+20;

if(count==200)//1180

count=20;

}

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

/*函数功能:

对图形显示进行定时*/

/*voidT_0()interrupt1*/

/*入口参数:

无*/

/*出口参数:

无*/

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

voidT_0()interrupt1

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

time++;

if(time==count)

{

time=0;

hang++;

}

if(hang==3)

hang=0;

}

六、系统功能分析与说明

6.1STC89C52RC单片机介绍

本次课程设计的单片机采用STC89C52RC,它是一种低功耗、高性能的8位CMOS微控制器。

片内含有8KB的存储器(EPROM),与8031引脚和指令系统完全兼容。

主要特性如下:

1.增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051;

2.工作电压:

5.5V~3.3V(5V单片机)/3.8V~2.0V(3V单片机);

3.工作频率范围:

0~40MHz,相当于普通8051的0~80MHz,实际工作频率可达48MHz;

4.用户应用程序空间为8K字节

5.片上集成512字节RAM;

6.通用I/O口(32个),复位后为:

P1/P2/P3/P4是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻;

7.ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程序,数秒即可完成一片;

8.具有EEPROM功能;

9.具有看门狗功能;

10.共3个16位定时器/计数器。

即定时器T0、T1、T2;

11.外部中断4路,下降沿中断或低电平触发电路,PowerDown模式可由外部中断低电平触发中断方式唤醒;

12.通用异步串行口(UART),还可用定时器软件实现多个UART;

13.工作温度范围:

-40~+85℃(工业级)/0~75℃(商业级);

14.PDIP封装和PLCC封装。

6.1.1STC89C52RC单片机引脚功能

 

STC89C52RC的PDIP和PLCC引脚图

·VCC(40引脚):

电源电压;

·VSS(20引脚):

接地;

·P0端口(P0.0~P0.7,39~32引脚):

P0口是一个漏极开路的8位双向I/O口。

作为输出端口,每个引脚能驱动8个TTL负载,对端口P0写入“1”时,可以作为高阻抗输入。

在访问外部程序和数据存储器时,P0口也可以提供低8位地址和8位数据的复用总线。

此时,P0口内部上拉电阻有效。

在FlashROM编程时,P0端口接收指令字节;而在校验程序时,则输出指令字节。

验证时,要求外接上拉电阻。

·P1端口(P1.0~P1.7,1~8引脚):

P1口是一个带内部上拉电阻的8位双向I/O口。

P1的输出缓冲器可驱动(吸收或者输出电流方式)4个TTL输入。

对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这是可用作输入口。

P1口作输入口使用时,因为有内部上拉电阻,那些被外部拉低的引脚会输出一个电流(IL)。

此外,P1.0和P1.1还可以作为定时器/计数器2的外部技术输入(P1.0/T2)和定时器/计数器2的触发输入(P1.1/T2EX),具体功能如下表:

在对FlashROM编程和程序校验时,P1接收低8位地址。

P1.0和P1.1引脚复用功能

引脚号

功能特性

P1.0

T2(定时器/计数器2外部计数输入),时钟输出

P1.1

T2EX(定时器/计数器2捕获/重装触发和方向控制)

·P2端口(P2.0~P2.7,21~28引脚):

P2口是一个带内部上拉电阻的8位双向I/O端口。

P2的输出缓冲器可以驱动(吸收或输出电流方式)4个TTL输入。

对端口写入1时,通过内部的上拉电阻把端口拉到高电平,这时可用作输入口。

P2作为输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流(IL)。

在访问外部程序存储器和16位地址的外部数据存储器(如执行“MOVX@DPTR”指令)时,P2送出高8位地址。

在访问8位地址的外部数据存储器(如执行“MOVX@R1”指令)时,P2口引脚上的内容(就是专用寄存器(SFR)区中的P2寄存器的内容),在整

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

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2