用Protel 99 SE玩转.docx
- 文档编号:5705809
- 上传时间:2022-12-31
- 格式:DOCX
- 页数:19
- 大小:1.19MB
用Protel 99 SE玩转.docx
《用Protel 99 SE玩转.docx》由会员分享,可在线阅读,更多相关《用Protel 99 SE玩转.docx(19页珍藏版)》请在冰豆网上搜索。
用Protel99SE玩转
用Protel99SE玩转“洞洞板”
笔者长期从事CAD、单片机的教学工作。
我发现使学生掌握CAD软件的操作方法与技巧容易,而能真正从实际出发设计印刷电路板则不是一件容易的事情,这就如同会写字不一定就能写好字一样。
原因有很多,其中一个就是限于条件同学不能将设计的成果转换成真正的PCB板。
因此在平时训练时对为什么有的元件要放在中间而有的元件要放在板的边沿,没有一个感性的认识。
为此笔者设计了一些课题有针对性的进行实训,利用我们平时常用“洞洞板”(万能板)设计并制作一些单片机实验电路,使同学们在实验中得到了诸如CAD设计、单片机编程、以及焊接工艺等多方面的锻练,取得了较好的效果。
下面我将一个单片机实验板设计制作过程介绍给读者,希望能对大家有所帮助。
一、绘制原理图
原理图是一个能进行单片机LED流水灯、七段数码管动态扫描、按键扫描以及串口通讯编程练习的实验板。
画图时元件之间的连结应根据实际情况采用灵活多变的电连结方式。
图中用了网络号、总线以及导线等几种连结方式,总之应使画面美观。
在绘制原理图时要正确设置元件的属性
库元件名称
元件标号
型号规格
封装
CAP
C1
10μF
RB.1/.2(自制)
CAP
C2
30P
RAD0.1
CAP
C6~C9
0.1μF
RAD0.1
8031
U1
STC89C52RC
DIP40
MAX232(自制)
U2
MAX232
DIP16
LED7-4(自制)
DPY1、DPY2
LED7-4(自制)
PNP
Q1~Q8
9015
9015(自制)
RES2
R1
10K
AXIAL0.4
RES2
R2~R17
680
AXIAL0.4
SW—PB
K1~K8
AN(自制)
DB9
J1
DB9/F
CON8
J2~J9
CON8
SIP8
CON2
J10
POWER
SIP2
CRYSTAL
X1
12M
RAD0.2
LED
LED1~LED8
LED(自制)
元件库:
8031在ProtelDosSchematicLibrary中;MAX232、LED7-4需自制;
其余元件在MiscellaneousDevices.lib中
二、准备元器件
三、测量元件并绘制元件的封装
一定要准确测量各元件脚之间的距离,一般都为0.1英寸(100mil)的整数倍。
9015的元件脚之间的距离不是100mil,为了适应万能板间距也要设计成0.1英寸;发光二极管的引脚标号要用A、K否则引入网络表时有麻烦。
各元件的绘制参数如下:
四、设计PCB板
因为是要在万能板是焊接所以所有元件引脚间距也只能是0.1英寸,只能设置为单面板,导线的间距也一样并要转直角。
为了方便设计可把网格显示设置为100mil。
然后就是布线,都采用手工布线,一条一条的“拉”,就是有点费眼。
由于是单面板有些地方难免绕不过去,因此在顶层要加跳线。
下图中细线就是顶层的跳线。
七段数码管部分:
串口通讯部分:
按键部分:
发光二极管部分:
CPU部分:
五、焊接元件
焊接元件前要根据PCB设计图确定元件的位置,七段数码管部分跳线较多,有很多跳线都要在元件的下面,因此要先焊接跳线。
标出元件跳线位置:
焊接跳线:
再焊元件:
固定所有元件:
六、用“拖焊法”搭接电路
这种拖焊有一定技巧,一般情况焊接时是焊丝先离开然后是烙铁离开,但拖焊时秩序刚好相反。
当然好可用“口吹法”,总之这要多加练习。
这是一个局部效果:
七、程序实验
大功告后就可以输入一个程序进行实验了。
下面是一个时钟程序实验的效果。
这是该程序的原代码:
;---------------
;24小时时钟程序
;---------------
SECDATA30H;定义为秒寄存器
MINDATA31H;定义为分寄存器
HOURDATA32H;定义为时寄存器
BCD_GEDATA33H;定义为个位BCD码寄存器
BCD_SHDATA34H;定义为十位BCD码寄存器
DSP_GEDATA35H;定义为个位显示位置码寄存器
DSP_SHDATA36H;定义为十位显示位置码寄存器
ORG00H
AJMPMAIN
ORG0BH
AJMPTIMEO
ORG030H
MAIN:
MOVR0,#30H;
LOOP:
MOV@R0,#0;
INCR0;
CJNER0,#37H,LOOP;以上为30H到37H寄存器清0
MOVTMOD,#01H;定义T0为1工作方式
MOVTH0,#3CH;
MOVTL0,#0B0H;T0置初值
SETBEA;打开总中断
SETBET0
SETBTR0;打开T0中断
NEXT:
ACALLKEY;调键扫描子程序
ACALLCOUT;调键值处理子程序
ACALLDISP;调显示程序
AJMPNEXT;
TAB:
DB0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h;字段码表格
;---------------------------------
;定时中断子程序,出口值SEC,MIN,HOUR
;---------------------------------
TIMEO:
PUSHPSW;压入堆栈
PUSHACC;
MOVTH0,#3CH;重赋初值
MOVTL0,#0B0H;
INCR2;中断计数器加1
CJNER2,#20,T_RET;中断计数器到20了吗?
50ms
MOVR2,#0;中断计数器清0
INCSEC;秒寄存器加1
MOVA,SEC;
CJNEA,#60,T_RET;秒寄存器到60了吗?
MOVSEC,#0;到了清0
INCMIN;分寄存器加1
MOVA,MIN;
CJNEA,#60,T_RET;分寄存器到60了吗?
MOVMIN,#0;分寄存器清0
INCHOUR;时寄存器加1
MOVA,HOUR;
CJNEA,#24,T_RET;时寄存器到了24没?
MOVHOUR,#0;时寄存器清0
T_RET:
POPACC;弹出堆栈
POPPSW;
RETI;退出中断程序
;------------------------
;键扫描子程序,键值出口B
;------------------------
KEY:
MOVP3,#0FFH;P3口高电平
MOVA,P3;读P3口的值
CPLA;键值取反
JNZKK;如A不为0有键按下则跳到键处理程序
MOVB,#0;否则键值为0
AJMPK_RET;退出
KK:
ACALLDISP;调显示子程序并做为延时去抖
MOVP3,#0FFH;P3口高电平
MOVA,P3;再读P3口的值
CPLA;键值取反
JNZKF;如值仍不为0则确实有键按下
MOVB,#0;否则为键抖
AJMPK_RET;退出
KF:
MOVB,A;将键值给B
K_OUT:
MOVP3,#0FFH;P3口高电平
MOVA,P3;读P3口的值
CPLA;键值取反
JZK_RET;如值为0则键已松开退出
ACALLDISP;否则未松开键调显示程序
AJMPK_OUT;跳转等待键松开
K_RET:
RET;退出
;----------------------
;键处理子程序,入口值B
;----------------------
COUT:
MOVA,B;读入键值
JZC_RET;如值为0无键按下则退出
JBACC.0,STOP;0号键按下则停秒
JBACC.1,H_ADD;1号键按下时加1
JBACC.2,M_ADD;2号键按下分加1
JBACC.3,RUN;3号键校时按下确定
AJMPC_RET;退出
STOP:
CLRTR0;停秒
AJMPC_RET;
H_ADD:
JBTR0,C_RET;校时如没停秒无效退出
INCHOUR;时寄存器加1
MOVA,HOUR;
CJNEA,#24,C_RET;如大于24则清0
MOVHOUR,#0;
AJMPC_RET;
M_ADD:
JBTR0,C_RET;校分如没停秒无效退出
INCMIN;分加1
MOVA,MIN;
CJNEA,#60,C_RET;如大于60则清0
MOVMIN,#0;
AJMPC_RET;
RUN:
SETBTR0;确认键起动T0
C_RET:
RET;退出
;-------------------------------------
;显示程序,入口值显示数SEC,MIN,HOUR,
;显示位置DSP_GE,DSP_SH
;-------------------------------------
DISP:
PUSHACC;
PUSHB;压入堆栈
MOVA,SEC;读入秒数
ACALLBCD;调BCD转换子程序
MOVDSP_GE,#07Fh;秒个位显示位置
MOVDSP_SH,#0bfh;秒十位显示位置
ACALLDSP;调数码显示程序
MOVA,MIN;读入分数
ACALLBCD;调BCD转换子程序
MOVDSP_GE,#0efh;分个位显示位置
MOVDSP_SH,#0f7h;分十位显示位置
ACALLDSP;调数码显示程序
MOVA,HOUR;读入时数
ACALLBCD;调BCD转换子程序
MOVDSP_GE,#0fdh;时个位显示位置
MOVDSP_SH,#0feh;时十位显示位置
ACALLDSP;调数码显示程序
MOVP0,#0f7h;显示-
MOVP2,#0dbh;-显示位置
ACALLDEL;显示延时
POPB;
POPACC;弹出数据
RET;退出
;---------------------------------------
;数码显示程序,入口值显示数BCD_GECD_SH
;显示位置DSP_GE,DSP_SH
;---------------------------------------
DSP:
MOVDPTR,#TAB;
MOVA,BCD_GE;读入个位显示BCD码
MOVCA,@A+DPTR;查表
MOVP0,A;字段码送P0口
MOVP2,DSP_GE;位置码送P2口
ACALLDEL;显示延时
MOVA,BCD_SH;读十位显示BCD码
MOVCA,@A+DPTR;查表
MOVP0,A;字段码送P0口
MOVP2,DSP_SH;位置码送P2口
ACALLDEL;显示延时
RET;退出
;-----------------------------------------
;BCD转换子程序,入口值A,出口值BCD_GE,BCD_SH
;-----------------------------------------
BCD:
MOVB,#10;送被除数
DIVAB;除法运算
MOVBCD_SH,A;商为十位BCD码
MOVBCD_GE,B;余数为个位BCD码
RET;退出
;-----------------------
;显示延时子程序,延时1ms
;-----------------------
DEL:
MOVR5,#02
DEL1:
MOVR6,#250
DJNZR6,$
DJNZR5,DEL1
RET
END
另我还有一带温度测量的万年历的制作过程,主要则重于C语言的编程。
如有兴趣可联系。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 用Protel 99 SE玩转 Protel SE
![提示](https://static.bdocx.com/images/bang_tan.gif)