搜档网
当前位置:搜档网 › STC单片机最小系统

STC单片机最小系统

STC89C52RC单片机用户手册

STC89C52RC单片机介绍 STC89C52RC单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可以任意选择。 主要特性如下: 1.增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意 选择,指令代码完全兼容传统8051. 2.工作电压:5.5V~ 3.3V(5V单片机)/3.8V~2.0V(3V单片机) 3.工作频率范围:0~40MHz,相当于普通8051的0~80MHz,实际工作 频率可达48MHz 4.用户应用程序空间为8K字节 5.片上集成512字节RAM 6.通用I/O口(32个),复位后为:P1/P2/P3/P4是准双向口/弱上拉, P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为 I/O口用时,需加上拉电阻。 7.ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无 需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程 序,数秒即可完成一片 8.具有EEPROM功能 9.具有看门狗功能 10.共3个16位定时器/计数器。即定时器T0、T1、T2 11.外部中断4路,下降沿中断或低电平触发电路,Power Down模式可 由外部中断低电平触发中断方式唤醒 12.通用异步串行口(UART),还可用定时器软件实现多个UART 13.工作温度范围:-40~+85℃(工业级)/0~75℃(商业级) 14.PDIP封装 STC89C52RC单片机的工作模式 掉电模式:典型功耗<0.1μA,可由外部中断唤醒,中断返回后,继续执行原程序

stc系列单片机μCOSⅡ在C8051F系列单片机上的移植及其应用系统开发

stc系列单片机μCOSⅡ在C8051F系列单片机上的移植及其 应用系统开发 随着微处理器技术的飞速发展和嵌入式系统实时性要求的不断提高,应用实时多任务操作系统(RTOS)作为嵌入式设计的开发平台已逐步成为嵌入式应用设计的主流。本研究讨论将μC/OS-Ⅱ移植到C8051F系列高性能8位单片机中,并以C8051F060为例阐述了其应用系统的开发过程。 一、μC/OS-Ⅱ的基本工作原理 1.任务管理 ?C/OS-II中的任务可以是一个无限的循环,也可以在一次执行完毕后被“删除”掉,即该任务可以认为CPU完全属于该任务本身,实时应用程序的设计过程包括将问题分割为多个任务。?C/OS-II可以管理64个任务,每个任务有一定的优先级,且优先级不重复。 2.任务调度机制的实现 ?C/OS-II是可剥夺型内核,优先级高的任务一旦就绪就能剥夺优先级较低任务的CPU使用权,这提高了系统的实时响应能力。在没

有中断情况下,任务间的切换一般会调用OSSched()函数。?C/OS-II 的中断服务子程序和一般前/后台的操作有所不同。 3.任务之间的通信 在?C/OS-II中,可以通过信号量、消息邮箱和消息队列等机制,实现数据共享和任务通信。消息邮箱用一个指针型变量,一个任务或一个中断服务子程序通过内核服务,将一则消息放入邮箱,一个或多个任务通过内核服务接受这则消息。每个邮箱有相应的等待消息任务表,等待消息的任务在无消息时被置挂起态,并记入邮箱等待消息任务表中。消息放入邮箱,内核将运行等待消息任务表中优先级最高的任务。 二、移植及应用 C8051F060系列单片机特别适用于任务繁重的小型化测控系统。当芯片具有的功能被较多地使用时,系统要处理的任务就较多,编程头绪也多。为了简化应用程序实现程序模块化,提高应用程序的实时性和可靠性,将μCOS2Ⅱ移植到C8051F060中就成为一件很有意义的事。 1.?C/OS-II的移植

51单片机最小系统电路介绍

51单片机最小系统电路介绍 单片机最小系统复位电路的极性电容C1的大小直接影响单片机的复位时间,一般采用10~30uF,51单片机最小系统容值越大需要的复位时间越短。 单片机最小系统晶振Y1也可以采用6MHz或者,在正常工作的情况下可以采用更高频率的晶振,51单片机最小系统晶振的振荡频率直接影响单片机的处理速度,频率越大处理速度越快。 单片机最小系统起振电容C2、C3一般采用15~33pF,并且电容离晶振越近越好,晶振离单片机越近越好 口为开漏输出,作为输出口时需加上拉电阻,阻值一般为10k。其他接口内部有上拉电阻,作为输出口时不需外加上拉电阻。 设置为定时器模式时,加1计数器是对内部机器周期计数(1个机器周期等于12个振荡周期,即计数频率为晶振频率的1/12)。计数值N乘以机器周期Tcy就是定时时间t。 " 设置为计数器模式时,外部事件计数脉冲由T0或T1引脚输入到计数器。在每个机器周期的S5P2期间采样T0、T1引脚电平。当某周期采样到一高电平输入,而下一周期又采样到一低电平时,则计数器加1,更新的计数值在下一个机器周期的S3P1期间装入计数器。由于检测一个从1到0的下降沿需要2个机器周期,因此要求被采样的电平至少要维持一个机器周期。当晶振频率为12MHz时,最高计数频率不超过1/2MHz,即计数脉冲的周期要大于2 ms。 标识符号地址寄存器名称 P3 0B0H I/O口3寄存器 PCON 87H 电源控制及波特率选择寄存器 SCON 98H 串行口控制寄存器 SBUF 99H 串行数据缓冲寄存器 TCON 88H 定时控制寄存器 TMOD 89H 定时器方式选择寄存器 TL0 8AH 定时器0低8位 - TH0 8CH 定时器0高8位 TL1 8BH 定时器1低8位 TH1 8DH 定时器1高8位

STC51单片机IO口模式快速设置

STC51单片机IO口模式的快速设置新型51单片机STC系列,较传统51单片机在性能和速度上有根本性的提高。速度提高8—12倍;片上RAM大量增加;片上外围模块大量增加,等等。 其中IO口的模式增加为4种(传统51只有1中),以P0口为例:这里,每个端口新增两个寄存器PxM0, PxM1(x=0,1,2,3)。在设置每一个IO端的模式时都需要对这两个寄存器进行操作。 比如:要将设为推挽输出, 设为准双向口, 设为高阻输入; 设为开路模式, 都设为准双向口, 那么需要如下的代码: IO_Init() { P0M0=0x30;//0011 0000 P0M1=0x90;//1001 0000 } 这样的设置不便于记忆,很容易写错,且写好的代码可读性差,为此,我们可以通过一个宏定义来解决,具体如下: #define PORT0 0 #define PORT1 1 #define PORT2 2 #define PORT3 3 #define BIT0 0 #define BIT1 1 #define BIT2 2

#define BIT3 3 #define BIT4 4 #define BIT5 5 #define BIT6 6 #define BIT7 7 #define STANDARD 0 #define PP_OUT 1 #define Z_IN 2 #define OD 3 #define IOMODE(Port,bit_n,mode) { \ switch(Port)\ {\ case 0:\ switch(mode) { \ case STANDARD: P0M0&=~(1<

单片机最小系统原理图

单片机最小系统 单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的 系统. 对51系列单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路. 下面给出一个51单片机的最小系统电路图. 说明

复位电路:由电容串联电阻构成,由图并结合"电容电压不能突变"的性质,可以知道,当系统一上电,RST脚将会出现高电平,并且,这个高电平持续的时间由电路的RC值来决定.典型的51单片机当RST脚的高电平持续两个机器周期以上就将复位,所以,适当组合RC的取值就可以保证可靠的复位.一般教科书推荐C 取10u,R取8.2K.当然也有其他取法的,原则就是要让R C组合可以在RST脚上产生不少于2个机周期的高电平.至于如何具体定量计算,可以参考电路分析相关书籍. 晶振电路:典型的晶振取11.0592MHz(因为可以准确地得到9600波特率和19200波特率,用于有串口通讯的场合)/12MHz(产生精确的uS级时歇,方便定时操作) 单片机:一片AT89S51/52或其他51系列兼容单片机 特别注意:对于31脚(EA/Vpp),当接高电平时,单片机在复位后从内部ROM的0000H开始执行;当接低电平时,复位后直接从外部ROM的0000H开始执行.这一点是初学者容易忽略的. 复位电路: 一、复位电路的用途 单片机复位电路就好比电脑的重启部分,当电脑在使用中出现死机,按下重启按钮电脑内部的程序从头开始执行。单片机也一样,当单片机系统在运行中,受到环境干扰出现程序跑飞的时候,按下复位按钮内部的程序自动从头开始执行。 单片机复位电路如下图:

二、复位电路的工作原理 在书本上有介绍,51单片机要复位只需要在第9引脚接个高电平持续2US就可以实现,那这个过程是如何实现的呢? 在单片机系统中,系统上电启动的时候复位一次,当按键按下的时候系统再次复位,如果释放后再按下,系统还会复位。所以可以通过按键的断开和闭合在运行的系统中控制其复位。 开机的时候为什么为复位 在电路图中,电容的的大小是10uF,电阻的大小是10k。所以根据公式,可以算出电容充

STC系列单片机内部AD的应用

STC系列单片机内部AD的应用 作者:郭天祥来源:原创更新时间:2008-11-27 22:16:38 浏览次数:7668 STC89LE52AD、54AD、58AD、516AD这几款89系列的STC单片机内部自带有8路8位的AD转换器,分布在P1口的8位上,当时钟在40MHz以下时,每17个机器周期可完成一次AD转换。 与AD相关的几个寄存器如表1所示。 表1 STC89系列单片机AD相关寄存器 P1_ADC_EN:P1.X口的AD使能寄存器。 相应位设置为“1”时,对应的P1. X口作为AD转换使用,内部上拉电阻自动断开。 ADC_CONTR:AD 转换控制寄存器。 ADC_START:AD转换启动控制位,设置为“1”时,AD开始转换。

ADC_FLAG:AD转换结束标志位,当AD转换完成后,ADC_FLAG=1。 CHS2、CHS1、CHS0:为模拟输入通道选择,如表2所示。 表2 STC89系列单片机AD模拟通道选择设置 ADC_DATA:AD 转换结果寄存器。模拟/数字转换结果计算公式如下: 结果=256×Vin / Vcc Vin为模拟输入通道输入电压,Vcc为单片机实际工作电压,用单片机工作电压作为模拟参考电压。 下面一个例程演示STC89LE516AD/X2系列单片机的A/D转换功能。时钟11.0592MHz,转换结果以16进制形式输出到串行口,可以用串行口调试程序观察输出结果。(本代码摘自宏晶科技芯片手册,经作者调试可正常运行)。 新建文件part3.4.5.c,程序代码如下: #include #include // 定义与ADC 有关的特殊功能寄存器 sfr P1_ADC_EN = 0x97; //A/D转换功能允许寄存器 sfr ADC_CONTR = 0xC5; //A/D转换控制寄存器 sfr ADC_DATA = 0xC6; //A/D转换结果寄存器 typedef unsigned char INT8U; typedef unsigned int INT16U; void delay(INT8U delay_time) // 延时函数 { INT8U n; INT16U m; for (n=0;n

基于STC系列单片机的串联型开关电源设计与实现

单片机及模数综合系统设计 课题名称:基于STC12系列单片机的串联型开关电源设计与实现 --单片机控制部分

一、实验目的:本模拟电路课程设计要求制作开关电源的模拟电路部分,在掌 握原理的基础上将其与单片机相结合,完成开关电源的设计。本报告旨在详述开关电源的原理分析、计算、仿真波形、相关控制方法以及程序展示。 二、总体设计思路 本设计由开关电源的主电路和控制电路两部分组成,主电路主要处理电能,控制电路主要处理电信号,采用负反馈构成一个自动控制系统。开关电源采用PWM 控制方式,通过给定量与反馈量的比较得到偏差,通过调节器控制PWM 输出,从而控制开关电源的输出。当键盘输入预置电压后,单片机通过PWM输出一个固定频率的脉冲信号,作用于串联开关电源的二极管和三极管,使三极管以一定的频率导通与断开,然后输出进行AD转化,转化后的结果再给单片机进行输出,进行数码管显示。 系统的基本框图及控制部分如下: 控制过程原理分析:单片机所采用的芯片为STC12C5A60S2,该芯片在拥有8051内核的基础上加入了10为AD和PWM发生器。通过程序,即可控制单片机产生一定占空比的PWM 脉冲,将此脉冲输入到模拟电路部分,在模拟电路的输出端即可产生一定的输出电压,可比较容易的通过程序来实现对输出电压的控制。但上述的开环控制是无法达到精确的调节电压,因此需要采用闭环控制来精确调制。即,对输出电压进行AD采样,将其输入回单片机中进行数据处理。单片机根据处理的结果来对输出电压做出修正,经过这样的逐步调节即可达到闭

环的精密输出。由此原理,可以将整个过程分成一下模块:PWM波形输出模块,模拟电路模块,AD转换模块,数码管显示模块,键盘输入模块。 控制过程基本思路为:首先从键盘输入一个电压值,并把该电压值在数码管上面显示出来,再由A/D转换模块对串联开关电源电路的输出端进行电压采集,将采集到的电压值与键盘输入的电压值进行比较,通过闭环算法,控制PWM的脉宽输出,由此控制串联开关电压电源电路,改变输出的电压值,使得输出值与设定的电压值相等。 三、系统各单元模块电路设计 1、键盘输入数据部分 分别接到单片机的P2.4,P2.5,P2.6,P2.7。每路通过电阻进行上拉,可以编程实现控制单片机运行不同程序。为了判断键盘上面的按键是否有按下的,可以事先对P2.4,P2.5,P2.6,P2.7端口赋值,便可以知道具体是哪个按键被按下了。例如:P2.4=0,便可知道P2.4对应的按键已经按下了。 键盘输入模块程序如下: void key( ) //键盘扫描函数 { if(P2_6== 0) { delay(10);//延时去抖动 if(P2_6== 0) { while(P2_6== 0)

51单片机_最小系统免费下载

单片机是一门实践性较强的技术,很多初学者在学习单片机技术开发的时候往往一头雾水,不知何从下手。为此,笔者结合自己使用单片机多年的经验,特意设计了单片机开发所需的Study-c 整机和硬件套件,并结合套件精心编写了单片机从入门到精通系列教程。通过讲述单片机原理、电路设计、应用开发软件工具、编写实验实例让读者全面接触单片机技术。教程编排上由浅入深,循序渐进,内容力求完整、实用、趣味并存,使读者在轻松愉快的学习过程中逐步提高单片机软硬件综合设计水平。 一、内容提要 本讲主要向大家介绍51 系列单片机的最小系统的实现并通过编写程序来实现对单片机IO 口的输出控制。以点亮外部连接的LED(发光二极管)为例,简要的介绍单片机的原理、最小系统的组成,并通过简单的C51 程序设计来讲述编译软件Keil的使用并下载Hex 文件烧写单片机。 二、原理简介 在了解原理之前,首先让我们思考一个问题,什么是单片机,单片机有什么用?这是一个有意思的问题,因为任何人都不能给出一个被大家都认可的概念,那到底什么是单片机呢?普遍来说,单片机又称单片微控制器,是在一块芯片中集成了CPU(中央处理器)、RAM(数据存储器)、ROM(程序存储器)、定时器/ 计数器和多种功能的I/O(输入/ 输出)接口等一台计算机所需要的基本功能部件,从而可以完成复杂的运算、逻辑控制、通信等功能。在这里,我们没必要去找到明确的概念来解析什么是单片机,特别在使用C 语言编写程序的时,不用太多的去了解单片机的内部结构以及运行原理等。从应用的角度来说,通过从简单的程序入手,慢慢的熟悉然后逐步深入精通单片机。 在简单了解了什么是单片机之后,然后我们来构建单片机的最小系统,单片机的最小系统就是让单片机能正常工作并发挥其功能时所必须的组成部分,也可理解为是用最少的元件组成的单片机可以工作的系统。对51 系列单片机来说,最小系统一般应该包括:单片机、时钟电路、复位电路、输入/ 输出设备等(见图1)。 图1 单片机最小系统框图 三、电路详解 依据上文的内容,设计51 系列单片机最小系统见图2。

单片机最小系统电路图

单片机最小系统电路图

————————————————————————————————作者:————————————————————————————————日期: 2

单片机基础实践 D0D1D2D3D4D5D6D7EA ALE PSEN P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78RST 9P3.0(RXD)10P3.1(TXD)11P3.2(INT0)12P3.3(INT1)13P3.4(T0)14P3.5(T1)15P3.6(WR)16P3.7(RD)17XTAL218XTAL119GND 20 P2.0 21 P2.122P2.223P2.324P2.425P2.526P2.627P2.728PSEN 29ALE 30EA 31P0.732P0.633P0.534P0.435P0.336P0.237P0.138P0.039Vcc 40U1 STC89C52 P10P11P12P13P14P15P16P17P20 P21P22P23P24P25P26P27P30P31P32P33P34P35P36P37X2X1 RST Vcc 图1 单片机STC89C52电路图

4 3 2 Vcc R11k D LED 4 3 123456789J1 CON9 D0D1D2D3D4D5D6D7 Vcc 5 43+ C8 1 234 B1 R2 Vcc RST 图2 电源指示灯 图3 单片机P0口上拉电阻 图4 复位电路 Y C1 C2 X1 X2 2 1 D 123 4 56K1 1234USB USB VCC 图5 晶振电路 图6 USB 供电电路

单片机-最小系统原理解析

单片机-最小系统原理解析

单 片 机 最 小 系 统原 理

一、题目:单片机最小系统 二、引言: 由于单片机技术在各个领域正得到越来越广泛的应用,世界上许多集成电路生产厂家相继推出了各种类型的单片机,在单片机家族的众多成员中,MCS-51系列单片机以其优越的性能、成熟的技术及高可靠性和高性能价格比,迅速占领了工业测控和自动化工程应用的主要市场,成为国内单片机应用领域中的主流。目前,可用于MCS-51系列单片机开发的硬件越来越多,与其配套的各类开发系统、各种软件也日趋完善,因此,可以极方便地利用现有资源,开发出用于不同目的的各类应用系统。 单片机最小系统是在以MCS-51单片机为

基础上扩展,使其能更方便地运用于测试系统中,不仅具有控制方便、组态简单和灵活性大等优点,而且可以大幅度提高被测试的技术指标,从而能够大大提高产品的质量和数量。单片机以其功能强、体积小、可靠性高、造价低和开发周期短等优点,称为在实时检测和自动控制领域中广泛应用的器件,在工业生产中称为必不可少的器件,尤其是在日常生活中发挥的作用也越来越大。本课题设计主要在MCS-51单片机上扩展I/O口,扩展定时器定时范围,扩展键盘显示接口。适合于我们学生用于单片机的学习掌握和一些各种科研立项等的需求。因此,研究单片机最小系统有很大的实用意义。 三、关键字: DevKit MCS51 Lite 、AT89S51、AD/DA、RS232串口、串行EEPROM存储器、蜂鸣 器、独立按键、LED、8段数码管。 四、目的要求 4.1 目的: 通过对单片机最小系统的研究,掌握单片机各引脚功能,理解单片机工作过程及原理,以及与各种外部扩展器件的连接,能够自己运

基于STC12C5A60S2系列单片机万年历时钟

/**************************************************/ /*基于STC12C5A60S2系列单片机+595驱动五个数码管+165按键输入 +1302实时时钟+18B20温度传感器的万年历时钟 功能键:0xfe:实现温度,时间,年月日,周的转换显示 0xdf:实现每按一次可以一次更改小时,分,年,月,日,周的闪烁,而 实现加减按键对其改变数值 0xfb:加功能键,在0xdf有效的情况下才能生效 0xfd:减功能键,在0xdf有效的情况下才能生效 数码管亮度有点不一致,还希望高手能帮忙解决,其他功能都是正常的,也可以给各位爱好单片机的新人们一个互相交流的一段小程序,后面付有图片 */ #include < 12C5A60S2.h > //头文件 #include < intrins.h > #define uchar unsigned char //宏定义 #define uint unsigned int uchar time_tuf[]={0x14,0x04,0x10,0x12,0x30,0x00,0x5}; //年月日时分秒周 uchar code weima[]={0x20,0x10,0x08,0x04,0x02,0x01}; //数码管位选 uchar code duan_ma[]={0xee,0x88,0xd6,0xdc,0xb8,0x7c,0x7e,0xc8,0xfe,0xfc}; //数码管段选信号 uchar sec,min,hour,day,month,year,week,num,flag,flag1,flag2,flag3,Flicker,di,x,h; //时间变量及标志位变量 uint tt,tvalue; //变量 void yueri_work(void); //月日显示程序 void nian_work(void); //年显示程序 void Show_pass(uchar dss); //不显示程序 void zhou_work(void); //周显示程序 void delay_18B20(uint i); //温度延时显示程序 void wendu_work(void); //温度显示程序 void show_work(void); //显示程序 void KEY(void); //按键显示程序 sbit RCLK=P0^2; //595输出存储器锁存时钟线/165装载移位控制锁存信号 sbit SRCLK=P0^0; //595数据输入时钟线 sbit SER=P0^3; //595数据线 sbit SO=P0^4; //165数据输出数据线 sbit CLK=P0^1; //165时钟信号 sbit RST=P0^5; //1302复位引脚,高电平有效 sbit IO=P0^6; //1302数据输入输出引脚 sbit SCL=P0^7; //1302串行时钟输入,控制数据线的输入输出 sbit DQ=P1^0; //18B20数字温度传感器,输入输出口

51最小系统原理图

51系列单片机最小系统 2009年03月18日星期三上午10:48 51系列单片机最小系统 单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统. 对51系列单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路. 下面给出一个51单片机的最小系统电路图. 说明 复位电路:由电容串联电阻构成,由图并结合"电容电压不能突变"的性质,可以知道,当系统一上电,RST脚将会出现高电平,并且,这个高电平持续的 时间由电路的RC值来决定.典型的51单片机当RST脚的高电平持续两个机器周

期以上就将复位,所以,适当组合RC的取值就可以保证可靠的复位.一般 教科书推荐C 取10u,R取.当然也有其他取法的,原则就是要让RC组合可以在RST 脚上产生不少于2个机周期的高电平.至于如何具体定量计算,可 以参考电路分析相关书籍. 晶振电路:典型的晶振取(因为可以准确地得到9600波特率和19200波特率,用于有串口通讯的场合)/12MHz(产生精确的uS级时歇,方便定 时操作) 单片机:一片AT89S51/52或其他51系列兼容单片机 特别注意:对于31脚(EA/Vpp),当接高电平时,单片机在复位后从内部ROM的0000H开始执行;当接低电平时,复位后直接从外部ROM的0000H开始执行. 这一点是初学者容易忽略的. 因此可以看出,其实要熟悉51单片机的40个引脚功能也很容易: 总共40个脚,电源用2个(Vcc和GND),晶振用2个,复位1个,EA/Vpp用1个,剩下还有34个.29脚PSEN,30脚ALE为外扩数据/程序存储器时才有特定用处, 一般情况下不用考虑,这样,就只剩下32个引脚,对于初学者,这32个引脚就是要经常跟它们打交道的了.它们是: P0端口~共8个 P1端口~共8个 P2端口~共8个 P3端口~共8个

基于STC系列单片机的SPWM波形实现

基于STC系列单片机的SPWM波形实现 时间:2010-03-24 14:58:56 来源:现代电子技术作者:邢娅浪赵锦成孙世宇军械工程学院电气工程 系 摘要:文章在比较了多种生成SPWM波的技术基础上,给出了利用等效面积法来产生SPWM波形的工作原理,详细介绍了由单片机STCl2C5410AD的可编程计数器阵列PCA 实现SPWM控制软件的编写过程,并给出了SPWM中断服务程序的流程图。将结果应用于由MICA421驱动器驱动的四个MOSFET器件FQAl60N08所组成的逆变桥上进行实际调试,实验结果表明,该方法具有电路简单、计算量小、实时性强的优点,采用在线计算和查表技术相结合,较好的解决了实时控制的要求,具有较好的应用价值。 关键词:STC12C5410AD;SPWM波 0 引言 近年来,随着逆变电源在各行各业应用的日益广泛,采用正弦脉宽调制(SPWM)技术控制逆变电源提高整个系统的控制效果是人们不断探索的问题。对SPWM的控制有多种实现方法,其一是采用模拟电路、数字电路等硬件电路产生SPWM波形,该方法波形稳定准确,但电路复杂、体积庞大、不能进行自动调节;其二是借助单片机、DSP等微控制器来实现SPWM的数字控制方法,由于其内部集成了多个控制电路,如PWM电路、可编程计数器阵列(PCA)等,使得这种方法具有控制电路简单、运行速度快、抗干扰性强等优点。本文介绍一种利用STC系列单片机实现SPWM波形的方法,并将由STCl2C5410AD产生的单极性SPWM波应用于单相逆变电源,实验结果证明了利用其实现SPWM波形的可行性和有效性。 1 正弦脉宽调制技术SPWM SPWM控制方案有两种:即单极性调制和双极性调制法。单极性法所得的SPWM信号有正、负和0三种电平,而双极性得到的只有正、负两种电平。比较二者生成的SPWM波可知:在相同载波比情况下,生成的双极性SPWM波所含谐波量较大;并且在正弦逆变电源控制中,双极性SPWM波控制较复杂。因此一般采用单极性SPWM波控制的形式。 由单片机实现SPWM控制,根据其软件化方法的不同,有如下几种方法:自然采样法、对称规则法、不对称规则法和面积等效法等。理论分析发现面积等效法相对于其它方法而言,谐波较小,对谐波的抑制能力较强。而且实时控制简单,利于软件实现。因此本文采用面积等效法实现SPWM控制。 图l为SPWM面积等效法原理示意图。

51单片机最小系统原理图

接触过单片机的朋友们都时常会听到别人提"最小系统"这个词.那到底什么是最小系统,有怎样设计称上"最小"呢?下面让依依电子来告诉大家:单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统. 对51系列单片机来说,单片机+晶振电路+复位电路,便组成了一个最小系统.但是一般我们在设计中总是喜欢把按键输入、显示输出等加到上述电路中,成为小系统。 应用89C51(52)单片机设计并制作一个单片机最小系统,达到如下基本要求: 1、具有上电复位和手动复位功能。 2、使用单片机片内程序存储器。 3、具有基本的人机交互接口。按键输入、LED显示功能。 4、具有一定的可扩展性,单片机I/O口可方便地与其他电路板连接。 51单片机学习想学单片机,有一段时间了,自己基础不好,在网上提了许多弱智的问题,有一些问题网友回答了,还有一些为题许多人不屑一顾。学来学去,一年多过去了,可是还是没有入门,现在我就把我学习中遇到的一些问题和大家分享一下,希望在大虾的帮助下能快速的入门:)在学习之前我在网上打听了一下atmel公司的单片机用的人比较多,avr 系列这几年在国内比较流行,但是考虑到avr还是没有51系列用的人多,51系列的许多技术在实践中都已经的到了前人的解决,遇到问题后,有许多高人可以帮助解决,所以这次学习,选用了atmel公司的at89s52,来进行学习。学习单片机是需要花费时间实践的;学之前我们先准备好所需的东西一、所需硬件at89s52一片;8m晶振一个,30pf的瓷片电容两个;10uf电解电容一个,10k的电阻一个;万用板(多孔板)一块;其他的器件如电烙铁一把30w的,松香,焊锡若干,如果是第一次学习,不知道这些东西,没关系,以下是它们的照片: Atmel公司生产的at89s52 8m晶振

STC单片机内部RAM介绍

STC内部RAM介绍 一、内部RAM 1.内部RAM共256字节,可分为三个区域:低128字节(与传统8051兼容)、高128字节RAM(Intel在8052中扩展了高128字节RAM)。 2.低128字节RAM既可以直接寻址也可以间接寻址。低128字节RAM也称通用 RAM区。通用RAM区又可以分为工作寄存器组区,可位寻址区,用户RAM区和堆 栈区。工作寄存器组区地址从00H-1FH共32BYTE(字节)单元,分为4组(每一组称为一个工作寄存器组),每组包括8个8位的寄存器,编号均为R0-R7,但 属于不同的物理空间。通过使用工作寄存器组,可以提高运算速度。R0-R7是 RAM低128字节地址也是00H-7FH。从表面看,二者地址是一样的,实际上二者具常用的寄存器,提供4组是因为1组往往不够用。可位寻址区的地址从20H-7FH 共16个字节单元。20H-7FH单元既可以像普通RAM区按字节存取,也可以对单元中的任何一个位单独存取,共128个位,所对应的地址范围是:00H-7FH。内部有本质的区别:位地址指向的是一个位,而字节地址指向的是一个字节单元,在程序中使用不同的指令进行区分。内部RAM中的30H-FFH是用户RAM和堆栈区一个8位的堆栈指针(SP),用于指向堆栈区。单片机复位后堆栈指针SP=07H,指向了工作寄存器组0中的R7。因此,用户初始化程序都应对堆栈设置初值,一般在80H以后的单元为宜。 3.高128字节RAM与特殊功能寄存器区貌似共用相同的地址范围,都使用 80H-FFH,地址空间貌似重叠,但物理上是独立的,使用时通过不同的寻址 方式加以区分。高128字节只能间接寻址,特殊功能寄存器区只能直接寻址。二、内部扩展RAM(物理上是内部,逻辑上是外部,用MOVX访问) STC某些型号的单片机内除了集成256字节的内部RAM外,还集成了1024 字节的扩展RAM,地址是0000H-3FFFH。访问内部扩展RAM的方法和传统8051

关于STC系列单片机的WatchDog使用心得

关于STC系列单片机的WatchDog使用心得 WatchDog看门狗程序是一个我们经常会用到的程序。这里基于自己的理解和查阅相关的资料来对其进行一下说明。 1、为什么要使用看门狗? 由于单片机的工作有可能会受到来自外界电磁场的干扰,造成程序的跑飞,从而陷入死循环,程序的正常运行被打断,由单片机控制的系统便无法继续工作,这样会造成整个系统陷入停滞状态,发生不可预料的后果。 2、看门狗的大体原理(自己理解的) 经过使用看门狗后,我说一下我对对看门狗的理解。看门狗其实就类似一个计数器,启动看门狗后,它就开始自己计数,如果计数到了一个值或时间(这个可以自己设定)它就会溢出,溢出同时它就会给系统一个复位信号,这时系统程序就会从头开始运行。 为了不让看门狗的值溢出,我们需要在程序运行中喂狗(也就是手动把看门狗的计数值清零)确保它不会溢出。如果你的程序中用了延时函数那请注意一下延时时间的设置不要和看门狗的溢出时间冲突了,这个我就不细说了需要大家动手练习才更容易理解。 最后在补充一句。其实溢出的同时看门狗的溢出标志位也会置一,如果你设置了看门狗相关的中断,它就会进入中断程序。(进入中断程序后别忘了手动清除看门狗的溢出标志位) 3、看门狗的使用(基于STC15W204S单片机、Keil 5环境、C语言) 在这里只给出整个程序的一部分,为了讲解使用。 void main(void) { UART1_Init(); //这时串口1的初始化函数 EA = 1; //开启总中断 SendString("Ready! \r\n"); //通过串口1向计算机发送一个字符串

WDT_CONTR = 0x36; //这一句里包含了启动看门狗、清零看门狗、设置其为128分频while(1) { /*------------喂狗,也就是清零看门狗计数器------------*/ WDT_CONTR = 0x36; //这一句里包含了启动看门狗、清零看门狗、设置其为128分频} } 上图为STC官方手册截图 通过STC-ISP程序烧写代码,这里要注意红框部分,选择自己的分频数(这里为128)下面开始说明上面代码,很简单。

宏晶科技STC15F系列单片机

宏晶科技STC15F系列单片机 用RC充放电实现检测外部电压 日期:2012-2-24 版本:V1.0 对于没有ADC的MCU,而又要测量外部的一个电压时,使用RC充放电的方式是比较容易实现并且低成本的方法。 STC15F系列是1T的MCU,其IO口有OPEN-DRAIN模式,此模式可以很容易用一个IO口配合一个定时器实现RC充放电来测量外部未知电压。如果没有空余的定时器,也可以使用指令循环的方式实现。本例使用定时器。 本范例使用P3.2(INT0)来做RC测量,电路和波形示意图如下: 操作流程: 1、初始化程序将P3.2设置成OPEN-DRAIN模式,并将P3.2输出0给电 容放电。INT0设置成上升沿中断。Timer 0设置成16位自动重装定时器模式,时钟源为12T,允许中断。 2、测量时,先清Timer 0的TH0、TL0,然后将P3.2输出1开始对电容充 电,接着设置TR0 = 1来启动Timer 0,然后在INT0中断里设置TR0 = 0来停止计数,并将P3.2输出0对电容放电。读出TH0、TL0的值就是RC 充电时间。 由于MCU工作在5V时,IO口读到“1”的门限电压大约为2V,所以要求输入的电压高于2V,本例的测试数据从4~12.4V,测试结果参考后面的附录1。

假设输入电压为Ux,IO口门限电压为2V,则RC充电时间为: T = - R * C * ln ( 1 – 2 / Ux ) 按图示参数,当输入为10V时,RC时间大约为446uS,附录1中实测为447uS。 由于RC时间跟R和C有关,而R的温漂一般较小,但普通电容的温漂较大,所以要使用温漂小并且漏电也小的电容。 由充电公式或曲线图可知,Ux和RC值的关系是非线性的,所以实际项目使用时,要根据自己的实际电路做一些标定,这样可以得到比较准确的值。本方法适用于对测量精度要求不是很高的场合。 附录1:测量结果和曲线 输入电压(V)Timer 0读数时间uS(18.432MHZ) 4 2100 1367 4.2 1966 1280 4.4 1846 1202 4.6 1740 1133 4.8 1646 1072 5 1560 1016 5.2 1487 968 5.4 1416 922 5.6 1354 882

stc系列单片机初始化

void Hardware_Init(void) { Gpio_Init(); Timer_Init(); Adc_Init(); Interrupt_Init(); } //*************************************************************** // Function : Gpio_Init // Input : none // Output : none // Description : stc12c5a32s2 GPIO Initialization //*************************************************************** void Gpio_Init(void) { WDT_CONTR=0x00;//3E看门狗模式位1 空闲模式,计数//看门狗启动//2分频定时8s ////////////////////////////////////////////////////////////////// CLK_DIV =0x00;//外部时钟不分频 ////////////////////////////////////////////////////////////////// WAKE_CLKO=0x00;//关唤醒,关时钟输出 ////////////////////////////////////////////////////////////////// PCON=0x00;//省电及掉电模式控制 ////////////////////////////////////////////////////////////////// IAP_CONTR=0x00;//软复位寄存器 ////////////////////////////////////////////////////////////////// BUS_SPEED=0XFF;//外部扩展64K数据总线速度控制寄存器 ////////////////////////////////////////////////////////////////// TCON=0x05;//定时器/计数器T0 T1的控制寄存器包括(TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0)(可位寻址) ////////////////////////////////////////////////////////////////// //CMOD (PCA)工作模式寄存器包括5位(B7CIDI B3CPS2 B2CPS1 B1CPS0 B0ECF ) CMOD=0x02; //sysclk/2 //CCON (PCA)控制寄存器包括4位(B7CF B6CR B1CCF1 B0CCF0 ) CCON=0x00; // //CCAPM0 (PCA)模块0比较/捕获寄存器包括6位(B6ECOM0 B5CAPPO B4CAPNO B3MAT0 B2TOG0 B1PWM0 B0ECCF0 ) CCAPM0=0x00; //高速输出 //CCAPM1 (PCA)模块1比较/捕获寄存器包括6位(B6ECOM1 B5CAPP1 B4CAPN1 B3MAT1 B2TOG1 B1PWM1 B0ECCF1 ) CCAPM1=0x00;//16位软件定时 CCAP0L=0;

11 STC15F2K60S2系列单片机的PCA与PWM 例题

第11章STC15F2K60S2单片机CCP/PCA/PWM模块 例题 例11.3 利用PCA模块扩展外部中断。将PCA0(P1.1)引脚扩展为下降沿触发的外部中断,将PCA1(Pl.0)引脚扩展为上升沿/下降沿都可触发的外部中断。当Pl.1出现下降沿产生中断时,对P1.5取反;当Pl.0出现下降沿或上升沿时都会产生中断,对P1.6取反。P1.7输出驱动工作指示灯。 解:与定时器的使用方法类似,PCA模块的应用编程主要有两点:一是正确初始化,包括写入控制字、捕捉常数的设置等;二是中断服务程序的编写,在中断服务程序中编写需要完成的任务的程序代码。PCA模块的初始化部分大致如下: ①设置PCA模块的工作方式,将控制字写入CMOD、CCON和CCAPMn寄存器。 ②设置捕捉寄存器CCAPnL(低位字节)和CCAPnH(高位字节)初值。 ③根据需要,开放PCA中断,包括PCA定时器溢出中断(ECF)、PCA模块0中断(ECCF0)和PCA模块1中断(ECCF1),并将EA置l。 ④置位CR,启动PCA定时器计数(CH,CL)计数。 汇编语言参考程序如下: ∶定义单片机管脚 $INCLUDE (STC15F2K60S2.INC) ;包含STC15F2K60S2寄存器定义文件 LED_ START EQU P1.7 ;定义输出引脚 LED_PCA0_INT0 EQU Pl.6 LED_PCA1_INT1 EQU Pl.5 ORG 0000H LJMP MAIN ORG 003BH ;PCA中断的中断矢量地址 LJMP PCA_ISR ORG 0050H MAIN∶ MOV SP,#7FH CLR LED_ START ;点亮开始工作指示灯 LCALL PCA_INITIATE ;调PCA模块初始化程序 SJMP $ ;原地踏步 PCA_INITIATE∶ MOV CMOD,#80H ;设置PCA在空闲模式下停止PCA计数器工作 ;PCA模块的计数器时钟源源为f SYS/10

相关主题