STC15F104E最小板产品使用手册

合集下载

STC15使用说明书启光电子

STC15使用说明书启光电子

朋友们大家好!感谢您购买启光电子STC15系列最小系统板耽误您几分钟请把以下的内容仔细阅读下谢谢首先强调下电子产品在运输过程中难免会出现点问题所以请收到板子的朋友不要着急去焊板子请先做下简单的烧录测试确定板子没有问题后在进行对板子的改动这样即使当板子出现问题我们也能更好的为您解决(包括退换)如果对板子进行焊接后测试出现问题我们只能提供帮助和技术支持但是此时就不能提供(退换)服务了希望朋友们能理解和支持!谢谢!如果着急使用请直接阅读下面的使用和下载方法开发板简介这款STC15F2K60S2 算是宏景(STC)在STC12的基础上的一个升级吧其实STC15早在两年前就一直说要出结果只是出了STC15F104E系列随后的STC12也将宏景的作品推向了高端不过管怎么说12比普通的8051要快12倍左右那STC15给我们又带来了什么呢这里我们只用它与STC12系列相比1 STC15虽然也是1T单片机但是它的速度要比STC12还要快20%左右2 STC15最闪亮的应该是它有内部晶振工作范围在5MHz—35MHz 这一点STC12是望尘莫及的3 PWM STC15位3通道而STC12为2路4 定时器/计数器STC156 STC12 45 串口方面均为双串口但是STC15可以通过切换使用分时复用的方法可以达到5个串口效果6RAM STC15 2K STC12 1K等等从以上这些不能看出STC15与STC12想比还是要胜出一筹最后希望它在你的手中能发挥的淋漓尽致!自动冷启动简介如果用我们板子的朋友一定知道我们板子有自动冷启动功能即不用重新开关只要保持板子供电状态就可以点击下载当然在STC15F2K60S2的板子上我们依然为它加了自动冷启动功能。

这里说一下自动冷气的开关问题如图在三极管M6的下面为自动冷启动设计了开关分别有左右两个框左边就一个字母K 右边能看到K G两个字母顾名思义K是开G 是关的意思也就是说在图上右边中间点和上边连焊并且左边也同时连焊就是开启自动冷启动功能中间点和下边连焊并且左边连点断开就是关闭自动冷启动功能为什么这样做呢因为如果要有一段时间调试程序开启自动冷启动会很方便如果调试完了要一直应用此程序就可以关闭冷启动降低总能量的消耗(虽然没用多少能量!)板子上的蓝灯和红灯简介红灯即靠近USB口的LED灯它为板子的电源指示灯也就是不管有没有开开关只要电源供电或者接好USB线板子上的红灯就会亮蓝灯为STC15运行指示灯它的所用IO为P5.5使用和下载方法1.要先给电脑安装驱动也就是PL-2303驱动这个要根据系统选择你的安装版本如果是W7系统建议直接用1.5.0驱动驱动安装好后应该还要进行重启按步骤执行即可2.安装KEIL编译软件这里我们给大家带的是KEIL4 版本也是目前最新的版本!安装后要用注册机注册一次然后就可以完全破解的3.当以上都弄好后就可以写一个自己想编译的程序并且生成HEX文件或者直接用我们资料的已经生成的HEX写入也可以4.得到HEX文件就可以下载到STC15中了这里要简单的说下打开下载软件在打开的对话框里选择好单片机的型号即STC15F2K60S2点击选择刚才编译好的HEX文件接下来将STC15系统板和电脑用USB连接如果驱动安装没有问题的话会在我的电脑设备管理器的端口上显示如图确定端口后在这里选择好已驱动成功的端口(我这里就是COM4)ps 其实这个不用查也没有关系新版的下载软件会自动搜索已经连接好的驱动接下来就是很重要的一点就是在最高和最低波特率选择里要尽量选择同样的波特率下载程序时才会比较稳定如图当一切准备好了以后看下板子的开关是不是处于开启的状态即波动开关拨到K位置头文件问题有的朋友可能还不太懂头文件(明白的朋友就不用浪费时间啦直接看头文件的安装方法)下面我就按我的理解简单给家解释一下说白了头文件就是驱动单片机的底层函数比如说P3口我们平时写程序时直接写P3=0xFF这样P3口的所有脚就都会拉高但这里面的P3就是在头文件里定义的!所以不管写什么样的单片机程序都要有它相应的头文件51单片机的头文件就是51.H我们在程序最上端只要加#include “reg51.h”就可以直接使用所以STC15F2K60S2也要有它的都文件当然了如果你要用51的头文件也能用必定STC15兼容51系列的所有功能但是STC15有自己的创新功能比如说AD通道的设置就要用到它自己的头文件头文件安装方法1首先要确定keil4 已经安装好2打开下载软件可以看到左边有一排对话框3 按动小箭头找到头文件选项这里就是stc15f2k60s2的整个头文件所在4选择选择上图然后点击确定这样整个的STC的头文件就安装到keil中了不妨我们可以去看一看这个STC文件夹就是刚安装的头文件里面的头文件有以上这些我们的板子是STC15F2K60S2所以我们选中它5然后复制然后返回INC文件夹并将刚才复制的STC15F2K60S2的头文件复制到INC文件夹的最下面里可以看出在INC文件夹里有很多.H文件也就是头文件把STC15F2K60S2复制到这里也方便了程序上的调用6这样做好后在程序上直接就可以了如果不把刚才的STC15头文件复制出来还要引用的话那就要这样不过都差不多看你喜欢哪一种方法若第一次在keil中创建项目在Keil中新建项目时选择芯片型号时,便会有“STC MCU Database”的选择项,如下图然后从列表中选择响应的MCU型号,所以我们在此选择“STC15F2K60S2”的型号,点击“确定”完成选择添加源代码文件到项目中,如下图:这里简单的介绍一下LCD1602 与 LCD12864的选择方式如图左上角 有三个焊点 中间点和左边连接 打开12864 和TFT功能 中间点和右边连接 打开1602功能并且这个STC15板子 多了可以加485芯片功能在对应的485焊盘上 焊好您要加的485 芯片 然后将图中485焊盘右边的 K 字母焊盘 和485芯片的第8脚 即对应K焊盘左边的焊盘连焊 就可以开起485芯片功能485所用单片机引脚 P3.0 P3.1 为串口P5.5为控制口这里的A B 就是485的输入输出口 如果接到485总线上 就可以进行485通讯了关于晶振和复位按键说明STC15F2K60S2有其内部R/C时钟及其复位功能但是它又同时支持外部晶振和外部复位其实相对而言外部晶振的稳定性要比内部高一些对于追求稳定性的项目来说用外部的晶振可能会更好一些所以在这里我们特意做了备用的外部晶振电路部分默认给大家带是22.1184MHz使用方法是上图晶振焊好的引脚附近都会有一个焊盘每一个焊盘都是直接连接到单片机的晶振输入口的如果是用外部晶振的时候就直接把晶振上下的焊盘和晶振引脚连接上即可同时下载程序时要把第一项的勾选去掉如上图这样就设置成了外部时钟复位按键也是同理在图中复位按键的右边也有个焊盘当用复位按键的时候将其用烙铁连接好即可同时在下载软件里的复位引脚做为I/O口勾选去掉如上图下载后重新上电就可以显示外部复位功能以上两个设置设置好以后下载第一次以后都要重新上电才能实现功能以后在下载就不用在重新上电了。

STC15系列开发板使用说明V1.3

STC15系列开发板使用说明V1.3
前言
致用户:
感谢选用 LCE STUDIO 的 STC15 系列单片机开发板/学习板! 为了让您在开发和学习过程中更加顺利, 更好的体验本款开发板带给您的便捷,我们建议您在使用前浏览一遍说明书和产品原理图,了解本产品的 各功能模块、跳线设置和接口等。
为了尽可能的让说明书和开发例程的内容编写得全面易懂,能够更好的应用到实际开发和学习过程中, 我们会对说明书和开发例程进行完善和更新,也会对开发板硬件进行升级,可能会导致硬件和说明书(包 括原理图)在某些细节上不完全一致。那么这些升级和更新将不另行通知。
由于开发板尺寸较小且元件较多,布局相对比较紧凑,部分芯片在使用时可以被替换,建议使用合适 的工具如镊子来协助更换想要替换的元件;基于设计考虑使用了一些 DIP 插座,其引脚较尖锐,在开发板 使用过程中或更换芯片时,请注意安全防护,避免被 DIP 插座引脚剌伤。
在设计开发板硬件、例程、说明书和原理图的过程中,难免出现错漏,希见谅并请指正,同时也欢迎 提出针对软硬件的更好的建议。在开发板使用过程中出现的任何问题,请随时联系,我们将为您提供最热 心和友好的服务。
实现频率不高的 PWM 控制。 采用商用产品的滤波与保护电路设计,原理图可直接借鉴使用。
专业 品质 服务 创新
4
LCE STUDIO
STC15 系列单片机开发板用户手册
第2部分 开发板硬件资源及简要使用说明
# 开发板硬件资源 1 LED * 2 2 按键 * 4 3 光耦晶闸管隔离输出 4 1602 显示屏接口 5 1.8 寸 TFT LCD 接口 6 串口 1(DB9 母座) 7 串口 2(插针) 8 RS485 接口 9 时钟芯片 10 红外接收器 11 红外发射 / 蜂鸣器 12 基准电源 13 NTC 热敏 / 光敏电阻接口 14 温湿度传感器接口

STC15使用说明书 启光电子

STC15使用说明书 启光电子

朋友们大家好!感谢您购买启光电子STC15系列最小系统板耽误您几分钟请把以下的内容仔细阅读下谢谢首先强调下电子产品在运输过程中难免会出现点问题所以请收到板子的朋友不要着急去焊板子请先做下简单的烧录测试确定板子没有问题后在进行对板子的改动这样即使当板子出现问题我们也能更好的为您解决(包括退换)如果对板子进行焊接后测试出现问题我们只能提供帮助和技术支持但是此时就不能提供(退换)服务了希望朋友们能理解和支持!谢谢!如果着急使用请直接阅读下面的使用和下载方法开发板简介这款STC15F2K60S2 算是宏景(STC)在STC12的基础上的一个升级吧其实STC15早在两年前就一直说要出结果只是出了STC15F104E系列随后的STC12也将宏景的作品推向了高端不过管怎么说12比普通的8051要快12倍左右那STC15给我们又带来了什么呢这里我们只用它与STC12系列相比1 STC15虽然也是1T单片机但是它的速度要比STC12还要快20%左右2 STC15最闪亮的应该是它有内部晶振工作范围在5MHz—35MHz 这一点STC12是望尘莫及的3 PWM STC15位3通道而STC12为2路4 定时器/计数器STC156 STC12 45 串口方面均为双串口但是STC15可以通过切换使用分时复用的方法可以达到5个串口效果6RAM STC15 2K STC12 1K等等从以上这些不能看出STC15与STC12想比还是要胜出一筹最后希望它在你的手中能发挥的淋漓尽致!自动冷启动简介如果用我们板子的朋友一定知道我们板子有自动冷启动功能即不用重新开关只要保持板子供电状态就可以点击下载当然在STC15F2K60S2的板子上我们依然为它加了自动冷启动功能。

这里说一下自动冷气的开关问题如图在三极管M6的下面为自动冷启动设计了开关分别有左右两个框左边就一个字母K 右边能看到K G两个字母顾名思义K是开G 是关的意思也就是说在图上右边中间点和上边连焊并且左边也同时连焊就是开启自动冷启动功能中间点和下边连焊并且左边连点断开就是关闭自动冷启动功能为什么这样做呢因为如果要有一段时间调试程序开启自动冷启动会很方便如果调试完了要一直应用此程序就可以关闭冷启动降低总能量的消耗(虽然没用多少能量!)板子上的蓝灯和红灯简介红灯即靠近USB口的LED灯它为板子的电源指示灯也就是不管有没有开开关只要电源供电或者接好USB线板子上的红灯就会亮蓝灯为STC15运行指示灯它的所用IO为P5.5使用和下载方法1.要先给电脑安装驱动也就是PL-2303驱动这个要根据系统选择你的安装版本如果是W7系统建议直接用1.5.0驱动驱动安装好后应该还要进行重启按步骤执行即可2.安装KEIL编译软件这里我们给大家带的是KEIL4 版本也是目前最新的版本!安装后要用注册机注册一次然后就可以完全破解的3.当以上都弄好后就可以写一个自己想编译的程序并且生成HEX文件或者直接用我们资料的已经生成的HEX写入也可以4.得到HEX文件就可以下载到STC15中了这里要简单的说下打开下载软件在打开的对话框里选择好单片机的型号即STC15F2K60S2点击选择刚才编译好的HEX文件接下来将STC15系统板和电脑用USB连接如果驱动安装没有问题的话会在我的电脑设备管理器的端口上显示如图确定端口后在这里选择好已驱动成功的端口(我这里就是COM4)ps 其实这个不用查也没有关系新版的下载软件会自动搜索已经连接好的驱动接下来就是很重要的一点就是在最高和最低波特率选择里要尽量选择同样的波特率下载程序时才会比较稳定如图当一切准备好了以后看下板子的开关是不是处于开启的状态即波动开关拨到K位置头文件问题有的朋友可能还不太懂头文件(明白的朋友就不用浪费时间啦直接看头文件的安装方法)下面我就按我的理解简单给家解释一下说白了头文件就是驱动单片机的底层函数比如说P3口我们平时写程序时直接写P3=0xFF这样P3口的所有脚就都会拉高但这里面的P3就是在头文件里定义的!所以不管写什么样的单片机程序都要有它相应的头文件51单片机的头文件就是51.H我们在程序最上端只要加#include “reg51.h”就可以直接使用所以STC15F2K60S2也要有它的都文件当然了如果你要用51的头文件也能用必定STC15兼容51系列的所有功能但是STC15有自己的创新功能比如说AD通道的设置就要用到它自己的头文件头文件安装方法1首先要确定keil4 已经安装好2打开下载软件可以看到左边有一排对话框3 按动小箭头找到头文件选项这里就是stc15f2k60s2的整个头文件所在4选择选择上图然后点击确定这样整个的STC的头文件就安装到keil中了不妨我们可以去看一看这个STC文件夹就是刚安装的头文件里面的头文件有以上这些我们的板子是STC15F2K60S2所以我们选中它5然后复制然后返回INC文件夹并将刚才复制的STC15F2K60S2的头文件复制到INC文件夹的最下面里可以看出在INC文件夹里有很多.H文件也就是头文件把STC15F2K60S2复制到这里也方便了程序上的调用6这样做好后在程序上直接就可以了如果不把刚才的STC15头文件复制出来还要引用的话那就要这样不过都差不多看你喜欢哪一种方法若第一次在keil中创建项目在Keil中新建项目时选择芯片型号时,便会有“STC MCU Database”的选择项,如下图然后从列表中选择响应的MCU型号,所以我们在此选择“STC15F2K60S2”的型号,点击“确定”完成选择添加源代码文件到项目中,如下图:这里简单的介绍一下LCD1602 与 LCD12864的选择方式如图左上角 有三个焊点 中间点和左边连接 打开12864 和TFT功能 中间点和右边连接 打开1602功能并且这个STC15板子 多了可以加485芯片功能在对应的485焊盘上 焊好您要加的485 芯片 然后将图中485焊盘右边的 K 字母焊盘 和485芯片的第8脚 即对应K焊盘左边的焊盘连焊 就可以开起485芯片功能485所用单片机引脚 P3.0 P3.1 为串口P5.5为控制口这里的A B 就是485的输入输出口 如果接到485总线上 就可以进行485通讯了关于晶振和复位按键说明STC15F2K60S2有其内部R/C时钟及其复位功能但是它又同时支持外部晶振和外部复位其实相对而言外部晶振的稳定性要比内部高一些对于追求稳定性的项目来说用外部的晶振可能会更好一些所以在这里我们特意做了备用的外部晶振电路部分默认给大家带是22.1184MHz使用方法是上图晶振焊好的引脚附近都会有一个焊盘每一个焊盘都是直接连接到单片机的晶振输入口的如果是用外部晶振的时候就直接把晶振上下的焊盘和晶振引脚连接上即可同时下载程序时要把第一项的勾选去掉如上图这样就设置成了外部时钟复位按键也是同理在图中复位按键的右边也有个焊盘当用复位按键的时候将其用烙铁连接好即可同时在下载软件里的复位引脚做为I/O口勾选去掉如上图下载后重新上电就可以显示外部复位功能以上两个设置设置好以后下载第一次以后都要重新上电才能实现功能以后在下载就不用在重新上电了。

STC15F104E的STC单片机自动下载系统设计

STC15F104E的STC单片机自动下载系统设计
STC8 C52 9 RC
图 1 主 控 电 路
7 6
M co o t l r & E b d e y tms irc nr l s oe m e d dS se
wWw

m e h . om . 7 s ot c ci

经 验 交 流
■ 瑟瑟 ___
大 可 通 过 电 流 不 要 小 于 单 片 机 电路 的 所 需 电 流 。如 果 三
流 , 而 进 入 冷启 动 程 序 。 从
V CC

n1
1 Q k
∞一AD6P0 一 一 一 如 一 ”一 弱一 一 一 一 f

r AD1e . )o1 ( D2P . A )02 ( AD3P ) 03 ( D4P 4 A )0 ( D5P 5 A )0
S 1 F1 4 是 宏 晶 公 司研 发 的一 款 单 片 机 , 有 省 去 一 TC 5 0 E 具
器P V. C C 3 2
2 1 - 1 0 g 7# 1期
RS T ( AD7P . )07 ( RXD P . E v P ) 30 P (XD)31 T P. AL _ G E P . n o 3 (wr ) 2 丽 P , m WD f 5P . 33 ( A1 )27 P .(0 34T ) f )26 A1 P . 4 P .( ) 35T1 ( 3P . A1 )25 P .( R ( 2P . 36W ) Al )24 P .R 3 ( D) 7 ( P . A1)23 1 XT L2 A ( 0P . A1 )22 XT 1 AL ( )21 A9P . G ND ( )20 A8P .
定 时 器 中断 。 S TC单 片 机 接 收 到 下 载 命 令 后 , 须 作 出 回应 才 能 必

STC15F104E.H

STC15F104E.H

#endif
/*
STC15F104E单片机特殊功能寄存器头文件
*/
#ifndef __REG52_H__
#define __REG52_H__
/* BYTE Registers */
sfr P3 = 0xB0;
sfr PSW = 0xD0;
sfr ACC = 0xE0;
sfr B = 0xF0;
/*
CLK_DIV
时钟分频寄存器控制系统时钟的分频数。12倍速单片机上电默认是不分频的
0 0 0-晶振时钟
0 0 1-晶振时钟/2
0 1 0-晶振时钟/4
。。。。依次类推
*/
sfr CLK_DIV=0X97;
/*
内部时钟输出
IRC_CLK0 BIT7 EN_IRCO 使能时钟输出
/* PSW */
sbit CY = PSW^7;
sbit AC = PSW^6;
sbit F0 = PSW^5;
sbit RS1 = PSW^4;
sbit RS0 = PSW^3;
sbit OV = PSW^2;
sbit P = PSW^0; //8052 only
/* TCON */ ห้องสมุดไป่ตู้
sbit TF1 = TCON^7;
sbit TR1 = TCON^6;
sbit TF0 = TCON^5;
sbit TR0 = TCON^4;
sbit IE1 = TCON^3;
sbit IT1 = TCON^2;
sbit IE0 = TCON^1;
1 0 设置为高阻输入模式

可编程继电器模块应用教程

可编程继电器模块应用教程

产品有售淘宝店:
7
汇诚科技
电子开发直销
汇诚科技
最新资料提供以下示例测试!
001、通电后继电器接通一秒断开一秒依次循环 002、继电器通电后先接通2秒,再过两秒断开不循环 003、可编程继电器模块之接通电源,继电器常开触点接通1秒后断开,然后常闭触点工作6 秒,循环工作 004、继电器通电后延时2秒后吸合不循环 005、继电器通电立即吸合,等待脉冲结束然后延时3S断开 006、按键控制继电器通断1秒启动停止 007、按键控制继电器通断按下接通再按一下断开依次循环 008、模块通电继电器延时2秒吸合 009、模块通电继电器延时3秒断开 010、按一下继电器吸合再按一下断开依次循环,带掉电记忆功能 011、UART串口发送字符控制继电器开关 012、UART串口发送十六进制控制继电器开关 013、EEPROM应用程序功能测试 014、定时器T0模拟串口测试程序 015、按键触发后立即吸合延时1分钟断开程序 016、按键触发吸合5秒断开2两秒依次循环 017、STC15系列只用一个定时器的红外接收程序 018、定时器产生延时通7秒断13秒程序 019、定次使用(通断电10次继电器停止工作) 020、继电器通电立即吸合,等待脉冲结束然后延时3S断开 021、定次吸合超过255 022、定时器产生延时3小时断开继电器程序 023、脉冲信号检验开关 024、按键按下保持5秒开关接通,不够5秒,不动作,按键断开,输出也断开 025、催款、要账、定时、定次催款 026、UART 串口上位机控制继电器吸合与断开(带定时开关功能)
//库文件
#define uchar unsigned char//宏定义无符号字符型
#define uint unsigned int //宏定义无符号整型

STC单片机最小系统板使用说明书

STC单片机最小系统板使用说明书

首先在 Project Windows 窗口里选择 File 卡片,展开项目列表。在项目列表里用鼠标左键选
中 Target 1,然后在菜单栏里的 Project 菜单里选中 Options For Target “Target 1 ” 命令,打开一个
调试环境设置窗口对话框,在调试环境设置窗口里选择 Output 卡片,选择生成 HEX 文件,如图
生产厂家,然后单击前面的“+”号,显示出 Keil uVision 所支持的该厂家的芯片信号列表,单击
相应的型号。与 STC12C5A60S2 单片机最相近的单片机是 NXP 公司(原 Philips 公司)的
3
P89C51RC2xx,并且指令系统完全兼容传统的 8051 单片机,因此,在选择单片机型号时,选择 “NXP”公司的“P89C51RC2xx”即可。
打开一个空的编辑窗口,让用户输入程序源代码。为了使得用户在输入程序的时候,能够高亮 显示汇编语言语法字符(关键字),可以先保存文件。这种高亮显示关键字的功能对于减少程序 的输入错误很有意义。方法是,从“File”菜单中选择“Save”菜单项或单击工具条上的保存按钮 , 将文件保存为想要的名字。如果使用汇编语言编写程序,则文件的后缀名应该是“.asm”;如果使 用 C 语言编写程序,则文件的后缀名应该是“.c”。在此,使用 C 语言编程,文件名取为 led1.c, 扩展名是.c。如图 6 所示。
图 1 “系统属性”中的“硬件”选项卡
1
单击图 1 中的“设备管理”按钮,弹出“设备管理器”对话框,单击“端口”左边的“+” 号,如图 2 所示。
找到串口号
图 2 找到串口号的方法
3、使用 Keil C51 集成开发环境输入程序并编译程序 Keil C51 IDE 又叫 Keil 集成开发环境或 Keil C51µVision3。 Keil 是以工程项目的方法管理文件。所有的文件(源程序文件、头文件和各种技术文档)都

51单片机介绍及头文件-STC15F104E

51单片机介绍及头文件-STC15F104E

8脚51单片机介绍及头文件-STC15F104E发布时间:2011-02-15 15:17:36上次买芯片无意间发现STC也有8个脚的单片机,在我印象中貌似只有ATMEAG有8只脚的。

于是乎买了几个回来,今天下了手册研究以下。

再次将心得写出来STC的8脚单片机有直插和SOP两种形式的封装,其中有6个IO口,剩下2个是VCC和GND ,不需要带晶振内部自带有时钟发生电路,在此要说明这种型号的单片机有专用的烧录软件,在宏晶官网都有下载。

这6个I O口实际上是我们普通单片机上的P3口,实际编程时也是使用P3.X来实现IO口操作。

唯一的不同就是没有硬件的串口,需要用到定时器来模拟(这点不好),但是下载电路和STC的串口下载电路时一样的。

不做修改。

这个有点费解?下载时用到的是串口形式的下载电路,硬件上使用时却没有串口。

杯具啊!关于IO口的复用功能,除P3.1没有复用功能外,其他引脚均有复用功能。

分别是5个外部中断,3个时钟输出,一个复位输入。

芯片默认是不需要复位电路的,上电自复位的。

可以通过软件来选择引脚作为复位脚。

同时在烧录软件上可以选择低压复位。

手册上说的是8种。

软件上只显示了6种-不解???让人惊喜的是烧录软件上提供硬件开启看门狗功能。

还可以选择看门狗分频级数。

还是蛮方便的嘛。

程序又少了几句话。

最后要说一点的是该种单片机以E结尾的都有EEPROM喔。

例如我买的STC15F104E。

有了这种小的单片机,大家以后做点简单的玩意也不拍浪费了。

好东西。

支持一下!特附上修改过的STC15F04 E头文件/*STC15F104E单片机特殊功能寄存器头文件*/#ifndef __REG52_H__#define __REG52_H__/* BYTE Registers */sfr P3 = 0xB0;sfr PSW = 0xD0;sfr ACC = 0xE0;sfr B = 0xF0;sfr SP = 0x81;sfr DPL = 0x82;sfr DPH = 0x83;/*BIT5 LVDF 低压检测标记位只要VCC小于芯片门槛电压自动置1 需软件清0 同时也是低压检测中断标记位BIT1 PD 为1进入掉电模式硬件清0BIT0 IDL 为1进入空闲模式硬件清0*/sfr PCON = 0x87;sfr TCON = 0x88;sfr TMOD = 0x89;sfr TL0 = 0x8A;sfr TL1 = 0x8B;sfr TH0 = 0x8C;sfr TH1 = 0x8D;sfr IE = 0xA8;sfr IP = 0xB8;/* PSW */sbit CY = PSW^7;sbit AC = PSW^6;sbit F0 = PSW^5;sbit RS1 = PSW^4;sbit RS0 = PSW^3;sbit OV = PSW^2;sbit P = PSW^0; //8052 only /* TCON */sbit TF1 = TCON^7;sbit TR1 = TCON^6;sbit TF0 = TCON^5;sbit TR0 = TCON^4;sbit IE1 = TCON^3;sbit IT1 = TCON^2;sbit IE0 = TCON^1;sbit IT0 = TCON^0;/* IE */sbit EA = IE^7;sbit ELVD = IE^6; //低压检测中断sbit ET1 = IE^3;sbit EX1 = IE^2;sbit ET0 = IE^1;sbit EX0 = IE^0;/* IP */sbit PT1 = IP^3;sbit PX1 = IP^2;sbit PT0 = IP^1;sbit PX0 = IP^0;/* P3 */sbit RD = P3^7;sbit WR = P3^6;sbit T1 = P3^5;sbit T0 = P3^4;sbit INT1 = P3^3;sbit INT0 = P3^2;sbit TXD = P3^1;sbit RXD = P3^0;/*IO口的设置寄存器四种模式P3M0 P1M10 0 与普通的IO口一样0 1 设置为强推挽模式1 0 设置为高阻输入模式1 1 设置为高漏输出模式*/sfr P3M0=0XB2;sfr P3M1=0XB1;/*AUXR寄存器BIT7 T0X12 定时器0速度为传统12倍BIT6 T1X12 定时器1速度为传统12倍*/sfr AUXR=0X8E;//不可以位寻址的/*CLK_DIV时钟分频寄存器控制系统时钟的分频数。

STC-15f104e程序-红外线程序

STC-15f104e程序-红外线程序

STC-15F104E红外线解码程序+仿真文件(可定义任意I/O作接收脚,支持长/短按,自适应主...红外线NEC解码程序+仿真文件(可定义任意I/O作接收脚,支持长/短按,自适应主频6MHz~40MHz)//*********************【NEC解码头文件】*******************//// 简介:本程序适用于NCE解码:(9ms+4.5ms)引导码+32位编码。

// 兼容STC所有型号(包括1T 和12T 系列),可以定义任意I/O作红外接收脚,// 自适应解码主频:6MHz ~ 40MHz。

//// 使用条件:占用系统定时器0,开启定时器0中断(如使用其它定时器请自改IR_Init();初始化函数)//// 使用说明:填相关宏定义:USER_H、USER_L、Check_EN、CPU_Fosc、IR,// 上电初始化函数IR_Init(),// 在定时器0中断中调用IR_NEC()解码函数,// 解码有效时,IR_BT=2即短按,IR_BT=3即长按,由用户清0,// 解码存放:用户码高8位NEC[0],用户码低8位NEC[1],操作码NEC[2],操作码反码NEC[3]。

////【供用户调用的函数】// IR_Init(); //接收初始化,开启定时器0中断400us// IR_NEC(); //红外线解码(解NEC编码)////***************************************************************/#ifndef __IR_NEC_H__#define __IR_NEC_H__//【用户必填项:USER_H、USER_L、Check_EN、CPU_Fosc、IR】#define USER_H 0x80 //用户码高8位#define USER_L 0x7F //用户码低8位#define Check_EN 0 //是否要校验16位用户码:不校验填0,校验则填1#define CPU_Fosc 12000000L //输入主频,自适应解码(单位:Hz,范围:6MHz ~ 40MHz)#define CA_S 8 //长按时间设置,单位:108mS(即108mS整数倍,10倍以上为宜)sbit IR = P3^6; //红外线接口(任意引脚)#define Step 400 //红外采样步长:400us#define TH_H ((65536-Step*(CPU_Fosc/300)/40000)/256) //定时器高8位基准赋值#define TH_L ((65536-Step*(CPU_Fosc/300)/40000)%256) //定时器低8位基准赋值uint8 IR_BT; //解码效果返回:0无效,1有效,2短按,3长按uint8 NEC[4]; //解码存放:16位用户码、操作码正反码uint8 cntCA; //长按计数uint16 cntStep; //步数计bit IRa,IRb; //接收脚电位状态保存bit IRsync; //同步标志uint8 BitN; //位码装载数/*┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈函数:红外线解码初始化┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈*/void IR_Init(){TMOD &= 0xF0; //清定时器0TMOD |= 0x01; //定时器0:16位定时器TL0 = TH_L; //每步时间TH0 = TH_H;ET0 = 1;EA = 1;TR0 = 1;}/*┈┈┈┈┈┈┈┈┈┈基准┈┈┈┈┈┈┈┈┈┈┈*/#define Boot_Limit ((9000+4500 +1000)/Step) //引导码周期上限#define Boot_Lower ((9000+4500 -1000)/Step) //引导码周期下限#define Bit1_Limit ((2250 +800)/Step) //“1”周期上限#define Bit0_Limit ((1125 +400)/Step) //“0”周期上限/*┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈函数:红外线NEC周期采样解码法(定时中断,下降沿查询周期时间)全局变量:IR_BT = 0无效1有效,待继续判断长、短按(如不需要判断长、短按,则直接使用)2短按3长按┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈*/void IR_NEC(){TL0 = TH_L; //重赋值TH0 = TH_H;IRb = IRa; //保存上次电位状态IRa = IR; //保存当前电位状态cntStep++; //步数累加if(IR_BT==1)if(cntStep>300)IR_BT=2; //解码有效后,如果无长按,120ms(400us×300)后默认短按if(IRb && !IRa) //是否下降沿(上次高,当前低){if(cntStep > Boot_Limit) //超过同步时间?{if(IR_BT==1)if(++cntCA>CA_S)IR_BT=3; //解码有效后,继续按住遥控>CA_S即长按IRsync=0; //同步位清0}else if(cntStep > Boot_Lower){ IRsync=1; BitN=32; } //同步位置1,装载位码数32else if(IRsync) //如果已同步{if(cntStep > Bit1_Limit)IRsync=0;else{NEC[3] >>= 1;if(cntStep > Bit0_Limit)NEC[3] |= 0x80; //“0”与“1”if(--BitN == 0){IRsync = 0; //同步位清0#if (Check_EN == 1)if((NEC[0]==USER_H)&&(NEC[1]==USER_L)&&(NEC[2]==~NEC[3])) //校验16位用户码、操作码正反码{ IR_BT=1; cntCA=0; } //解码有效,接下来判断:短按?长按?#elseif(NEC[2]==~NEC[3]){ IR_BT=1; cntCA=0; } //只校验操作码正反码#endif}else if((BitN & 0x07)== 0) //NEC[3]每装满8位,移动保存一次(即BitN%8 == 0){ NEC[0]=NEC[1]; NEC[1]=NEC[2]; NEC[2]=NEC[3]; }}}cntStep = 0; //步数计清0}}//取消相关宏定义#undef CPU_Fosc#endif主程序#include "INC\STC89C52RC.H"#include "INC\MY_SET.H"#include "INC\IR_NEC.H" //调用NEC解码头文件sfr SE = 0x80; //数码管段选P0:0x80 P1:0x90sbit WX1 = P2^0; //数码管位显sbit WX2 = P2^1;sbit WX3 = P2^2;sbit WX4 = P2^3;sbit WX5 = P2^4;sbit WX6 = P2^5;sbit WX7 = P2^6;sbit WX8 = P2^7;uint8c tab[] ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0X88,0X83,0XC6,0XA1,0X86,0X8 E,0xFF};uint8 Xn,X1,X2,X3,X4,X5,X6;void KZ0(); //短按处理void KZ1(); //长按处理/***************** 主函数********************/void main(void){IR_Init(); //红外线解码初始化while(1){//遥控检测if((IR_BT==2)||(IR_BT==3)){if(IR_BT==2)KZ0(); //短按处理else KZ1(); //长按处理IR_BT =0; //清有效标志X1 = NEC[0]/16; //更新显示X2 = NEC[0]%16;X3 = NEC[1]/16;X4 = NEC[1]%16;X5 = NEC[2]/16;X6 = NEC[2]%16;}}}/*┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈函数:遥控短按处理┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈*/ void KZ0(){switch(NEC[2]){case 0x12: P10 = !P10; break;case 0x05: break;case 0x1E: break;case 0x55: break;case 0x01: break;case 0x1B: break;case 0x03: break;case 0x6B: break;case 0x07: break;case 0x08: break;case 0x09: break;case 0x68: break;case 0x22: break;case 0xE6: break;case 0x33: break;case 0xE2: break;default:break;}}/*┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈函数:遥控长按处理┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈*/ void KZ1(){switch(NEC[2]){case 0x12: P14 = !P14; break;case 0x05: break;case 0x1E: break;case 0x55: break;case 0x01: break;case 0x1B: break;case 0x03: break;case 0x6B: break;case 0x07: break;case 0x08: break;case 0x09: break;case 0x68: break;case 0x22: break;case 0xE6: break;case 0x33: break;case 0xE2: break;default:break;}}/*********************数码管扫描*************************/void XS(void){if(++Xn > 7)Xn=0;switch(Xn){case 0: WX8=1; NOP; //屏蔽上个位显SE=tab[X1]; //送段码WX1=0; //开位显break;case 1: WX1=1; NOP; SE=tab[X2]; WX2=0; break;case 2: WX2=1; NOP; SE=tab[X3]; WX3=0; break;case 3: WX3=1; NOP; SE=tab[X4]; WX4=0; break;case 4: WX4=1; NOP; SE=tab[16]; WX5=0; break;case 5: WX5=1; NOP; SE=tab[16]; WX6=0; break;case 6: WX6=1; NOP; SE=tab[X5]; WX7=0; break;case 7: WX7=1; NOP; SE=tab[X6]; WX8=0; break; default:break;}}/********************** 定时器0中断函数************************/ void time0(void) interrupt 1{IR_NEC(); XS();}。

STC工具使用说明书

STC工具使用说明书

STC工具使用说明书V1.22020-8-21目录1 概述 (3)2 系统可编程(ISP)流程说明 (3)3 STC通用USB转串口工具 (4)3.1 STC通用USB转串口工具外观图 (4)3.2 STC通用USB转串口工具布局图 (5)3.3 STC通用USB转串口工具驱动安装 (6)3.4 使用STC通用USB转串口工具下载程序到MCU (8)3.5 使用STC通用USB转串口工具仿真用户代码 (11)4 USB型联机/脱机下载工具U8W/U8W-Mini (20)4.1安装U8W/U8W-Mini驱动程序 (22)4.2 U8W的功能介绍 (26)4.3 U8W的在线联机下载使用说明 (27)4.4 U8W的脱机下载使用说明 (30)4.5 U8W-Mini的功能介绍 (39)4.6 U8W-Mini的在线联机下载使用说明 (40)4.7 U8W-Mini的脱机下载使用说明 (42)4.8 制作/更新U8W/U8W-Mini (47)4.9 U8W/U8W-Mini设置直通模式(可用于仿真) (49)4.10 U8W/U8W-Mini的参考电路 (50)5应用线路图 (52)5.1 U8W工具应用参考线路图 (52)5.2 STC通用USB转串口工具应用参考线路图 (52)1 概述U8W/U8W-Mini 是一款集在线联机下载和脱机下载于一体的编程工具系列。

STC 通用USB 转串口工具则是支持在线下载与在线仿真的编程工具。

工具类型 在线下载 脱机下载 烧录座下载 在线仿真 价格(人民币) U8W 支持 支持 支持 需设置直通模式 100元 U8W-Mini 支持 支持 不支持 需设置直通模式 50元 通用USB 转串口支持不支持不支持支持30元2 系统可编程(ISP )流程说明注意:因 [P3.0, P3.1] 作下载/仿真用(下载/仿真接口仅可用 [P3.0, P3.1] ),故建议用户将串口1放在 P3.6/P3.7 或 P1.6/P1.7 ,若用户不想切换,坚持使用 P3.0/P3.1 工作或作为串口1进行通信,则务必在下载程序时,在软件上勾选“下次冷启动时,P3.2/P3.3为0/0时才可以下载程序”。

用户手册正文104e

用户手册正文104e

目录第1章基本信息...............................................................................1-11.1 业务功能.............................................................................1-11.2 系统结构.............................................................................1-21.2.1 前面板......................................................................1-21.2.2 后面板......................................................................1-3第2章安装和连接...........................................................................2-12.1 物品清单.............................................................................2-12.2 安装注意事项......................................................................2-12.3 硬件安装.............................................................................2-22.3.1 连接网络线缆...........................................................2-22.3.2 开启电源和初始化....................................................2-3第3章命令行配置...........................................................................3-13.1 命令行简介.........................................................................3-13.1.1 登录命令行环境搭建................................................3-13.1.2 命令行使用规则简介................................................3-23.2 数据配置.............................................................................3-43.2.1 配置IAD的IP地址..................................................3-53.2.2 配置MGC的数据....................................................3-83.2.3 配置IADMS数据.....................................................3-93.2.4 配置FAX相关参数................................................3-103.2.5 配置NAT功能.......................................................3-123.2.6 配置DHCP Server.................................................3-153.3 升级软件...........................................................................3-17第4章 Web配置..............................................................................4-14.1 简介....................................................................................4-14.2 入门指南.............................................................................4-14.3 登录Web管理工具............................................................4-14.4 Web管理配置.....................................................................4-34.4.1 配置IAD104E的IP地址.........................................4-44.4.2 配置软交换IP地址..................................................4-54.4.3 设备信息..................................................................4-64.4.4 电话配置(管理员)................................................4-74.4.5 动态IP分配.............................................................4-74.4.6 静态IP分配.............................................................4-94.4.7 NAT配置...............................................................4-104.4.8 本地服务器配置.....................................................4-114.4.9 VLAN配置(管理员)...........................................4-134.4.10 IADMS配置.........................................................4-144.4.11 管理员配置...........................................................4-144.4.12 以太网统计(管理员)........................................4-154.4.13 DSP统计(管理员)...........................................4-164.4.14 Tcid配置..............................................................4-164.4.15 编码配置(管理员)............................................4-194.4.16 xGCP配置...........................................................4-204.4.17 软件升级(管理员)............................................4-214.4.18 工厂设置(管理员)............................................4-224.4.19 重启系统..............................................................4-23第5章故障诊断与排除....................................................................5-1第1章基本信息U-SYS IAD104E综合接入设备(以下简称为IAD104E)是基于IP 的语音/传真(VoIP/FoIP)接入网关,为运营商、企业、小区住宅用户、公司提供高效、高质量的IP话音业务。

STC15F104E的STC单片机自动下载系统设计

STC15F104E的STC单片机自动下载系统设计

STC15F104E的STC单片机自动下载系统设计引言STC单片机是我国宏晶公司研制的一系列51单片机。

STC单片机以传统的8051单片机为基础,经过技术改进和资源扩展,具有片内资源丰富、运算速度快、价格低等优点。

STC 单片机下载程序不需要编程器烧写,可以通过串口下载。

美中不足的是,STC单片机下载时必须进行冷启动,即下载信号加到单片机串口以后必须对单片机断电再上电,这给用户带来了一些不便。

尤其是反复调试程序需要多次下载时,显得更加繁琐。

为了解决这一问题,有必要研制一种STC单片机专用的自动下载系统,使系统接收到上位机发往单片机的下载信号后,自动冷启动STC单片机,完成下载任务。

1 原理分析STC单片机下载时,需要使用宏晶公司提供的STCISP软件。

下载开始时,上位机软件首先向单片机发出下载命令。

自动下载系统收到上位机对单片机发出的下载命令后,实现对单片机的断电、上电冷启动操作。

单片机经冷启动后,收到命令数据流后作出回应,开始下载程序。

需要注意的是,单片机在正常工作中,串口有可能接收数据,由于自动下载系统与单片机串口连接,因而系统必须具有自动判断接收的数据流是否为下载命令的能力,保证及时冷启动目标单片机。

为了检测下载程序的命令数据流,可以采用如下方法:从PC的串口引出连接线,接至PC的另一个串口,用串口调试助手打开;用STC-ISP软件发送下载命令,可以检测到在波特率为9 600 bps的情况下,该软件持续向单片机发送十六进制的0x80;当自动下载系统连续接收到足够数量的0x80时,即可判定接收到了下载命令数据流,从而进入冷启动程序。

2 系统硬件设计2.1 主控芯片STC15F104E简介自动下载系统需要接收上位机发往目标单片机的下载命令程序流,并对目标单片机进行冷启动。

STC15F104E是宏晶公司研发的一款单片机,具有省去一些外部电路而功能较全面的优点。

该单片机的特点有:◆内部集成了可靠复位,省去了外部复位电路。

STC15F104E单片机之串口、外部中断、掉电存储、定时器

STC15F104E单片机之串口、外部中断、掉电存储、定时器

STC15F104E单片机之串口、外部中断、掉电存储、定时器/************************************************************** ******单片机与PC机采用9针串口,MAX232通讯,波特率默认为9600.单片机接收PC机发送的数据码表如下:01、开:PC发送'A';02、关:PC发送'B';03、输出状态查询:PC发送C;单片机返回输出状态‘A’表示开‘B’表示关;04、继电器状态取反:PC发送D 继电器状态取反*************************************************************** ******/#include "reg52.h"#include#define uchar unsigned char //宏定义字符型变量#define uint unsigned int //宏定义整型变量/************************************************************** ******eeprom函数声明*************************************************************** ******/extern void IapIdle(); //操作函数extern uchar IapReadByte(uint addr); //读取函数extern void IapProgramByte(uint addr,uchar dat); //写入函数extern void IapEraseSector(uint addr); //擦除函数/********************************************************************波特率设定*************************************************************** ******///#defineBAUD0XF400//******************//#defineBAUD0XFA00//******************//#defineBAUD0XFD00//******************#defineBAUD0XFE80//******************//#defineBAUD0XFF40//*******************//#defineBAUD0XFFA0//*******************uchar miao,fen,times;uchar dat; //用于存储单片机接收发送缓冲寄存器SBUF里面的内容sbit P33=P3^3; //定义继电器控制输出脚/************************************************************** ******定义特殊寄存器*************************************************************** ******/sfr AUXR = 0x8E; //辅助寄存器sbit RXB=P3^0;sbit TXB=P3^1;/************************************************************** ******定义数据类型*************************************************************** ******/uchar TBUF,RBUF;uchar TDAT,RDAT;uchar TCNT,RCNT;uchar TBIT,RBIT;uint TING,RING;uint TEND,REND;void UART_INIT(); //声明函数uchar t,r; //定义数据类型uchar but[16]; //数据存储数组/************************************************************** ******延时函数*************************************************************** ******/void delay(uchar t){uchar i,j;for(i=0;i<t;i++){for(j=13;j>0;j--);{ ;}}}/************************************************************** ******定时器0初始化函数*************************************************************** ******/void TIMER0_INIT(void)TMOD=0X00; //定时器T0设定AUXR|=0X80; //辅助寄存器TL0=BAUD; //十六</t;i++)位寄存器TH0=BAUD>>8; //十六位寄存器TR0=1; //开定时器ET0=1;PT0=1;}/************************************************************** ******定时器1初始化函数*************************************************************** ******/void TIMER1_INIT(void){TH1=(65536-10000)/256; //对TH1 TL1赋值TL1=(65536-10000)%256;ET1=1;TR1=1; //开始定时}/************************************************************** ******外部中断0初始化*************************************************************** ******/void Init_exint(void)INT0=1; //下降沿触发IT0=1;EX0=1;}/************************************************************** ******功能:串口初始化,波特率9600,方式1*************************************************************** ******/void UART_INIT(){TING=0;RING=0;TEND=1;REND=0;TCNT=0;RCNT=0;}/************************************************************** ******主函数*************************************************************** ******/void main(){TIMER0_INIT(); //定时器0初始化模拟串口用TIMER1_INIT(); //定时器1初始化Init_exint();times=IapReadByte(0); //读取函数EA=1; //开总中断UART_INIT(); //串口初始化while(1){if(REND){REND=0;r++;//but[r++&0x0f]=RBUF;dat=RBUF;}if(TEND){if(t!=r){TEND=0;//TBUF=dat;switch(dat) //接收数据判断{uchar k;k=10;case 'A': P33=1;delay(k);TBUF = dat;dat=0xee;break; // 开case 'B': P33=0;delay(k);TBUF = dat;dat=0xee;break; // 关case 'C': if(P33==1)TBUF = 'A'; // 串口读输出口状态if(P33==0)TBUF = 'B';delay(k);dat=0xee;break;case 'D': P33=!P33;delay(k);TBUF = dat;dat=0xee;break; // 输出口取反case 'E': delay(k);TBUF = times;dat=0xee;break; // 串口读取当前设定值default:break;}t++;//TBUF=but[t++&0x0f];TING=1;}}/************************************************************** ******接收数据判断函数*************************************************************** ******/}}/************************************************************** ******定时器T0中断服务函数*************************************************************** ******/void tm0()interrupt 1 using 1 {if(RING){if(--RCNT==0){RCNT=3;if(--RBIT==0){RBUF=RDAT;RING=0;REND=1;}else{RDAT>>=1;if(RXB)RDAT|=0X80;}}}else if(!RXB){RING=1;RCNT=4;RBIT=9;}if(--TCNT==0){TCNT=3;if(TING){if(TBIT==0){TXB=0;TDAT=TBUF;TBIT=9;}else{TDAT>>=1;if(--TBIT==0){TXB=1;TING=0;TEND=1;}elseTXB=CY;}}}}/********************************************************************外部中断0服务函数*************************************************************** ******/void Extern0 (void) interrupt 0 using 0{times++;if(times==20) //最大设定时间40秒times=0;IapEraseSector(0); //擦除0地址数据IapProgramByte(0,times); //写入0地址数据}/************************************************************** ******定时1中断服务函数*************************************************************** ******/void t1(void) interrupt 3 using 2{miao++;if(miao==200) //2秒{miao=0;fen++;if(fen==times) // times秒{fen=0;P33=!P33; //继电器状态取反}}}/************************************************************** ******结束*************************************************************** ******/。

stc15l104引脚输出模式设置

stc15l104引脚输出模式设置

stc15l104引脚输出模式设置【最新版】目录1.STC15L104 简介2.引脚输出模式的概念3.引脚输出模式的设置方法4.设置引脚输出模式的应用实例5.总结正文【1.STC15L104 简介】STC15L104 是一款高性能、低功耗的单片机,广泛应用于各种嵌入式系统中。

它内部集成了丰富的外设,如定时器、中断控制器、串行通信接口等,为用户提供了极大的便利。

【2.引脚输出模式的概念】引脚输出模式是指单片机中某个引脚用于输出信号时的工作状态。

在STC15L104 中,引脚输出模式可以通过编程设置,以满足不同应用场景的需求。

【3.引脚输出模式的设置方法】在 STC15L104 中,引脚输出模式的设置主要分为以下几步:1) 配置 GPIO 口:首先,需要将所需输出引脚所在的 GPIO 口配置为输出模式。

可以通过设置 GPIO 口的 BSR(位设置寄存器)和 GPIO 口的方向寄存器(如 DDR)来完成。

2) 设置引脚输出电平:在配置好 GPIO 口后,需要设置引脚的输出电平。

可以通过设置 GPIO 口的数据寄存器(如 PORT)来完成。

将所需输出电平的值写入相应的数据寄存器,即可设置引脚输出电平。

3) 启动定时器:若需要在特定时间间隔内改变引脚输出电平,可以通过启动定时器来实现。

首先,配置定时器工作模式,然后启动定时器。

在定时器中断服务程序中,可以根据需要改变引脚输出电平。

【4.设置引脚输出模式的应用实例】假设我们需要使用 STC15L104 的 PA0 引脚控制一个 LED 灯的开关,可以按照以下步骤设置引脚输出模式:1) 配置 GPIO 口:将 PA0 引脚所在的 GPIO 端口配置为输出模式。

设置 GPIOA 的 BSR 寄存器,将 PA0 引脚对应的位设置为 1,表示 PA0 引脚为输出模式。

设置 GPIOA 的 DDR 寄存器,将 PA0 引脚对应的位设置为 0,表示 PA0 引脚输出低电平。

宏晶科技STC15F系列单片机

宏晶科技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 13674.2 1966 12804.4 1846 12024.6 1740 11334.8 1646 10725 1560 10165.2 1487 9685.4 1416 9225.6 1354 8825.8 1297 8446 1245 811 6.2 1196 779 6.4 1150 749 6.6 1110 7236.8 1070 6977 1033 673 7.2 1000 651 7.4 968 630 7.6 938 6117.8 910 5928 884 576 8.2 860 560 8.4 836 544 8.6 814 5308.8 793 5169 772 503 9.2 754 491 9.4 736 479 9.6 718 4679.8 702 45710 686 44710.2 671 43710.4 656 42710.6 642 41810.8 629 41011 616 40111.2 604 39311.4 592 38511.6 581 37811.8 570 37112 560 36512.2 550 35812.4 540 352附录2:C语言程序/*------------------------------------------------------------------*//* --- STC MCU International Limited -------------------------------*//* --- STC 1T Series MCU RC Demo -----------------------------------*//* --- Mobile: (86) -------------------------------------*//* --- Fax: 86- ----------------------------------------*//* --- Tel: 86- ----------------------------------------*//* --- Web: -----------------------------------------*//* If you want to use the program or the program referenced in the */ /* article, please specify in which data and procedures from STC */ /*------------------------------------------------------------------*//*功能描述: 使用STC15F系列C版本做的RC测量电压的例子.*/#include "reg51.h"#define MAIN_Fosc L //定义主时钟#define uchar unsigned char#define uint unsigned intsfr AUXR = 0x8e; //Auxiliary registersfr P3M1 = 0xB1; //P3M1.N,P3M0.N =00--->Standard, 01--->push-pullsfr P3M0 = 0xB2; // =10--->pure input, 11--->open drain sbit P_TXD1 = P3^1; //定义模拟串口发送脚,打印信息用sbit P_RC = P3^2; //RC portuchar SampleCnt; //发送结果的采样间隔计数uchar LineCnt; //每行显示结果计数bit B_Over; //超时标志bit B_ADC_OK; //检测完成标志uint adc; //RC做的ADC值void RC_start(void);void Tx1Send(uchar dat);void InitTimer(void);void delay_ms(unsigned char ms);///////////////////////////////////////////////////////////void main(void){InitTimer(); //初始化TimerP3M1 |= 1 << 2; //P3.2 config as Open-DrainP3M0 |= 1 << 2;P_RC = 0; //Clear RC port to 0// TMOD |= 0x00; //T0 as 16 bits timer, auto reloadwhile (1){delay_ms(5); //放电时间B_ADC_OK = 0; //清除ADC结束标志B_Over = 0; //清除超量程标志RC_start(); //RC charge-dechargewhile(!B_ADC_OK && !B_Over); //等待ADC结束或超时if(B_ADC_OK){if(++SampleCnt >= 100) //1秒钟发一个结果给串口{SampleCnt = 0;Tx1Send(adc / 10000 + '0'); //send to PC from the UARTTx1Send(adc % 10000 / 1000 + '0');Tx1Send(adc % 1000 / 100 + '0');Tx1Send(adc % 100 / 10 + '0');Tx1Send(adc % 10 + '0');Tx1Send(' ');Tx1Send(' ');if(++LineCnt >= 10) //10个结果后换行{LineCnt = 0;Tx1Send(0x0d); //send CRTx1Send(0x0a);}}}}}/////////////////////////////////////////////////////////////============================================================ // 函数: void delay_ms(unsigned char ms)// 描述: 延时函数。

STC15F104E最小板产品使用手册

STC15F104E最小板产品使用手册

STC15F104E单片机开发学习板产品使用手册【简要说明】适用场合:单片机学习、电子竞赛、产品开发、毕业设计。

注意啦:本产品提供的所有程序都附带原理图以及说明!【图片标注】【原理图】【PCB尺寸图】【开发板支持同系列单片机的型号】【产品展示】【单片机编程软件KEIL】【单片机编程软件界面如下】【STC15F104E系列单片机单片机开发应用参考程序】001、STC15F104E系列单片机之闪烁灯:/********************************************************************汇诚科技实现功能:闪烁灯使用芯片:STC15F104E系列单片机晶振:11.0592MHZ波特率:9600编译环境:Keil淘宝店:*********************************************************************//********************************************************************/#include<reg52.h> //库文件#include <intrins.H>#define uchar unsigned char//宏定义无符号字符型#define uint unsigned int //宏定义无符号整型/******************************************************************** I/O定义*********************************************************************/ sbit LED=P3^5; //定义单片机P3口的第5位(即P0.0)/********************************************************************延时100MS函数*********************************************************************/void Delay100ms(){uchar i, j, k;_nop_();i = 5;j = 144;k = 71;do{do{while (--k);} while (--j);} while (--i);}/********************************************************************延时1S函数*********************************************************************/ void Delay1s(uint s){uchar m,n;for(m=s;m>0;m--)for(n=10;n>0;n--)Delay100ms();}/********************************************************************主函数*********************************************************************/void main(){while(1) //无限循环{LED=0; //点亮P3.5口灯Delay1s(1); //延时LED=1; //熄灭P3.5口灯Delay1s(1); //延时}}/********************************************************************结束*********************************************************************/ 002、STC15F104E系列单片机之流水灯:/********************************************************************汇诚科技实现功能:流水灯使用芯片:STC15F104E系列单片机晶振:11.0592MHZ波特率:9600编译环境:Keil淘宝店:*********************************************************************/ #include<reg52.h> //库文件#define uchar unsigned char//宏定义无符号字符型#define uint unsigned int //宏定义无符号整型/********************************************************************初始定义*********************************************************************/ uchar temp; //定义字符型变量uchar a,b,i;/********************************************************************延时函数*********************************************************************/ void delay()//延时程序uchar m,n,s;for(m=10;m>0;m--)for(n=200;n>0;n--)for(s=248;s>0;s--);}/********************************************************************主函数*********************************************************************/ void main(){temp=0xfe; //11111110定义每次一个灯亮while(1){P3=temp;//直接对1/0口赋值,使批输出低电平。

STC功能说明书

STC功能说明书

STC功能说明书STC-ISP Ver6.38下载软件功能说明书目录●发布项目程序使用说明 (3)●自定义加密下载使用说明 (7)●发布项目程序+ 自定义加密下载结合使用说明 (11)●用户自定义下载说明 (17)●RS485控制使用说明 (18)●STC仿真器使用指南 (20)●用户自制脱机下载板/U7 全自动烧录工具注意事项 (24)发布项目程序使用说明发布项目程序功能主要是将用户的程序代码与相关的选项设置打包成为一个可以直接对目标芯片进行下载编程的超级简单的用户自己界面的可执行文件。

关于界面,用户可以自己进行定制(用户可以自行修改发布项目程序的标题、按钮名称以及帮助信息),同时用户还可以指定目标电脑的硬盘号和目标芯片的ID号,指定目标电脑的硬盘号后,便可以控制发布应用程序只能在指定的电脑上运行(防止烧录人员将程序轻易从电脑盗走,如通过网络发走,如通过U盘烤走,防不胜防,当然盗走你的电脑那就没办法那,所以STC的脱机下载工具比电脑烧录安全,能限制可烧录芯片数量,让前台文员小姐烧,让老板娘烧都可以),拷贝到其它电脑,应用程序不能运行。

同样的,当指定了目标芯片的ID号后,那么用户代码只能下载到具有相应ID号的目标芯片中(对于一台设备要卖几千万的产品特别有用---坦克,可以发给客户自己升级,不需冒着生命危险跑到战火纷飞的伊拉克升级软件啦),对于ID号不一致的其它芯片,不能进行下载编程。

发布项目程序详细的操作步骤如下:1、首先选择目标芯片的型号2、打开程序代码文件3、设置好相应的硬件选项4、试烧一下芯片,并记下目标芯片的ID号,如下图所示,该芯片的ID号即为“000D001100641D”(如不需要对目标芯片的ID号进行校验,可跳过此步)5、设置自动增量(如不需要自动增量,可跳过此步)6、设置RS485控制信息(如不需要RS485控制,可跳过此步)7、设置用户自定义下载命令(如不需要此功能,可跳过此步)8、点击界面上的“读取本机硬盘号”按钮,并记下目标电脑的硬盘号(如不需要对目标电脑的硬盘号进行校验,可跳过此步)9、点击“发布项目程序”按钮,进入发布应用程序的设置界面。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
7
【单片机下载软件】 【单片机下载软件界面】
8
【STC15F104E 系列单片机单片机开发应用参考程序】
001、STC15F104E 系列单片机之闪烁灯:
/******************************************************************** 汇诚科技
*********************************************************************/
sbit LED=P3^5;
//定义单片机 P3 口的第 5 位 (即 P0.0)
/******************************************************************** 延时 100MS 函数
#include<reg52.h>
//库文件
#define uchar unsigned char//宏定义无符号字符型
#define uint unsigned int //宏定义无符号整型
/********************************************************************
STC15F104E 单片机开发学习板产品使用手册
【简要说明】
一、尺寸:长 25mmX 宽 18mmX 高 10mm 二、主要芯片:主要芯片:STC15F104E 单片机、MAX232 三、工作电压:输入电压直流 5 至 15V 四、电脑串口下载,或者 STC 单片机专用下载线 五、特点: 1、具有电源指示。 2、所有 I/O 口都以引出。 3、可以实现与电脑串口通信。 4、使用内部晶振。 5、具有上电复位功能。 6、支持 STC15F1XX 系列单片机 7、支持 STC 串口下载; 8、具有滤波电容; 9、具有 7805 稳压芯片; 10、可排针引电;
#include<reg52.h> #include <intrins.H>
//库文件
9
#define uchar unsigned char//宏定义无符号字符型 #define uint unsigned int //宏定义无符号整型
/******************************************************************** I/O 定义
*********************************************************************/
002、STC15F104E 系列单片机之流水灯:
/******************************************************************** 汇诚科技
1
六、提供相关软件、资料、原理图 适用场合:单片机学习、电子竞赛、产品开发、毕业设计。。。 注意啦:本产品提供的所有程序都附带原理图以及说明!
【图片标注】
【原理图】







2
【PCB 尺寸图】
【开发板支持同系列单片机的型号】 【产品展示】
3Hale Waihona Puke 45【单片机下载接线图】
6
【单片机编程软件 KEIL】 【单片机编程软件界面如下】
*********************************************************************/
void Delay100ms() {
uchar i, j, k; _nop_(); i = 5; j = 144; k = 71; do {
do {
while (--k); } while (--j); } while (--i); } /********************************************************************
10
{
while(1) //无限循环
{
LED=0;
//点亮 P3.5 口灯
Delay1s(1); //延时
LED=1;
//熄灭 P3.5 口灯
Delay1s(1); //延时
}
}
/******************************************************************** 结束
实现功能:闪烁灯 使用芯片:STC15F104E 系列单片机 晶振:11.0592MHZ 波特率:9600 编译环境:Keil 作者:zhangxinchun .淘宝店: 汇诚科技 郑兴电子直销部 .6.. 【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!
*********************************************************************/ /********************************************************************/
/******************************************************************** 主函数
*********************************************************************/ void main()
实现功能:流水灯 使用芯片:STC15F104E 系列单片机 晶振:11.0592MHZ 波特率:9600 编译环境:Keil 作者:zhangxinchun .淘宝店: 汇诚科技 郑兴电子直销部 .6.. 【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!
*********************************************************************/
延时 1S 函数 *********************************************************************/ void Delay1s(uint s) { uchar m,n; for(m=s;m>0;m--) for(n=10;n>0;n--) Delay100ms(); }
相关文档
最新文档