陕西理工学院毕业设计
开始按键是否按下NY显示初始化状态显示当前状态up键按下Y调用液晶显示Ndown键按下Y红外解码发射无线命令NSet键按下YNNChoose键按下Y
图4.3 红外遥控控制子程序流程图
开始执行程序后判断之前是否有按键按下,若按下则清零,并通过显示模块显示当前窗帘的状态,然后通过按键控制窗帘是开启还是关闭,LCD1602显示窗帘的状态以及此时的温,光线值。红外遥控控制部分子程序如下:
/***********红外遥控子程序**************/ void hongwai_dis()
{ if(flag_jiema_en == 1) { flag_jiema_en = 0; switch(hw_table[2])
{ case 0x07: key_can = 4; break; //得到按键值 case 0x15: key_can = 3; break; //得到按键值 case 0x44: key_can = 2; break; //得到按键值 case 0x40: key_can = 1; break; //得到按键值 }
if(hw_table[2] == 0x45) //退出键 { menu_1 = 0;
write_guanbiao(1,2,0); //关闭光标
init_1602_dis_csf(); //初始化液晶显示 }
hw_table[2] = 0; //把数据清零 } }
4.2.3 显示电路子程序
LCD1602的显示只需要严格的按照厂家的时序要求进行编程就可以完成显示。LCD602的液晶显
示首先需要将需要显示地方的地址通过命令写入,然后将数据按顺序的进行写入即可。在写入地址后显示第一个内容后地址会自动加一。函数名write_string(uchar hang,uchar add,uchar *p),
第 15 页 共 66页
陕西理工学院毕业设计
参数为hang,add,*p,其中的hang,add表示在液晶显示屏上的位置坐标,*p是需要显示的字符数组。软件根据输入需要显示的位置坐标计算出地址。显示函数流程图如4.4所示。
开始hang=1YAdd=0x80+add;NAdd=0x80+0x40+add写入地址N*p!=‘\\0’?Y写入*p数据地址p++返回
图4.4 显示电路子程序流程图
显示电路部分子程序如下:
void write_string(uchar hang,uchar add,uchar *p) {if(hang==1)
write_com(0x80+add); else
write_com(0x80+0x40+add);
while(1) {
if(*p == '\\0') break; write_data(*p); p++; } }
4.2.4 电机驱动子程序
步进电机执行来自控制器的命令,判断其命令是否正确,若不正确则返回,若正确则继续执行命令,比较做出相应的动作,当窗帘到达指定的位置时停止,电机正转表示开窗帘,电机反转表示关窗帘,电机驱动流程图如4.5所示。
第 16 页 共 66页
陕西理工学院毕业设计
开始接入命令是否正确YN命令执行窗帘Y比较判断N电机正转电机反转返回
4.5电机驱动执行流程图
电机驱动部分子程序如下:
void bujindj() //步进电机函数 { static uchar i;
if(flag_z_f != 0)
{ if(flag_z_f == 1) //开 { if(bjdj_value >= 254) { flag_z_f = 0; bjdj_value = 254;
P2 = P2 & 0xf0; //让4个IO口都不输出 write_eeprom(); //保存 }else
bjdj_value ++; }
if(flag_z_f == 2) //关 { if(bjdj_value <= 1) { flag_z_f = 0; bjdj_value = 1;
P2 = P2 & 0xf0; //让4个IO口都不输出 write_eeprom(); //保存 }else
bjdj_value --; }
for(i=0;i<4;i++) //4相
第 17 页 共 66页
陕西理工学院毕业设计
}
}
{ if(flag_z_f == 1) //开
P2=zheng[i];// & (P2 | 0xf0); // else if(flag_z_f == 2)//关
P2=fan[i];// & (P2 | 0xf0); // else
P2 = P2 & 0xf0; //让4个IO口都不输出
delay_uint(500); //改变这个参数可以调整电机转速 }
4.3 程序编译与下载
KEIL uVISION4是众多单片机应用开发软件中优秀的软件之一,它支持众多不同公司的MCS51 架构的芯片,它集编辑,编译,仿真等于一体,同时还支持, PLM,汇编和C 语言的程序设计,它的界面和常用的微软VC++的界面相似,界面友好,易学易用,在调试程序,软件仿真方面也有很强大的功能。首先我们用keil4建立一个工程项目,然后在.C的文件夹中写入程序,调试程序并不断修改,刚开始在调试程序的过程中,由于在主程序调用子程序时没有延时,所以将程序下载到单片机试验时,总是不停的打电话,而且发短信也是时而发,时而不发。最后,给程序加了延时以后,整个程序可以按要求来执行。程序编译界面如图4.4所示。根据编译结果,整个程序错误个数为0,有6个警告,说明程序是没有语法错误的,可以生成HEX文件。单片机烧录软件是STC单片机专用的STC—ISP,串口选择COM6口,最大下载速率为9600bit/S,最小下载速率为1200bit/S,3S后下载完毕,窗口显
示program OK, verify OK, Encrypt OK。
STC-ISP下载界面如图4.7所示。
图4.6 编译界面图
第 18 页 共 66页
陕西理工学院毕业设计
图4.7 STC下载界面
系统源程序见附录C。
第 19 页 共 66页
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库智能家居控制系统的设计 - 图文(5)在线全文阅读。
相关推荐: