通过矩阵键盘,用PWM来实现呼吸灯的效果
来源:互联网 发布:淘宝店铺信誉度怎么提升的 编辑:程序博客网 时间:2024/04/28 04:55
任务如标题,但是这个程序我现在并没有写对,先发上来,等到以后自己能找到问题了在进行修改
#include <hidef.h> /* common defines and macros */#include "derivative.h" /* derivative-specific definitions */ #define BUS_CLOCK 40000000 #define OSC_CLOCK 20000000 void INIT_PLL(void){ CLKSEL=0; SYNR=0xc0|0x04; REFDV=0x80|0x01; POSTDIV=0x00; PLLCTL_PLLON=1; //打开锁相环 _asm(nop); _asm(nop); while(!(CRGFLG_LOCK==1)); //判断PLL是否稳定 CLKSEL_PLLSEL=1;}void init_pwm(void){ PWMCTL_CON01=1; //将0 1通道级联 PWMPOL_PPOL1=1; //设置1通道在周期开始时输出高电平 PWMCAE=0; //设置其脉冲对齐方式为左对齐 PWMPRCLK=0x44; //将时钟A B预分频为总线时钟的1/16 PWMSCLA=25; //时钟SA=时钟A/50 PWMCLK=0x02; //选择时钟SA为时钟源 PWMPER01=1400; //0 1通道的周期为1400*时钟周期 PWMDTY01=0; //0 1通道占空比为100 PWME_PWME1=1; //使能PWM}void delay(void){ unsigned int i,j; for(i=0;i<3;i++)for(j=0;j<3;j++);} unsigned char keyboard() { unsigned char key=0; unsigned char temp3,temp2; unsigned int a,b,c; DDRB=0x00; DDRT=0xff; PTT=0XFF; temp3=PTT&0xff; if(temp3!=0xff) { delay(); temp3=PTT&0xff; if(temp3!=0xff) { temp3=PTT&0xff; switch(temp3) { case 0xef: a=1;break; case 0xdf: a=2;break; case 0xbf: a=3;break; case 0x7f: a=4;break; default: break; } } } DDRB=0xff; DDRT=0x00; PORTB=0XFF; temp2=PORTB&0xff; if(temp2!=0xff) { delay(); temp2=PORTB&0xff; if(temp2!=0xff) { temp2=PORTB&0xff; switch(temp2) { case 0xfe: b=1;break; case 0xfd: b=2;break; case 0xfb: b=3;break; case 0xf7: b=4;break; default: break; } } } c=a*10+b; switch(c){ case 11: key=1;break; case 12: key=2;break; case 13: key=3;break; case 14: key=4;break; case 21: key=5;break; case 22: key=6;break; case 23: key=7;break; case 24: key=8;break; case 31: key=9;break; case 32: key=10;break; case 33: key=11;break; case 34: key=12;break; case 41: key=13;break; case 42: key=14;break; case 43: key=15;break; case 44: key=16;break; default: break; } return key; } void main(void) { unsigned char key; // DisableInterrupts; DDRB=0XFF; PORTB=0XFF; INIT_PLL(); init_pwm(); keyboard();//EnableInterrupts;for(;;){ if (key==1) { break; } //_FEED_COP(); break; } for(;;) { delay(); for(PWMDTY01=0;PWMDTY01<=1960;) { PWMDTY01=PWMDTY01+20; //PWMDTY01+=20; delay(); } for(PWMDTY01=1960;PWMDTY01>0;) { PWMDTY01=PWMDTY01-20; //PWMDTY01-=20; delay(); }} }
0 0
- 通过矩阵键盘,用PWM来实现呼吸灯的效果
- STM8S003F3通过PWM波实现三基色呼吸灯
- STM8S003F3通过PWM波实现三基色呼吸灯
- verilog PWM实现呼吸灯
- 通过ValueAnimator实现呼吸灯效果
- 基于PWM的呼吸灯
- 用PWM实现多个呼吸灯间歇发光
- 基于stm32的pwm呼吸灯
- 【PIC32MZ】PWM呼吸灯
- PWM输出,呼吸灯
- STM32使用PWM控制LED呼吸灯效果
- 呼吸灯的实现
- timer实现的呼吸灯效果——初步
- STM8S PWM 应用 呼吸灯
- PWM --呼吸灯
- 51单片机PWM的控制(呼吸灯)
- STM32F407ZET6 关于用PWM(做出呼吸灯)详解
- Android呼吸灯效果两种实现
- 数字电视机顶盒的工作原理
- 表格标记<table>属性之边框样式设置-----frame、rules
- shadesocks 代理神器
- 32、实例 jQuery选择器之基本选择器
- Linux IIC驱动框架理解
- 通过矩阵键盘,用PWM来实现呼吸灯的效果
- 智能手机的14种传感器
- 33、实例 jQuery选择器之层级选择器之关系选择器
- 依赖倒转原则
- java 短信猫发送短信的方法
- Robberies 01背包
- Android App集成支付宝
- 移动互联下的基础架构实践
- Unity3D的网络游戏中实现资源动态加载