系列单片机最小系统.docx

上传人:scccc 文档编号:13209372 上传时间:2021-12-18 格式:DOCX 页数:13 大小:322.63KB
返回 下载 相关 举报
系列单片机最小系统.docx_第1页
第1页 / 共13页
系列单片机最小系统.docx_第2页
第2页 / 共13页
系列单片机最小系统.docx_第3页
第3页 / 共13页
系列单片机最小系统.docx_第4页
第4页 / 共13页
系列单片机最小系统.docx_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《系列单片机最小系统.docx》由会员分享,可在线阅读,更多相关《系列单片机最小系统.docx(13页珍藏版)》请在三一文库上搜索。

1、.51系列单片机最小系统设计与调试实验实验指导书自动化专业实验中心2009年2月51系列单片机最小系统设计与调试一、实验目的1. 了解单片机的基本工作原理2. 学习并掌握相关软件的使用方法(Protel、keil)2. 掌握单片机片内程序存储器下载方法3. 掌握单片机程序设计(汇编及C51)二、原理1. 什么是单片机最小系统 单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统. 对51系列单片机来说,单片机+晶振电路+复位电路,便组成了一个最小系统.但是一般我们在设计中总是喜欢把按键输入、显示输出等加到上述电路中,成为小系统。 2. AT89C51高性能8位单片机

2、功能 AT89C51提供以下标准功能:8K字节Falsh闪速存储器,256字节内部RAM,32个I/O口线,3个16位定时/计数器,一个6向量两级中断结构,一个全双工串行通信口,片内震荡器及时钟电路,同时AT89C51可降至0HZ的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,时/计数器,串行通信口及中断系统持续工作。掉电方式保存RAM中的内容,但震荡器停止工作并禁止其他所有部件工作直到下一个硬件复位。主要功能特性: 兼容MCS51指令系统        

3、0;         4k可反复擦写(>1000次)Flash ROM  32个双向I/O口 8个中断源  三个16位可编程定时/计数器 2.7-6.V的宽工作电压范围  时钟频率0-24MHz128x8bit内部RAM  五个外部中断源 两个串行中断  可直接驱动LED 两级加密位  低功耗睡眠功能 内置一个模拟比较放大器

4、0; 可编程UARL通道 软件设置睡眠和唤醒功能3. AT89C51高性能8位单片机资料请参考相关书籍三、实训任务. (1)认识MCS-51的ROM及片外RAM空间:认识51系列单片机的程序存储器(ROM)的空间范围;汇编指令编码在ROM中存储形式;掌握指令编码和指令编码所在地址的概念;了解51系列单片机的程序存储器(ROM)固定地址的用途。认识51系列单片机的片外数据存储器(片外RAM)的地址空间范围;了解51系列单片机的片外数据存储器的用途;重点掌握片内片外访问存储器的指令。(2)认识MCS-51片内RAM空间:认识51系列单片机片内随机存储器(片内RAM)的空间范围;

5、认识51系列单片机片内随机存储器的区域划分;掌握字节地址和位地址的概念;了解R0R7寄存器与字节地址的关系。重点掌握MCS-51系列单片机四个口的用法的位操作。(3)MCS-51汇编语言设计(编码转换):用MCS-51汇编指令进行程序设计。将四位BCD码化为十六位二进制数。(或 将四位十六进制数转化为BCD码)。要求:在PC机上调试,程序可正确运行并上交源程序清单及程序说明。(4)键盘输入电路设计/动态显示电路设计:在实训过程中要求设计按键输入电路、设计显示电路,并画出电路图并编写按键输入子程序。重点掌握硬件电路的设计及通过编程对电路的控制。(5)单片机最小系统设计:单片机最小系统的设计是单片

6、机应用系统设计及开发的基础,通过单片机最小系统设计,使学生对所学的单片机原理及应用课程有更深的理解。要求:提供电路图和程序清单。重点掌握硬件电路的设计及过程控制。(6)基于单片机的应用系统设计:设计出实现某控制目的的应用系统是本实训课的最终实训的结果。实训要求中包括单片机最小系统的设计,按键输入电路设计,显示电路的设计,及应用系统的软件编程。附件1: 51系列单片机最小系统设计一、单片机最小系统硬件设计单片机主要擅长系统控制,而不适合做复杂的数据处理,在设计单片机最小系统时通常选用AT89C5l、AT89C52、AT89S51、AT89S52(S系列芯片支持ISP功能)等型号的8位DIP-40

7、封装的单片机作为MCU,一个典型的单片机最小系统一般由时钟电路、复位电路、键盘电路、显示电路等部分组成,有时也外扩有片外RAM和ROM以及外部扩展接口等电路。图1为单片机最小系统结构框图。图1 单片机最小系统结构框图1、系统时钟电路 单片机内部具有一个高增益反相放大器,用于构成振荡器。通常在引脚XTALl和XTAL2跨接石英晶体和两个补偿电容构成自激振荡器,系统时钟电路结构如图2所示,可以根据情况选择6MHz、8MHz或12MHz等频率的石英晶体,补偿电容通常选择20-30pF左右的瓷片电容。 图2 系统时钟电路2、复位电路 单片机小系统采用上电自动复位和手动按键复位两种方式实现系统的复位操作

8、。上电复位要求接通电源后,自动实现复位操作。手动复位要求在电源接通的条件下,在单片机运行期间,用按钮开关操作使单片机复位。复位电路结构如图3所示。上电自动复位通过电容C3充电来实现。手动按键复位是通过按键将电阻R2与VCC接通来实现。图3 复位电路3、键盘电路系统利用P1口的P1.0-P1.3设置了4个独立按键S2S5,如图4所示,当键按下时,P1口相应的引脚置为低电平,且与此键相连的发光二极管点亮。此外,通过8279键盘显示控制芯片还可以扩展编码键盘和显示,图5为利用8279扩展的一个2×8=16键编码键盘及 8个LED的电路。图4 独立按键图5 扩展键盘和显示4、显示电路系统设置

9、了8个共阳极LED数码管LED1-LED2,单片机P0口提供段码信号,低电平有效,P0口输出端通过限流电阻R00R07与数码管的段码数据线相连,用来送出LED数码管的段码数据信号。单片机P2口提供位选信号,当P2口某位输出低电平时,与此相连的开关三极管导通,对应的数码管点亮,使用三极管用来增强信号的驱动能力,如图6。此外,为了扩展LCD显示,系统设置了两个LCD 接口,如图7,一个用于40点矩阵LCD显示,一个用于128×64点阵式LCD 显示。图6 LED显示电路图7 LCD扩展接口5、其它系统还扩展了一片2K位串行CMOS E2PROM24C02,P3.3和P3.4分别作为24C

10、02 串行数据传输的时钟和数据线,由于只有一个24C02,其三个地址输入脚A0 、A1 、A2接地,如图8。此外,系统还设置了一个蜂鸣器电路,如图9 ,通过P3.7输出音频信号,可使蜂鸣器发声。由于,本最小系统没有外扩其他存储器和I/O,因此,没有用到地址译码和锁存。 图8 扩展E2PROM 图9 蜂鸣器电路单片机最小系统主要器件如表1所示:表1单片机最小系统主要器件标号型号、规格封装功能说明U189C51DIP40CPU主器件U224C02DIP82K E2PROMLED1,LED27SEG-44位8段共阳极数码管Q1 Q99012TO-92A三极管D1 D123MMDIODE0.4发光二极

11、管Y12MHz石英晶振单片机时钟晶振 主要应用接口如表2所示:表2单片机最小系统主要接口标号功能说明连接目标J1输入电源插座主电源J240点矩阵LCD接口40点矩阵液晶显示模块J2128×64点阵式LCD接口128×64点阵液晶显示模块Jp1P0口引出接口单片机P0口Jp2P1口引出接口单片机P1口Jp3P2口引出接口单片机P2口Jp4P3口引出接口单片机P3口单片机最小系统电原理图二、单片机最小系统测试程序设计编写测试程序,一是可对最小系统各资源进行测试,二是为用户提供了使用LED显示及访问键盘等各种资源的子程序。1. 键盘扫描及数码管显示的汇编语言程序键盘扫描及数码管显

12、示的汇编语言程序如下:;* *;键盘及数码管显示程序,功能为按下一键,则对应键的数码管亮并显示该键代表的数字;*org 0000h ajmp mainorg 0100hmain: mov sp,#30hmov r3,#0mov r4,#0kon: lcall ks1 ;调用读键盘程序cjne a,#0ffh,show1 ;有键按下lcall dir ;调用显示子程序ajmp konshow1:lcall dir ;去抖动lcall dirlcall ks1 cjne a,#0ffh,show2 ;键有效ajmp konshow2:cjne a,#0feh,l1 ;以下为判别键值程序mov r4

13、,#0 ;第一个键赋其代码0ajmp lkpl1:cjne a,#0fdh,l2mov r4,#1ajmp lkpl2: cjne a,#0fbh,l3mov r4,#2ajmp lkpl3:cjne a,#0f7h,l4mov r4,#3ajmp lkplkp:lcall dirljmp kon ;返回dir: mov dptr,#table ;显示子程序mov a,r4movc a,a+dptr ;取7段码mov r3,amov a,r4led1:cjne a,#0,led2 ;根据键值选择数码管1mov dptr,#8000hajmp ssled2:cjne a,#1,led3 ;根据键

14、值选择数码管2mov dptr,#9000hajmp ssled3:cjne a,#2,led4 ;根据键值选择数码管3mov dptr,#0a000hajmp ssled4: cjne a,#3,led5 ;根据键值选择数码管4mov dptr,#0b000hajmp ssss: mov a,r3movx dptr,alcall delayretks1:clr p1.7mov dptr,#0e000h ;键盘地址movx a,dptrretdelay: mov r6,#10 ;延时子程序lpp: mov r7,#100djnz r7,$djnz r6,lpprettable: db 0c0h

15、,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90hdb 88h,83h,0c6h,0a1h,86h,8eh,0ffh,0f7hend2. 键盘扫描及数码管显示的C语言程序键盘扫描及数码管显示的C语言程序如下:/*/*键盘及数码管程序,每一键代表一个数字,在其数字代表的数码管中显示*/#include <absacc.h>#include <reg51.h>#define uchar unsigned char#define uint unsigned int#define LED1 XBYTE 0x8000 /*定义各数码管地址*/#def

16、ine LED2 XBYTE 0x9000#define LED3 XBYTE 0xA000#define LED4 XBYTE 0xB000#define KEY XBYTE 0xE000/*定义键盘地址*/void delay(uint v) /*延时函数*/while(v!=0)v-;uchar keynum=0;sbit P1_7=P17; /*扫描端口*/*数字段码表*/uchar code segtab18=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff,0xf

17、7;void dir(uchar); /*声明显示函数*/void readkey(void) /*读键盘函数*/ uchar M_key=0; uchar i; 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) case 0xfe: /*第1个键按下*/ keynum=0; break; case 0xfd: /*第2个键按下*/ keynum=1; break; case 0xfb:

18、 /*第3个键按下*/ keynum=2; break; case 0xf7: /*第4个键按下*/ keynum=3; break; void dir(keynum) /*显示函数*/switch(keynum) case 0: LED1=segtab0;delay(100); break; case 1: LED2=segtab1;delay(100); break; case 2: LED3=segtab2;delay(100); break; case 3: LED4=segtab3;delay(100); break; void main() /*主函数*/while(1)dir(keynum); /*调用显示函数*/readkey(); /*调用键盘函数*/*;

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

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1