单片机学习资料.docx

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

单片机学习资料.docx

《单片机学习资料.docx》由会员分享,可在线阅读,更多相关《单片机学习资料.docx(116页珍藏版)》请在冰点文库上搜索。

单片机学习资料.docx

单片机学习资料

三极管选型

9011,9012,9013,9014,8050,8559011,9012,9013,9014,8050,8550三极管的区别

9011NPN30V30mA400mW150MHz放大倍数20-80

9012PNP50V500mA600mW低频管放大倍数30-90

9013NPN20V625mA500mW低频管放大倍数40-110

9014NPN45V100mA450mW150MHz放大倍数20-90

8050NPN25V700mA200mW150MHz放大倍数30-100

8550PNP40V1500mA1000mW200MHz放大倍数40-140

详情如下:

90系列三极管参数

90系列三极管大多是以90字为开头的,但也有以ST90、C或A90、S90、SS90、UTC90开头的,它们的特性及管脚排

列都是一样的。

9011结构:

NPN

集电极-发射极电压30V

集电极-基电压50V

射极-基极电压5V

集电极电流0.03A

耗散功率0.4W

结温150℃

特怔频率平均370MHZ

放大倍数:

D28-45E39-60F54-80G72-108H97-146I132-198

9012结构:

PNP

集电极-发射极电压-30V

集电极-基电压-40V

射极-基极电压-5V

集电极电流0.5A

耗散功率0.625W

结温150℃

特怔频率最小150MHZ

放大倍数:

D64-91E78-112F96-135G122-166H144-220I190-300

9013结构:

NPN

集电极-发射极电压25V

集电极-基电压45V

射极-基极电压5V

集电极电流0.5A

耗散功率0.625W

结温150℃

特怔频率最小150MHZ

放大倍数:

D64-91E78-112F96-135G122-166H144-220I190-300

9014结构:

NPN

集电极-发射极电压45V

集电极-基电压50V

 

“LED_asm”程序的详细步骤

功能:

实现8个LED同时闪烁(汇编语言)

步骤:

1.建立工程框架

1.新建工程的顶层文件夹:

“LED_asm”,也可根据需要自己命名。

2.在顶层文件夹“LED_asm”下新建文件夹“V0.0.0”,表示软件版本号。

3.运行“KeiluVision4”,点击主菜单“Project”è“NewuVisionProject”,选择上面建立的“V0.0.0”文件夹下,将新建的工程命名为“njut_stc”(也可根据需要自己命名)。

4.接下来出现“selectaCPUDataBaseFile”窗口,选择“STCMCUDatabase”,,点击“OK”。

5.接下来出现CPU选择窗口,选择CPU为“STC15F2K60S2”,点击“OK”。

6.接下来出现Copy’Startup.A51’toProjectFolderandADDFiletoProject?

’提示时,选择“否”,这样一个空的工程框架就建好了!

2.给工程添加文件

1.点击“

”图标,新建一个文件,点击“

”将新建的文件保存为“main.asm”(*.asm代表汇编语言文件)。

此时,新建的文件并没有包括到工程项目中。

2.右键点击左边Project栏中的“SourceGroup1”选择“AddFilesto‘SourceGroup1’…”,在打开的窗口中,将文件类型改为“AllFiles(*.*)”,选中“main.asm”,点击“add”,再点击“close”。

这样,新建文件“main.asm”就添加到工程中了。

3.程序修改

1.在“main.asm”中添加如下代码:

/**

*@filemain.asm

*@brief实现8个LED同时闪烁(汇编语言)

*@parCopyright(c):

*/

/**

*主程序

*/

LOOP:

MOV0x80,#0x00/**<8个LED同时亮*/

LCALLDELAY/**<子程序调用*/

MOV0x80,#0xff/**<8个LED同时灭*/

LCALLDELAY

LJMPLOOP/**<直接跳转到LOOP*/

/**

*延时子程序

*/

DELAY:

MOV0x07,#0x64/**<给0x07单元赋值*/

DELAY3:

MOV0x06,#0x64/**<给0x06单元赋值*/

DELAY2:

MOV0x05,#0x64/**<给0x05单元赋值*/

DELAY1:

NOP/**<空指令*/

DJNZ0x05,DELAY1/**<0x05单元的内容减1,如果不等于0,则跳转到DELAY1*/

DJNZ0x06,DELAY2

DJNZ0x07,DELAY3

RET/**<子程序结束,返回*/

END/**<表示汇编程序结束*/

2.大功告成!

点击工具栏中“

”图标,编译程序,查看是否有错。

如出现:

则,大功告成!

4.生成“*.hex”文件

1.点击工具栏中“

”图标,选择“output”标签栏,勾上“createHEXFile”左边的选择框,点击“OK”。

2.点击工具栏中“

”图标,编译程序,“*.hex”文件就自动生成在项目文件夹中了。

5.将生成的“*.hex”文件烧录到学习板中,观察运行结果

例题“LED_lib”的详细步骤

功能:

利用库函数,实现8个LED同时闪烁。

步骤:

1.建立工程框架

1.新建工程的顶层文件夹:

“LED_lib”,也可根据需要自己命名。

2.在顶层文件夹“LED”下新建文件夹“V0.0.0”,表示软件版本号。

3.在“V0.0.0”文件夹下新建“Output”、“SRC”文件夹。

4.将“库函数与例程”中的“库函数”文件夹整个拷贝到“V0.0.0”文件夹下,并重命名为:

“lib_stc”。

5.运行“KeiluVision4”,点击主菜单“Project”è“NewuVisionProject”,选择上面建立的“V0.0.0”文件夹下,将新建的工程命名为“stc”(也可根据需要自己命名)。

6.接下来出现“selectaCPUDataBaseFile”窗口,选择“STCMCUDatabase”,,点击“OK”。

7.接下来出现CPU选择窗口,选择CPU为“STC15F2K60S2”,点击“OK”。

8.接下来出现Copy’Startup.A51’toProjectFolderandADDFiletoProject?

’提示时,选择“否”,这样一个空的工程框架就建好了!

2.给工程添加文件

1.点击“

”图标,新建一个文件,点击“

”将新建的文件保存到“SRC”文件夹下,命名为“main.c”。

2.再新建2个文件,分别命名为“led.c”、“led.h”,保存到“SRC”文件夹下。

3.点击

,打开“Components,EnvironmentandBooks”窗口,双击“ProjectTargets”栏中的“Target1”将“Target1”改为“stc”。

4.将中间“Groups”栏中的“SourceGroup1”改为:

“USER”,在“USER”条目下的最右边“Files”栏中添加新建的“main.c”文件。

5.在中间的“Groups”栏中添加“DRIVERS”、“LIB_STC”2个条目,在“DRIVERS”条目下,添加新建的文件“led.c”文件;在“LIB_STC”条目下,添加文件“GPIO.c”、“delay.c”文件。

3.工程设置

1.打开“KeiluVision4”开发环境,点击

,打开“OptionsforTarget窗口。

2.点击“Output”栏,点击“SelectFolderforObjects…”按钮,选择目录“V0.0.0\output”为目录;选中“createhexfiles”前的复选框。

3.点击“Listing”栏,点击“SelectFolderforListings…”按钮,选择目录“V0.0.0\output”为目录。

4.点击“C/C++”栏,“IncludePaths”旁边的文本框后有一个按钮,点击调出“FolderSetup”窗口。

这里要添加2个目录:

“.\lib_stc”;“.\SRC”。

4.程序修改

1.

参考例题,修改文件:

“main.c”、“led.c”、“led.h”。

/**main.c文件

*@filemain.c

*@brief利用库函数,实现8个LED同时闪烁

*/

#include"config.h"

#include"delay.h"

#include"led.h"

/**

*主程序

*@paramNone

*@returnNone

*/

main(void)

{

led_config();

while

(1)

{

led_on(LED_ALL);

delay_ms(250);

led_on(LED_NULL);

delay_ms(250);

}

}

///////////////////////////////////////////////////////////////////////////////////////

Config.h文件

#ifndef__CONFIG_H

#define__CONFIG_H

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

//#defineMAIN_Fosc22118400L//定义主时钟

//#defineMAIN_Fosc12000000L//定义主时钟

#defineMAIN_Fosc11059200L//定义主时钟

//#defineMAIN_Fosc5529600L//定义主时钟

//#defineMAIN_Fosc24000000L//定义主时钟

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

#include"STC15Fxxxx.H"

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

#defineMain_Fosc_KHZ(MAIN_Fosc/1000)

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

#endif

/*--------------------------------------------------------------------------

I

NTRINS.H

//51基本运算(包括_nop_空函数)

IntrinsicfunctionsforC51.

Copyright(c)1988-2004KeilElektronikGmbHandKeilSoftware,Inc.

Allrightsreserved.

--------------------------------------------------------------------------*/

#ifndef__INTRINS_H__

#define__INTRINS_H__

externvoid_nop_(void);

externbit_testbit_(bit);

externunsignedchar_cror_(unsignedchar,unsignedchar);

externunsignedint_iror_(unsignedint,unsignedchar);

externunsignedlong_lror_(unsignedlong,unsignedchar);

externunsignedchar_crol_(unsignedchar,unsignedchar);

externunsignedint_irol_(unsignedint,unsignedchar);

externunsignedlong_lrol_(unsignedlong,unsignedchar);

externunsignedchar_chkfloat_(float);

externvoid_push_(unsignedchar_sfr);

externvoid_pop_(unsignedchar_sfr);

#endif

//////////////////////////////////////////////////////////////////////////////////

DELAY.H

#ifndef__DELAY_H

#define__DELAY_H

#include"config.h"

voiddelay_ms(unsignedcharms);

#endif

///////////////////////////////////////////////////////////////////

LED.H

#ifndef_LED_H

#define_LED_H

#include"config.h"

#include"GPIO.h"

#defineGPIO_P_LEDGPIO_P0/**

#definePORT_LEDP0

voidled_config(void);

voidled_on(unsignedcharleds);

#endif

////////////////////////////////////////////////////////////////////////////

GPIO.H

#ifndef__GPIO_H

#define__GPIO_H

#include"config.h"

#defineGPIO_PullUp0//上拉准双向口

#defineGPIO_HighZ1//浮空输入

#defineGPIO_OUT_OD2//开漏输出

#defineGPIO_OUT_PP3//推挽输出

#defineGPIO_Pin_00x01//IO引脚Px.0

#defineGPIO_Pin_10x02//IO引脚Px.1

#defineGPIO_Pin_20x04//IO引脚Px.2

#defineGPIO_Pin_30x08//IO引脚Px.3

#defineGPIO_Pin_40x10//IO引脚Px.4

#defineGPIO_Pin_50x20//IO引脚Px.5

#defineGPIO_Pin_60x40//IO引脚Px.6

#defineGPIO_Pin_70x80//IO引脚Px.7

#defineGPIO_Pin_All0xFF//IO所有引脚

#defineGPIO_P00//

#defineGPIO_P11

#defineGPIO_P22

#defineGPIO_P33

#defineGPIO_P44

#defineGPIO_P55

typedefstruct

{

u8Mode;//IO模式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PP

u8Pin;//要设置的端口

}GPIO_InitTypeDef;

u8GPIO_Inilize(u8GPIO,GPIO_InitTypeDef*GPIOx);

#endif

//////////////////////////////////////////////////////////////

/**

*@fileled.c

#include"config.h"

#include"GPIO.h"

#include"delay.h"

#include"led.h"

/**

*LED配置函数

*@paramNone

*@returnNone

*/

voidled_config(void)

{

GPIO_InitTypeDefGPIO_InitStructure;

GPIO_InitStructure.Pin=GPIO_Pin_All;

GPIO_InitStructure.Mode=GPIO_OUT_PP;

GPIO_Inilize(GPIO_P_LED,&GPIO_InitStructure);

}

/**

*点亮led

*@param[in]leds选择打开的LED

*@returnNone

*/

voidled_on(unsignedcharleds)

{

PORT_LED=~leds;

}

/////////////////////////////////////////////////////////////////

GPIO.c

/*************功能说明**************

本文件为STC15xxx系列的端口初始化程序,用户几乎可以不修改这个程序.

******************************************

#include"GPIO.h"

//========================================================================

//函数:

u8GPIO_Inilize(u8GPIO,GPIO_InitTypeDef*GPIOx)

//描述:

初始化IO口.

//参数:

GPIOx:

结构参数,请参考timer.h里的定义.

//返回:

成功返回0,空操作返回1,错误返回2.

//版本:

V1.0,2012-10-22

//========================================================================

u8GPIO_Inilize(u8GPIO,GPIO_InitTypeDef*GPIOx)

{

if(GPIO>GPIO_P5)return1;//空操作

if(GPIOx->Mode>GPIO_OUT_PP)return2;//错误

if(GPIO==GPIO_P0)

{

if(GPIOx->Mode==GPIO_PullUp)P0M1&=~GPIOx->Pin,P0M0&=~GPIOx->Pin;//上拉准双向口

if(GPIOx->Mode==GPIO_HighZ)P0M1|=GPIOx->Pin,P0M0&=~GPIOx->Pin;//浮空输入

if(GPIOx->Mode==GPIO_OUT_OD)P0M1|=GPIOx->Pin,P0M0|=GPIOx->Pin;//开漏输出

if(GPIOx->Mode==GPIO_OUT_PP)P0M1&=~GPIOx->Pin,P0M0|=GPIOx->Pin;//推挽输出

}

if(GPIO==GPIO_P1)

{

if(GPIOx->Mode==GPIO_PullUp)P1M1&=~GPIOx->Pin,P1M0&=~GPIOx->Pin;//上拉准双向口

if(GPIOx->Mode==GPIO_HighZ)P1M1|=GPIOx->Pin,P1M0&=~GPIOx->Pin;//浮空输入

if(GPIOx->Mode==GPIO_OUT_OD)P1M1|=GPIOx->Pin,P1M0|=GPIOx->Pin;//开漏输出

if(GPIOx->Mode==GPIO_OUT_PP)P1M1&=~GPIOx->Pin,P1M0|=GPIOx->Pin;//推挽输出

}

if(GPIO==GPIO_P2)

{

if(GPIOx->Mode==GPIO_PullUp)P2M1&=~GPIOx->Pin,P2M0&=~GPIOx->Pin;//上拉准双向口

if(GPIOx->Mode==GPIO_HighZ)P2M1|=GPIOx->Pin,P2M0&=~GPIOx->Pin;//浮空输入

if(GPIOx->Mode==GPIO_OUT_OD)P2M1|=GPIOx->Pin,P2M0|=GPIOx->Pin;//开漏输出

if(GPIOx->Mode==GPIO_OUT_PP)P2M1&=~GPIOx->Pin,P2M0|=GPIOx->Pin;//推挽输出

}

if(GPIO==GPIO_P3)

{

if(GPIOx->Mode==GPIO_PullUp)P3M1&=~GPIOx->Pin,P3M0&=~GPIOx->Pin;//上拉准双向口

if(GPIOx->Mode==GPIO_HighZ)P3M1|=GPIOx->Pin,P3M0&=~GPIOx->Pin;//浮空输入

if(GPIOx->Mode==GPIO_OUT_OD)P3M1|=GPIOx->Pin,P3M0|=GPIOx->Pin;//开漏输出

if(GPIOx->Mode==GPIO_OUT_PP)P3M1&=~GPIOx->Pin,P3M0|=GPIOx->Pin;//推挽输出

}

if(GPIO==GPIO_P4)

{

if(GPIOx->Mode==GPIO_PullUp)P4M1&=~GPIOx->Pin,P4M0&=~GPIOx->Pin;//上拉准双向口

if(GPIOx->Mode==GPIO_H

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

当前位置:首页 > 农林牧渔 > 林学

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

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