IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 单片机——6个小例子 -> 正文阅读

[嵌入式]单片机——6个小例子

目录

1.步进电机控制电路设计

?2.车灯控制

?3. 0-59倒计时

4.定时器,计数器--弥红灯

?5.矩形键盘

6.模数转换


1.步进电机控制电路设计

所需元件:

74ls04,at89c51,cap,cap-elec,crystal,motor-stepper,res,uln2003a,74ls04。

例图:

例图代码:

#include<AT89X52.H>
void mdelay(unsigned int delay)
{
	unsigned int i;
	for(;delay>0;delay--)
		for(i=0;i<124;i++);
}
void main()
{
 	while(1)
	{
	 	P1=0x03;   //0运行,0011,取反1100,a,b
		mdelay(50);
		P1=0x06;
		mdelay(50);
		P1=0x0C;
		mdelay(50);
		P1=0x09;
		mdelay(50);
	}
}

?2.车灯控制

所需元件:

at89c51,cap,cap-elec,27n5771,crysal,led-red,res,respack-8,sw-rot-3

例图:

?例图代码:

#include<REG52.H>
sbit LEDL1=P2^0;
sbit LEDL2=P2^1;
sbit LEDR1=P2^2;
sbit LEDR2=P2^3;
sbit S1=P1^0;
sbit S2=P1^1;
void delay(unsigned int i)
{
while(i--);
}
void main()
{
 while(1)
 {
 	P1=0xff;
	LEDL1=S1;
  	LEDL2=S1;
	LEDR1=S2;
	LEDR2=S2;
	delay(20000);
	LEDL1=1;
  	LEDL2=1;
	LEDR1=1;
	LEDR2=1;
	delay(20000);
  }
}

?3. 0-59倒计时

所需元件:

7SEG-MPX2-CC,74LS245,AT89C51-CAP,CAP-ELEC,CRYSTAL,RES,RESPACK-7

例图:

?例图代码:

  #include<AT89X52.h>
  #include<absacc.h>
  unsigned char code
  Tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6D,0x7D,0x07,0x7f,0x6f,0x77,0x7c};
  unsigned char Dat[]={0,0,0,0,0,0};
  unsigned char Second,t;
  void Delay()
  {
  unsigned char i;
  for(i=0;i<250;i++);
  }
  void main()
  {
  EA=1;
  ET0=1;
  TMOD=0x01;
  TH0=(65536-50000)/256;
  TL0=(65536-50000)%256;
  TR0=1;
  while(1)
  {
  Dat[0]=Second/10;
  Dat[1]=Second%10;
  P0=Tab[Dat[0]];
  P1=0xfe;
  Delay();
  P1=0xff;
  P0=Tab[Dat[1]];
  P1=0xfd;
  Delay();
  P1=0xff;
  }
  }
  void intserv1 (void) interrupt 1 using 1
  {
  TH0=(65536-50000)/256;
  TL0=(65536-50000)%256;
  t++;
  if(t==20)
  {
  t=0;
  Second++;
  if(Second>=60) Second=0;
  }
  }

4.定时器,计数器--弥红灯

所需元件:

AT89C51,CAP,CAP-ELEC,CRYSTAL,LED-BARGRAPH-RED,LED-BIBY,RES

例图:

例图代码:

#include<reg52.h>
unsigned char i10,i8,i6;
unsigned char mod1,mod2;
bit F;
void main(void)
{
i10=10;
i8=8;
i6=6;
mod1=0x01;
mod2=0xAA;
F0=0;
TMOD=0x10;
TH1=0x3C;
TL1=0xB0;
IE=0x88;
TR1=1;
while(1);
}
void timer0(void) interrupt 3 using 1
{
TH1=0x3C;
TL1=0xB0;
i10--;
if(i10==0)
{
i10=10;
if(F==0)
{
P1=~mod1;
mod1=mod1<<1;
i8--;
if(i8==0)
{
i8=8;
F=1;
mod1=0x01;
}
}

else
{
P1=mod2;
mod2=~mod2;
i6--;
if(i6==0)
{
i6=6;
F=0;
}
}
}
}

?5.矩形键盘

所需元件:

7SEG-COM-CATHODE,74LS21,AT89C51,BUTTIN,CAP,

CAP-ELEC,CRYSTAL,RES,74LS21

例图:

例图代码:

/*#include<AT89X52.H>
unsigned char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,
0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void delay10ms(void)
{
 	unsigned char i,j;
	for(i=20;i>0;i--)
		for(j=248;j>0;j--);
}
unsigned char scan_key(void)
 {
 	unsigned char scan,col,rol,tmp;
	bit flag=0;
	scan=0xef;
	for(col=0;col<4;col++)
		{
		 P0=scan;
		 tmp=~P0;
		 tmp=tmp&0x0f;
		for(rol=0;rol<4;rol++)
			 {
		 	if(tmp==(0x01<<rol)	)
			{
			flag=1;
			break;
			
		 }

		}
		if(flag==1)
		{
		while(tmp!=0x0f)
		{
		 P0=0x0f;
		 tmp=P0;
		}
		break;
		}	
		 scan=(scan<<1)+1;
		}
		
		return(rol*4+col);
 }
 /*void  key_led(void) interrupt 0
 {
   	unsigned char tmp,key;
	   	delay10ms();
			P0=0x0f;
			tmp=P0;	
			if(tmp!=0x0f)
			{
			 key=scan_key();  
			 P1=table[key];
			}
 } */
/*void main()
{
	P1=0x00;
	EA=1;
	EX0=1;
	IT0=1;
	P0=0x0f; 
	 while(1){
	 	scan_key();
	 }
 }
	void key_led(void) interrupt 0			
	{
	unsigned char key,tmp;
		delay10ms();
		P0=0x0f;
		tmp=P0;	
		if(tmp!=0x0f)
		{
		key=scan_key();
		P1=table[key];
	}
} */ 
/*#include<AT89X52.H>
unsigned char table[]={0x3f,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};
void delay10ms(void)
{
unsigned char i,j;
for(i=20;i>0;i--)
for(j=248;j>0;j--);
}
void main()
{
unsigned char tmp,key;
P1=0x00;
while(1)
{
while(tmp==0x0f)
{
P0=0x0f;
tmp=P0;
}
delay10ms();
P0=0x0f;
tmp=P0;
if(tmp==0x0f) continue;
key=scan_key();
P1=table[key];
}
}
unsigned char scan_key(void)
{
unsigned char scan,col,rol,tmp;
bit flag=0;
scan=0xef;
for(col=0;col<4;col++)
{
P0=scan;
tmp=P0;
switch(tmp&0x0f)
{
case 0x0e:rol=0;flag=1;break;
case 0x0e:rol=1;flag=1;break;
case 0x0e:rol=2;flag=1;break;
case 0x0e:rol=3;flag=1;break;
}
if(flag==1)break;
scan=(scan<<1)+1;
}
while(tmp!=0x0f)
{
P0=0x0f;
tmp=P0;
}
return(rol*4+col);
}
 
 #include<AT89X52.H>
unsigned char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,
0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void delay10ms(void)
{
 	unsigned char i,j;
	for(i=20;i>0;i--)
		for(j=248;j>0;j--);
}
unsigned char 	scan_key(void)
 {
 	unsigned char scan,col,rol,tmp;
	bit flag=0;
	scan=0xef;
	for(col=0;col<4;col++)
		{
		 P0=scan;
		 tmp=P0;
		 switch(tmp&0x0f)
		 {
		  case 0x0e: rol=0;flag=1;break;
		  case 0x0d: rol=1;flag=1;break;
		  case 0x0b: rol=2;flag=1;break;
		  case 0x07: rol=3;flag=1;break;
		 }
		 if( flag==1)break;
		 scan=(scan<<1)+1;

		}
		while(tmp!=0x0f)
		{
		 P0=0x0f;
		 tmp=P0;
		}	
		return(rol*4+col);
 }
void main()
{
 	unsigned char tmp,key;
	P1=0x00;
	while(1)
	{
	 	while(tmp==0x0f)
			{
				P0=0x0f;
				tmp=P0;
				}
		delay10ms();
		P0=0x0f;
		tmp=P0;	
		if(tmp==0x0f)continue;
		key=scan_key();
		P1=table[key];
	}	
}
 	*/
	#include<AT89X52.H>
unsigned char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,
0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void delay10ms(void)
{
 	unsigned char i,j;
	for(i=20;i>0;i--)
		for(j=248;j>0;j--);
}
unsigned char 	scan_key(void)
 {
 	unsigned char scan,col,rol,tmp;
	bit flag=0;
	scan=0xef;
	for(col=0;col<4;col++)
		{
		 P0=scan;
		 tmp=P0;
		 switch(tmp&0x0f)
		 {
		  case 0x0e: rol=0;flag=1;break;
		  case 0x0d: rol=1;flag=1;break;
		  case 0x0b: rol=2;flag=1;break;
		  case 0x07: rol=3;flag=1;break;
		 }
		 if( flag==1)break;
		 scan=(scan<<1)+1;

		}
		while(tmp!=0x0f)
		{
		 P0=0x0f;
		 tmp=P0;
		}	
		return(rol*4+col);
 }
void main()
{
 	unsigned char tmp,key;
	P1=0x00;
	while(1)
	{
	 	while(tmp==0x0f)
			{
				P0=0x0f;
				tmp=P0;
				}
		delay10ms();
		P0=0x0f;
		tmp=P0;	
		if(tmp==0x0f)continue;
		key=scan_key();
		P1=table[key];
	}	
} 
 
 

6.模数转换

所需元件:

ADC0809,AT89C51,CAP,CAP-ELEC,CRYSTAL,LED-BARGRAPH-RED,LED-BIBY,

POT-HG,RES

例图:

例图代码:

#include<reg52.h>
#include<INTRINS.h>
sbit EOC=P2^4;
sbit START=P2^5;
sbit CLOCK=P2^6;
sbit OE=P2^7;
unsigned char temp;
void main(void)
{
 TMOD=0x02;
 TH0=206;
 TL0=206;
 EA=1;
 ET0=1;
 TR0=1;
 while(1)
 {
	START=0;
	START=1;
	START=0;
	while(EOC==0);
	OE=1;
	temp=P0;
	P1=temp;
	_nop_();
	_nop_();
 }
 }
 void t0(void) interrupt 1 using 0
 {
  CLOCK=~CLOCK;
 }

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-09-15 02:09:57  更:2022-09-15 02:12:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 22:56:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码