单片机最小系统设计.docx
- 文档编号:24334991
- 上传时间:2023-05-26
- 格式:DOCX
- 页数:15
- 大小:76.96KB
单片机最小系统设计.docx
《单片机最小系统设计.docx》由会员分享,可在线阅读,更多相关《单片机最小系统设计.docx(15页珍藏版)》请在冰豆网上搜索。
单片机最小系统设计
第4章单片机最小系统设计制作训练内容提要
在电子竞赛设计中,单片机作为系统的控制核心广泛应用。
本章介绍了单片机最小系统电路板、通用键盘显示电路、液晶显示模块、A/D及D/A转换等单元电路设计及其程序设计。
知识要点:
单片机最小系统,可编程键盘和显示器的接口电路,MDLS点阵字符型液晶,程序设计。
A/D与D/A显示模块,点阵图形型液晶显示模块,教学建议:
本章的重点是掌握单片机最小系统与接口电路的设计与制作。
建议学时数为8学时。
单片机最小系统在竞赛中可以选用成品。
但单片机作为竞赛作品中的核心部件,软件编程训练可以利用单片机开发系统进行培训,通过对单片机最小系统硬件的设计制作,可以使学生加深对单片机的了解。
液晶显示模块采用成品,接口电路与程序设计是训练的重点。
A/D与D/A等电路需要进行设计制作。
设计制作的产品可以作为子系统或者模块保留备用。
训练中要求学生完成电原理图、印制板图、装配图、实际制作、电路调试、设计总结报告。
4.1单片机最小系统设计制作
4.1.1单片机最小系统电路板硬件设计
单片机最小系统电路板可选用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口送出的地址信号,它的片选信号
OC.
接地,表示一直有效,其控制端C接ALE信号。
U16的输出端通过限流电阻R8~R15与数码管的段码数据线和并行键盘相连,用来送出LED数码管的段码数据信号和并行键盘的扫描信号,它的片选信号接地,表示一直有效,其数据锁存允许信号C由CS0~CS6和WR信号
OC经一个或非门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
标号型号功能说明
CPUU7主器件DIP-40
数据,地址锁存器U15,U1674LS373
138译码器74LS138U17
32KRAMU18
62265
TTL或非门U3A,U3B,U3C,U3D,U4C,U4D74LS02
U5A,U5B,U5C,U5D74LS00TTL与非门
7SEG-3LED2,LED383位段共阳极数码管
9012~三极管Q6Q1IN4148
开关二极管D16D1~12MHz石英晶振单片机时钟晶振Y1
主要应用接口如表4.1.2所示:
主要应用接口4.1.2单片机最小系统表标号功能说明连接目标主电源输入电源插座U1
J28279的通用键盘显示电路接口
8279芯片
字符型液晶显示器接口MDLSJ4
MDLS字符型液晶显示模块
LMA97S005AD点阵液晶显示器接口J5
LMA97S005AD点阵型液晶显示模块
4.1.2最小系统电路板PCB印制板电路图
最小系统电路PCB印制板元件分布图如图4.1.7所示,PCB印制顶层图如图4.1.8所示,PCB印制底层图如图4.1.9所示。
印制板元件分布图PCB最小系统电路4.1.7图
图4.1.8最小系统PCB印制电路板顶层图
图4.1.9最小系统PCB印制电路板底层图
4.1.3单片机最小系统电路板测试程序设计
编写测试程序,一是可对最小系统电路板各资源进行测试,二是为用户提供了使用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;0movr4,#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
根据键值选择数码管4
led4:
cjnea,#3,led5;movdptr,#0b000h
ajmpss
根据键值选择数码管led5:
cjnea,#4,led6;5
movdptr,#0c000h
ajmpss
6
根据键值选择数码管led6:
cjnea,#5,ss;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();/*调用键盘函数*/
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 最小 系统 设计