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 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 单片机课程设计-基于单片机直流电机控制器设计 -> 正文阅读

[嵌入式]单片机课程设计-基于单片机直流电机控制器设计

本科单片机课程设计,附Proteus仿真效果图

要求:

思路很简单,使用定时器0控制单片机IO口输出不同占空比的触发脉冲即可控制转速

代码参考:

#include <reg52.h>

#define uchar unsigned char

sbit key1=P1^0;      //?a1?
sbit out1=P1^1;      //ê?3??y×a
sbit out2=P1^2;     //ê?3?·′×a
sbit key2=P1^3;     //?y×a
sbit key3=P1^4;     //·′×a

sbit key4=P1^5;      //????±è+1
sbit key5=P1^6;      //????±è-1

sbit led1=P2^2;      //??ê??y×a
sbit led2=P2^1;      //??ê?·′×a+
sbit led3=P2^0;      //??ê??aê?/?Yí£

void Key_Scan();
void Delayms(int ms);
void Timer0Init(void)	;

uchar  start=0;
uchar intr;
uchar zheng=1;
uchar fan=0;
uchar m=3;
unsigned int tt,time;

void main()
{
	Timer0Init();
	while(1)
	{
		if(m==3)time=100;
		else if(m==7)time=200;
		else if(m==11)time=400;
		else if(m==15)time=800;
		else if(m==19)time=1200;
						
		Key_Scan();
	}
}
/************************°′?üé¨?è***************************/
void Key_Scan()    //°′?üé¨?è
{
	  if(key1==0)
		{
			Delayms(5);
			if(key1==0){start=!start;}
			while(!key1);
		}
		if(key2==0)
		{
			Delayms(5);
			if(key2==0){zheng=1;fan=0;}
			while(!key2);
		}
		if(key3==0)
		{
			Delayms(5);
			if(key3==0){zheng=0;fan=1;}
			while(!key3);
		}
		if(key4==0)
		{
			Delayms(5);
			if(key4==0){if(m<=15){m=m+4;}}
			while(!key4);
		}
		if(key5==0)
		{
			Delayms(5);
			if(key5==0){if(m>=7){m=m-4;}}
			while(!key5);
		}
}
/******************èí?t?óê± 5ms*****************/
void Delayms(int ms)  //?óê±oˉêy
{
	int x,y;
	for(x=0;x<ms;x++)
		for(y=0;y<110;y++);
}
/******************?¨ê±?÷02úéú1ms?óê±*******************/
void Timer0Init()
{
	TMOD|=0X01;
	TH0=0XFC;	
	TL0=0X18;	
	ET0=1;
	EA=1;
	TR0=1;	
}
/*******************?¨ê±?÷0?D?? 2úéúPWM?¢????LED*****************************************/
void Timer0() interrupt 1
{
	TH0=0XFC;	
	TL0=0X18;	
	
	if(start==1)
	{
		intr++;
			if(zheng==1)
			{
				if(intr==1) {out1=1;out2=0;}
				else if(intr==m){out1=0;out2=0;}
				else if(intr==20){intr=0;}
			}
			else if(fan==1)
			{
				if(intr==1) {out1=0;out2=1;}
				else if(intr==m){out1=0;out2=0;}
				else if(intr==20){intr=0;}
			}
	}
	
	if(start==1)
	{
		if(zheng==1){led1=0;led2=1;}
		if(fan==1){led1=1;led2=0;}
		
		tt++;
		if(tt<=time){led3=0;}
		else if(tt==time*2){tt=0;led3=1;}
	}
	else if(start==0)
	{led1=1;led2=1;led3=1;}
}









  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-07-15 16:21:57  更:2021-07-15 16:22:34 
 
开发: 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 19:39:02-

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