找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1853|回复: 1
打印 上一主题 下一主题
收起左侧

求大神帮忙!怎么才能让LED灯在条件下亮起熄灭,蜂鸣器怎么样才能按条件工作!拜托...

[复制链接]
跳转到指定楼层
楼主
ID:322350 发表于 2018-5-4 20:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <reg52.h>
#include <intrins.h>
#include <string.h>
#define INT8U unsigned char
#define INT16U unsigned int
sbit CS = P1^0;
sbit CLK = P1^1;
sbit DIO = P1^2;
sbit RS = P2^0;
sbit RW = P2^1;
sbit E=P2^2;
sbit LED1=P3^0;
sbit LED2=P3^1;
sbit LED3=P3^2;
sbit BEEP=P3^3;
#define LCD_PORT P0
INT8U Disp_Buff1[]="           00.0L";
INT8U Disp_Buff2[16];
#define delay4us(){_nop_();_nop_();_nop_();_nop_();}
void delay_ms(INT16U x)
{
INT8U t;
while(x--)
for(t=0;t<120;t++);
}
bit Read_LCD_Busy_Flag()
{
INT8U result;
LCD_PORT=0xFF;
RS=0;RW=1;
E=1;delay4us();result=P0;E=0;
return (result & 0x80)? 1 : 0;
}
void Write_LCD_Command(INT8U cmd)
{
while(Read_LCD_Busy_Flag());
RS=0;RW=0;
E=0;_nop_();_nop_();LCD_PORT=cmd;
delay4us();E=1;delay4us();E=0;
}
void Write_LCD_Data(INT8U dat)
{
while(Read_LCD_Busy_Flag());
RS=1;RW=0;
E=0;LCD_PORT=dat;delay4us();
E=1;delay4us();E=0;
}
void LCD_Show_String(INT8U r,INT8U c,char *s)
{
INT8U i=0;
INT8U code DDRAM[]={0x80,0xC0};
Write_LCD_Command(DDRAM[r] | c);
while(s[i] &&i<16) Write_LCD_Data(s[i++]);
}
void LCD_Initialise()
{
Write_LCD_Command(0x38);delay_ms(1);
Write_LCD_Command(0x08);delay_ms(1);
Write_LCD_Command(0x0C);delay_ms(1);
Write_LCD_Command(0x06);delay_ms(1);
Write_LCD_Command(0x01);delay_ms(1);
}
INT8U Get_AD_Result()
{
INT8U i,dat1=0,dat2=0;
CS=0;CLK=0;
DIO=1;_nop_();_nop_();
CLK=1;_nop_();_nop_();
CLK=0;DIO=1;_nop_();_nop_();
CLK=1;_nop_();_nop_();
CLK=0;DIO=0;_nop_();_nop_();
CLK=1;_nop_();_nop_();
CLK=0;DIO=1;_nop_();_nop_();
for(i=0;i<8;i++)
{
CLK=1;_nop_();_nop_();
CLK=0;_nop_();_nop_();
dat1=(dat1<<1) | DIO;
}
for(i=0;i<8;i++)
{
dat2=dat2 | ((INT8U)DIO << i);
CLK=1;_nop_();_nop_();
CLK=0;_nop_();_nop_();
}
CS=1;
return (dat1 == dat2) ? dat1 : 0x00;
}
void main()
{
INT8U i,AD;INT16U d;
LCD_Initialise();
while(1)
{
AD=Get_AD_Result();
d=AD*5000.0/255.0;
Disp_Buff1[11]=d/1000%10+'0';
Disp_Buff1[12]=d/100%10+'0';
Disp_Buff1[14]=d/10%10+'0';
LCD_Show_String(0,0,Disp_Buff1);
i=(INT16U)AD*16/255;
memset(Disp_Buff2,'\xFF',i);
memset(Disp_Buff2+i,'\xDB',16-i);
LCD_Show_String(1,0,Disp_Buff2);
if(d>=45){LED1=0;LED2=1;LED3=1;}
else if(10<d<45){LED1=1;LED2=1;LED3=1;}
else if(5<d<10){LED1=1;LED2=0;LED3=1;}
else (d<5){LED1=1;LED2=1;LED3=0;SOUNDER=~SOUNDER}
}
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:13748 发表于 2018-5-4 21:08 | 只看该作者
你这个   海尔可以的呃   只需要搞一下九号
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表