搜档网
当前位置:搜档网 › STC 单片机下载器使用说明

STC 单片机下载器使用说明

STC 单片机下载器使用说明
STC 单片机下载器使用说明

STC单片机下载器使用说明

介绍:

这是一个USB转TTL电平的串口转换器。它利用USB协议里规定的总线转换功能,把USB转换成串行通信口。因为现在的台式机、笔记本电脑普遍已经不再配备串口,因此在需要串口的时候,可以使用这种转换器。

由于STC单片机可以使用串口下载程序,所以可以使用这种USB转串口模块来给STC的单片机下载程序。

写到此处,我想多说几句题外话,8051内核单片机诞生于1980年左右,由Intel

公司设计,(这家公司各位一定不陌生吧)。当时英特尔公司刚刚起步,走的是开放的、兼容型的路线。所以,intel公司把8051单片机的设计授权给了给了其他半导体厂商,于是众多厂商生产了各种各样的51系列单片机,这些厂商包括:

ATMEL公司、WinBond(华邦)公司、

Philips(飞利浦)公司、 LG公司、

NEC(日电)公司、SIEMENS(西门子)公司等。

如今,8051单片机内核的知识产权保护期已过,因此许多国产半导体厂商兴起,如:深圳宏晶(STC)、上海海尔、台湾笙泉、湖南华芯、台湾华邦(芯唐)、台湾中颖、台湾新茂、台湾太欣等等。

我们之所以选用国产STC单片机作为教学用单片机,主要还是考虑到其成本因素。相对来说,STC单片机价格比较便宜,而且芯片功能强大,片内集成了很多功能。此外还要说明的是,给单片机下载程序必须要有下载器(编程器、烧录器),而多数单片机的下载器价格都会在100到200元以上,这对于初学者来说是难以承受的,而STC 单片机烧录程序,仅仅需要串口即可,而即使电脑没有配备串口,购买一个USB转串口也不过15块钱以内,这就大大降低了单片机的学习门槛。

下面就来介绍我们这款STC的单片机下载器——USB转TTL串口模块。USB转串口小板功能:1、简单的串口通信。2 、路由器或者ADSL固件升级。3 、STC单片机、STM32单片机等,烧写程序。4 、硬盘固件升级。5、超级终端里使用。常用串口调试工具。6、各种卫星机升级用。7、GPS串口通信。等...............通用型的 USB转串口小板。可见它的功能不仅仅是给STC单片机下载程序。

外观图片如下:

这并不是一条普通的USB数据线,在靠近USB接口的部分,内部有PCB电路板和集成电路芯片,用于将USB通信协议转换成串行通信口协议。USB接口与电脑连接,杜邦线接口与单片机连接。我们把头部的外壳拆掉,可以看到里面的pcb电路板和芯片,从板子正面的丝印层上可以看到4条线的连接,分别是:

红色:+5v电源

黑色:电源地

白色:RXD(信号线,接收)

绿色:TXD(信号线,发送)

安装此模块到电脑:

这是小板的背面图:

图中28脚的芯片就是USB转TTL串口的主控芯片,型号是PL-2303,生产厂商是Prolific 公司,驱动下载可以点击此链接。

首先,下载驱动程序,把驱动程序安装到电脑上,如果安装完成时要求重启电脑,请重启电脑。

然后把该模块插到电脑的一个USB端口上,电脑上会提示找到新硬件,并自动开始安装新硬件。

硬件安装完成后,右键“我的电脑”—>“管理”,打开计算机管理窗口,在右侧列表里找到“设备管理器”并点击打开。这时可以看到计算机的所有设备,如下图所示:

展开“端口(COM和LPT)”选项,在里面可以看到一个Prolific USB-to-Serial Comm Port,USB转串行通信口,记下后面的端口号,例如我的是COM3,不同的电脑上不同的USB对应的端口号是不一样的,一定要记下。至此,USB转TTL串口模块安装成功。

与单片机的连接:

要想用它来给STC单片机下载程序,该如何与单片机连接呢?结合单片机最小系统和STC官方网站提供的编程典型电路图,可以确定连接方式如下图所示:

给单片机下载程序:

要给单片机下载程序,首先按照上面的图纸把电路连接好,然后使用电脑上的STC_ISP.exe下载软件,如果电脑上没有该软件,可以到STC公司网站上下载,或者点击此下载链接,官方提供了很多版本,建议使用4.80版本。

打开软件后,界面如下:

第一步:选择单片机型号

第二步:打开程序文件(HEX或BIN文件),选定要下载的程序文件,并点“打开”。

第三步:设置串行口和波特率,端口号就是上面提到的USB转串口模块的COM端口号,例如我的是COM3。默认最低和最高波特率是1200和115200,一般不要修改。注意,COM端口号的选择很重要,选择不对将无法下载程序:

第四步:此步是一些高级设置,略过,不做任何修改,默认设置如下:

第五步,下载程序。记住下载的要点:单击按钮,然后给单片机冷启动:

点击按钮,开始进入下载程序。点击此按钮后,软件等待与单片机的握手连接,这时单片机需要一个冷启动的过程,(所谓冷启动,就是指单片机从完全断电状态,到通电启动的一个过程),所以要给单片机断电(约1秒即可),然后给单片机上电,上电之后,软件下面的文字提示框里会显示一些信息,并且会把程序烧写到单片机内部,文字提示内容如下:

Chinese:正在尝试与 MCU/单片机握手连接 ...

MCU Type is: STC89C52RC

MCU Firmware Version: 4.3C

Chinese:MCU 固件版本号: 4.3C

Double speed / 双倍速: 12T/单倍速

振荡放大器增益: full gain

下次下载时 P1.0/P1.1 与下载无关

内部扩展AUX-RAM: 允许访问(强烈推荐)

下次下载用户应用程序时将数据Flash区擦除: NO

用户软件启动内部看门狗后: 复位关看门狗

内部时钟频率:12.003264M.

外部时钟频率:12.003264M.

Chinese:正在重新连接 ...

Current Baud is: / 当前波特率为: 38400 bps.

We are erasing MCU flash...

正在擦除应用程序区... ( 00:00 )

正在下载... ( 开始时间: 12:28:20 )

Program OK / 下载 OK

Verify OK / 校验 OK

erase times/擦除时间 : 00:00

program times/下载时间: 00:00

Encrypt OK/ 已加密

如果给单片机冷启动上电时,出现以上信息,则程序下载成功,如果没有出现上述信息,则STC_ISP软件没能和单片机握手连接,可以点击按钮,然后再尝试一次,如果仍然未能成功下载,则需要返回检查电路连接是否正确,单片机是否正常,等等。

零点工作室

都骞

2011年12月5日

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的移植

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<

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)

基于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数字温度传感器,输入输出口

基于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面积等效法原理示意图。

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

STC12C5A系列单片机串口编程

STC12C5A系列单片机串口编程 串口头文件uart.h如下: =================================================================== /* * File : uart.h * Description : This file is UART driver header of STC12C5A serial signal chip. * Author : Chao * Copyright : Chao * * History * ---------------------- * Rev : 0.0 * Date : 20/08/2011 * * create. * ---------------------- */ #ifndef UART_H_ #define UART_H_ //---------------Config-------------------------// #define UART1_EN //使能串口1 #define UART1_RECEIVE_EN //允许串口1中断接收函数 #define UART2_EN //使能串口2 #define UART2_RECEIVE_EN //允许串口2中断接收函数 //#define ECHO //使能回显 //---------------Defines-------------------------// #define SystemFosc 22118400 //系统时钟:22.1184MHz #define UartBaud 9600 //串口波特率 #define UART_BUFFER_SIZE 16 //串口数据缓冲区大小 #define UartEndChar '>' //串口数据结束字符 //---------------Type define-------------------------// typedef struct { unsigned int receive_flag; //数据接收标志 unsigned char data_length; //数据缓冲区中有效数据个数 unsigned char receive_buffer[UART_BUFFER_SIZE]; //数据接收缓冲区 void (* init)(void); //串口初始化函数 void (* send_byte)(unsigned char ddata); //发送单个字符 void (* send_string)(unsigned char *ddata, unsigned char length); //发送字符串 }UART_T; //---------------Extern-------------------------// #ifdef UART1_EN

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

基于STC系列单片机的SPWM波形实现 作者:会员来源:会员提供发布时间:2010年05月05日点击数:22 摘要:文章在比较了多种生成SPWM波的技术基础上,给出了利用等效面积法来产生SPWM 波形的工作原理,详细介绍了由单片机STCl2C5410AD的可编程计数器阵列PCA实现SPWM 控制软件的编写过程,并给出了SPWM中断服务程序的流程图。将结果应用于由MICA421驱动器驱动的四个MOSFET器件FQAl60N08所组成的逆变桥上进行实际调试,实验结果表明,该方法具有电路简单、计算量小、实时性强的优点,采用在线计算和查表技术相结合,较好的解决了实时控制的要求,具有较好的应用价值。 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面积等效法原理示意图。

相关主题