Protel课设.docx
《Protel课设.docx》由会员分享,可在线阅读,更多相关《Protel课设.docx(25页珍藏版)》请在冰点文库上搜索。
![Protel课设.docx](https://file1.bingdoc.com/fileroot1/2023-5/9/db82d4a3-1935-47a4-8fc5-eb6c1db2444a/db82d4a3-1935-47a4-8fc5-eb6c1db2444a1.gif)
Protel课设
课程设计任务书
学生姓名:
专业班级:
通信1004
指导教师:
李政颖学院:
信息工程学院
题目:
Protel应用实习报告
初始条件:
单片机、最小系统、矩阵键盘、LED显示、DS18B20温度传感器、Protel、Protues、keil、Altiumdesigner.
主要任务:
完成包含如下系统功能组件的单片机最小系统的设计:
键盘、显示电路、温度检测。
完成系统软件的设计,包括程序结构设计、流程图绘制、程序设计,实现如下功能:
功能选择、温度显示、数据输入、数据通信并完成系统仿真设计。
时间安排:
2013年6月17日---2013年6月25日。
指导教师签名:
2013年月日
系主任(或责任教师)签名:
2013年月日
目录
目录1
摘要2
Abstract3
1.1基本原理及电路图4
1.2单片机最小系统5
1.2.1复位电路5
1.2.2振荡电路5
1.3.1矩阵键盘电路6
1.3.2数码管显示电路6
1.3.4温度模块7
2.仿真电路及实物调试8
2.1整体电路如图2-1所示8
2.2各功能模块仿真结果9
2.3绘制电路原理图10
2.3.1新建设计数据库文件10
2.4原理图绘制11
3.印制电路板的设计13
3.1网表输入13
附录20
附录1:
原件清单20
摘要
单片机最小系统,无论对单片机初学人员还是开发人员都具有十分重要的意义,可以利用最小系统进行编程实现工业控制。
单片机最小系统电路板由RAM,ROM,CPU构成,定时、计数和多种接口于一体的微控制器。
它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。
本次课程设计包括STC89C52单片机最小系统,包括复位和时钟电路及供电系统、4×4矩阵键盘、独立6个7段LED数码管显示电路以及DS18B20温度传感器。
利用相关设计软件进行原理图设计,利用Keil软件编程以及Proteus软件仿真,借此巩固单片机应用、模拟电路、数字电路课程及学会各种工程软件的使用。
关键字:
单片机最小系统矩阵键盘LED显示DS18B20温度传感器AltimudesignerProtel
Abstract
MCUminimumsystem,regardlessofthesinglechipnovicestafforstaffdevelopment,whocanuseminimumsystemprogramforindustrialcontrol,hasveryimportantsense.MCUminimumsystemboardintheMCUdevelopmarketandcollegestudentselectronicdesignisverypopular.Thecurriculumdesign,includingSTC89S52MCUminimumsystem(includingaresetandclockcircuitandpowersupplysystem),4x4matrixkeyboard,theindependent6LEDdigitaltubedisplaycircuitandaDS18B20temperaturesensor.Usingcircuitdesignsoftwareschematicdesign,usingKeilsoftwareandProtuessoftwaresimulation,weconsolidatetheMCUapplication,analogcircuit,digitalcircuitcourseandlearnallkindsofengineeringsoftwareuse.
KeyWords:
MCUminimumsystemmatrixkeyboardLEDdigitaltubedisplayDS18B20temperaturesensorKeilProtues
1.设计原理
1.1基本原理及电路图
单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统。
对51系列单片机来说,最小系统一般应该包括:
单片机、晶振电路、复位电路、按键输入、显示输出等。
单片机接口电路主要用来连接计算机和其它外部设备.本次设计主要完成的扩展电路包括矩阵键盘、数码管显示电路、温度检测电路和串口电路。
其原理框图如下图1-1所示:
图1-1系统原理框图
1.2单片机最小系统
1.2.1复位电路
其最小系统复位电路如图1-2所示。
图1-2复位电路
51单片机最小系统复位电路的极性电容的大小直接影响单片机的复位时间,一般采用10uF到30uF,51单片机最小系统容值越大需要的复位时间越短。
1.2.2振荡电路
51单片机有两种振荡方式,为内部振荡和外部振荡,内部振荡方式所得到时钟信号比较稳定,在实际电路中,一般是选用内部振荡方式。
其电路如图1-3所示
图1-3振荡电路
1.3其它功能模块
1.3.1矩阵键盘电路
在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。
其连接电路如图1-4所示。
图1-4矩阵键盘电路
1.3.2数码管显示电路
7段数码管一般由8个发光二极管组成,其中由7个细长的发光二极管组成数字显示,另外一个圆形的发光二极管显示小数点。
如图1-5所示。
图1-5数码管引脚排列
1.3.4温度模块
其连接电路图如图1-6所示
图1-6温度模块电路图
2.仿真电路及实物调试
2.1整体电路如图2-1所示
图2-1整体电路仿真图
2.2各功能模块仿真结果
1)单片机一上电数码管显示全零,结果如图2-2所示。
图2-2单片机一上电数码管显示电路
2)上电后依次按按键1、2、3,显示仿真结果如图2-3所示。
图2-3上电后仿真结果电路
3)按下切换温度按键,此时温度值为20℃,数码管显示结果如图2-4所示。
图2-4数码管温度显示
2.3绘制电路原理图
2.3.1新建设计数据库文件
进入Protel99SE原理图绘制界面,点击File(文件)中new项,新建设计数据库。
新建设计文件,有两种方式:
一种为MSAccessDatabase方式,全部文件存储在单一的数据库中,同原来的99文件格式。
另一种为WindowsFileSystem方式,全部文件被直接保存在对话框底部指定的磁盘驱动器中的文件夹中,在资源管理器中可以直接看到所建立的原理图或PCB文件。
在Browse选项中选取需要存储的文件夹,然后点击OK即可建立自己的设计数据库。
图2-5新建.Sch文件
设计管理器(Documents)
所有Protel99SE设计文件都被储存在唯一的综合设计数据库中,并显示在唯一的综合设计编辑窗口。
在Protel99SE中与设计的接口叫设计管理器。
使用设计管理器,可以进行对设计文件的管理编辑、设置设计组的访问权限和监视对设计文件的访问。
2.4原理图绘制
(1)载入元器件原理图符号库
在设计浏览器管理窗口中单击顶部的BrowseSch标签,即可打开原理图编辑管理窗口。
单击原理图编辑器管理窗口中的Add/Remove按钮,在元器件原理图符号列表框中单击所需的库文件,然后单击Add按钮,被选中的库文件就会出现在亦轩文件列表框中,鼠标单击对话框中的OK按钮,就可以将上述库文件装入设计系统中,此时被装入的元器件原理图富豪库文件以及该符号库所包含的所有元器件就会出现在原理图编辑管理器窗口中。
(2)放置元器件
当用户将相应的元器件原理图符号封装库装入设计系统之后,就可以直接从装入的库中去取用元器件,并把它们放到图纸上。
放置之前用户首先要知道要用到的元器件存放于哪一个库中。
在原理图编辑器中,放置元器件的方法通常有以下几种:
利用原理图编辑器管理窗口放置元器件;利用菜单命令放置元器件;利用放置工具栏放置元器件;利用快捷键放置元器件。
利用空格键可以每次90度旋转元器件,X/Y分别是元器件左右、上下对调。
也可以移动单个元器件,同时移动多个元器件,删除元器件
(3)设置元器件属性
调整元器件的属性主要包括设置元器件的序号、封装形式和元器件型号等。
(4)原理图连线设计
确定起始点和终止点,Protel99SE就会自动地在原理图上连线,从菜单上选择“Place/Wire”后,按空格键切换自动连线方式。
观察状态栏就可以看出“AutoWire”Protel99SE连线,使得设计者在设计时更加轻松自如。
只要简单地定义AutoWire方式。
自动连线可以从原理图的任何一点进行,不一定要从管脚到管脚。
连线、90自动连线、任意角度。
重点注意放置网络标号、电源、接地符号和总线、总线分支等来建立起电气连接关系。
绘制单片机最小系统电路原理图如下:
图2-6单片机最小系统电路原理
(5)检查原理图电性能可靠性
打开LCDController.ddb设计数据库,点取LCDController文件夹下的LCDController.prj原理图设计窗口,Protel99SE可以帮助我们进行电气规则检查。
选择Tools下面的ERC,在“RuleMatrix”种选择要进行电气检查的项目,设置好各项后,在“SetupElectricalRluesCheck”对话框上选择“OK”即可运行电气规则检查,检查结果将被显示到界面上。
或者直接在Tools(工具)栏里面选取ERC电器规则检查,设置好各项之后,点击“OK”按钮,检查结果就会显示在.ERC文件中。
(6)生成网络表文件
网络表是一个表征电路原理图中原期间连接关系的文本文件,是连接电路原理图与印制电路板之间的一座桥梁。
网络表可以在原理图编辑器中直接生成,也可以在文本文件编辑器中手动编辑。
3.印制电路板的设计
3.1网表输入
网表输入有两种方法,一种是使用PowerLogic的OLEPowerPCBConnection功能,选择SendNetlist,应用OLE功能,可以随时保持原理图和PCB图的一致,尽量减少出错的可能。
另一种方法是直接在PowerPCB中装载网表,选择File->Import,将原理图生成的网表输入进来。
图3-1载入网络报表
3.2规则设置
如果在原理图设计阶段就已经把PCB的设计规则设置好的话,就不用再进行设置这些规则了,因为输入网表时,设计规则已随网表输入进PowerPCB了。
如果修改了设计规则,必须同步原理图,保证原理图和PCB的一致。
除了设计规则和层定义外,还有一些规则需要设置,比如PadStacks,需要修改标准过孔的大小。
如果设计者新建了一个焊盘或过孔,一定要加上Layer25。
此时应注意注意:
PCB设计规则、层定义、过孔设置、CAM输出设置已经作成缺省启动文件,名称为Default.stp,网表输入进来以后,按照设计的实际情况,把电源网络和地分配给电源层和地层,并设置其它高级规则。
在所有的规则都设置好以后,在PowerLogic中,使用OLEPowerPCBConnection的RulesFromPCB功能,更新原理图中的规则设置,保证原理图和PCB图的规则一致。
3.3元器件布局
网表输入以后,所有的元器件都会放在工作区的零点,重叠在一起,下一步的工作就是把这些元器件分开,按照一些规则摆放整齐,即元器件布局。
PowerPCB提供了两种方法,手工布局和自动布局。
(1)手工布局
工具印制板的结构尺寸画出板边(BoardOutline)。
将元器件分散(DisperseComponents),元器件会排列在板边的周围。
把元器件一个一个地移动、旋转,放到板边以内,按照一定的规则摆放整齐。
(2)自动布局
PowerPCB提供了自动布局和自动的局部簇布局,但对大多数的设计来说,效果并不理想,不推荐使用。
布局应注意的问题:
a.布局的首要原则是保证布线的布通率,移动器件时注意飞线的连接,把有连线关系的器件放在一起
b.数字器件和模拟器件要分开,尽量远离
c.去耦电容尽量靠近器件的VCC
d.放置器件时要考虑以后的焊接,不要太密集
e.多使用软件提供的Array和Union功能,提高布局的效率
3.4布线
布线的方式也有两种,手工布线和自动布线。
PowerPCB提供的手工布线功能十分强大,包括自动推挤、在线设计规则检查(DRC),自动布线由Specctra的布线引擎进行,通常这两种方法配合使用,常用的步骤是手工—自动—手工。
(1)手工布线
自动布线前,先用手工布一些重要的网络,比如高频时钟、主电源等,这些网络往往对走线距离、线宽、线间距、屏蔽等有特殊的要求;另外一些特殊封装,如BGA,自动布线很难布得有规则,也要用手工布线。
自动布线以后,还要用手工布线对PCB的走线进行调整。
(2)自动布线
手工布线结束以后,剩下的网络就交给自动布线器来自布。
选择Tools->SPECCTRA,启动Specctra布线器的接口,设置好DO文件,按Continue就启动了Specctra布线器自动布线,结束后如果布通率为100%,那么就可以进行手工调整布线了;如果不到100%,说明布局或手工布线有问题,需要调整布局或手工布线,直至全部布通为止。
按照上述步骤得到单片机最小系统印制电路板如下:
图3-2PCB印制电路板
4.说明
本次设计完成了包含如下系统功能组件的单片机最小系统的设计:
键盘、显示电路、温度检测;完成了系统软件的设计,包括程序结构设计、流程图绘制、程序设计,实现了如下功能:
功能选择、温度显示、数据输入、数据通信并完成了系统仿真设计,达到了设计意图。
本次课程设计结合单片机的基础知识,将硬件和软件的知识全都联系起来,硬件方面有电路的连接和芯片的选取,软件方面有程序的设计和编写,这也为以后进一步学习嵌入式系统打好了基础。
然而,PCB的设计和制作时布线以及元件的布局都很生疏,暴露出来的问题很多,另外编程方面基础欠缺,不过总的来说这次课程设计还是让我学到了很多东西,希望自己以后更加严格的要求自己,做到更好。
5.参考文献
1.Protel99入门与提高.赵品编著.人民邮电出版社.2000.11
2.Protel99高级应用.赵品编著.人民邮电出版社.2000.11
3.Protel99SE电路设计与仿真应用
4.姚燕南.微型计算机原理.西安:
西安电子科技大学出版社,2002
5.冯博琴.单片微型计算机原理与接口技术.北京:
清华大学出版社,2000
6.郭天祥.51单片机C语言教程.北京:
电子工业出版社,2009
7.谭浩强.C语言设计.北京:
清华大学出版社,1991
附录
附录1:
原件清单
表1-1元件清单表
序
号
名称
数量
1
铜板
2块
2
单片机STC89C52
1片
3
晶振12MHz
1个
4
30PF瓷片电容
2个
5
10k/0.25W电阻
2个
6
10uF/16V电解电容
1个
7
2k/0.25W电阻
1个
8
10k/9脚排阻
1个
9
5V/500mA直流电源
1个
10
74HC573
2片
11
MAX232
1片
12
104电容
5个
13
排针、按钮、LED、导线等
若干
附录2:
c语言程序
/*………………发送机程序……………………*/
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitwela=P2^7;//数码管位选声明
sbitdula=P2^6;//数码管段选声明
sbitDS=P2^2;//DS18B20温度传感器信号线
sbitP10=P1^0;//显示温度指示灯
sbitP11=P1^1;//显示数据指示灯
ucharkey,cnt;
bitflag_S=0,flag_T=0;//设置两个标志位,flag_S标志显示数字,flag1_T标志显示温度
voidkscan();//扫描键盘函数声明
voiddelay(uchar);//延时函数声明
voidright(uintch[6],uintnew_key);//键值整体右移函数声明
voiddisplay_led(ucharch[6]);//数码管键值显示函数声明
uchartable_key[6]={0,0,0,0,0,0};//开辟一个数组空间存储返回的键值
uinttemp;//定义变量temp,用于接收来自DS18B20传回的温度数据
floatf_temp;
ucharcodetable_figure[]=
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,
0x6f,//不带小数点的数字:
0——9
0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,
0xef,//带小数点的数字:
0——9
0x39,//字母:
C数组第20个字符
0x40,//字符:
-数组第21个字符
0x80,//字符:
.数组第22个字符
0x00//无显示数组第23个字符
};
voiddsreset(void);//DS18B20复位,初始化函数
bittempreadbit(void);//读一位数据函数
uchartempread(void);//读一字节数据函数
voidtempwritebyte(uchardat);//向DS18B20写一个字节函数
voidtempchange(void);//DS18B20开始获取温度并转换函数
uintget_temp();//读取寄存器中存储的温度数据函数
voiddisplay_T(ucharnum,uchardat);//温度显示函数
voiddis_temp(uintt);//显示温度函数值t传递的是整形的温度值
uinttable_temp[6]={0,0,0,0,0,0};//开辟一数组空间存储温度数据用于串口通信
voidinitialize();//串行通信初始化函数声明
uchartable_S[6]={0,0,0,0,0,0};//开辟一数组空间存储数字用于串口通信
voidmain()
{
initialize();
while
(1)
{
uchari;
kscan();
delay(5);
/*……功能按键处理……*/
if(key<=9)
{
flag_S=1;
right(table_key,key);
key=30;//key值清为无效值
}
elseif(key==24)//清零按键(第一行第四个按键)
{
flag_T=0;
flag_S=1;
for(i=0;i<6;i++)
right(table_key,0);
key=30;//key值清为无效值
}
elseif(key==25)//切换到显示键盘输入的数字的界面(第二行第四个按键)
{
flag_T=0;
flag_S=1;
}
elseif(key==26)//切换到显示温度界面(第三行第二个按键)
{
flag_T=1;
flag_S=0;
tempchange();//温度转换
}
/*……通过标志位选择该显示的数据……*/
if(flag_S&&(flag_T==0))
{
display_led(table_key);//显示数据
P10=0;
P11=1;
for(i=0;i<6;i++)
table_S[i]=table_key[i];
}
elseif(!
flag_S||flag_T)//显示温度
/*………………接收机程序………………*/
#include
#defineucharunsignedchar
#defineuintunsignedint
ucharcnt=5;
voidinitialize();
voiddisplay_led(ucharch[6]);
voiddelay(ucharz);
sbitdula=P2^6;//声明数码管段选端口
sbitwela=P2^7;//声明数码管位选端口
uchartable_R[6]={0,0,0,0,0,0};//开辟一数组空间存储接收到的数据
ucharcodetable_figure[]=
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,
0x6f,//不带小数点的数字:
0——9
0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,
0xef,//带小数点的数字:
0——9
0x39,//字母:
C数组第20个字符
0x40,//字符:
-数组第21个字符
0x80,//字符:
.数组第22个字符
0x00//无显示数组第23个字符
};
voidmain()
{
initialize();
while
(1)
{
display_led(table_R);
}
}
voidinitialize()
{
TMOD=0X20;
TH1=0XFD;
TL1=0XFD;
REN=1;
SM1=1;
SM0=0;
EA=1;
ES=1;
TR1=1;
}
voidser()interrupt4
{
RI=0;
table_R[cnt]=SB