目录
STC15W104芯片只有P3口,为什么还要设置P0 P1 P2等IO的模式?
一,项目背景
主要功能:检测门窗的打开和关闭
产品分类:
独立门磁探测器,有线门磁探测器,无线门磁探测器
其中无线门磁根据其实现的技术不同可以再次细分为:Zigbee lora ASK FSK2.4G 蓝牙等这些需要有联合警报系统
NB-iot 2G 4G WIFI,下面这些需要信号卡将信号发送到基站,再由服务器传递给用户
无线是一种通讯方式
二,51环境搭建
确定单片机型号,我所使用的是STC系列的芯片:STC15W104,在搭建的过程中发现没有 STC系列的型号
打开烧录软件STC-ISP
最后显示,重新启动Keil即可
依次选取,工程搭建完成
三,程序烧录
将程序生成文件.hex烧录到单片机中。首先,所以先找到程序生成文件在哪
接着安装串口驱动,一直很好奇串口驱动到底起到什么样的作用,驱动CH340芯片
但是 我碰到了烧录不成功的现象,真的是好神奇,需要 先放电,原理为什么我也不清楚,竟然需要进行放电操作
四,产品开发流程
如果需要开发一款从来没有接触过的产品应该怎样去做,和我的想法不谋而合,我也正在思考这个问题,曾经想的是参考市面上的产品,专研他们的技术,关键是大家都是有知识产权的,除非他是sx,看看老师是怎样想的,果然成功还得靠友商。还有一个重要的点,学会使用不同的芯片去开发同一个产品,这个怎么做到,研发产品的主要是靠硬件电路
1.竞品分析
首先将市面上的竞品买回来做调研。分析不同价位产品的功能,接着拆解电路(电路是基础啊,我真的哭死,这不是看家本领吗),根据电路去分析不同的功能是怎样实现的,
2.设计
需要设计产品的外壳、供电方式、硬件电路、芯片型号
当然我们主要要做的就是把产品做出来进行测试
五,门磁探测器原理
原理图分为5个部分,电源,开关电路检测,电池低压,单片机MCU,无线发射,电路理解等到后续,只是大概了解电路的功能,至于这些功能是如何实现的,
- 电源部分设计:单片机供电电压2.5~5.5,电池电压12v
- 开关电路检测:
- 电池低压:电池电量不足提醒用户及时更换
- 单片机MCU:选用最小系统板STC15W104
- 无线发射电路:开关门信号传输。
六,I/O
I/O口的输入和输出
I/O口相关寄存器,原理图使用最多的是P3端口,我想的问题是怎样通过sfr去操作相关寄存器的,编译器转变为汇编语言,学过操作系统和计组大概就知道内部的实现流程了,我就先了解到这里
I/O输出简单代码
sfr P3 = 0x80;
sbit LED1 = P3^1;
SBIT LED2 = P3^0;
LED1 = 1;
LED2 = 1;
I/O口的输入输出配置
P3M1和P3M0都是不可位寻址
对于可位寻址的寄存器可以使用sbit操作相应的位,那么不可位寻址呢,如PXM1和P3M0,如何操作其相应的位,逻辑运算符派上用场
四种输入输出模式的区别
输出:准双向口,推挽输出,主要区别是推挽输出电路可通过的电流大,开漏模式与前两个的区别是外部自接电阻
输入:开漏模式,外部接电阻
STC15W104芯片只有P3口,为什么还要设置P0 P1 P2等IO的模式?
对啊,用不到为什么还使用。 如果需要考虑到低功耗的问题,还是需要把一些不使用的I/O配置,他俩之间有什么关系吗,为什么会影响到它
//每个每个主程序的入口必须有这么 一段
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
P6M0 = 0x00;
P6M1 = 0x00;
P7M0 = 0x00;
P7M1 = 0x00;
语法补充:sfr sbit的使用
sfr用于定义单片机特殊功能寄存器,将寄存器地址赋给一个变量,通过这个变量便可以操作寄存器
sbit是寄存器的位操作,将寄存器的某个位赋值个一个变量,
sfr p1 = 0x80
sbit LED = p1^1(定义p1的第一位)