单片机学习资料.docx
- 文档编号:23240067
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:116
- 大小:139.82KB
单片机学习资料.docx
《单片机学习资料.docx》由会员分享,可在线阅读,更多相关《单片机学习资料.docx(116页珍藏版)》请在冰豆网上搜索。
单片机学习资料
三极管选型
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 学习 资料