昆明滇池国家旅游度假区海贝中英文学校 650200
摘要:本文从模块化设计和并行键盘显示面板驱动程序方面介绍了无线电远程控制温度系统的一种软件设计。
关键词:温度系统,模块,驱动程序
Abstract:This paper introduces a software design of wireless remote control temperature system from the aspects of modular design and parallel keyboard display panel driver.
Keywords: temperature system, module, driver procedure
1、引言
现在越来越提倡绿色能源的使用,在使用能源的过程中,控制好温度可以有效的对绿色能源进行高效率的使用。本文浅述了一种无线远程控制温度系统的软件。
2、模块化设计
(1)键盘控制模块设计;
键盘控制面示意图
键盘控制面采用2*4式键盘,K0,K1的功能分别是左移一位和右移一位;K4,K5的功能分别是加1和减1;K2,K3,K6分别是向从系统00,01,10发送温度设定值的功能键。K7为清楚报警鸣声且熄灭报警提示红绿灯。
(2)显示模块设计;
(3)系统主控模块设计;
(4)温度采集模块设计;
(5)控制PID算法模块设计。
3、并行键盘显示面板驱动程序
(1)键盘控制面板采用2*4式键盘,P2.2,P2.3为行控制口,P2.4,2.5,2.6,2.7为列控制口。
;**********************************************
;键盘扫描程序,
;**********************************************
//---------------------------------------------------------------------
//函数:键盘程序
//功能:实现Ctal_Data[i]的加一减一功能
//入口参数:无
//出口参数:无
//---------------------------------------------------------------------
void keyboard()
{
uchar smao,i,shifter;
smao=0xbf;
P2=smao;
for(i=0;i<3;i++)
{
if(P2==0xdb) /* up 键功能:pid参数加一*/
{Ctrl_Data[Disp_Ptr]++;}
P2 = smao;
if(P2==0xe7) /* left 键功能:显示指针减一*/
{Disp_Ptr--; if(Disp_Ptr==0xff) Disp_Ptr=5;}
if(P2==0xb7) /*reset键功能:停止*/
{}
if(P2==0xd7) /* right 键功能:显示指针加一*/
{Disp_Ptr++; if(Disp_Ptr>5) Disp_Ptr=0;}
if(P2==0xeb) /* down 键功能:pid参数减一*/
{Ctrl_Data[Disp_Ptr]--;}
if(P2==0xbb) /* run 键功能:开始*/
{}
P2 = 0xff;
receive();
display(Disp_Ptr); /*disp()调用作为延时*/
receive();
display(Disp_Ptr); /*disp()调用作为延时*/
shifter=smao<<7; //右移一位,准备显示下一位
smao=smao>>1;
smao=smao|shifter;
P2=smao;
}
}
(2)显示子程序
;***************************************************
;LED显示电路采用4位共阳极数码管
//-------------------------------------------------------------------------
//函数:显示码转换子程序
//功能:将Ctrl_Data[Disp_Ptr]转化为三位BCD存入Disp_Buff[3][2][1]中
//入口参数:显示指针 Disp_Ptr
//出口参数:无
//-------------------------------------------------------------------------
void tras(uchar i)
{
uchar j = Ctrl_Data[i];
Disp_Buff[2] = Disp_Tab[(j/100)%10];//百位
Disp_Buff[1] = Disp_Tab[(j/10)%10];//十位
Disp_Buff[0] = Disp_Tab[j%10];//个位
Disp_Buff[3] = Information[i];//提示信息
}
//-------------------------------------------------------------------------
//函数:显示子程序
//功能:显示数组Ctrl_Data[Disp_Ptr]并加上提示信息
//入口参数:显示指针 Disp_Ptr
//出口参数:无
//-------------------------------------------------------------------------
void display(uchar i)
{
uchar j;
uchar begin = 0x7f,shifer;
tras(i);
for(j=0;j<4;j++)
{
P0 = Disp_Buff[j];//段选
P2 = begin; //位选
delay(100); //延时 1535
shifer=begin<<7;
begin=begin>>1;
begin=begin|shifer;
}
P0=0xff;// 关显示
P2=0xff;
}
4、致谢
感谢在单片机技术领域和程序设计领域默默奉献的前辈们!谢谢你们了!
5、参考文献:
[1] 吴金戊,沈庆阳,郭庭吉.8051单片机实践与应用[M],北京:清华大学出版社,2002.9
[2] 徐 炜,姜 晖,崔 琛.通信电子技术[M] 西安:西安电子科技大学出版社,2003.8
[3] 李斯伟,雷新生.数据通信技术[M] 北京:人民邮电出版社,2004.2
[4] 梁廷贵.遥控电路 可控硅触发电路 语音电路分册[M] 北京:科学技术文献出版社,2002.2
4