基于STC89C52RC单片机制作的频率及占空比均可调程序

发布者:自在逍遥最新更新时间:2019-11-06 来源: 51hei关键字:STC89C52RC  单片机  频率  占空比 手机看文章 扫描二维码
随时随地手机看文章

注意  单片机必须是52rc不能用60s2



*/


#include"main.h"

#include"peizhi.h"

#include"smg.h"

#include"eeprom.h"

sfr WDT_CONTR=0XE1;

unsigned char HighRH = 0;  //高电平重载值的高字节

unsigned char HighRL = 0;  //高电平重载值的低字节

unsigned char LowRH  = 0;  //低电平重载值的高字节

unsigned char LowRL  = 0;  //低电平重载值的低字节

/***********************按键定义**********************************/

bit d1 = 1;

bit d2 = 1;

bit d3 = 1;


uint8 ci;

uint8 ca = 0;

uint8 ca1 = 0;

uint16 cb = 0;


void key();                 //按键函数声明

void ConfigPWM(unsigned int fr, unsigned char dc);  //频率和占空比调节函数


void main()

{

   bit q1 = 1;

   bit q2 = 1;

   bit q3 = 1;

   ca = EEPROMReadByte(0);

   cb = EEPROMReadByte(1)*255+EEPROMReadByte(2);


   EA = 1;       //开总中断

   peizhit1(1);  //配置T0定时2ms


   while(1)

   {        

                  ConfigPWM(cb, ca);    //频率100Hz,占空比10%


                  if(d1 != q1)

                  {

                          q1 = d1;

                        if(d1 == 0)

                        {


                                ca1++;

                                if(ca1 >= 2)

                                {

                                          ca1 = 0;

                                }


                        }

                  }


           if(ca1 == 1)

           {

                  if(d2 != q2)

                  {

                                  q2 = d2;

                                if(d2 == 0)

                                {

                                   

                                        ca++;

                                        EEPROMSectorErase(0);

                                        EEPROMWriteByte(0,ca);

                                        EEPROMWriteByte(2,cb);

                                        EEPROMWriteByte(1,cb>>8);

                                        if(ca >= 99)

                                        {

                                                ca = 99;

                                        

                                        }

                                        

                                }

                          }

                        

                          if(d3 != q3)

                          {

                                  q3 = d3;

                                if(d3 == 0)

                                {

                                        if(ca>0)

                                        {

                                                ca--;

                                                EEPROMSectorErase(0);

                                            EEPROMWriteByte(0,ca);

                                                EEPROMWriteByte(2,cb);

                                                EEPROMWriteByte(1,cb>>8);

                                         }

                                }

                          } 

                  }

                 

                if(ca1 == 0)

                {   

                          if(d2 == 0)

                          {

                                  

                                  cb++;

                                  EEPROMSectorErase(0);

                                   EEPROMWriteByte(0,ca);

                                  EEPROMWriteByte(2,cb);

                                  EEPROMWriteByte(1,cb>>8);

                                  if(cb >= 200)

                                        {

                                                cb = 200;

                                        

                                        } 

                                

                          }

                          

                          if(d3 == 0)

                          {

                                  

                                        if(cb>0)

                                        {

[1] [2]
关键字:STC89C52RC  单片机  频率  占空比 引用地址:基于STC89C52RC单片机制作的频率及占空比均可调程序

上一篇:单片机按键长短按源程序(不需要通过等待来判定)
下一篇:SUKON触摸屏学习单片机modbus通讯程序

推荐阅读最新更新时间:2024-11-13 01:42

单片机的定时器中断0
定时器工作的流程可以按照这个顺序(以51为例用定时器0方式一产生50毫秒的定时) 1、确定使用哪个定时器,使用哪种方式,这一步通过TMOD设置,TMOD的低四位是设置定时器0的,高四位是用来设置定时器1的,其中的M0,M1是用来设置定时器工作在哪种方式,GATE一般用不要设置,C/T是选择计数模式还是定时模式的,如:TMOD = 0X01,就说明定时器0工作在方式1。 2、接下来就要设置定时的时间,用定时器定时50毫秒,可以用这种方式TH0 = (65535 - 50000) / 256,TL0 = (65535 - 50000) % 256;可以这样理解:因为这是定时器的初值,也就是说计数脉冲就是在这个数的基础上向上递增,到达65
[单片机]
<font color='red'>单片机</font>的定时器中断0
STM32单片机开发环境安装与工程搭建
一、认知STM32 1、STM32概念 STM32: 意法半导体基于ARM公司的Cortex-M内核开发的32位的高性能、低功耗单片机。 ST:意法半导体 M:基于ARM公司的Cortex-M内核的高性能、低功耗单片机 32:32位单片机 2、STM32开发的产品 STM32开发的产品:无人机、扫地机器人、3D打印机、平衡机、智能手环等 3、学习STM32对应的招聘职位 招聘职位:单片机开发工程师、单片机软件工程师、STM32开发工程师、嵌入式开发工程师、嵌入式软件工程师。 二、ARM与STM32 嵌入式系统 以应用为中心,以计算机技术为基础,软硬件可裁减,以适应应用系统对功能、可靠性、成本、体积和功耗等有严格要求的专用计算机系统
[单片机]
STM32<font color='red'>单片机</font>开发环境安装与工程搭建
avr单片机读写时钟芯片DS3231程序(通过测试)
实时时钟芯片DS3231,该款芯片是目前世界上精度最高的集成,也是业内最先推出、采用简单音叉晶体和集成电路即可提供±2分钟/年时间保持精度的芯片。 //程序由AT24C系列的读写程序改写而来,不同点只在于器件地址的不同 /span #include iom16v.h #include macros.h #define uchar unsigned char #define uint unsigned int void DelayUs(uchar i); void CLK(uchar PD);//设置SCL的电平 void IO(uchar PD);//设置IO的电平 void SetIO(uchar i);//设置IO
[单片机]
一款简洁的单片机交通灯程序
这是一款简洁的单片机交通灯程序,用了两只数码管进行倒计时显示,实现的:首先东西方向红灯50秒,此时南北绿灯50秒,并且数码管显示倒计时从49到00;然后所有方向的黄灯闪烁5秒,并且数码管显示5秒倒计时;接着东西绿灯35秒,此时南北红灯35秒,数码管显示35秒倒计时;再接着所有黄灯在闪烁5秒,数码管5秒倒计时;循环第1到第4步。程序源码: #include reg52.h #define uint unsigned int #define uchar unsigned char sbit shiw=P3^0; //显示十位引脚声明 sbit gew=P3^1; //显示个位引脚声明 uchar code table ={ 0x3f
[单片机]
如何使用8051单片机实现双极LED驱动器电路?
在本文中,将介绍如何使用8051单片机实现双极LED驱动器电路。双极LED与常规双色LED的不同之处在于,双极LED只有两个引线,而常规双色LED具有三个引线。 双色LED是一种特殊类型的LED,它由两个在封装内反向连接的二极管组成。双色LED通常由三个端子组成,即一个公共引脚和两个独立的引脚。如果是共阴极LED,则公共引脚可以接地,如果是共阳极,则可以连接到 +5V 电源。但是,还有另一种具有两个端子的双色LED,称为双极LED。 该设备根据提供给终端之一的正信号起作用。例如,对于绿红双色LED,绿色端的正信号和红色端的负信号确保绿色LED正向偏置,红色LED反向偏置。这会导致绿灯闪烁。红色LED的情况也是如此。 但是,如
[单片机]
如何使用8051<font color='red'>单片机</font>实现双极LED驱动器电路?
基于MSP430单片机的CCD相机调光电控系统设计
  1.引言   自我国研制出第一台大型经纬仪以来,摄影一直是电影经纬仪用于对飞行器(导弹,火箭,宇宙飞船)的主要测量记录手段。摄影胶片记录的内容在判读时能否被发现,与目标相对背景的对比度有极重要的关系。调光的目的在于使胶片的曝光量保持在胶片感光特性曲线的直线段所规定的范围之内:      (r为底片反差系数),而不受外界背景亮度变化的影响。以前经纬仪传统的摄影调光是采用变换平衡电桥参数的方法来控制像面照度,检测元件为光敏电阻。为了适应胶片感光度、摄影频率和天空背景亮度等各种摄影条件。就要由操作人员来装定数种不同,并按一定关系排列的背景照度值。每次摄影时,预先用照度计测出天空背景照度值,还要查曝光列表,选择合适的电阻装定在检
[单片机]
基于MSP430<font color='red'>单片机</font>的CCD相机调光电控系统设计
lcd1602显示的单片机子程序 模块化可多次调用
给大家分享一个lcd1602显示的子程序模块化可多次调用,非常方便移植,不改或改一点就可以用到自己的程序中 单片机源程序如下: #include lcd1602.h /*LCD1602忙碌等待*/ void LCD1602Wait() { unsigned char sta;//读取LCD1602状态字 /*读取液晶状态字之前必须将P2口全部拉高*/ LCD1602_DB = 0xFF; LCD1602_RS = 0; LCD1602_RW = 1; LCD1602_EN = 0; do { LCD1602_EN = 1; sta = LCD1602_DB;//读状态字 L
[单片机]
新能源汽车控制器详解:VCU、ECU、MCU和电池BMS
新能源汽车中的各种控制器主要包括:整车控制器(VCU)、发动机控制器(ECU)、电机控制器(MCU)和电池管理系统(BMS)。 新能源汽车的三电技术,包括电池、电驱和电控。电池部分阐述了动力电池系统的构成;电驱部分讲解了传动机构、电机和电机控制器的功能; 一、整车控制器(VCU) 1. 功能 1.1 驱动系统控制 1.2 整车能量管理和优化 1.3 整车通信和网络管理 1.4 故障处理与诊断 1.5 汽车状态显示 2. 工作模式 2.1 自检模式 2.2 启动模式 2.3 起步模式 2.4 行驶模式 2.5 制动模式 2.6 停车模式 2.7 故障模式
[汽车电子]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved