全国电子大赛模拟路灯控制系统(5)

2019-03-28 13:47

led_output(tmp);

// led_output((uint8 *)leds_gd); // num=1 } else {

// num=0; P2_0=0; //显示时间,如

“12:1”显示为:1201

i = tmr_sec / 60; //分 k = tmr_sec % 60; //秒 tmp[0] = (i / 10) % 10; //分 - 十位 tmp[1] = i % 10; //分 - 个位 tmp[2] = k / 10; //秒 - 十位 tmp[3] = k % 10; //秒 - 个位 led_output(tmp); //显示当前时间:分 + 秒 }

if (iscr != 0) { //自动换屏 if (expend16u(scr_auto_tmr, tmr_ms) >=

_SCR_AUTOTIME)

{ //自动换屏时间到,

切换页面

if (iscr == 1) iscr = 2; else iscr = 1; scr_auto_tmr = tmr_ms; //自动页面切换计

时器更新

} }

// if(ikb==0&flag!=0) ikb=8;

//下面为当前页面下,对按键状态的处理 switch (ikb) { case EKB_OK: //切换键 - 切换页面

到“时间设置”

case EKB_ADD: //加键 - 切换页面到

“时间设置”

case EKB_SUB: //减键 - 切换页面到

21

“时间设置”

scr_cur = 1; break; case EKB_MODE: //显示模式切换键

- “时间”和“1234”切换

//显示模式切换 if (iscr != 0) iscr = 0; else iscr = 1; //模式切换后,自动页面切换计时器更新 scr_auto_tmr = tmr_ms; break; } }

/*****************************************************

****************************************************

** 函数名称 : scr_setting

** 输 入 : 按键状态,是否初始化页面[1 - 初始化] ** 输 出 : 无

** 功能描述 : 时间设置模式显示模式的页面程序

******************************************************

****************************************************/

void scr_setting(uint8 ikb, uint8 bfresh) {

static uint16 scr_flash_tmr = 0; //闪烁显示计时器(用于焦

点闪烁计时)

static uint8 scr_flash_status = 0; //闪烁状态【0 - 显示焦点;

1 - 不显示焦点】

static uint8 scr_focus = 0; //操作的焦点[0 - 3 -- 表示

第一个到第四个led段码管]

static uint16 tmr_backup; //修改的时间参数临时缓存

uint8 tmp[4],tmp2[4]; // int8 n;

if (bfresh) { //屏幕切换进来时初始

化内容

//初始化闪烁计时器及闪烁状态 scr_flash_tmr = tmr_ms - (1000 -

_SCR_FLASH_HIDETIME - 100);

scr_flash_status = 0;

22

为:隐藏

//操作的焦点初始化 scr_focus = 0; //修改值初值取当前时间值 tmr_backup = tmr_sec; }

tmp2[0] = tmr_backup / 60; tmp2[1] = tmr_backup % 60;

tmp[0] = (tmp2[0] / 10) % 10; tmp[1] = tmp2[0] % 10; tmp[2] = tmp2[1] / 10; tmp[3] = tmp2[1] % 10; tmp2[0] = tmp[0];

//分 //秒

//分 - 十位 //分 - 个位 //秒 - 十位 //秒 - 个位

//tmp2 在数字修改时

tmp2[1] = tmp[1];

tmp2[2] = tmp[2]; tmp2[3] = tmp[3];

//确保焦点在有效范围内:0 - 3 if (scr_focus >= 4) scr_focus = 0;

//将闪烁时处于“隐藏”状态的数去掉 if (scr_flash_status == 1) { //“隐藏”对应的数位 tmp[scr_focus] = _LED_KC_BLANK; }

led_output(tmp); //更新闪烁状态值

if (scr_flash_status == 1) { //当前闪烁状态

tmr_ms)

>=

if (expend16u(scr_flash_tmr,

_SCR_FLASH_HIDETIME)

{

到,切换成“显示”

scr_flash_status = 0; scr_flash_tmr = tmr_ms;

} } else {

//“隐藏”时间

//更新闪烁计时

//当前闪烁状态

23

为:显示

if (expend16u(scr_flash_tmr, tmr_ms) >= (1000 -

_SCR_FLASH_HIDETIME))

{ //“隐藏”时间

到,切换成“显示”

scr_flash_status = 1; scr_flash_tmr = tmr_ms; //更新闪烁计时

} }

//下面为当前页面下,对按键状态的处理 switch (ikb) { case EKB_OK: //切换/确认键 - 从数

字高位逐个移动修改的焦点,然后保存修改值后退出页面,返回“时间”页面

//移动焦点:从 分钟的十位 到 秒的个位 scr_focus ++; if (scr_focus >= 4) { //所有数位都修改后,退

出该页面,切换到“时间”页面

tmr_sec = tmr_backup; //保存修改后的时间值 scr_cur = 0; //切换到“时间”页面 } break; case EKB_ADD: //加键 - 将焦点数位

加 1

case EKB_SUB: //减键 - 将焦点数位

减 1

if (ikb == EKB_ADD) { if (scr_focus == 2) { //scr_focus == 2,修

改 秒的十位,进制为 6

tmp2[scr_focus] = (tmp2[scr_focus] + 1) % 6; } else { //分的十位、个位

及 秒的个位,进制为 10

tmp2[scr_focus] = (tmp2[scr_focus] + 1) %

10;

}

24

} else { if (scr_focus == 2) { //scr_focus == 2,修

改 秒的十位,进制为 6

if (tmp2[scr_focus] == 0) tmp2[scr_focus] = 5; else tmp2[scr_focus]--; } else { //分的十位、个位

及 秒的个位,进制为 10

if (tmp2[scr_focus] == 0) tmp2[scr_focus] = 9; else tmp2[scr_focus] --; } } //将修改后的各个数位组合成新的修改值 tmr_backup = (((uint16)((tmp2[0] * 10) + tmp2[1])) *

60) + (uint16)((tmp2[2] * 10) + tmp2[3]);

break; case EKB_MODE: //显示模式切换键

- 直接切换到“时间”页面

scr_cur = 0; break; } }

//--------------------------------------------------------------------------------------------------------//

/*****************************************************

****************************************************

** 函数名称 : main ** 输 入 : 无 ** 输 出 : 无

** 功能描述 : 主程序入口

******************************************************

****************************************************/

uint8 kb_getstatus2(void) {

25


全国电子大赛模拟路灯控制系统(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:梁赛 城市轨道交通概念、站务员、城市轨道交通安全管理 教学计划

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: