九齐单片机应用-小家电开发(1)
**
锂电类便携式小家电应用开发-打蛋器
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)相关推荐
- 九齐单片机NY8B062D开发笔记(一)准备
九齐单片机开发笔记 前言 过程 1.芯片介绍 2.开发环境: 3.例程template 4.源文件: 参考资料 前言 各位朋友们,由于九齐的仿真器买不到,这个系列暂时停止更新 由于价格和性能的追求,近 ...
- 密脚九齐单片机 SSOP20 NY8BM72A 2K ROM 九齐
NY8BM72A 是以MTP作为记忆的8bit低单价九齐单片机,有18个IO口,12+1AD通道,2K ROM,4组计时器,3组PWM,3组蜂鸣器, 系統主頻提供 20.8M/19.2M/16M/14 ...
- 九齐单片机NY8B062E的ADC零点校准程序记录
最消费类的方案开发,一直用到九齐的片子,带AD的基本都是062D,但是后面推出了062E代替了D版,看资料,使用AD需要一个零点校准的初始化程序,刚开始也一脸懵逼,经过一番摸索有,在这里做一个记录, ...
- 九齐单片机 NY8A051D点亮LED
写在前面 这段时间接触九齐的051D,记录一下怎么快速入门这款单片机 定时器 跟普通的8051单片机使用方法类似,直接上代码: #include <ny8.h> #include &quo ...
- NY8B062D 九齐单片机之ADC(采样值不准的解决办法)
其实ADC的程序 官方已经给出了 如下 ( 写这篇文章的目的是 就是本人在使用的时候 发现采样的数值 每次在接收采样值 必须要清零 要不然到处漂 ) 下面一段时间官方的程序 我就在上面加了个pwm的测 ...
- 九齐单片机NY8A051D程序之 PWM Output
这个例程原本就是九齐的IDE自带的,我这里傻瓜式的操作给大家看看,另外附带他的源码,没有用的给删了,需要注意的是,这芯片C指令51单片机有那么一点点区别,PWM输出或者做那种进入低功耗的案子,都一定要 ...
- 九齐单片机---官方Example_Code
看到似乎很多人在下载九齐IDE的时候没有把Example_Code也一起下载,也有的人下载了不知道在哪找,我这里把官方的example code分享出来,需要的可以自取,链接失效的话评论区提醒一下. ...
- NY8A051F 6 I/O 8-bit EPROM-Based MCU 台湾九齐单片机
NY8A051F 功能简介 NY8A051F 可以说是台湾九齐的人气王,有硬件PWM,有LVD,有38K红外载波,有各种模式 NY8A051F 宽广的工作电压: NY8A051F 2.0V ~ 5.5 ...
- NY8A050D 6 I/O 8-bit EPROM-Based MCU 台湾九齐单片机
NY8A050D 功能简介 NY8A050D性价比之王,可以说目前市面最便宜的国产单片机之一,有23-6有SOP-8 ,0.5K内存,低端产品首选! NY8A050D 宽广的工作电压: ...
最新文章
- Jupyter Notebook 基本使用
- 分割字符串_[话俾你知]Python使用正则处理字符串技巧(分割、替换)
- c++Primer再学习-练习Todo
- IE下a标签会触发window.onbeforeunload的问题
- mysql 卸载批处理_MYSQL 注册启动 及 停用卸载 批处理脚本 (补)
- php调用sql数据库代码怎么写,PHP读取SQL文件并导入数据库(示例)
- 最长公共子上升序列(信息学奥赛一本通-T1306)
- skiplist 跳表(2)-----细心学习
- IDEA 在头注解上添加用户名称和时间
- 推荐系统经典模型 Wide Deep 论文剖析
- Python单元测试框架——unittest
- php代码审计_代码审计|PHP反序列化初识
- 10、网友问答之串口字节方式传递单精度数--------labview宝典
- windows10便签在哪,windows电脑版便签工具在哪里打开
- Win10电脑怎么取消开机密码?
- springboot+vue+nodejs多用户网上图书商城系统-含卖家功能java
- 计算机应用二级客观题,计算机二级客观题
- 让VMWare拥有Intel千兆网卡
- 一键解锁,2022阿里顶会创新技术前沿进展
- 【计算机毕业设计】269购物商城网站的设计与实现