**

锂电类便携式小家电应用开发-打蛋器

1:应用需求:PWM输出,复位电压2.7V,重启电机电压3.0V
2:结合需求,选用九齐系列单片机中的051F作为主控芯片,配合9017给锂电进行充电。
3:051F引脚图;

4:应用电路图;

5:部分代码;

/* =========================================================================
* 项目:          打蛋器
* 文件:          main.c
* 说明:          三档PWM输出控制电机
*                1. Instruction clock = 4MHz/4T
*                2. PWM1(PB2):占空比:第一档40%,第二档60%,第三档80%
*                3. 基本功能已调通,后续要对程序进行优化,在关机的时候进入睡眠模式以降低对电池的损耗。20220423
*
* 作者:         中青电子-林工
* 电话:        18607656520
* 版本:         V1.0
* 日期:         2022.04.08=========================================================================*/
#include <ny8.h>
#include "ny8_constant.h"//PWM duty setting
#define C_PWM_LB_DUTY_4DH   0x66    //第一档占空比40%
#define C_PWM_LB_DUTY_8CH   0x8C // 0x99    //第二档占空比60%
#define C_PWM_LB_DUTY_CCH   0XE6 // 0xCC   //第三档占空比80%//#define HALT_MODE       0x04
//#define FHOSC_SEL     0x01
//#define STANDBY_MODE  0x08//#define UPDATE_REG(x) __asm__("MOVR _" #x ",F")void delay10ms();
void Mot_PWM(int DUTY);int Key_time = 0;
int Mot_tap = 0;
int LVD_i = 0;
int fPWM = 0;
int dPWM = 0;//! interrupt service routine
void isr(void) __interrupt(0)
{if(INTFbits.PBIF){INTFbits.PBIF = 0;                  // Clear PBIF(PortB input change interrupt flag bit)BWUCON = 0X00;INTE = (INTE && 0XFE);//  INTE = ~C_INT_PBKey; }
}void main(void)
{// Initialize GPIOBPHCON = (unsigned char)~(C_PB0_PHB);   //使能PB0输入内部上拉电阻BPLCON = (unsigned char)~(C_PB1_PLB);   //使能PB1输入内部下拉电阻BWUCON = C_PB0_Wakeup;                  // Enable PB0 input change wakeup functionIOSTB =  C_PB1_Input | C_PB0_Input;     // 设置PB0,PB1为输入,其他PB口为输出PORTB = 0x38;                            // 端口PB输出寄存器数据为0x38,PB2:0(关闭电机),PB3,PB4,PB5:1 (关闭LED);// Initial Interrupt SettingINTE = C_INT_PBKey;                        // Enable PortB input change interruptINTF = 0;                                // Clear all interrupt flags// Normal mode into Slow mode//   OSCCR = C_FLOSC_Sel;                 // OSCCR[0]=0 , FOSC is Low-frequency oscillation (FLOSC)// Slow mode into Normal mode//   OSCCR = C_FHOSC_Sel;                   // OSCCR[0]=1 , FOSC is high-frequency oscillation (FHOSC)// Chioce while wakeup from Halt mode or Standby mode,the procedure will enter// interrupt service routine or not.//   ENI();                                    // 1. Enable all unmasked interrupts.// 2. After wakeup frorm Halt mode or//    Standby mode, the procedure will//    enter interrupt service routinePCONbits.WDTEN = 0;                       //Disable WDTPCONbits.LVDEN = 1;                       // Enable LVDPCON1 = C_LVD_3P0V;                       // Set LVDS[3:0]=0101b(3.0V), Timer0 disable// Initialize Timer1 & PWM1   T1CR2     = C_PS1_Dis | C_TMR1_ClkSrc_Inst; // Prescaler 1:1, Timer1 clock source is instruction clockT1CR1  = 0x00;           //关PWM/*    if(Mot_tap == 0){SLEEP();INTFbits.PBIF = 0;} */while(1){CLRWDT();if(PORTBbits.PB1 == 0)            //无插USB口{while(PORTBbits.PB0 == 0 && Key_time < 100){delay10ms();if(PORTBbits.PB0 == 0)Key_time += 1;                  //按键按下计时if(Key_time == 100)Mot_tap = 0;}}elseMot_tap = 0;

6:考虑实际应用需在待机状态下,使整个应用电路处于非常低的功耗。所以在待机状态下,需要使单片机进入睡眠模式,并设置PB口电平变化唤醒单片机。在进入睡眠模式前,可以先使单片机进入低速模式,再进入睡眠模式。在单片机被唤醒之后,进入高速模式。

             OSCCR = C_FLOSC_Sel;           //进入低速模式SLEEP();OSCCR = C_FHOSC_Sel;           //进入高速模式

总结:在单片机IO口配置部分需要把读取IO口配置为寄存器来读取IO高低电平,这样才能正确的读取IO引脚电平。除了在配置程序设置时遇到以上问题外,其他还算顺利。

九齐单片机应用-小家电开发(1)相关推荐

  1. 九齐单片机NY8B062D开发笔记(一)准备

    九齐单片机开发笔记 前言 过程 1.芯片介绍 2.开发环境: 3.例程template 4.源文件: 参考资料 前言 各位朋友们,由于九齐的仿真器买不到,这个系列暂时停止更新 由于价格和性能的追求,近 ...

  2. 密脚九齐单片机 SSOP20 NY8BM72A 2K ROM 九齐

    NY8BM72A 是以MTP作为记忆的8bit低单价九齐单片机,有18个IO口,12+1AD通道,2K ROM,4组计时器,3组PWM,3组蜂鸣器, 系統主頻提供 20.8M/19.2M/16M/14 ...

  3. 九齐单片机NY8B062E的ADC零点校准程序记录

    最消费类的方案开发,一直用到九齐的片子,带AD的基本都是062D,但是后面推出了062E代替了D版,看资料,使用AD需要一个零点校准的初始化程序,刚开始也一脸懵逼,经过一番摸索有,在这里做一个记录, ...

  4. 九齐单片机 NY8A051D点亮LED

    写在前面 这段时间接触九齐的051D,记录一下怎么快速入门这款单片机 定时器 跟普通的8051单片机使用方法类似,直接上代码: #include <ny8.h> #include &quo ...

  5. NY8B062D 九齐单片机之ADC(采样值不准的解决办法)

    其实ADC的程序 官方已经给出了 如下 ( 写这篇文章的目的是 就是本人在使用的时候 发现采样的数值 每次在接收采样值 必须要清零 要不然到处漂 ) 下面一段时间官方的程序 我就在上面加了个pwm的测 ...

  6. 九齐单片机NY8A051D程序之 PWM Output

    这个例程原本就是九齐的IDE自带的,我这里傻瓜式的操作给大家看看,另外附带他的源码,没有用的给删了,需要注意的是,这芯片C指令51单片机有那么一点点区别,PWM输出或者做那种进入低功耗的案子,都一定要 ...

  7. 九齐单片机---官方Example_Code

    看到似乎很多人在下载九齐IDE的时候没有把Example_Code也一起下载,也有的人下载了不知道在哪找,我这里把官方的example code分享出来,需要的可以自取,链接失效的话评论区提醒一下. ...

  8. NY8A051F 6 I/O 8-bit EPROM-Based MCU 台湾九齐单片机

    NY8A051F 功能简介 NY8A051F 可以说是台湾九齐的人气王,有硬件PWM,有LVD,有38K红外载波,有各种模式 NY8A051F 宽广的工作电压: NY8A051F 2.0V ~ 5.5 ...

  9. NY8A050D 6 I/O 8-bit EPROM-Based MCU 台湾九齐单片机

    NY8A050D 功能简介 NY8A050D性价比之王,可以说目前市面最便宜的国产单片机之一,有23-6有SOP-8 ,0.5K内存,低端产品首选! NY8A050D 宽广的工作电压:         ...

最新文章

  1. Jupyter Notebook 基本使用
  2. 分割字符串_[话俾你知]Python使用正则处理字符串技巧(分割、替换)
  3. c++Primer再学习-练习Todo
  4. IE下a标签会触发window.onbeforeunload的问题
  5. mysql 卸载批处理_MYSQL 注册启动 及 停用卸载 批处理脚本 (补)
  6. php调用sql数据库代码怎么写,PHP读取SQL文件并导入数据库(示例)
  7. 最长公共子上升序列(信息学奥赛一本通-T1306)
  8. skiplist 跳表(2)-----细心学习
  9. IDEA 在头注解上添加用户名称和时间
  10. 推荐系统经典模型 Wide Deep 论文剖析
  11. Python单元测试框架——unittest
  12. php代码审计_代码审计|PHP反序列化初识
  13. 10、网友问答之串口字节方式传递单精度数--------labview宝典
  14. windows10便签在哪,windows电脑版便签工具在哪里打开
  15. Win10电脑怎么取消开机密码?
  16. springboot+vue+nodejs多用户网上图书商城系统-含卖家功能java
  17. 计算机应用二级客观题,计算机二级客观题
  18. 让VMWare拥有Intel千兆网卡
  19. 一键解锁,2022阿里顶会创新技术前沿进展
  20. 【计算机毕业设计】269购物商城网站的设计与实现

热门文章

  1. java时钟课程设计_JAVA课程设计报告电子钟
  2. 汽车电控转向助力技术(EPS)
  3. html文件可以打开,asp文件打不开的原因
  4. 快速有效地封杀—巧利用Iris来查找蠕虫病毒(转)
  5. 什么是计算机思维呢?
  6. Win10安卓子系统安装教程
  7. python计算器简单代码_自学python之简单计算器
  8. MySQL 服务基础
  9. CAD2023精简版安装教程附下载地址
  10. java毕业设计旧物置换网站mybatis+源码+调试部署+系统+数据库+lw