AT89S51(52)单片机最小系统设计.doc

上传人:wj 文档编号:8776292 上传时间:2023-05-14 格式:DOC 页数:12 大小:153.50KB
下载 相关 举报
AT89S51(52)单片机最小系统设计.doc_第1页
第1页 / 共12页
AT89S51(52)单片机最小系统设计.doc_第2页
第2页 / 共12页
AT89S51(52)单片机最小系统设计.doc_第3页
第3页 / 共12页
AT89S51(52)单片机最小系统设计.doc_第4页
第4页 / 共12页
AT89S51(52)单片机最小系统设计.doc_第5页
第5页 / 共12页
AT89S51(52)单片机最小系统设计.doc_第6页
第6页 / 共12页
AT89S51(52)单片机最小系统设计.doc_第7页
第7页 / 共12页
AT89S51(52)单片机最小系统设计.doc_第8页
第8页 / 共12页
AT89S51(52)单片机最小系统设计.doc_第9页
第9页 / 共12页
AT89S51(52)单片机最小系统设计.doc_第10页
第10页 / 共12页
AT89S51(52)单片机最小系统设计.doc_第11页
第11页 / 共12页
AT89S51(52)单片机最小系统设计.doc_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

AT89S51(52)单片机最小系统设计.doc

《AT89S51(52)单片机最小系统设计.doc》由会员分享,可在线阅读,更多相关《AT89S51(52)单片机最小系统设计.doc(12页珍藏版)》请在冰点文库上搜索。

AT89S51(52)单片机最小系统设计.doc

51单片机最小系统设计制作训练

单片机最小系统电路板硬件设计

单片机最小系统电路板可选用AT89C51、AT89C52等DIP-40封装的单片机作为MCU。

系统包括时钟电路,复位电路,扩展了片外数据存储器和地址锁存器。

系统还设置了8个并行键盘S1~S4,S6~S9,6个共阳极LED数码管LED1~LED6。

系统无需扩展程序存储器,用户可根据系统程序大小选择片内带不同容量闪存的单片机,例如PHILIPS半导体公司推出的P89C66XFlash单片机,其片内FlashROM容量最大可达64KB。

系统还提供基于8279的通用键盘显示电路、液晶显示模块、A/D及D/A转换等众多外围器件和设备接口。

单片机最小系统原理框图如图4.1.1所示。

最小系统电路原理图如图4.1.2所示。

LED数码管和并行键盘电路原理图如图4.1.3所示。

图4.1.1单片机最小系统原理框图

图4.1.2单片机最小系统电原理图

图4.1.3LED数码管和并行键盘电路原理图

单片机时钟信电路原理图如图4.1.4所示。

在引脚XTAL1和XTAL2跨接晶振Y1和微调电容C5,C6就构成了内部振荡方式,由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器并产生振荡时钟脉冲。

其中Y1是可插拔更换的,默认值是12MHz。

图4.1.4时钟源

系统板采用上电自动复位和按键手动复位方式。

上电复位要求接通电源后,自动实现复位操作。

手动复位要求在电源接通的条件下,在单片机运行期间,用按钮开关操作使单片机复位。

其电路原理图如图4.1.5所示。

上电自动复位通过外部复位电容C4充电来实现。

按键手动复位是通过复位端经电阻和Vcc接通而实现的。

二极管用来防止反相放电。

图4.1.5复位电路原理图

系统板扩展了一片32K的数据存储器62256,如图4.1.6所示。

数据线D0~D7直接与单片机的数据地址复用口P0相连,地址的低8位A0~A7则由U15锁存器74LS373获得,地址的高7位则直接与单片机的P2.0~P2.6相连。

片选信号则由地址线A15(P2.7引脚)获得,低电平有效。

这样数据存储器占用了系统从0X0000H~0X7FFFH的XDATA空间。

图4.1.6数据存储器的扩展

系统板设置了8个并行键盘S1~S4,S6~S9,6个共阳极LED数码管LED1~LED6。

其电路原理图如图4.1.2所示。

可以看出为了节省单片机的I/O口,在此采用了两片74LS373锁存器U15和U16扩展了8个I/O口。

U15用来锁存P0口送出的地址信号,它的片选信号接地,表示一直有效,其控制端C接ALE信号。

U16的输出端通过限流电阻R8~R15与数码管的段码数据线和并行键盘相连,用来送出LED数码管的段码数据信号和并行键盘的扫描信号,它的片选信号接地,表示一直有效,其数据锁存允许信号C由CS0~CS6和WR信号经一个或非门74LS02得到(其中CS0~CS5控制LED数码管,CS6控制键盘),这样只有当CS0~CS6中的某一个和WR同时有效且由低电平跳变到高电平时,输入的数据D0~D7即被输出到输出端Q0~Q7。

U17为3-8译码器74LS138,通过它将高位地址A15~A12译成8个片选信号CS0~CS7。

它的G2,G3端接地,G1接A15,所以A15应始终为高电平,这样CS0~CS7的地址就分别为8000H,9000H,0A000H,0B000H,0C000H,0D000H,0E000H,0F000H。

CS0~CS5和WR信号经过一个或非门控制三极管9012的导通,从而控制LED数码管的导通,并且三极管9012用来增强信号的驱动能力。

主要器件如表4.1.1所示:

表4.1.1单片机最小系统主要器件

标号

型号

功能说明

U7

DIP-40

CPU主器件

U15,U16

74LS373

数据,地址锁存器

U17

74LS138

138译码器

U18

62265

32KRAM

U3A,U3B,U3C,U3D,U4C,U4D

74LS02

TTL或非门

U5A,U5B,U5C,U5D

74LS00

TTL与非门

LED2,LED3

7SEG-3

3位8段共阳极数码管

Q1~Q6

9012

三极管

D1~D16

IN4148

开关二极管

Y1

12MHz石英晶振

单片机时钟晶振

主要应用接口如表4.1.2所示:

表4.1.2单片机最小系统主要应用接口

标号

功能说明

连接目标

U1

输入电源插座

主电源

J2

8279的通用键盘显示电路接口

8279芯片

J4

MDLS字符型液晶显示器接口

MDLS字符型液晶显示模块

J5

LMA97S005AD点阵液晶显示器接口

LMA97S005AD点阵型液晶显示模块

单片机最小系统电路板测试程序设计

编写测试程序,一是可对最小系统电路板各资源进行测试,二是为用户提供了使用LED显示及访问键盘等各种资源的子程序。

1.键盘扫描及数码管显示的汇编语言程序

键盘扫描及数码管显示的汇编语言程序如下:

;***********************************************************

;键盘及数码管显示程序,功能为按下一键,则对应键的数码管亮并显示该键代表的数字

;编写:

cgq

;最后修改日期:

2003/11/16

;************************************************************

org0000h

ajmpmain

org0100h

main:

movsp,#30h

movr3,#0

movr4,#0

kon:

lcallks1;调用读键盘程序

cjnea,#0ffh,show1;有键按下

lcalldir;调用显示子程序

ajmpkon

show1:

lcalldir;去抖动

lcalldir

lcallks1

cjnea,#0ffh,show2;键有效

ajmpkon

show2:

cjnea,#0feh,l1;以下为判别键值程序

movr4,#0;第一个键赋其代码0

ajmplkp

l1:

cjnea,#0fdh,l2

movr4,#1

ajmplkp

l2:

cjnea,#0fbh,l3

movr4,#2

ajmplkp

l3:

cjnea,#0f7h,l4

movr4,#3

ajmplkp

l4:

cjnea,#0efh,l5

movr4,#4

ajmplkp

l5:

cjnea,#0dfh,lkp

movr4,#5

ajmplkp

lkp:

lcalldir

ljmpkon;返回

dir:

movdptr,#table;显示子程序

mova,r4

movca,@a+dptr;取7段码

movr3,a

mova,r4

led1:

cjnea,#0,led2;根据键值选择数码管1

movdptr,#8000h

ajmpss

led2:

cjnea,#1,led3;根据键值选择数码管2

movdptr,#9000h

ajmpss

led3:

cjnea,#2,led4;根据键值选择数码管3

movdptr,#0a000h

ajmpss

led4:

cjnea,#3,led5;根据键值选择数码管4

movdptr,#0b000h

ajmpss

led5:

cjnea,#4,led6;根据键值选择数码管5

movdptr,#0c000h

ajmpss

led6:

cjnea,#5,ss;根据键值选择数码管6

movdptr,#0d000h

ajmpss

ss:

mova,r3

movx@dptr,a

lcalldelay

ret

ks1:

clrp1.7

movdptr,#0e000h;键盘地址

movxa,@dptr

ret

delay:

movr6,#10;延时子程序

lpp:

movr7,#100

djnzr7,$

djnzr6,lpp

ret

table:

db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h

db88h,83h,0c6h,0a1h,86h,8eh,0ffh,0f7h

end

2.键盘扫描及数码管显示的C语言程序

键盘扫描及数码管显示的C语言程序如下:

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

/*键盘及数码管程序,每一键代表一个数字,在其数字代表的数码管中显示*/

/*最后修改日期:

2003/11/16*/

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

#defineLED1XBYTE[0x8000]/*定义各数码管地址*/

#defineLED2XBYTE[0x9000]

#defineLED3XBYTE[0xA000]

#defineLED4XBYTE[0xB000]

#defineLED5XBYTE[0xC000]

#defineLED6XBYTE[0xD000]

#defineKEYXBYTE[0xE000]/*定义键盘地址*/

voiddelay(uintv)/*延时函数*/

{

while(v!

=0)v--;

}

ucharkeynum=0;

sbitP1_7=P1^7;/*扫描端口*/

/*数字段码表*/

ucharcodesegtab[18]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,\

0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff,0xf7};

voiddir(uchar);/*声明显示函数*/

voidreadkey(void)/*读键盘函数*/

{

ucharM_key=0;

uchari;

P1_7=0;

M_key=KEY;/*取键盘数据*/

if(M_key!

=0xff)

{

for(i=0;i<20;i++)/*去抖动*/

dir(keynum);

M_key=KEY;

if(M_key!

=0xff)/*读键*/

switch(M_key)

{

case0xfe:

/*第1个键按下*/

keynum=0;

break;

case0xfd:

/*第2个键按下*/

keynum=1;

break;

case0xfb:

/*第3个键按下*/

keynum=2;

break;

case0xf7:

/*第4个键按下*/

keynum=3;

break;

case0xef:

/*第5个键按下*/

keynum=4;

break;

case0xdf:

/*第6个键按下*/

keynum=5;

break;

}

}

}

voiddir(keynum)/*显示函数*/

{

switch(keynum)

{

case0:

LED1=segtab[0];delay(100);

break;

case1:

LED2=segtab[1];delay(100);

break;

case2:

LED3=segtab[2];delay(100);

break;

case3:

LED4=segtab[3];delay(100);

break;

case4:

LED5=segtab[4];delay(100);

break;

case5:

LED6=segtab[5];delay(100);

break;

}

}

voidmain()/*主函数*/

{

while

(1)

{

dir(keynum);/*调用显示函数*/

readkey();/*调用键盘函数*/

}

}

11

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

当前位置:首页 > PPT模板 > 图表模板

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

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