导航:首页 > 器材知识 > 单片机怎么控制外围其他设备

单片机怎么控制外围其他设备

发布时间:2022-07-08 22:38:31

⑴ 单片机如何实现控制电路

建议你仔细看看它的一些IO端口结构图,然后配合看这些端口的控制和数据寄存器,以及端口相关的汇编指令.注意哦,一定要看汇编的指令才有用,C的看不出来.
实际上,最终端口的输入和输出,都是由端口对应的数据寄存器来控制的.
输入的时候,端口上所呈现的外部电路的状态,就呈现在输入寄存器里,用单片机的程序读出来,就是表示该状态的数据.比如说读到了0xF0,就表示该端口的高4条IO处于高电平,低4条IO处于低电平.
同样的,输出的时候,就是单片机的程序将数据写入到端口的输出寄存器里,这样就可以在对应的端口上呈现出对应的状态,用于控制外部的电路.同样的,比如说你输出一个0x0F,就表示将该端口的高4条IO置为低电平,而低4条IO置为高电平.
当然,单片机的结构有很多种,有些单片机不分输入和输出寄存器,有些单片机也没有控制寄存器,但也有很多单片机具有这些寄存器.
控制寄存器的作用,是配置端口的各种功能和模式.
比如说要将某端口的某几条IO引脚设为带弱上拉的输入,那么就应该打开弱上拉寄存器的对应几bit,并且打开输入输出控制寄存器的对应几bit,部分片子还需要关闭输入状态,这样就将该端口的指定几条IO引脚配置为了输入状态.而输出的配置也类似,无非就是几个寄存器的值不同.
配置好了之后,这些端口和这些IO就可以完成实际的输入和输出控制了.
如果是标准的MCS51单片机,例如AT89C51/52之类的,则端口要简单得许多,没有这么多的控制寄存器,也部分输入和输出寄存器.建议你找它们的用户手册仔细看看端口结构那一部分.
一般来说,这些资料要在"用户手册"中才有,普通的"数据手册"里面不一定有.
希望以上回答能让你大致了解单片机是如何实现具体控制的了.

⑵ 如何我用单片机控制外围电路的通断除了继电器还有什么小巧的器件吗

光电耦合器。双向或单向可控硅。固态继电器。

⑶ 单片机如何驱动外围设备

先去学学模电数电吧,有这方面一定的基础了再学单片机。

⑷ 怎样控制单片机访问内外部程序

对于51系列单片机,将ea引脚接地,则运行片外程序存储器;ea接vcc,则运行片内程序存储器。当然,即使ea接vcc,如果程序运行时指令地址超过了片内程序存储器地址范围,也还会自动转到片外程序存储器空间的。另外要说明的是,用指令是无法控制单片机访问的是片内还是片外程序存储器。单片机是通过psen引脚控制访问片外程序存储器的。

⑸ 如果利用单片机控制外围设备

控制外部设备,一般要加驱动元件,例如:光耦,可控硅,继电器,三极管等等
单片机就是能实现弱控强,但是电路要好好设计,特别注意弱电和强电的隔离。不过一般控制这种强电的设备选择PLC控制会更好一些。

⑹ 如何控制单片机外围电路电源的开与关

mos管的选型与你的外围电路的负载功率有关,如果是小功率的,可以考虑用
PMOS管SI2301,工作电流可达3安。与NMOS相比,单片机情况下PMOS管可以有效保证负载条件下的饱和。

⑺ 怎么写单片机控制外围芯片程序

兄弟,参加电子设计大赛吧??b题?
这个最重要的是看芯片资料,芯片资料内对通信方式,协议,时序,都有的,可以利用单片机自带的通信接口,即端口第二功能。也可以自己制定时序。
这是24c02的程序。用的ATmega16;
最后祝你有个好成绩
#include <iom16v.h>
#include <macros.h>
#include "delay.h"
#include "lcd.h"

#define uchar unsigned char
#define uint unsigned int

/**************************************************************************
* 函数名称: ERROR();
* 功 能: 蜂鸣器报错
* 参 数:无
* 描 述:PA0口置低可以鸣响蜂鸣器
**************************************************************************/
void ERROR()
{
uint i;
DDRA |= (1 << PA0);
PORTA &= ~(1 << PA0);
for( i = 0 ; i < 10000 ; i ++);
PORTA |= (1 << PA0);
}
//********************************************************************8
//*函数 向24c02发送一个字节
//*名称 wtwib();
//*参数 地址,数据
//*********************************************************************/
void wtwib(uchar ad,uchar da)
{ TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN);//发送start
while (!(TWCR & (1<<TWINT)));
if ((TWSR & 0xF8) != 0x08)
ERROR();
TWDR =0xA0; //adress of e2prom
TWCR = (1<<TWINT) | (1<<TWEN);
while (!(TWCR & (1<<TWINT)));
if ((TWSR & 0xF8) != 0x18)
ERROR();
TWDR =ad; //adress of the data
TWCR = (1<<TWINT) | (1<<TWEN);
while (!(TWCR & (1<<TWINT)));
if ((TWSR & 0xF8) != 0x28)
ERROR();
TWDR =da; //send the data to the bus
TWCR = (1<<TWINT) | (1<<TWEN);
while (!(TWCR & (1<<TWINT)));
if ((TWSR & 0xF8) != 0x28)
ERROR();
TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWSTO);//send the stop signal
}
//=================================================================
//=======read a byte from 24c02
//========rtwib()
//==========need address
//================================================================
uchar rtwib(uchar ad)
{ uchar da;
TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN);//send the signal of start
while (!(TWCR & (1<<TWINT)));
if ((TWSR & 0xF8) != 0x08)
ERROR();
TWDR =0xA1; //adress of e2prom
TWCR = (1<<TWINT) | (1<<TWEN);
while (!(TWCR & (1<<TWINT)));
if ((TWSR & 0xF8) != 0x18)
ERROR();
TWDR =ad; //adress of the data
TWCR = (1<<TWINT) | (1<<TWEN);
while (!(TWCR & (1<<TWINT)));
if ((TWSR & 0xF8) != 0x28)
ERROR();
TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN);//send the signal of start
while (!(TWCR & (1<<TWINT)));
if ((TWSR & 0xF8) != 0x08)
ERROR();
TWDR =0xA1; //adress of e2prom
TWCR = (1<<TWINT) | (1<<TWEN);
while (!(TWCR & (1<<TWINT)));
if ((TWSR & 0xF8) != 0x18)
ERROR();
TWCR = (1<<TWINT) | (1<<TWEN);
while (!(TWCR & (1<<TWINT)));
if ((TWSR & 0xF8) != 0x58)
ERROR();
da=TWDR;
TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWSTO);//send the stop signal
return da;
}
//========================================================
//====== send a page to the 24c02
//====== wtwis();
//=======need address and data and number;
//=========================================================
void wtwip(uchar ad,uchar n,uchar *da)
{ uchar i;
TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN);//发送start
while (!(TWCR & (1<<TWINT)));
if ((TWSR & 0xF8) != 0x08)
ERROR();
TWDR =0xA0; //adress of e2prom
TWCR = (1<<TWINT) | (1<<TWEN);
while (!(TWCR & (1<<TWINT)));
if ((TWSR & 0xF8) != 0x18)
ERROR();
TWDR =ad; //adress of the data
TWCR = (1<<TWINT) | (1<<TWEN);
while (!(TWCR & (1<<TWINT)));
if ((TWSR & 0xF8) != 0x28)
ERROR();
for(i=0;i<n;i++)
{ TWDR =da[i]; //send the data to the bus
TWCR = (1<<TWINT) | (1<<TWEN);
while (!(TWCR & (1<<TWINT)));
if ((TWSR & 0xF8) != 0x28)
ERROR();
}
TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWSTO);//send the stop signal

}
//====================================================
//========read a string from the 24C02
//========rtwis();
//========need address,number
//=====================================================
void rtwis(uchar ad,uchar *p,uchar n)
{ uchar i;
TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN);//send the signal of start
while (!(TWCR & (1<<TWINT)));
if ((TWSR & 0xF8) != 0x08)
ERROR();
TWDR =0xA1; //adress of e2prom
TWCR = (1<<TWINT) | (1<<TWEN);
while (!(TWCR & (1<<TWINT)));
if ((TWSR & 0xF8) != 0x18)
ERROR();
TWDR =ad; //adress of the data
TWCR = (1<<TWINT) | (1<<TWEN);
while (!(TWCR & (1<<TWINT)));
if ((TWSR & 0xF8) != 0x28)
ERROR();
TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN);//send the signal of start
while (!(TWCR & (1<<TWINT)));
if ((TWSR & 0xF8) != 0x08)
ERROR();
TWDR =0xA1; //adress of e2prom
TWCR = (1<<TWINT) | (1<<TWEN);
while (!(TWCR & (1<<TWINT)));
if ((TWSR & 0xF8) != 0x18)
ERROR();
for(i=0;i<n;i++)
{ TWCR = (1<<TWINT) | (1<<TWEN)|(1<<TWEA);
while (!(TWCR & (1<<TWINT)));
if ((TWSR & 0xF8) != 0x50)
ERROR();
p[i]=TWDR;
}
TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWSTO);//send the stop signal
}
void main()
{ uchar a[16]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15},i=0;
init_lcd();
TWBR = 0x1F;
TWSR = 0x02;
for(i=0;i<16;i++)
wtwib( 0x00+i,i);

for(i=0;i<16;i++)
rtwib( 0x00+i);
for(i=0;i<16;i++)
a[i]=0;
for(i=0;i<16;i++)
send_d(a[i]+48);
}

⑻ 单片机是如何控制外部电路的

单片机当然可以控制外部电路,单片机最小系统只是基本应用,要发挥单片机的潜能,需要扩展外部电路。

1、利用光电隔离,可以控制外围电路,并且也将外部电路的干扰屏蔽在外。

等等,还有诸如利用595等串转并扩展,还可以利用CPLD,FPGA等扩展,总之只要深入理解单片机,那么单片机就可以发挥很大的潜力,帮助我们解决实际问题。

⑼ 8266单片机怎么连接外部设备,刚学只会控制led灯开关,想控制点别的又不会连接外部设备

ESP8266的I/O引脚可以输出开关量控制晶体管、继电器等外部开关,也可以通过串行、I2C、SPI等总线输出控制指令。

阅读全文

与单片机怎么控制外围其他设备相关的资料

热点内容
steam令牌换设备了怎么办 浏览:246
新生测听力仪器怎么看结果 浏览:224
化学试验排水集气法的实验装置 浏览:156
家用水泵轴承位置漏水怎么回事 浏览:131
羊水镜设备多少钱一台 浏览:125
机械制图里型钢如何表示 浏览:19
测定空气中氧气含量实验装置如图所示 浏览:718
超声波换能器等级怎么分 浏览:800
3万轴承是什么意思 浏览:110
鑫旺五金制品厂 浏览:861
苏州四通阀制冷配件一般加多少 浏览:153
江北全套健身器材哪里有 浏览:106
水表阀门不开怎么办 浏览:109
花冠仪表盘怎么显示时速 浏览:106
洗砂机多少钱一台18沃力机械 浏览:489
超声波碎石用什么材料 浏览:607
组装实验室制取二氧化碳的简易装置的方法 浏览:165
怎么知道天然气充不了阀门关闭 浏览:902
公司卖旧设备挂什么科目 浏览:544
尚叶五金机电 浏览:59