高级会员
主题
帖子
积分1705
阅读权限30
注册时间2010-2-13
最后登录1970-1-1
在线时间 小时
|
本帖最后由 liwenjiefa 于 2011-11-8 15:12 编辑
T12疯狂控制器
/*;*******************************************************************************
;程序名称:main().
;功能 :主体涵数
;修改日期:2011.05.15
;*********************************************************************************/
void main(void)
{
uchar p;
BG_OFF; //关闭烙铁
T12read(); //读以前设置的EEPROM的温度数据
Init_1302(); //时钟芯片初始化
LCD_ST7565_INIT(); //LCD初始化,必须的。
LCM_PutPicture(0x0000); //显示QQ图片
DELAY_MS(3000); //显示停留
LCD_DisplayReserve_Driver=1; //反白显示
LCM_PutPicture(0x1A00); //显示白光控制器
DELAY_MS(3000); //显示停留
LCD_DisplayReserve_Driver=0; //不要反白
display_fill(0x00,0); //清屏全屏(送00)
Timer_init(); //定时器和中断的初始化
AUXR=0XC0; //加速度两个定时器,1T工作模式
/***********AUXR = 0x80;
1000 0000
|||| ||++-保留
|||| |+---低电压中断允许:0=禁止,1=允许,5V..3.7V,3V..2.4V以下
|||| +----SPI中断允许位:0=禁止,1=允许
|||+------ADC中断允许位:0=禁止,1=允许
||+-------串口模式0时时钟设定:0=传统1/12, 1=1/2 2分频;
|+--------定时器ct1时钟源设定:0=传统1/12,1=1:1不分频;
+---------定时器ct0时钟源设定:0=传统1/12,1=1:1不分频;
***************************************************************************/
// CMOD = 0x03; /* 内部时钟,Fosc/2, PCA计数溢出中断使能*/
/* 0000 0011 PCA 模式寄存器
|||| |||+--ECF...PCA计数溢出中断使能:ECF=1时,使能寄存器CCON CF位的
|||| ||| 中断。ECF=0时,禁止该功能。
|||| |++---CPS1,CPS0 选择PCA 时钟源输入(PCA计数脉冲选择)
|||| | 0 0 0,内部时钟,Fosc/12
|||| | 0 1 1,内部时钟,Fosc/2
|||| | 1 0 2,定时器0溢出,由于定时器0可以工作在1T方式,
|||| | 所以可以达到计一个时钟就溢出, 频率反而
|||| | 是最高的,可达到Fosc
|||| | 1 1 3,ECI/P3.4脚的外部时钟输入(最大速率=Fosc/2)
|+++-+-----保留
+----------CIDL...计数器阵列空闲控制:CIDL=0时,空闲模式下PCA计数器
继续工作。CIDL=1时,空闲模式下PCA计数器停止工作。 */
while(1)
{
if(menu==0||menu==1)
{
Get_NtcTemper(); //读取NTC热敏的温度
PlayingLCD_Time(); //时钟和调整显示
if(Luotie) //判断开关是否打开
{
chabiao(); //读T12的温度
HootDianreshiworking(); //恒温控制
}
else //如果关闭
{
BG_OFF; //关闭输出
}
}
//**********************************************************************************
if(menu==20)
{
Get_NtcTemper(); //读取NTC热敏的温度
PlayingLCD_T12(); //LCD显示
chabiao(); //读T12的温度
if(Luotie)
{
HootDianreshiworking(); //恒温控制
}
else
{
BG_OFF; //关闭输出
}
if(adj==4) //当是正常状态时就进入调时状态
{
Keyint(3);
}
//-----------------------------------------------------------
//设置温度减
if(adj==2)
{
Keyint(1);
SETtemp--;
SETtemp-=10; //以10度步减
if(SETtemp<50) //不低于50C
{
SETtemp=600; //600度
}
}
//设置温度减
if(adj==3)
{
Keyint(1);
SETtemp++;
SETtemp+=10; //以10度步进
if(SETtemp>600) //不超过500C
{
SETtemp=50; //50C
}
}
if(adj==1)
{
Keyint(3);
T12Writ(); //温度数据写入储存区
T12read () ; //读取一边写入的数据
for(p=0; p<180; p++)
{
PlayingLCD_SAVE();
}
menu=20; //进入T12
display_fill(0x00,0); //清屏全屏(送00)
}
}
//*********************************************************************
//*********************************************************************
// 设置时间
if(adj==1 && menu == 0) //当是正常状态时就进入调时状态
{
Keyint(3);
menu=1; //进入调时
}
//直接进入T12的控制界面
if(adj==4&&menu==0) //当是正常状态时就进入调时状态
{
Keyint(3);
menu=20; //进入T12
}
//***********************************************************************
//***********************************************************************
//调整时间时4个按键的操作
if(menu==1)
{
if(adj==1) //当是调时状态 本键用于调整下一项
{
Keyint(2);
e++; //调整项目加1
if (e >= 6 )
{
e = 0; //年,月,日,时,分,秒七个项目切换
}
}
//------------------------------------------------------------------
// 当在调时状态时就退出调时
if(adj==4)
{
Keyint(3);
}
//------------------------------------------------------------------
if(adj==2)
{
Keyint(0); //按键音
Set_time(e,0); //调整时间加键
}
if(adj==3)
{
Keyint(0); //按键音
Set_time(e,0); //调整时间减键
}
}
//******************************************************************************
/*******************************************************************************/
//=======直接开烙铁====================
if(adj==5)
{ display_fill(0x00,0); //清屏全屏(送00)
// Beep_key(); //按键音
adj=0; //复位按键
Luotie=~ Luotie; //烙铁开关控制
if(Luotie)
LCM_PutPicture(0x1A00);
else
LCM_PutPicture(0x0000);
DELAY_MS(3000);
display_fill(0x00,0); //清屏全屏(送00)
for(p=0; p<180; p++) //显示操作信息
{
PlayingLCD_OPC(); //显示开或关的状态
}
display_fill(0x00,0); //清屏全屏(送00)
}
//=======================================
Time_TO_Buff(); //时钟处理总成刷新数据
}
} |
评分
-
查看全部评分
|