云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 51开发板使用手册 - 图文

51开发板使用手册 - 图文

  • 62 次阅读
  • 3 次下载
  • 2025/5/23 6:23:37

AT89S5X Demo Board User’s Manual Owen Studio break;

case 0x0b: min++; /*按B键:调整时钟分值*/

ModifyTime();

break ;

case 0x0c: hour++; /*按C键:调整时钟时值*/ ModifyTime(); break;

case 0x0d: if(musicKeyFlag==1) /*按D键:开始/停止音乐自动循环播放*/ { s_musicCounter=1; musicAutoFlag=1; musicKeyFlag=~musicKeyFlag; } else { s_musicCounter=10; musicAutoFlag=0; musicKeyFlag=~musicKeyFlag; } s_tableCounter=0x00; break;

case 0x0e: if(LEDKeyFlag==1) /*按*键:开始/停止流水灯自动演示*/ {

AutoShow();

LEDKeyFlag=~LEDKeyFlag; } else {

StopAutoShow(); LEDKeyFlag=~LEDKeyFlag; } break;

case 0x0f: if(++LEDFlag>5) /*按#键:流水灯方案循环切换*/ { LEDFlag=1; }

break; default: break; } }

/********************************************************************/ void LEDHandle(void) /*流水灯方案选择*/ {

switch(LEDFlag) /*判断该演示的流水灯方案*/ {

- 28 -

AT89S5X Demo Board User’s Manual Owen Studio case 0x01: DropDown(); break; /*水滴方案*/ case 0x02: CircleFlash(); break; /*环扫方案*/

case 0x03: GradualFlash(); break; /*渐明渐暗方案*/ case 0x04: SlowFlash(); break; /*慢闪方案*/ case 0x05: FastFlash(); break; /*快闪方案*/ } }

/********************************************************************/ void AutoShow(void) /*开始流水灯自动循环演示*/ {

LEDFlag=1;

LEDAutoFlag=1; }

/********************************************************************/ void StopAutoShow(void) /*停止流水灯自动循环演示*/ {

LEDAutoFlag=0; }

/********************************************************************/ void DropDown(void) /*水滴方案*/ {

static uchar s_dropdownCounter=0,s_dropdown_i=7,s_dropdown_OverCounter; uchar rest;

if(LEDCycle100msFlag==1) /*判断100ms是否到*/ {

LEDCycle100msFlag=0; rest=s_dropdownCounter%8;

P2=~(0x01<>(7-s_dropdown_i)); /*使水滴流到某个灯并且*/

/*让流到底的灯常亮*/

if(s_dropdownCounter>=(8-s_dropdown_i)*7) /*判断一个水滴流程是否完成*/ {

s_dropdownCounter+=8-s_dropdown_i; /*每流完一个流程下一个水滴的*/ s_dropdown_i--; /*流程就要相应减少一个灯*/ if(s_dropdown_i==0) /*整个水滴流程完了吗*/ { s_dropdown_i=7; s_dropdownCounter=0; if(++s_dropdown_OverCounter>=1) /*一个完整水滴流程完了之后*/

{ /*如果自动演示功能打开则跳到下一方案*/

s_dropdown_OverCounter=0; if(LEDAutoFlag==1) { LEDFlag++; }

- 29 -

AT89S5X Demo Board User’s Manual Owen Studio

} }

} else {

s_dropdownCounter++; } }

}

/********************************************************************/ void GradualFlash(void) /*渐明渐暗方案*/ {

static uchar s_gradualFlash_i=10,s_flashCounter,s_gradualFlash_OverCounter; static bit s_gradualFlash_i_Flag=0;

if(LEDCycle500usFlag==1) /*判断500us是否到*/ {

LEDCycle500usFlag=0;

if(((++s_flashCounter))!=0) /*PWM周期为10*500us=5ms, 判断其到否*/ {

if((s_flashCounter)

P2=0x00;

}

}

else /*PWM周期到了*/ { P2=0xff; if((s_flashCounter/10)>=10) /*改变PWM占空比前先判断延时10*5ms*/

{ /*=50ms到否, 没到在此周期内占空比保持不变*/ s_flashCounter=0;

if(s_gradualFlash_i_Flag==0) /*需要渐明则调高占空比*/

{

s_gradualFlash_i--;

} else /*需要渐暗则调低占空比*/ { s_gradualFlash_i++;

}

if(s_gradualFlash_i==0 || s_gradualFlash_i>=10)

{ /*如果渐明或渐暗完毕则交换*/ s_gradualFlash_i_Flag=~s_gradualFlash_i_Flag;

- 30 -

AT89S5X Demo Board User’s Manual Owen Studio

if(++s_gradualFlash_OverCounter>=6) /*渐明渐暗6/2=3个周期后*/

{ /*如果自动演示功能打开则跳到下一方案*/ s_gradualFlash_OverCounter=0; if(LEDAutoFlag==1) {

LEDFlag++; } } } } } }

}

/********************************************************************/ void CircleFlash(void) /*环扫方案*/ {

static uchar s_circleFlashCounter,s_circle_OverCounter;

if(LEDCycle100msFlag==1) /*判断100ms是否到*/ {

LEDCycle100msFlag=0;

P2=~(0x01<=8) /*8个灯都亮过以后再重新开始*/ {

s_circleFlashCounter=0; if(++s_circle_OverCounter>=5) /*循环5遍后如果自动演示*/

{ /*功能打开则跳到下一方案*/ s_circle_OverCounter=0;

if(LEDAutoFlag==1) {

LEDFlag++; }

} } } }

/********************************************************************/ void SlowFlash(void) /*慢闪方案*/ {

static uchar s_slowFlashCounter;

if(LEDCycle100msFlag==1) /*判断100ms是否到*/ {

LEDCycle100msFlag=0;

if((++s_slowFlashCounter%5)==0) /*判断5*100ms=500ms是否到*/ { P2=~P2; /*每500ms灯亮灭改变一次*/

- 31 -

搜索更多关于: 51开发板使用手册 - 图文 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

AT89S5X Demo Board User’s Manual Owen Studio break; case 0x0b: min++; /*按B键:调整时钟分值*/ ModifyTime(); break ; case 0x0c: hour++; /*按C键:调整时钟时值*/ ModifyTime(); break; case 0x0d: if

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com