#include <stc12c5a32s2.h>
#include "LD1602.h"
#include "DS1302.h"
#include <stdio.h>
//#include <usart.h>
//#include <usart2.h>
sbit RS=P2^0; //寄存器选择位,将RS位定义为P2.0引脚
sbit RW=P2^1; //读写选择位,将RW位定义为P2.1引脚
sbit E=P2^2; //使能信号位,将E位定义为P2.2引脚
sbit BF=P0^7; //忙碌标志位,将BF位定义为P0.7引脚
#define Lcd_Data P0
#include <string.h>
#include<intrins.h> //包含_nop_()函数定义的头文件
unsigned char code string1[]= {0x77,0x75,0x20,0x79,0x61,0x6E,0x67,0x20,0x79,0x61,0x6E,0x67,0x20,0x20,0x20,0x20}; //第一行显示的字符
void Lcd_delay1ms() // 函数功能:延时1ms
//注:不同单片机不同晶振需要对此函数进行修改
{
unsigned char i,j;
for(i=0;i<90;i++)
for(j=0;j<33;j++);
}
void Lcd_delay(unsigned int n) // 函数功能:延时若干毫秒,入口参数:n
{ unsigned int i;
for(i=0;i<n;i++)
Lcd_delay1ms();
}
void lcd1602_delay() // 函数功能:延时1ms
//注:不同单片机不同晶振需要对此函数进行修改
{ unsigned char i;
for(i=0;i<10;i++);
}
/*****************************************************
函数功能:判断液晶模块的忙碌状态
返回值:result。result=1,忙碌;result=0,不忙
***************************************************/
bit Lcd_BusyTest(void)
{
bit result;
RS=0; //根据规定,RS为低电平,RW为高电平时,可以读状态
RW=1;
E=1; //E=1,才允许读写
lcd1602_delay();
result=BF; //将忙碌标志电平赋给result
E=0;
return result;
}
/*****************************************************
函数功能:将模式设置指令或显示地址写入液晶模块
入口参数:dictate
***************************************************/
void Lcd_WriteCom (unsigned char dictate)
{
while(Lcd_BusyTest()==1); //如果忙就等待
RS=0; //根据规定,RS和R/W同时为低电平时,可以写入指令
RW=0;
E=0; //E置低电平(写指令时就是让E从0到1发生正跳变,所以应先置"0"
lcd1602_delay();
Lcd_Data=dictate; //将数据送入P0口,即写入指令或地址
lcd1602_delay();
E=1; //E置高电平
lcd1602_delay();
E=0; //当E由高电平跳变成低电平时,液晶模块开始执行命令
}
/*****************************************************
函数功能:指定字符显示的实际地址
入口参数:x
注:此函数已经加上了0x80,故只需写上实际地址就行
***************************************************/
void Lcd_WriteAddress(unsigned char x)
{
Lcd_WriteCom(x|0x80); //显示位置的确定方法规定为"80H+地址码x"
}
/*****************************************************
函数功能:将数据(字符的标准ASCII码)写入液晶模块F
入口参数:y(为字符常量)
***************************************************/
void Lcd_WriteData(unsigned char y)
{
while(Lcd_BusyTest()==1);
RS=1; //RS为高电平,RW为低电平时,可以写入数据
RW=0;
E=0; //E置低电平(写指令时就是让E从0到1发生正跳变所以应先置"0"
Lcd_Data=y; //将数据送入P0口,即将数据写入液晶模块
lcd1602_delay();
E=1; //E置高电平
lcd1602_delay();
E=0; //当E由高电平跳变成低电平时,液晶模块开始执行命令
}
/*****************************************************
函数功能:对LCD的显示模式进行初始化设置
***************************************************/
void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s) //x代表列,y代表行
{
Lcd_delay(1);
if (y == 1) //y==1代表显示在LCD1602第一行
{
Lcd_WriteCom(0x80 + x); //表示第一行
}
else //否则就是第二行,就是必须y==2
{
Lcd_WriteCom(0x80+0x40 + x); //表示第二行
}
while (*s)
{
Lcd_delay(1);
Lcd_WriteData( *s); //写入字符
s++; //指向下一个地址
}
}
//void SetCurPosition(uchar X, uchar Y)
//{
// Y &= 0x01;
// X &= 0x0F; // 限制X不能大于15,Y不能大于1
//if (Y)
// {
// X |= LINE2_HEAD; // 当要显示第二行时地址码:0xc0
// }
//X |= LINE1_HEAD; // 第一行的地址码:0x80
// WriteCommandLCM(X, 0); // 这里不检测忙信号,发送地址码
// WriteCommandLCM(0x02,0); //光标归位
// WriteCommandLCM(0x0d,0); //关光标,闪烁
//}
void LCD_Pos(unsigned char x,unsigned char y) //x代表列,y代表行
{
if (y == 1) //y==1代表显示在LCD1602第一行
{
Lcd_WriteCom(0x80 + x); //表示第一行
}
else
{
Lcd_WriteCom(0xC0 + x); //表示第二行
}
}
void Lcd_Int(void)
{
Lcd_delay(5); //延时5ms
Lcd_WriteCom(0x0C); //显示模式设置:显示开,有光标,光标闪烁
Lcd_delay(5);
Lcd_WriteCom(0x06); //显示模式设置:光标右移,字符不移
Lcd_delay(5);
Lcd_WriteCom(0x38); //显示模式设置:光标右移,字符不移
Lcd_delay(5);
Lcd_WriteCom(0x38); //显示模式设置:光标右移,字符不移
Lcd_delay(5);
Lcd_WriteCom(0x01); //清屏幕指令,将以前的显示内容清零
Lcd_delay(5);
}
void Lcd_mod(void)
{
char *temp_src=src;
sprintf(tmp_buf2,"%-1d",(int)mds_flag);
for(i=0;i<=strlen(src);i++)
{
tmp_buf[i]=*temp_src;//src是一个地址,*src是在这个地址中取值
temp_src++;
}
strcat(tmp_buf,tmp_buf2);
LCD_Write_String(0,1,tmp_buf);
Lcd_WriteCom(0x0c); //关光标
}
void Lcd_set(void)//1602显示设置的光照强度数据
{
trm=dc[hd];
sprintf(tmp_buf,"%1d",trm);
Lcd_WriteCom(0x0f);//开光标
LCD_Write_String(hd,2,tmp_buf);
Lcd_WriteCom(0x10);
if(hd==2)
Lcd_WriteCom(0x0c); //关光标
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
这是我大学本科毕设所有的东西了,最后85分过,论文要求如下1.基于ZigBee无线通信技术和微控制器实现对LED灯的智能控制,实现LED灯的智能照明控制。 2.可根据光照度(区分白天和黑夜)自动控制灯的亮度或开关。 3.可以通过遥控或手动按键实现灯光强度和开关的控制。 4.按照学校要求撰写毕业设计论文。有需要的下载
资源推荐
资源详情
资源评论
收起资源包目录
graduation.zip (72个子文件)
光照传感从机.rar 64KB
光照控制主机.rar 125KB
光照控制主机
string2.h 266B
yaokongkaiguan.c 4KB
switch2.h 167B
LD1602.h 651B
usart2.h 498B
debug.log 0B
DS1302.c 5KB
ADC.h 188B
timecontroll.c 2KB
1302.h 536B
switch2.c 5KB
d1302.h 259B
yao.h 180B
main.uvopt 8KB
main.uvgui.yuanqiang 91KB
Objects
main.hex 16KB
main.lnp 266B
string.__i 142B
usart.obj 7KB
DS1302.obj 10KB
timecontroll.obj 11KB
1302.__i 136B
DS1602.obj 13KB
string.obj 5KB
zigbee.obj 3KB
switch2.obj 6KB
string2.obj 8KB
yao.obj 13KB
ADC.obj 3KB
yaokongkaiguan.obj 6KB
STARTUP.obj 828B
main.build_log.htm 4KB
1302.obj 6KB
usart2.obj 9KB
string2.__i 151B
new 1.c 1KB
yao.c 5KB
usart.c 2KB
usart.h 634B
stc12c5a32s2.h 2KB
DS1602.c 5KB
ADC.c 1KB
1302.c 4KB
STARTUP.A51 6KB
main.uvproj 15KB
main.uvgui.ASUS 69KB
string2.c 3KB
usart2.c 3KB
Listings
DS1602.lst 9KB
string2.lst 6KB
ADC.lst 3KB
main.m51 61KB
usart.lst 5KB
DS1302.lst 9KB
1302.lst 7KB
yaokongkaiguan.lst 9KB
STARTUP.lst 14KB
timecontroll.lst 4KB
zigbee.lst 4KB
switch2.lst 10KB
usart2.lst 7KB
yao.lst 11KB
string.lst 4KB
DS1302.h 379B
DS1302yuan.c 4KB
yaokongkaiguan.h 175B
switch.c 3KB
DS1302yuan.h 384B
PCB2.PcbDoc 2.3MB
main.SchDoc 211KB
共 72 条
- 1
资源评论
弹吉他的程序员
- 粉丝: 7
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功