请教如何利用单片机(AT89C205)改变PWM的占空比?
#include
#define uchar unsigned char
#define uint unsigned int
uint pwm,tper,times=0;
uchar tab[4]={20,40,60,80};
sbit pulse=P1^0;
bit flag;
void t0isr() interrupt 1
{
flag=~flag;
pulse=~pulse;
if(flag)
{
TH0=(65536-pwm)/256;
TL0=(65536-pwm)%256;
}
if(!flag)
{
TH0=(65536-(tper-pwm))/256;
TL0=(65536-(tper-pwm))%256;
}
}
void t1isr() interrupt 3
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
times++;
pwm=tper*tab[(times/200)%4]/100;
}
main()
{
TMOD=0x11;
tper=1000;
pwm=tper*tab[0]/100;
TH0=(65536-pwm)/256;
TL0=(65536-pwm)%256;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
TR0=1;
TR1=1;
ET0=1;
ET1=1;
EA=1;
while(1);
}
需要利用交流电的作触发信号,单片机生成延迟脉冲,不必使用pwm
注意是调节过零后的延迟时间,再出脉冲。
//TIMER0 initialize - prescale:64
// WGM: CTC
// desired value: 1KHz
// actual value: 0.992KHz (-0.8%)
void timer0_init(void)
{
TCCR0 = 0x00; //stop
TCNT0 = 0xC2; //set count
OCR0 = 0x3E; //set compare
TCCR0 = 0x0B; //start timer
}
通过改变 OCR0 的赋值改变频率.上个是 0.992khz的!
AT89C2051与AT89C51,AT89C52用法是类似的,要改变占空比就是要改变的是:高电平时间/整个周期时间的比率就可以了
如何利用单片机产生500HZ的信号
使用单片机的定时器可以产生500Hz的信号 以51单片机为例,程序如下:include<reg51.h> sbit Wave=P1^6;unsigned char k=0;void main(){ Wave=0;EA=1;\/\/开总中断 TMOD=0x01;\/\/设置定时器0为工作方式1 TH0=(65536-10000)\/256;TL0=(65536-10000)%256;ET0=1;\/\/开定时器0中断 TR0=1;\/\/...
如何利用单片机做一个最简单的10KHZ的信号发生器
10KHZ就是每秒转换10000次,即0.1MS一次,为100us一次;include<reg51.h> sbit P10=P1^0;void main(){ TMOD=0x02; \/\/工作方式2 TH0=256-100;\/\/定时100us TL0=256-100;IE=0x82;TR0=1;while(1);} void Timer0() interrupt 1 { P10=~P10;} 大概就这样,没验证,不过应该没问题。。
如何利用51单片机输出PWM波
用两个定时器的方法是用定时器T0来控制频率,定时器T1来控制占空比。大致的的编程思路是这样的:T0定时器中断让一个I0口输出高电平,在这个定时器T0的中断当中起动定时器T1,而这个T1是让IO口输出低电平,这样改变定时器T0的初值就可以改变频率,改变定时器T1的初值就可以改变占空比。用一个定时器时(...
请问如何利用单片机和可控硅进行功率控制?
控制温度难,和上面类似,控制电流,读取温度,这里的处理,不能简单除法,而是需要用pid算法来控制了。温度系统惯性很大,pid参数很难调,自己作系统除非是特殊需要,一般都不多见。常用的解决办法是使用cb100来控制就好了,这东西还有串口通信控制,也可以利用单片机来连接控制。
单片机C语言实践教程内容简介
《单片机C语言实践教程》是一本与国家示范性建设学校精品课程“智能电子产品分析与制作”相配套的教材。它采用创新的“教、学、做一体化”教学理念,旨在通过四个具体的项目实践,引导读者逐步掌握现代智能电子技术的核心思想、方法和基础知识。教程内容分为四个部分:首先,第1至3章介绍单片机的基础认识;...
单片机基础教程目录
知识2:了解单片机应用系统,它由单片机核心、外设和开发环境构成,用于解决实际问题。知识3:掌握单片机开发环境,如Keil 51工具软件,用于编写、调试和烧录程序。技能训练:通过实践项目,熟悉Keil 51的使用,提升开发能力。项目小结:总结本项目的学习内容和关键技能。项目2:学习单片机硬件系统知识1:掌握MCS...
如何利用8051单片机实现汉字在LCD上显示
首先需要LCD驱动(有的可能不用),这段代码可以为LCD卖家要或者看说明书自己写。下一个LCD字符转换工具,会获得相应的16进制码,把它存为头文件。显示的时候直接调用write函数(需自己编写,根据LCD说明书),读取头文件中的数据即可。
请教:如何用单片机控制小车转弯?
一般小车转弯分若干种 1。三轮式 1.1两个动力轮,一个辅助轮 举例 玩具小车 两个动力轮同时转动,前进或后退 两个动力轮反向转动或者转动速度不同,转向 1.2两个辅助轮,一个动力轮 前轮有动力而且可以转向 这就要用两个电机控制前轮。一个控制前轮的速度,一个控制前轮转过的角度。1.3两个动力...
流水灯闪烁是怎么回事 单片机教你做简单任务
1、这个写程序的时候就给6个I\/O输出高电平或低电平就行了。2、先让6个I\/O口输出高电平或低电平,这个要看你的是什么单片机,51单片机都是默认的是高电平是亮,然后延时一会再让它输出低电平就行了,就这样一直循环。
高职高专电子技术系列教材·单片机原理及应用内容简介
教材内容按照以下顺序编排:单片机概述、MCS-51系列单片机的总体结构、指令系统、定时器\/计数器、串行口、中断系统、汇编语言程序设计、C51程序设计、系统扩展、接口技术、单片机的开发与应用实例。通过这些章节的学习,读者能够全面理解单片机的工作原理,并掌握其应用方法。教材注重学以致用和实践能力的培养,...
尉初奥九: 家用电风扇是单相电机,使用at89C2051之类的单片机,外加过零检测电路,再外加双向可控硅,由单片机驱动三极管,三极管驱动可控硅,就可达到调速目的. 基本原理,类似于调光灯电路,过零检测电路检测交流电过零时间,然后控制可控硅导通时间,可控硅导通点越接近过零点,风扇转速越快.
和林格尔县13514322734: 请教如何利用单片机(AT89C205)改变PWM的占空比? - ?
尉初奥九: AT89C2051与AT89C51,AT89C52用法是类似的,要改变占空比就是要改变的是:高电平时间/整个周期时间的比率就可以了
和林格尔县13514322734: 利用at89c2051 如何对脉冲信号的计数然后送入单片机 - ?
尉初奥九: 这应该是最简单的计数功能,有两种方案可以考虑:1.将脉冲输入到普通io口,通过简单的读操作,高电平加一计数即可,但要考虑脉冲间隔,进行适当的延时才行,否则很容易计数错误.2.(这个简单)将脉冲直接输入到中断,进行外部中断上升沿计数,即可在计数器溢出时计算脉冲数量即可.最好的方案是第二种,比较简单,也比较精确. 祝你好运! 步行者===电子单片机团
和林格尔县13514322734: 如何用单片机输出脉冲信号 - ?
尉初奥九: 利用单片机产生脉冲信号有多种方法.最简单的方法,就是在单片机的程序中对一个引脚反复置1,清0,置1,清0....,这个引脚上就会出现脉冲信号. 当需要产生指定周期和宽度的脉冲信号时,通常使用单片机中的计数器来实现:给计数器赋于不同的计数初值,在计数到0时产生中断去置1或清0某引脚即可.
和林格尔县13514322734: 利用单片机AT89C2051来制作家庭智能报警装置,实现不通过市话来进行安全保护家庭的功能 - ?
尉初奥九: use AT89C2051 to make the family intelligent alarm device, not by telephone to protect the family
和林格尔县13514322734: 怎么用at89c52控制一个220v的风扇的快慢,因为单片机才几伏,而风扇确是几十伏上百伏!须要什 - ?
尉初奥九: 单片机驱动一个三极管,三极管驱动一个继电器,继电器常开触点串联风扇接220V,就可以了.还可以是单片机通过光电耦合器驱动双向可控硅,再驱动电扇,这样甚至可以调速.
和林格尔县13514322734: 怎么实现AT89C52单片机之间的串行通信 - ?
尉初奥九: 首先要看pc机有没有串口,即是电脑上的com口,这是rs232口,有的话,就很方便.单片机的rxd,txd两个脚就是串行通信的引脚,用一片max232,或max202,把rxd,txd两脚接到max232上,组成一个rs232接口电路,max232的rxd,txd接到db9头...
和林格尔县13514322734: 基于DS18B20控制水温,用AT89C51单片机控制,怎么设计才能实现定时加热 ,手动设置温度 - ?
尉初奥九: 如果要设定几点几分开始加热的话,要加时钟芯片常用的有DS1302,DS12C887.如果是延时的话可以用单片机内部进行定时.电路中需要增加显示和按键功能 可以用串口扩展并口驱动数码管进行显示,按键用P0或P1口扩展就可以了
和林格尔县13514322734: 单片机如何控制电机转速 - ?
尉初奥九: 利用单片机的定时器TIMER_A(TA)中断产生脉冲信号,通过在响应的中断程序中实现步进电机步数和圈数的准确计数,通过PWM实现转速控制. 可以利用P10端口的中断关闭TA中断程序,并推入堆栈,停止电机;P11中断则开启TA中断,堆栈...
和林格尔县13514322734: 请问在基于单片机的锅炉温度控制系统中如何应用单片机AT89C52对温度进行控制??
尉初奥九: 编写逻辑判断当通过温度传感器得到的温度大于多少时就减少火力,小于多少时就增加火力.