单片机解密STC12C5A60S2单片机
单片机解密#include <STC12C5A60S2.H> //此文件中定义了单片机的一些特殊功能寄存器
单片机解密#define uchar unsigned char //宏定义无符号字符形数据类型进行声明定义 定义名称uchar 所占位数8位 范围0~255
单片机解密#define uint unsigned int //宏定义无符号整形数据类型进行声明定义 定义名称uint 所占位数16位 范围0~65535
#include "Delay.h" //全局通用延时头文件
#include "LCD_ks0108ZK.h" //屏字库 适合ks0108控制器的12864屏/19264屏
#include "LCD_ks0108.h" //屏驱动 适合ks0108控制器的12864屏/19264屏
#include "ds3231.h" //ds3231时钟芯片驱动
#include "rqzh.h" //日期转换
#include "dht11.h" //DHT11湿度温度驱动
#include "STC12C5A60S2_EEPROM.h" //STC12C5A60S2内部存储驱动
/*按键与按键灯*/
sbit anjian1LED=P2^7; //按键灯1
sbit anjian1=P2^6; //台灯/设置按键
sbit anjian2LED=P2^5; //按键灯2
sbit anjian2=P2^4; //加按键
sbit anjian3LED=P2^3; //按键灯3
sbit anjian3=P2^2; //减按键
sbit anjian4LED=P2^1; //按键灯4
sbit anjian4=P2^0; //提出/关闭响铃按键
sbit fmq=P3^2; //有源蜂鸣器
sbit beiguangLED=P3^3; //屏幕背光
bit taidengLED; //台灯开关变量 =1开灯 =0关灯
bit anjian1sf,anjian2_3sf,anjian4sf; //用于按键释放标记
bit qingpingsf; //用于清屏释放标记
bit fb_shizwz,fb_nzwz,fb_szwz; //功能菜单页面下的"时钟""闹钟""设置"文字反白标记 =1反白 =0取消反白
bit fbs_nian,fbs_yue,fbs_ri,fbs_shi,fbs_fen,fbs_miao; //设置时钟时 年月日时分秒反白 =1反白 =0取消反白
bit nz1_kg,nz2_kg,nz1_xl,nz2_xl; //闹钟1 闹钟2 开关变量 =1闹钟开 =0闹钟关 闹钟1 闹钟2 响铃变量 =1响铃 =0不响铃
bit fb_nz1_shi,fb_nz1_fen,fb_nz1_kg,fb_nz2_shi,fb_nz2_fen,fb_nz2_kg; //设置闹钟时分开关反白 =1反白 =0取消反白
bit xianshiyemian; //显示页面变量 =0时钟页面 =1功能一级菜单页面
bit zdbs_kg,fb_zdbs_kg,zdbs; //整点报时开关 =1开 =0关,反白整点报时开关 =1反白 =0取消反白
bit fb_zdbs_qd,fb_zdbs_zd; //整点报时 起点止点反白 =1反白 =0取消反白
bit fb_bgsc; //背光时长反白 =1反白 =0取消反白
bit jdms,fb_jdms; //键灯模式变量 键灯模式反白 =1反白 =0取消反白
bit fb_shizhongzt; //时钟字体变量反白=1反白 =0取消反白
bit anjiansy_kg,fb_anjiansy; //按键声音开关 =1开 =0关 按键声音反白标志 =1反白 =0取消反白 按键声音释放
uchar LED_mun; //台灯调光变量
uchar shizhongzt; //时钟字体变量
uchar shezhixx; //设置选项变量
uchar zdbs_qd,zdbs_zd; //整点报时允许范围 起点止点变量
uchar shezhiym; //二级菜单页面 =0钟时设置页面 =1闹钟设置页面 =2设置页面
uchar anjianjsbl; //按键计数变量 实现长按短按功能
uchar gncdym; //功能菜单页面选项变量
uchar shizhongsz; //时钟设置选项变量
uchar nz1_shi,nz1_fen,nz2_shi,nz2_fen,nz1_fen_Stop,nz2_fen_Stop; //闹钟1 闹钟2 变量
uchar naozhongsz; //闹钟设置选项变量
uchar pingbgjs,miaojs,miaomun,bgsc; //用于屏背光自动控制定时计数标志
uchar naozhonglx,anjians; //闹钟铃响计数变量 按键计数变量
/*按键功能函数*/
void anjiangn()
{
/*按键1台灯与功能按键 */
if(anjian1==0) //判断按键是否按下
{
if(jdms==1)anjian1LED=0; //按键灯1单点模式
if(xianshiyemian==0) //以下操作在时钟页面有效
{
if(anjianjsbl<=100)anjianjsbl++; //给按键计数变量设置最大范围值 范围内anjianjsbl++ 否则停止anjianjsbl++
if(anjianjsbl>=20) //长按约大于3秒
{
if(qingpingsf==0)ClearDisplay(); //LCD清屏
xianshiyemian=1; //进入功能菜单页面
qingpingsf=1; //释放LCD清屏 防止一直清屏
}
}
else //xianshiyemian=1已进入功能菜单页面 以下操作在功能菜单页面有效
{
if(anjian1sf==0) //给与限制条件 每次操作只允许运行一次
{
if(shezhiym==0) //功能菜单页面
{
switch(gncdym) //功能菜单页面选项变量
{
case 1:if(qingpingsf==0)ClearDisplay();shezhiym=1;qingpingsf=1;break; //进入二级菜单时钟设置页面
case 2:if(qingpingsf==0)ClearDisplay();shezhiym=2;qingpingsf=1;break; //进入二级菜单闹钟设置页面
case 3:if(qingpingsf==0)ClearDisplay();shezhiym=3;qingpingsf=1;break; //进入二级菜单设置页面
}
}

芯片解密