标题:
自制的一个简单菜单系统 加了温度 万年历 12864的 打有注释 适合初学者使用
[打印本页]
作者:
兰小方
时间:
2016-12-15 13:12
标题:
自制的一个简单菜单系统 加了温度 万年历 12864的 打有注释 适合初学者使用
自制的一个简单菜单系统 加了温度 万年历 12864的 打有注释 适合初学者使用 串口通信
0.png
(63.76 KB, 下载次数: 48)
下载附件
2017-1-6 19:21 上传
完整的12864菜单单片机源码下载:
12864菜单.zip
(65.1 KB, 下载次数: 42)
2016-12-15 13:10 上传
点击文件名下载附件
下载积分: 黑币 -5
程序的主要部分预览:
/*------------------------------------
名称:菜单处理模块
编写:YuMin_Dong
时间:2013.01.24
------------------------------------*/
#ifndef _PROCESS_H_
#define _PROCESS_H_
//按键
sbit KEY_PgDn=P3^0;
sbit KEY_PgUp=P3^1;
sbit KEY_Enter=P3^2;
sbit KEY_Esc=P3^3;
bit Menu1,Menu2,Menu3,Menu4,Menu5,Menu6,Enter_Menu,Menu0;
void MainMenu_Pro()
{
if(curr!=currold) //光标位置变化,则更新显示 按键按下去 字符串就变更位置了 CURR也就变了
{
DisplayUpdata();
currold=curr; //把CURR的值赋给CURROLD 判断下加一个一
}
if(!KEY_PgUp)
{
DelayMs(10);
if(!KEY_PgUp)
{
while(!KEY_PgUp);
{
if(curr<sizeof(MainMenu)/sizeof(MainMenu[0])-1) //sizeof 求字节数
//判断数组中数值个数
{ curr++; }
}
}
}
else
if(!KEY_PgDn)
{
DelayMs(10);
if(!KEY_PgDn)
{
while(!KEY_PgDn);
{
if(curr>0)
{ curr--; }
}
}
}
else if(!KEY_Enter)
{
DelayMs(10);
if(!KEY_Enter)
{
while(!KEY_Enter);
switch(curr)
{
// case 0: Menu0=1;Enter_Menu=1;break;
case 1: Menu1=1;Enter_Menu=1;ClrScreen();break;
case 2: Menu2=1;Enter_Menu=1;ClrScreen();break;
case 3: Menu3=1;Enter_Menu=1;ClrScreen();break;
// case 4: Menu4=1;Enter_Menu=1;break;
// case 5: Menu5=1;Enter_Menu=1;break;
// case 6: FanHui1=1;Menu_Flag=0;guide=0;
// Write_Cmd(0x01);break; //轮询到有enter键,当guide指向返回时候直接去掉FanHui1控制的父菜单循环
default:return;
}
}
}
}
/*************************************************************
按键返回函数
*************************************************************/
void ESC()
{
if(!KEY_Esc)
{
DelayMs(10);
while(!KEY_Esc);
Menu1=0;
Menu2=0;
Menu3=0;
Enter_Menu=0;
DisplayUpdata();
}
}
/*------------------------------------
Menu1设置时间子菜单处理
------------------------------------*/
void Menu1_Pro()
{
datapros(Ds18b20ReadTemp());
if(!KEY_Esc)
{
ESC();
}
}
/*------------------------------------
Menu2设置时间子菜单处理
------------------------------------*/
void Menu2_Pro()
{
uchar week;
week=(TIME[5]&0x0f);
Ds1302ReadTime();
LCD_PutString(0,1,"北京时间:");
Write_Cmd(0x90+0);
Write_Data((TIME[2]/16)+0x30);
Write_Data((TIME[2]&0x0f)+0x30);
LCD_PutString(1,2,"时");
Write_Cmd(0x90+2);
Write_Data('0'+(TIME[1]/16));
Write_Data('0'+(TIME[1]&0x0f));
LCD_PutString(3,2,"分");
Write_Cmd(0x90+4);
Write_Data('0'+(TIME[0]/16));
Write_Data('0'+(TIME[0]&0x0f));
LCD_PutString(5,2,"秒");
Write_Cmd(0x88+0);
Write_Data('2');
Write_Data('0');
Write_Data((TIME[6]/16)+0x30);
Write_Data((TIME[6]&0x0f)+0x30);
LCD_PutString(2,3,"年");
Write_Data((TIME[4]/16)+0x30);
Write_Data((TIME[4]&0x0f)+0x30);
LCD_PutString(4,3,"月");
Write_Data((TIME[3]/16)+0x30);
Write_Data((TIME[3]&0x0f)+0x30);
LCD_PutString(6,3,"日");
// Write_Cmd(0x98+2);
// Write_Data((TIME[5]/16)+0x30);
// Write_Data((TIME[5]&0x0f)+0x30);
LCD_PutString(0,4,"星期");
switch(week)
{
case 1:LCD_PutString(2,4,"一");break;
case 2:LCD_PutString(2,4,"二");break;
case 3:LCD_PutString(2,4,"叁");break;
case 4:LCD_PutString(2,4,"四");break;
case 5:LCD_PutString(2,4,"五");break;
case 6:LCD_PutString(2,4,"六");break;
case 7:LCD_PutString(2,4,"天");break;
}
if(!KEY_Esc)
{
ESC();
}
}
/*------------------------------------
Menu3设置时间子菜单处理
------------------------------------*/
void Menu3_Pro()
{
Read_AD_Data(0x94);
if(!KEY_Esc)
{
ESC();
}
}
#endif
复制代码
作者:
admin
时间:
2017-1-6 19:20
51黑有你更精彩!!!
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1