时间 温度控制 12864液晶c51单片机 多重菜单嵌入 系统技术.docx
- 文档编号:23729597
- 上传时间:2023-05-20
- 格式:DOCX
- 页数:141
- 大小:50.94KB
时间 温度控制 12864液晶c51单片机 多重菜单嵌入 系统技术.docx
《时间 温度控制 12864液晶c51单片机 多重菜单嵌入 系统技术.docx》由会员分享,可在线阅读,更多相关《时间 温度控制 12864液晶c51单片机 多重菜单嵌入 系统技术.docx(141页珍藏版)》请在冰豆网上搜索。
时间温度控制12864液晶c51单片机多重菜单嵌入系统技术
/**************************************************************************************
程序名称:
时间温度控制系统(128*64LCD+ds1302+ds18b20)
主要功能:
温度计时钟闹铃密码锁篮球器计算器温度控制键盘锁系统设置等。
主要说明:
程序全部定义在一个C文件中。
作者:
LiJH
时间:
2008.6.20
版本:
LiJH-V1.0
**************************************************************************************/
本图文菜单系统技术交流
网址:
21单片机开发实验室
QQ:
978710555
**************************************************************************************/
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
#definetime_count0x3cb0
#defineclose1
#defineopen0
/*============状态控制及温感器总线定义==============*/
#defineb20_ioP0_0//DS18B20总线
#definepw_ocP3_7//密码锁开启控制(黄灯)
#definebuzzerP0_5//蜂鸣器
#definelcd_blP0_6//背光控制口
#defineals_thP0_4//上限温度警报(红灯)
#defineals_tlP3_6//下限温度警报(绿灯)
#definekeyboardP1//键盘数据口
/*=================ST7920LCD定义===================*/
#definecomm0//lcd指令
#definedat1//lcd数据
#definelcd_rstP0_7//lcd复位
#definelcd_eP3_0//lcd使能
#definelcd_rwP3_1//lcd读写
#definelcd_rsP3_2//lcd数据命令
#definebusyP2_7//忙碌位
#definelcd_dataP2//lcd(8bit)数据传输
/*===============DS1302寄存器地址定义===============*/
#defined02_rstP0_1//DS1302使能
#defined02_dataP0_2//DS1302数据线
#defined02_sclkP0_3//DS1302脉冲
#defined02_wrc0x8e//1302读写RAM控制(1允许0禁止)
#defined02_year0x8c//年
#defined02_weeks0x8a//星期
#defined02_month0x88//月
#defined02_day0x86//日
#defined02_hour0x84//时
#defined02_minute0x82//分
#defined02_second0x80//秒
#defined02_signs0xc0//系统状态(记录设置标记)
#defined02_passw0xc2//密码寄存器首位(有3位下位地址加2,初始值为:
741456)
#defined02_alm0xc8//闹铃时间小时位(下位为分钟位加2)
#defined02_temp0xcc//温度上限警报(有两位下位位下限加2)
#defined02_initsi0xd4//1302初始化标记(为0xb4时,说明已经初始化)
#defineret_ds1302()d02_rst=0;d02_sclk=0;d02_rst=1//1302读写复位
#defineend_ds1302()d02_sclk=1;d02_rst=0//1302读写结束
/*===============================全局变量定义==================================*/
typedefstruct//定义时间类型
{
ucharhour;
ucharminute;
ucharsecond;
}time;
typedefstruct//定义日期类型
{
ucharyear;
ucharmonth;
ucharday;
ucharweek;
}date;
typedefunion//定义温度类型
{
inttemp_data;
uchart_data[2];
}trdata;
trdatabdatatemp;//温度警报值暂存
dateidatatoday={'8',1,1,1};//日期暂存
timeidatanow={0x12,0,0},save_time={0x12,0,0};
//时间暂存(now是读出时间暂存save_time上一时间暂存)
ucharidatatime_tick=20,time_tick1=20,alarm_time[2],als_temp[2],
//T0中断数,T1中断数,闹铃时间,警报温度
bl_delay=15,temp_delay=5,opera[2][12],resu[12],
//背光时间,温度更新时间,计算器数据寄存,结果寄存
i,j,save1,temp_min=0;
//计算器i/j下标,中间暂存,温度更新(分)
ucharbdatasigns=0;//系统标记寄存器
sbitbl1=signs^7;//bl1,bl0背光选择位(00延时,01常开,10关闭)
sbitbl0=signs^6;
sbitdi1=signs^5;//di1,di0显示模式(00模式1,01模式2,10模式3)
sbitdi0=signs^4;
sbitmeu=signs^3;//菜单显示方式(0图片,1文字)
sbitkeb=signs^2;//键盘锁(0无锁,1加锁)
sbitalm=signs^1;//闹钟启动位(0关闭,1开启)
sbitals=signs^0;//报警启动位(0启动,1关闭)
uintbdatarun_signs=0;//运行标记寄存器
sbitds18b20=run_signs^0;//温感器存在标记(0不存在,1存在)
sbittemp_pn=run_signs^1;//温度正负号标记(0正,1负)
sbittemprun=run_signs^2;//温感器运行标记(0否,1启动)
sbitnba_tim=run_signs^3;//篮球计时器标记(0关闭,1启动)
sbitadju_si=run_signs^4;//数字更改连续标记(1连续)
sbitcal_del=run_signs^5;//计算器显示点标记(0没有显示)
sbitcal_run=run_signs^6;//计算完毕标记(1有效)
sbitoth_run=run_signs^7;//其他标记
sbitalm_run=run_signs^8;//闹钟时间到达标记(1有效)
sbitdis_sig=run_signs^9;//显示时间标记(1有效)
sbitlock_op=run_signs^10;//关锁时间到标记(1有效)
sbitb20time=run_signs^11;//温感器重新读温度标记(1有效)
sbitt0_isr=run_signs^12;//TO中断标记(1有效(1s)
sbitthl_als=run_signs^13;//温度警报标记
sbitinit_d2=run_signs^14;//模式2初始显示
sbitbuzstop=run_signs^15;//蜂鸣器停止标记
/*===============================字体显示代码==================================*/
ucharcodeweeks[7][2]={"一","二","三","四","五","六","日"};//星期//图片中文
ucharcodemenu_cn[6][8]={"调整","工具","设置","保密","版本","退出"};
ucharcodemenu_cn_2[6][6]={"调整","工具","设置","保密","版本","退出"};//菜单文字
ucharcodeselected[2][16]={{"进入【】\x04"},{"设置【】\x10\x04"}};//选框
ucharcodesecrets_menu[4][6]={"开锁","更改","初始化","退出"};//保密菜单中文
ucharcodetool_menu[5][6]={"计算器","温度计","闹铃","篮球器","退出"};//工具菜单中文
ucharcodechar_num[10]={"0123456789"};//数字显示代码//每月天数
ucharcodedayofmonth[12]={0x31,0x28,0x31,0x30,0x31,0x30,0x31,0x31,0x30,0x31,0x30,0x31};
ucharcodekey_code[]={0xD7,0x7E,0x7D,0x7B,0xBE,0xBD,0xBB,0xDE,0xDD,0xDB,0xB7,0x77,0xEE,0xED,0xEB,0xE7};
ucharcodeksp[4]={0x7F,0xBF,0xDF,0xEF};//按键扫描代码
ucharcodetool_cal[4][2]={"+","-","*","/"};//运算符号
ucharcodealm_sign[2][2]={"关","开"};//闹铃开关
ucharcodeset_bl_dm[2][3][4]={{"30秒","常开","关闭"},{"模01","模02","模03"}};
ucharcodeset_mka[3][2][4]={{"图片","文字"},{"解锁","加锁"},{"开启","关闭"}};
ucharcodenba_oppo[8][2]={"红","白","蓝","绿","紫","灰","黄","黑"};
ucharcodeset_menu[6][4]={"背光","显示","菜单","键盘","警报","退出"};
ucharcodeversion[10][14]={//版本信息
{"清远职业技术学"},{"信息科技学院"},{"08届毕业设计"},
{"—05电子02班"},{"作者:
李锦华"},{"指导:
李祖明"},
{"版本:
LIJH-V1.0"},{"2008/06/19"},{"谢谢你的使用!
"},
{"(ok)\x10"}};
ucharcodetimer_tips[12][16]={//篮球器使用说明
{"使用方法:
"},{"(+)(-)与(*)(/)"},{"分别是两方的分数"},
{"加与减,(7)键回退"},{"一秒,(8)键24秒复"},{"位,(9)键暂停与开"},
{"始;暂停状态下:
"},{"按两次(OK)键可返"},{"回时钟模式-2界面"},
{",(OK)键返回程序"},{"界面,(./S)键两次"},{"退出程序.\x1f"}};
/*===============================操作导航代码==================================*/
typedefstruct//定义主菜单操作索引
{
ucharshaft_num;
ucharleft_num;
ucharright_num;
}menu_index;
typedefstruct//定义导航更改索引
{
ucharlnum;
ucharrnum;
}index;
menu_indexcodeindex_m[6]={{3,5,1},{4,0,2},{5,1,3},{0,2,4},{1,3,5},{2,4,0}};//菜单导航
indexcodeindex_t[6]={{4,1},{0,2},{1,3},{2,4},{3,0}};//工具导航
indexcodeindex_p[5]={{3,1},{0,2},{1,3},{2,0}};//保密导航
indexcodeindex_s[6]={{5,1},{0,2},{1,3},{2,4},{3,5},{4,0}};//设置导航
indexcodeindex_a[7]={{0x81,0x91},{0x83,0x91},{0x85,0x91},{0x89,0x81},
{0x8b,0x81},{0x8d,0x81},{0x8f,0x91}};//调整下的坐标
indexcodeindex_temp_set[3]={{0x8b,0x81},{0x8b,0x91},{0x8f,0x91}};//温度设定下的坐标
indexcodeindex_alm[3]={{0x8c,0x81},{0x8e,0x81},{0x8f,0x91}};//闹铃更改坐标
indexcodeindex_cal[3]={{0x86,0x90},{0x8e,0x80},{0x8e,0x90}};//计算器操作坐标
ucharcodeindex_nba[4]={0x93,0x97,0x8b,0x8f};//篮球器设置导航
/*=========================菜单图片(宽度x高度=32*24)=============================*/
ucharcodemenu_pic[6][96]={
{//调整
0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xFE,0x40,0x00,0x00,0x02,0x40,0x00,0x00,0x02,
0x40,0x00,0x00,0x82,0x47,0xFF,0xE1,0xC2,0x47,0xFF,0xF3,0xE2,0x47,0x38,0x68,0x02,
0x46,0xDF,0x68,0x82,0x46,0xDF,0x69,0xC2,0x46,0xDE,0xE8,0x82,0x46,0xDD,0xE8,0x02,
0x46,0xDD,0xE8,0x02,0x47,0x3D,0xE8,0x02,0x47,0xFF,0xE8,0x02,0x47,0xFF,0xE9,0xC2,
0x42,0x00,0x18,0x02,0x41,0xFF,0xF3,0xE2,0x40,0x00,0x01,0xC2,0x40,0x00,0x00,0x82,
0x40,0x00,0x00,0x02,0x40,0x00,0x00,0x02,0x7F,0xFF,0xFF,0xFE,0x00,0x00,0x00,0x00},
{//工具
0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xFE,0x40,0x00,0x00,0x02,0x40,0x00,0x03,0x82,
0x41,0xF0,0x07,0xC2,0x43,0xFF,0xCF,0xE2,0x47,0x3F,0xFE,0x02,0x47,0x3F,0xFE,0x02,
0x43,0xFF,0xCF,0xE2,0x41,0xF0,0x0F,0xC2,0x40,0x00,0x03,0x82,0x40,0x00,0x00,0x02,
0x40,0x00,0x03,0xC2,0x40,0x00,0x03,0xC2,0x41,0x80,0x01,0x82,0x43,0xFF,0xF3,0xC2,
0x47,0xFF,0xFF,0xE2,0x47,0xFF,0xFF,0xE2,0x43,0xFF,0xF3,0xC2,0x41,0x80,0x01,0x82,
0x40,0x00,0x01,0x82,0x40,0x00,0x00,0x02,0x7F,0xFF,0xFF,0xFE,0x00,0x00,0x00,0x00},
{//设置
0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xFE,0x40,0x00,0x00,0x02,0x43,0x18,0x00,0x02,
0x44,0xA4,0x0E,0x02,0x44,0xA4,0x1F,0x02,0x43,0x24,0x3F,0x02,0x40,0x00,0x7F,0x02,
0x40,0xF0,0xFC,0x02,0x43,0xF9,0xF0,0x02,0x43,0x03,0xE0,0x02,0x46,0x77,0x80,0x02,
0x46,0x7F,0x00,0x02,0x46,0x7E,0x00,0x02,0x46,0x7C,0x00,0x02,0x47,0x3D,0x00,0x02,
0x43,0x1D,0x81,0x22,0x43,0x81,0xB2,0x42,0x41,0xC3,0x4F,0xE2,0x40,0xFE,0x4A,0x42,
0x40,0x3C,0x32,0x42,0x40,0x00,0x00,0x02,0x7F,0xFF,0xFF,0xFE,0x00,0x00,0x00,0x00},
{//保密
0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xFE,0x40,0x00,0x00,0x02,0x40,0xFC,0x03,0x02,
0x41,0xFE,0x1F,0x02,0x43,0x87,0x03,0x82,0x43,0x03,0x03,0x02,0x43,0x03,0x03,0x02,
0x43,0x03,0x0F,0x02,0x43,0x03,0x03,0x02,0x43,0x03,0x03,0x02,0x47,0xFF,0x83,0x02,
0x47,0xFF,0x83,0x02,0x47,0xCF,0x83,0x02,0x47,0x87,0x83,0x02,0x47,0xCF,0x83,0x02,
0x47,0xCF,0x87,0x82,0x47,0xCF,0x8F,0xC2,0x47,0xCF,0x9C,0xE2,0x47,0xFF,0x8F,0xC2,
0x43,0xFF,0x07,0x82,0x40,0x00,0x00,0x02,0x7F,0xFF,0xFF,0xFE,0x00,0x00,0x00,0x00},
{//版本
0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xFE,0x40,0x00,0x00,0x02,0x40,0x00,0x00,0x02,
0x40,0x0F,0x00,0x62,0x40,0x1D,0x80,0xF2,0x40,0x38,0x41,0xF2,0x40,0x70,0x23,0xE2,
0x40,0xE2,0x17,0xC2,0x41,0xE4,0x4F,0x82,0x41,0xF0,0x9F,0x02,0x41,0x59,0x16,0x02,
0x42,0x4C,0x1D,0x02,0x42,0x46,0x20,0x82,0x42,0x47,0x00,0x42,0x44,0x43,0x80,0xC2,
0x44,0x44,0xC1,0xC2,0x44,0xC8,0x63,0x82,0x45,0x50,0x37,0x02,0x46,0x60,0x1E,0x02,
0x40,0x40,0x0C,0x02,0x40,0x00,0x00,0x02,0x7F,0xFF,0xFF,0xFE,0x00,0x00,0x00,0x00},
{//退出
0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xFE,0x40,0x00,0x00,0x02,0x40,0x40,0xFF,0xE2,
0x40,0x60,0x80,0x62,0x43,0xF0,0x80,0xA2,0x43,0xF0,0x81,0x22,0x40,0x60,0x82,0x22,
0x40,0x40,0x84,0x22,0x40,0x00,0x88,0x22,0x40,0x00,0x88,0x22,0x47,0xFF,0xF8,0x22,
0x47,0xFF,0xF8,0x22,0x46,0x2A,0x2A,0x22,0x46,0xE3,0x78,0x22,0x46,0x77,0x78,0x22,
0x46,0xE3,0x78,0x62,0x46,0x2A,0x38,0x82,0x47,0xFF,0xF9,0x02,0x47,0xFF,0xFA,0x02,
0x40,0x00,0x0C,0x02,0x40,0x00,0x00,0x02,0x7F,0xFF,0xFF,0xFE,0x00,0x00,0x00,0x00,}};
/*================显示模式2数字及温度符号图片(宽度x高度=16*32)=====================*/
ucharcodemode_2num[11][64]={
{//图片数字0
0x00,0x00,0x3F,0xFC,0x5F,0xFA,0x6F,0xF6,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,
0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x60,0x06,0x40,0x02,0x00,0x00,
0x40,0x02,0x60,0x06,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,
0x70,0x0E,0x70,0x0E,0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 时间 温度控制 12864液晶c51单片机 多重菜单嵌入 系统技术 温度 控制 12864 液晶 c51 单片机 多重 菜单 嵌入 系统 技术