电子技术.docx

上传人:b****1 文档编号:13692243 上传时间:2023-06-16 格式:DOCX 页数:29 大小:319.11KB
下载 相关 举报
电子技术.docx_第1页
第1页 / 共29页
电子技术.docx_第2页
第2页 / 共29页
电子技术.docx_第3页
第3页 / 共29页
电子技术.docx_第4页
第4页 / 共29页
电子技术.docx_第5页
第5页 / 共29页
电子技术.docx_第6页
第6页 / 共29页
电子技术.docx_第7页
第7页 / 共29页
电子技术.docx_第8页
第8页 / 共29页
电子技术.docx_第9页
第9页 / 共29页
电子技术.docx_第10页
第10页 / 共29页
电子技术.docx_第11页
第11页 / 共29页
电子技术.docx_第12页
第12页 / 共29页
电子技术.docx_第13页
第13页 / 共29页
电子技术.docx_第14页
第14页 / 共29页
电子技术.docx_第15页
第15页 / 共29页
电子技术.docx_第16页
第16页 / 共29页
电子技术.docx_第17页
第17页 / 共29页
电子技术.docx_第18页
第18页 / 共29页
电子技术.docx_第19页
第19页 / 共29页
电子技术.docx_第20页
第20页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

电子技术.docx

《电子技术.docx》由会员分享,可在线阅读,更多相关《电子技术.docx(29页珍藏版)》请在冰点文库上搜索。

电子技术.docx

电子技术

摘要

单片机就是在一块硅片上集成了各种部件的微型计算机,这些器件包括中央处理器CPU、数据存储器RAM、程序存储器ROM、定时器/计数器和多种I/O接口电路。

uP51S单片机学习开发板是一款学习单片机的实用工具,支持89S系列单片机和ATMega8515管脚兼容的AVR单片机!

配有丰富的代码例子,让您更快进入单片机的世界!

学习单片机离不开实验,以往单片机的实验往往依赖于仿真机和单片机学习系统,价格昂贵,至使学习单片机的门槛很高,很多人不能跨入单片机学习的大门。

近年来,随着FLASH型单片机的广泛应用,采用软件模拟加写片验证成为一种经济实用的实验方法,尤其是随着单片机技术的发展,很多单片机都具有了ISP功能,只要一根下载线即可以编程,开始学习时,不再需要仿真机、编程器,使得单片机的入门门槛大大降低,学习单片机的人越来越多。

UP51S就是这样一

款具有实验、下载、编程功能与一体的实验板,配合仿真模块+KEIL软件环境还可以实现硬件的仿真功能。

实现单步、过程单步、设置断点等调试手段调试程序。

关键字:

AT89S5X,X5045,At24C×××,16X2字符液晶,93C46。

 

引言

uP51S单片机学习开发板总体定位是一款单片机入门级的学习开发板。

板上安装了4位共阳数码管;8个发光二极管;四个按钮开关;一个简单的音响电路;At24C×××类芯片插座;X5045芯片插座;93C46芯片插座;RS232串行接口;字符型LCD插座;带有标准ISP插座,可用下载线对AT89S5X单片机编程;去掉笨重的变压器采用USB供电;4位拨码开关;全部资源都引出的多功能扩展接口;大面积实验区;所有的资源全部都可以使用跳线选择,方便明了;主芯片安装位留有足够位置,既可以安装芯片插座,也可以安装ZIF插座(配合下载线可将该板作为编程器用);有扩展接口,可方便地扩展其他串行接口芯片,我将举出配套使用的128x64点阵液晶模块、USB开发模块、TCP/IP模块、AD/DA模块、电机实验模块等更多模块。

使用这块实验板可以进行流水灯、人机界面程序设计、音响、计数器等基本编程练习,还可以学习I2C接口芯片使用、SPI接口芯片使用、字符型液晶接口技术、与PC机进行串行通讯等目前较为流行的技术。

 

论文目录

第一章、硬件结构……………………………………………4

第二章、开发板使用说明……………………………………8

第三章、常用实验举例………………………………………10

3.1、LED流水灯控制……………………………………10

3.2、警报声程序…………………………………………11

3.3、单片机唱歌…………………………………………12

3.4、LED数码显示………………………………………15

3.5、按键扫描程序………………………………………17

3.6、串行通迅……………………………………………19

第四章、附录…………………………………………………22

4.1、UP51S开发板电路图………………………………22

4.2、参考文献……………………………………………27

 

第一章、硬件结构

一、发光二极管:

单片机的P0端口接了8个发光二极管,这些发光二极管的负极通过一个排电阻接到P0端口各引脚,而正极则接到正电源端,发光二极管亮的条件是P0口相应的引脚为低电平,即如果P0口某引脚输出为0,相应的灯亮,如果输出为1,相应的灯灭。

例:

MOVP0,#0FH

该行程序将使发光二极管LD1-LD4熄灭,而LD5-LD8点亮。

二、数码管:

单片机的P0口和P2口的部份引脚构成了4位LED数码管驱动电路,这里LED数码管采用了共阳型,共阳型数码管的笔段(即对应abcdefgh)引脚是二极管的负极,所有二极管的正极连在一起,构成公共端,即片选端,对于这种数码管的驱动,要求在片选端提供电流,为此,使用了PNP型三极管作为片选端的驱动,共使用4只三极管,所有三极管的发射极连在一起,接到正电源端,基极则通过限流电阻分别接P2.0~P2.3,集电极分别向4只数码管供电。

图2共阳型数LED显示器

以下是根据硬件连线而写的字形码:

0

1

2

3

4

5

6

7

字形码

0C0H

0F9H

0A4H

0B0H

99H

92H

82H

0F8H

8

9

A

B

C

D

E

F

字形码

80H

90H

88H

83H

0C6H

0A1H

86H

8EH

UP51S单片机实验板显示器接口电路原理图

三、串行接口:

串行通讯功能是目前单片机应用中经常要用到的功能,80C51系列单片机P3.0和P3.1引脚的第二功能是串行口RXD与TXD,其内部的串行接口电路具有全双工异步通讯功能,但是单片机输出的信号是TTL电平,为获得电平匹配,实验板上扩充了一片MAX232芯片,利用该芯片进行电平转换,该芯片内部有电荷泵,只要单一的5V电源供电即可自行产生RS232所需的高电压,使用方便。

四、按键输入:

P3口的P3.2~P3.5接了K1~K4共4个按钮开关,用作键盘。

五、音响接口:

电路板上的三极管驱动一个无源蜂鸣器,构成一个简单的音响电路,该电路利用单片机的P3.7脚引脚作为音源,经三极管放大后发声。

由于P3.7同时作为按键输入使用,为了避免按键操作对发声电路的影响,使用Beep资源跳线,只在需要时才用短路子将两个引脚连起来,这时P3.7作为输出口来使用。

六、AT24C×××芯片接口:

在单片机应用中,经常会有一些数据需要长期保存,传统的方法是用RAM加后备电池的方法,但这种方法成本较高,电路也较复杂。

近年来,非易失性存储器技术发展很快,EEPROM就是其中的一种,和RAM相比,EEPROM不能够无限多次地擦除和写入(一般可以做到1000000万次,也有可以做到10000000次的),这是它的缺点,但是断电之后,不需要特殊的断电保护措施,这是其优点。

24系列是EEPROM中应用广泛的一类,该系列芯片仅有8个引脚,采用2线制I2C接口。

为学习该芯片的使用,设计了通用I2C接口电路,可进行AT24C01A、AT24C02等芯片的读写试验。

电路中P1.0引脚接串行时钟线,P1.1接串行数据线。

有关定义如下:

SCLBITP1.0;串行时钟

SDABITP1.1;串行数据

单片机将一组数据先写入24c01中,写入24c01的数据如下

unsignedcharcodediscode[]={0x7e,0xbd,0xdb,0xe7,0xdb,0xbd,0x7e,0xff};

//写入到AT24C01的数据串

然后才从24c01读出每个数据送到8个led上显示。

将跳线J3设置到2-3,

可以看到8个LED的随读取的数据变化花样。

J3跳线说明:

J3短路2、3实验流水灯,J3短路1、2实〇验数码管显示,J3不短路实验

液晶电路。

七、93C46芯片接口:

93c46和AT24C×××芯片的功能一样,也是eprom,只是接口方式不同。

AT24C×××芯片使用I2C两线接口,而93C46采用的SPI接口。

定义如下:

sbitCS=P1^6;

sbitSK=P1^0;

sbitDI=P1^7;

sbitDO=P3^6;

八、X5045接口

X5045是一片多功能的芯片,它具有以下的一些功能:

上电复位、电压跌落检测、看门狗定时器、512字节的EEPROM。

该芯片采用三线制SPI接口方式与单片机相连,这也是目前一个应用比较广泛的芯片,通过学习这块芯片与单片机接口的方法,还可以了解和掌握三线制SPI总线接口的工作原理及一般编程方法。

硬件电路上,有关定义如下:

CSBITP1.2

SIBITP1.4

SCKBITP1.3

SOBITP1.5

例如:

对X5045测试,设计了具有如下功能的一个程序。

X5045读写演示程序

先用字节写入:

写入11H到地址55H(字节写入)

读取55H的数据送给8个灯显示

再用页方式写入:

页写入22H/33H/44H到地址1F0/1/2H

连续读取地址1F0/1/2H的数据送给8个灯显示

九、字符型液晶接口:

液晶显示器由于体积小、重量轻、功耗低等优点,日渐成为各种便携式电子产品的理想显示器。

从液晶显示器显示内容来分,可分为段式、字符式和点阵式三种。

其中字符式液晶显示器以其价廉、显示内容丰富、美观、无须定制、使用方便等特点成为LED显示器的理想替代品。

字符型液晶显示器专门用于显示数字、字母、图形符号并可显示少量自定义符号。

这类显示器均把LCD控制器、点阵驱动器、字符存贮器等做在一块板上,再与液晶屏一起组成一个显示模块,因此,这类显示器安装与使用都较简单。

字符型液晶一般均采用HD44780及兼容芯片作为控制器,因此,其接口方式基本是标准的。

本板上带有LCD接口,可直接与字符型液晶相连。

本板上数据线被连到P0口,P2.0接RS端,P2.1接RW端,P2.2接E端。

有关定义如下:

sbitrs=P2^0;

sbitrw=P2^1;

sbitep=P2^2;

第二章、开发板使用说明

本实验板是面对的是入门者,因此在设计时充分考虑了可用性。

一、电源提供:

本板需外接电源。

外接电源有两种方法,如果你手边已有5V稳压电源,那么可以通过右上角标号为+5VIN的接口向实验板供电,极性已在板上标出,写有“+5VIN”的接正电源,另一端GND接负电源。

第二种方式直接使用USB电源供电,轻巧方便。

二、复位选择:

本板提供了3种复位电路,即RC复位、按键复位、外接芯片复位。

J5用于复位选择,在该插针座下标有ResetSelect字样,很容易辨认。

该跳线用于选择RC复位电平的选择,用于选择51系列芯片还是AVR芯片(注:

51和管脚兼容的AVR单片机只是在复位电平上相反),51芯片接2-3跳到VCC一边,AVR芯片接1-2跳到GND一边。

如果要使用X5045的复位则将跳线CB1闭合就可以了。

选择X5045复位,可用于测试X5045芯片的看门狗特性。

不论短路子是否插于左侧,X5045

芯片内部的EEPROM存储器总是可用的。

注意:

在使用ISP在线可编程功能时,必须将CB1短路拨除,不选择X5045复位,由下载线控制复位端。

如果做AVR单片机芯片复位实验需要将X5045芯片拨出,换上一块X5043芯片(需自行购买,不随板提供),然后将短路子CB1闭合。

三、音响电路工作选择:

BEEP用于选择P3.7究竟工作于输出方式还是输入方式,当需要将P3.7作为驱动音响电路工作的输出端时,闭合BEEP,否则断开。

四、字符型LCD实验:

做LCD实验时,需断开数码管的供电电路,J3跳线拿掉。

J3用于选择显示器究竟选择哪一种。

J3闭合1-2选择4位数码管,J3闭合2-3选择8个LED,J3拿掉选择16x2LCD

本板提供了供LCD使用的16针标准接线插座,标号为U7,并且在U7上方标有LCD管脚的定义,安装是注意顺序。

R6,R7是调结对比度的分压电阻,如果感觉效果不理想,可以自己实验调节。

五、ISP功能的使用:

标号为ISPPORT的插座为ISP下载插座,标准ATMELISP下载线定义。

将下载电缆与实验板正确连接

具体接法如下表所示:

表1ISP插座接线

标号

名称

描述

1

SCK

串行时钟

3

MISO

主器件输入-从器件输出

4

Vcc

电源

5

RST

复位端

9

MOSI

主器件输出-从器件输入

2、10

GND

6、7、8

NC

未接

六、仿真功能的使用:

使用本板提供的仿真模块,可以直接与Keil联机,使用Mon51提供的单步、过程单步、设置断点等调试方法进行程序的调试。

 

第三章、常用实验举例

3.1节、LED流水灯控制

程序说明:

#include

#include

voiddelayms(unsignedcharms)

//延时子程序

{

unsignedchari;

while(ms--)

{

for(i=0;i<120;i++);

}

}

main()

{

unsignedcharLED;

LED=0xfe;

P0=LED;

while

(1)

{

delayms(250);

LED=_crol_(LED,1);//循环右移1位,点亮下一个LED

P0=LED;

}

}

 

3.2节、警报声程序

程序说明:

#include

#include

sbitSPK=P3^7;

unsignedcharfrq;

voiddelayms(unsignedcharms);

main()

{

TMOD=0x01;

frq=0x00;

TH0=0x00;

TL0=0xff;

TR0=1;

IE=0x82;

while

(1)

{

frq++;

delayms

(1);

}

}

voidtimer0()interrupt1using1

{

TH0=0xfe;

TL0=frq;

SPK=~SPK;

}

voiddelayms(unsignedcharms)

//延时子程序

{

unsignedchari;

while(ms--)

{

for(i=0;i<120;i++);

}

}

3.3节、单片机唱歌

程序说明:

SPKEQUP3.7;蜂鸣器所在端口

ORG0000H

JMPSTART

START:

MOVR3,#00H

NEXT:

MOVA,R3

MOVDPTR,#TABLE

MOVCA,@A+DPTR

JZSTART

MOVR7,A

INCR3

MOVA,R3

MOVCA,@A+DPTR

MOVR2,A

ACALLSONG

INCR3

SJMPNEXT

;===歌曲播放子程序===

SONG:

MOVA,R2;取出节拍

RLA

JNZKEEP

MOVA,#01H

KEEP:

MOVR2,A

REPEAT:

ACALLEIGHTH

DJNZR2,REPEAT

RET

;===产生1/8拍延时子程序===

EIGHTH:

MOVA,R7;查表取出廷时参数,保存到R4

MOVDPTR,#DELAY_T

MOVCA,@A+DPTR

MOVR4,A

MOVA,R7;查表取出1/8拍周期数,保存到R5

MOVDPTR,#S_PARA

MOVCA,@A+DPTR

MOVR5,A

NEXTCYC:

ACALLSOUND

DJNZR5,NEXTCYC

RET

;===发声子程序===

SOUND:

SETBSPK

ACALLSDELAY

CLRSPK

ACALLSDELAY

RET

;===延时子程序===

SDELAY:

MOVA,R4;廷时值在R4内

MOVR0,A

XL2:

MOVR1,#03H

DL1:

NOP

DJNZR1,DL1

DJNZR0,XL2

RET

;===1/8拍周期表===

S_PARA:

DS1DH

DB15H,16H,00

DB19H,00H,1CH,00H,1FH,21H,00H,25H

DB00H,29H,2CH,00H,31H,34H,37H,00H

DB3EH,41H,00H,49H,00H,52H,57H,00H

DB62H

;===延时参数表===

DELAY_T:

DS1DH

DB7EH,77H,00H

DB6AH,00H,5EH,00H,54H,4FH,00H,46H

DB00H,3FH,3BH,00H,35H,32H,2FH,00H

DB2AH,27H,00H,23H,00H,1FH,1DH,0C0H

DB1AH

;===歌曲表===

TABLE:

DW2202H,2902H,2902H,2902H,2906H,2702H;我从山中来

DW2502H,2702H,2502H,2402H,2208H;带着兰花草

DW2E02H,2E02H,2E02H,2E02H,2E06H,2C02H;种在小园中

DW2902H,2C02H,2D02H,2A02H,2908H;祈祷花开早

DW2902H,2E02H,2E02H,2C02H,2906H,2702H;一日看三回

DW2502H,2702H,2502H,2402H,2206H,1D02H;看得花时过

DW1D02H,2502H,2502H,2402H,2206H,2902H;兰花却依然

DW2702H,2502H,2402H,2002H,2208H;苞也无一个

DW0000H;

END

3.4节、LED数码显示

#include

#include

#definebit(x)1<

unsignedchardatadis_digit;

unsignedcharcodedis_code[11]={0xc0,0xf9,0xa4,0xb0,//0,1,2,3

0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//4,5,6,7,8,9,off

unsignedchardatadis_buf[8];

unsignedchardatadis_index;

voidmain()

{

P0=0xff;

P2=0xff;

TMOD=0x01;

TH0=0xFC;

TL0=0x17;

IE=0x82;

dis_buf[0]=dis_code[0x1];

dis_buf[1]=dis_code[0x2];

dis_buf[2]=dis_code[0x3];

dis_buf[3]=dis_code[0x4];

dis_buf[4]=dis_code[0x5];

dis_buf[5]=dis_code[0x6];

dis_buf[6]=dis_code[0x7];

dis_buf[7]=dis_code[0x8];

dis_digit=0xfe;

dis_index=0;

TR0=1;

while

(1);

}

voidtimer0()interrupt1

//定时器0中断服务程序,用于数码管的动态扫描

//dis_index---显示索引,用于标识当前显示的数码管和缓冲区的偏移量

//dis_digit---位选通值,传送到P2口用于选通当前数码管的数值,如等于0xfe时,

//选通P2.0口数码管

//dis_buf---显于缓冲区基地址

{

TH0=0xFC;

TL0=0x17;

P2=0xff;//先关闭所有数码管

P0=dis_buf[dis_index];//显示代码传送到P0口

P2=dis_digit;//

dis_digit=_crol_(dis_digit,1);//位选通值左移,下次中断时选通下一位数码管

dis_index++;//

dis_index&=0x07;//8个数码管全部扫描完一遍之后,再回到第一个开始下一次扫描

}

3.5节、按键扫描程序

程序说明:

#include

#include

unsignedcharscan_key();

voidproc_key(unsignedcharkey_v);

voiddelayms(unsignedcharms);

sbitAN1=P3^2;

sbitAN2=P3^3;

unsignedcharleddata=0xfe;

main()

{

unsignedcharkey_s,key_v;

key_v=0x03;

P0=leddata;

while

(1)

{

key_s=scan_key();

if(key_s!

=key_v)

{

delayms(10);

key_s=scan_key();

if(key_s!

=key_v)

{

key_v=key_s;

proc_key(key_v);

}

}

}

}

unsignedcharscan_key()

{

unsignedcharkey_s;

key_s=0x00;

key_s|=AN2;

key_s<<=1;

key_s|=AN1;

returnkey_s;

}

voidproc_key(unsignedcharkey_v)

{

if((key_v&0x01)==0)

{

leddata=_cror_(leddata,1);

}

elseif((key_v&0x02)==0)

{

leddata=_crol_(leddata,1);

}

P0=leddata;

}

voiddelayms(unsignedcharms)

//延时子程序

{

unsignedchari;

while(ms--)

{

for(i=0;i<120;i++);

}

}

3.6节、串行通讯

程序说明:

#include

#include

unsignedcharkey_s,key_v,tmp;

charcodestr[]="welcome!

\n\r";

voidsend_str();

bitscan_key();

voidproc_key();

voiddelayms(

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

当前位置:首页 > 自然科学 > 物理

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

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