导航:首页 > 操作系统 > 基于52单片机

基于52单片机

发布时间:2024-07-08 17:23:56

❶ 52单片机rfid原理

射频识别识别系统原理。52单片机是对兼容英特尔8052指令系统的单片机的统称,其rfid工作是电子标签可以接收到读写器发出的射频信号,凭借感应电流产生的能量来进行发送,其是属于使用射频识别识别系统原理进行的。52单片机广泛应用于家用电器、汽车、工业测控、通信设备中。

❷ 52单片机能做什么

可以根据你自己编辑的程序运行!玩的话可以做智能小车,用手机蓝牙或电脑蓝牙控制。有WIFI接收模块也可以用WIFI控制。机器人也行。也能做家庭智能控制方面的东西 比如定时开关,或在灯的开关上加感应器和单片机配合,观赏方面的比如光立方!等等 单片机能做的事太多了,列举不完。再比如家电,什么智能洗衣机啊!微波炉啊,电磁炉啊,空调啊。都要用到单片机,这些工作52绝对能胜任

❸ 52单片机能做什么

可以根据你自己编辑的程序运行!玩的话可以做智能小车,用手机蓝牙或电脑蓝牙控制。有WIFI接收模块也可以用WIFI控制。机器人也行。也能做家庭智能控制方面的东西
比如定时开关,或在灯的开关上加感应器和单片机配合,观赏方面的比如光立方!等等
单片机能做的事太多了,列举不完。再比如家电,什么智能洗衣机啊!微波炉啊,电磁炉啊,空调啊。都要用到单片机,这些工作52绝对能胜任

❹ 基于MCS 52系列的单片机有哪些其硬件设计相对于51系列有哪些不同啊

52是在51基础上衍生出来的增强产品。主要差别在
1、内部ROM增加了4K,总计8K,相应的如果外扩程序存储器,则从2000H开始从外部取指。
2、增加了128字节的内部RAM,地址从80H到FFH。使用时这128字节地址因为与特殊功能寄存器地址重叠,所以只能采用简介寻址的方式读写。
3、增加了定时器2,而且该定时器也可用作波特率发生器,具备16位自动重装载和捕获能力。
4、相应的增加了定时器2中断。
5、增加了有关定时器2的特殊功能寄存器T2MOD、T2CON、RCAP2L、RCAP2H、TH2、TL2等,还有诸如T2、ET2等控制位
其它方面均与51一致。
其实现在51系列的增强型CPU很多,而且各生产厂家各有增强特色,不过一般而言均由其内部ROM大小而命名:
51:4K
52:8K
53:12K
54:16K
58:32K
516:64K
后4种其实都具备52的功能,换句话说其实52事实上已经变成了MCS51的标准。当然诸如IAP、ISP、A/D等增强部分各型号产品不一样,需要对照具体型号的DATASHEET来确认。
至于52的基本资料,北京航空航天大学出版社大概在80年代末出版过一本《MCS51、96系列单片机原理及应用》,32开的小书,你可查一下,我自己的书皮都掉了,不知道是谁写的。由于相对而言定时器2增加了不少内容,确实需要系统的看一下。

❺ 基于52单片机ISD1760语音芯片的原理图和程序代码。

#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
//******************定义端口******************//
sbit SS = P1^0;
sbit SCK = P1^1;
sbit MOSI = P1^2;
sbit MISO = P1^3;
sbit PR = P1^4;//PLAY = 0;REC = 1;
sbit STOP = P1^5;
sbit AN = P1^6;
sbit LED = P1^7;
//******************定义ISD1700状态寄存器及各标志位******************//
uchar bdata SR0_L;//SR0寄存器低位、高位
uchar bdata SR0_H;
uchar bdata SR1;//SR1寄存器
uchar APC_L = 0, APC_H = 0;//APC寄存器
uchar PLAYADDL = 0, PLAYADDH = 0;//放音指针低位、高位
uchar RECADDL = 0, RECADDH = 0;//录音指针低位、高位

sbit CMD_ERR = SR0_L^0;//SPI指令无效标志位
sbit FULL = SR0_L^1;//芯片存储空间满标志位
sbit PU = SR0_L^2;//上电标志位
sbit EOM = SR0_L^3;//EOM标志位
sbit INT = SR0_L^4;//操作完成标志位
sbit RDY = SR1^0;//芯片空闲标志位
sbit ERASE = SR1^1;//擦除标志位
sbit PLAY = SR1^2;//放音标志位
sbit REC = SR1^3;//录音标志位
//******************定义标志位******************//
uchar bdata fang;
sbit PR_fang = fang^1;//录音、放音标志位,放音=0,录音=1
sbit Erase_fang = fang^4;//擦出标志位
sbit STOP_fang = fang^7;//停止放音标志位
//******************延时μs******************//
void delay(uint time)//延时n微秒
{
while(time!=0)
{
time--;
}
}
//******************延时ms******************//
void delayms(uint time)//延时n毫秒
{
for(time; time>0; time--)
{
TH0 = 0xfc;
TL0 = 0x18;
TR0 = 1;//计数器0启动
while(TF0!=1);//计数溢出处理
TF0 = 0;
TR0 = 0;
}
}
//******************CPU初始化******************//
void cpu_init (void)
{
P1 = 0xFF;
P2 = 0xFF;
P3 = 0xFF;
TMOD = 0x01;//定时器初始化,工作于方式1
EA = 0;//关中断
fang = 0;//标志位归0
LED = 1;//关指示灯
}
//******************发送、读回数据******************//
uchar isd_senddata (uchar dat)
{
uchar i, BUF_ISD = dat;
SS = 0;
SCK = 1;
delay(4);
for(i=0; i<8; i++)
{
SCK = 0;
if((BUF_ISD&0x01)==1)
{
MOSI = 1;
}
else
{
MOSI = 0;
}
BUF_ISD = BUF_ISD >> 1;
if(MISO)
{
BUF_ISD = BUF_ISD|0x80;
}
SCK = 1;
delay(6);
}
MOSI = 0;
return(BUF_ISD);
}
//******************上电******************//
void isd_pu (void)
{
isd_senddata (0x01);
isd_senddata (0x00);
SS = 1;
delayms(50);
}
//******************停止当前操作******************//
void isd_stop (void)
{
isd_senddata (0x02);
isd_senddata (0x00);
SS = 1;
delayms(50);
}
//******************复位******************//
void isd_reset (void)
{
isd_senddata (0x03);
isd_senddata (0x00);
SS = 1;
}
//******************清除中断******************//
void isd_clr_int (void)
{
isd_senddata (0x04);
isd_senddata (0x00);
SS = 1;
}
//******************读状态寄存器内容******************//
void isd_rd_status (void)
{
isd_senddata (0x05);
isd_senddata (0x00);
isd_senddata (0x00);
SS = 1;
delay(2);
SR0_L = isd_senddata (0x05);
SR0_H = isd_senddata (0x00);
SR1 = isd_senddata (0x00);
SS = 1;
}
//******************读放音指针******************//
void isd_rd_playptr (void)
{
isd_senddata (0x06);
isd_senddata (0x00);
isd_senddata (0x00);
isd_senddata (0x00);
SS = 1;
delay(2);
SR0_L = isd_senddata (0x06);
SR0_H = isd_senddata (0x00);
PLAYADDL = isd_senddata (0x00);
PLAYADDH = isd_senddata (0x00);
SS = 1;
}
//******************下电******************//
void isd_pd (void)
{
isd_senddata (0x07);
isd_senddata (0x00);
SS = 1;
delayms(50);
}
//******************读录音指针******************//
void isd_rd_recptr (void)
{
isd_senddata (0x08);
isd_senddata (0x00);
isd_senddata (0x00);
isd_senddata (0x00);
SS = 1;
delay(2);
SR0_L = isd_senddata (0x08);
SR0_H = isd_senddata (0x00);
RECADDL = isd_senddata (0x00);
RECADDH = isd_senddata (0x00);
SS = 1;
}
//******************读芯片ID******************//
uchar isd_devid (uchar deviceNO)
{
isd_senddata (0x09);
isd_senddata (0x00);
isd_senddata (0x00);
SS = 1;
delay(2);
isd_senddata (0x09);
isd_senddata (0x00);
deviceNO = isd_senddata (0x00);
SS = 1;
return(deviceNO);
}
//******************放音******************//
void isd_play (void)
{
isd_senddata (0x40);
isd_senddata (0x00);
SS = 1;
}
//******************录音******************//
void isd_rec (void)
{
isd_senddata (0x41);
isd_senddata (0x00);
SS = 1;
}
//******************擦除******************//
void isd_erase (void)
{
isd_senddata (0x42);
isd_senddata (0x00);
SS = 1;
}
//******************全部擦出******************//
void isd_g_erase (void)
{
isd_senddata (0x43);
isd_senddata (0x00);
SS = 1;
}
//******************读APC寄存器内容******************//
void isd_rd_apc (void)
{
isd_senddata (0x44);
isd_senddata (0x00);
isd_senddata (0x00);
isd_senddata (0x00);
SS = 1;
delay(2);
SR0_L = isd_senddata (0x44);
SR0_H = isd_senddata (0x00);
APC_L = isd_senddata (0x00);
APC_H = isd_senddata (0x00);
SS = 1;
}
//******************写APC寄存器******************//
void isd_wr_apc2 (uchar apcdatl,apcdath)
{
isd_senddata (0x65);
isd_senddata (apcdatl);
isd_senddata (apcdath);
SS = 1;
}
//******************将APC寄存器内容写入NVCFG******************//
void isd_wr_nvcfg (uchar apcdatl,apcdath)
{
isd_senddata (0x46);
isd_senddata (apcdatl);
isd_senddata (apcdath);
SS = 1;
}
//******************将NVCFG内容写入APC******************//
void isd_ld_nvcfg (void)
{
isd_senddata (0x47);
isd_senddata (0x00);
SS = 1;
}
//******************快进******************//
void isd_fwd (void)
{
isd_senddata (0x48);
isd_senddata (0x00);
SS = 1;
}
//******************空检查******************//
void isd_chk_mem (void)
{
isd_senddata (0x49);
isd_senddata (0x00);
SS = 1;
}
//******************外部时钟的启用、关闭******************//
void isd_extclk (void)
{
isd_senddata (0x4a);
isd_senddata (0x00);
SS = 1;
}
//******************指定地址放音******************//
void isd_set_play (uchar saddl,saddh,eaddl,eaddh)
{
isd_senddata (0x80);
isd_senddata (0x00);
isd_senddata (saddl);
isd_senddata (saddh);
isd_senddata (eaddl);
isd_senddata (eaddh);
isd_senddata (0x00);
SS = 1;
}
//******************指定地址录音******************//
void isd_set_rec (uchar saddl,saddh,eaddl,eaddh)
{
isd_senddata (0x81);
isd_senddata (0x00);
isd_senddata (saddl);
isd_senddata (saddh);
isd_senddata (eaddl);
isd_senddata (eaddh);
isd_senddata (0x00);
SS = 1;
}
//******************指定地址擦除******************//
void isd_set_erase (uchar saddl,saddh,eaddl,eaddh)
{
isd_senddata (0x82);
isd_senddata (0x00);
isd_senddata (saddl);
isd_senddata (saddh);
isd_senddata (eaddl);
isd_senddata (eaddh);
isd_senddata (0x00);
SS = 1;
}
//******************芯片系统初始化******************//
void isd_init (void)
{
uchar i = 2;
SS = 1;
SCK = 1;
MOSI = 0;
do
{
isd_pu ();
isd_rd_status ();
}while(CMD_ERR||(!PU));
isd_wr_apc2 (0x40,0x04);
do
{
isd_rd_status ();
}while(RDY==0);
do
{
LED = 0;
delayms(300);
LED = 1;
delayms(300);
i--;
}while(i>0);
}
//******************isd1700的相关操作******************//
void isdwork (void)
{
uchar i;
switch (fang)
{
case 0x00:
{
do
{
isd_rd_status ();
}while(RDY==0);
delayms(10);
isd_play ();
delayms(2);
LED = 0;
do
{
isd_rd_status ();
if(STOP==0)
{
delayms (10);
if(STOP==0)
{
LED = 1;
isd_clr_int ();
isd_stop ();
isd_reset ();
isd_pd ();
isd_init ();
return;
}
}
}while(PLAY==1);
LED = 1;
isd_clr_int ();
do
{
isd_rd_status ();
}while(RDY==0);
delayms (10);
isd_fwd ();
do
{
isd_rd_status ();
}while(RDY==0);
}
break;
case 0x02:
{
isd_clr_int ();
do
{
isd_rd_status ();
}while(RDY==0);
delayms(10);
isd_rec ();
delayms(2);
LED = 0;
do
{
isd_rd_status ();
if(FULL==1)
{
for(i=3; i>0; i--)
{
LED = 0;
delayms (300);
LED = 1;
delayms (200);
}
}
}while(AN==0);
isd_clr_int ();
isd_stop ();
LED = 1;
}
break;
case 0x10:
{
do
{
isd_rd_status ();
}while(RDY==0);
delayms (10);
isd_g_erase ();
delayms (2);
do
{
isd_rd_status ();
}while(RDY==0);
for(i=3; i>0; i--)
{
LED = 0;
delayms (300);
LED = 1;
delayms (200);
}
}
break;
case 0x80:
{
isd_clr_int ();
isd_stop ();
isd_reset ();
isd_pd ();
}
break;
}
}
//******************主程序******************//
void main (void)
{
uchar i;
cpu_init ();
delayms (1);
isd_init ();
while(1)
{
if(AN==0)
{
delayms (10);
if(AN==0)
{
if(PR==1)
{
PR_fang = 1;
}
else
{
PR_fang = 0;
}
isdwork ();
}
}
if(STOP==0)
{
delayms (10);
if(STOP==0)
{
for(i=100; i>0; i--)
{
if(STOP==1)
{
STOP_fang = 1;
isdwork ();
isd_init ();
break;
}
delayms(30);
}
if (STOP_fang==1)
{
fang = 0;
continue;
}
Erase_fang = 1;
isdwork ();
}
}
}
}
这个是按键录放的例程,你可以根据这个例程自己修改一下

阅读全文

与基于52单片机相关的资料

热点内容
加密的电脑文件带出去怎么打开 浏览:847
死循环会在编译的时候出错吗 浏览:986
c51单片机特殊寄存器的原理 浏览:578
闪耀永恒特利加密钥 浏览:761
如何夸程序员 浏览:778
天津期货python招聘 浏览:265
单片机机器语言写的程序 浏览:552
韩国直播软件app叫什么名 浏览:918
军营训练不听教官的命令 浏览:261
v开头的音乐播放器是什么APP 浏览:119
单片机是怎么做出来的 浏览:317
博图怎么作为opc服务器 浏览:102
编译做题软件 浏览:295
桥梁检测pdf 浏览:687
化解压力的一种方法 浏览:683
路由器和DSN服务器有什么区别 浏览:551
android伸缩控件 浏览:861
androidm3u8缓存 浏览:236
imphp开源知乎 浏览:708
清除网络通配符dos命令 浏览:839