附录III 系统源程序
#include "main.h"
#include "LCD12864.h"
#include "uart.h"
//定义变量
//****************************************************
//主函数
//****************************************************
void main()
{
LCD12864_Reset(); //初始化液晶
LCD12864_HAIZI_SET(); //设置为普通模式
Relay1 = Relay2 = Relay3 = Relay4 = 0; //初始化设置为0,不吸合
Delay_ms(100);
Uart_Init();
while(1)
{
Relay1 = Flag_Relay1;
Relay2 = Flag_Relay2;
Relay3 = Flag_Relay3;
Relay4 = Flag_Relay4;
if(Flag_Relay1 == 1)
{
LCD12864_NoWaitIdle_COM_Write(0x80); //设置指针
LCD12864_write_word("冰箱状态:开");
}
else
{
LCD12864_NoWaitIdle_COM_Write(0x80); //设置指针
LCD12864_write_word("冰箱状态:关");
}
if(Flag_Relay2 == 1)
{
LCD12864_NoWaitIdle_COM_Write(0x90); //设置指针
LCD12864_write_word("空调状态:开");
}
else
{
LCD12864_NoWaitIdle_COM_Write(0x90); //设置指针
LCD12864_write_word("空调状态:关");
}
if(Flag_Relay3 == 1)
{
LCD12864_NoWaitIdle_COM_Write(0x88); //设置指针
LCD12864_write_word("电视状态:开");
}
else
{
LCD12864_NoWaitIdle_COM_Write(0x88); //设置指针
LCD12864_write_word("电视状态:关");
}
if(Flag_Relay4 == 1)
{
LCD12864_NoWaitIdle_COM_Write(0x98); //设置指针
LCD12864_write_word("灯泡状态:开");
}
else
{
LCD12864_NoWaitIdle_COM_Write(0x98); //设置指针
LCD12864_write_word("灯泡状态:关");
}
}
}
//****************************************************
//MS延时函数(12M晶振下测试)
//****************************************************
void Delay_ms(unsigned int n)
{
unsigned int i,j;
for(i=0;i<n;i++)
for(j=0;j<123;j++);
}
#include "uart.h"
//unsigned char RX_Buffer[30];
unsigned char Num = 0;
bit Flag_Relay1 = 0;
bit Flag_Relay2 = 0;
bit Flag_Relay3 = 0;
bit Flag_Relay4 = 0;
unsigned char temp = 0;
void Uart_Init()
{
SCON = 0X50; //UART方式1;8位UART
REN = 1; //不允许串行口接收数据
PCON = 0x00; //SMOD=0;波特率不加倍
TMOD = 0x20; //T1方式2,用于产生波特率
TH1 = 0xFD; //装初值
TL1 = 0xFD;
TR1 = 1; //启动定时器1
EA = 1; //打开全局中断控制
ES = 1; //串行口中断
}
void UartPrintf(unsigned char *p) //发送字符串
{
while(*p)
{
SBUF=*(p++);
while(TI==0)
{
;
;
;
};
TI=0;
}
}
void UartPrintASCII(unsigned char c) //发送一个字符
{
TI=0;
SBUF=c;
while(TI==0);
TI=0;
}
void RECEIVE_DATA(void) interrupt 4 using 1 //串口中断
{
if(RI == 1)
{
temp = SBUF;
if(temp == 'A')
{
Flag_Relay1 = !Flag_Relay1;
UartPrintf("Receive A");
}
else if(temp == 'B')
{
Flag_Relay2 = !Flag_Relay2;
UartPrintf("Receive B");
}
else if(temp == 'C')
{
Flag_Relay3 = !Flag_Relay3;
UartPrintf("Receive C");
}
else if(temp == 'D')
{
Flag_Relay4 = !Flag_Relay4;
UartPrintf("Receive D");
}
RI = 0;
}
}