标题:
光电耦合电路替换继电器Proteus仿真+单片机程序
[打印本页]
作者:
lin1279
时间:
2019-6-9 15:10
标题:
光电耦合电路替换继电器Proteus仿真+单片机程序
一个光电耦合电路替换继电器的Proteus仿真
利用光电耦合电路实现低压控制高压
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
QQ截图20190609150828.png
(89.47 KB, 下载次数: 56)
下载附件
proteus截图
2019-6-9 15:10 上传
单片机源程序如下:
#include<reg51.h>
#include<math.h>
#define uchar unsigned char
#define unit unsigned int
#define lcd_data P0
#define temp_data P3
sbit CLK=P1^3;
sbit ST=P1^2;
sbit EOC=P1^1;
sbit OE=P1^0;
sbit DQ=P1^7;
sbit lcd_RS=P2^0;
sbit lcd_RW=P2^1;
sbit lcd_EN=P2^2;
sbit Buzz=P1^7;
sbit right=P2^6;
sbit left=P2^7;
sbit Con=P2^5;
uchar t[2],speed,temperature;
uchar TempBufferl[12]={0xdf,0x43,'\0'};
uchar tab[16]={0x20,0x20,0x20,0x54,0x20,0x4d,0x6f,0x6e,0x69,0x74,0x6f,0x72,'\0'};
uchar V[3];
/*...延时.......................*/
void delay(unsigned int x)
{
unsigned char i;
while (x--)
{
for(i=0;i<123;i++){;}
}
}
/*...LCD显示.......................*/
void delay_20ms(void)
{
uchar i,temp;
for(i=20;i>0;i--)
{
temp=248;
while(--temp);
temp=248;
while(--temp);
}
}
void delay_38us(void)
{
uchar temp;
temp=18;
while(--temp);
}
void delay_1520us(void)
{
uchar i,temp;
for(i=3;i>0;i--)
{
temp=252;
while(--temp);
}
}
uchar lcd_rd_status()
{
uchar tmp_sts;
lcd_data=0xff;
lcd_RW=1;
lcd_RS=0;
lcd_EN=1;
tmp_sts=lcd_data;
lcd_EN=0;
lcd_RW=0;
return tmp_sts;
}
void lcd_wr_com(uchar command)
{
while (0x80&lcd_rd_status());
lcd_RW=0;
lcd_RS=0;
lcd_data=command;
lcd_EN=1;
lcd_EN=0;
}
void lcd_wr_data(uchar sjdata)
{
while (0x80&lcd_rd_status());
lcd_RW=0;
lcd_RS=1;
lcd_data=sjdata;
lcd_EN=1;
lcd_EN=0;
lcd_RS=0;
}
void Init_lcd(void)
{
delay_20ms();
lcd_wr_com(0x38);
delay_38us();
lcd_wr_com(0x0c);
delay_38us();
lcd_wr_com(0x01);
delay_1520us();
lcd_wr_com(0x06);
}
void GotoXY(uchar x,uchar y)
{
if(y==0)
lcd_wr_com(0x80|x);
if(y==1)
lcd_wr_com(0xc0|x);
}
void Print(uchar *str)
{
while(*str!='\0')
{
lcd_wr_data(*str);
str++;
}
}
void LCD_Print(uchar x,uchar y,uchar *str)
{
GotoXY(x,y);
Print(str);
}
/*...ADC.......................*/
void display_result(uchar d)
{
float a,b,c;
a=d/100;
b=(d%100)/10;
c=d%10;
V[0]=a+'0';
V[1]=b+'0';
V[2]=c+'0';
LCD_Print(5,0,V);
}
/*...主函数.......................*/
void main(void)
{
uchar d;
uchar p;
Buzz=0;
right=0;
left=0;
//i=temp_data;
delay_20ms();
Init_LCD();
//display_result(a);
LCD_Print(0,1,tab);
//delay(10000);
TMOD=0x02;
TH0=0x14;
TL0=0x00;
IE=0X82;
TR0=1;
EA=1;
P1=0X3f;
while(1)
{
//i=P3;
Buzz=0;
right=0;
left=0;
d=temp_data;
p = 2.0838*d - 240.51;
ST=0;
ST=1;
ST=0;
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
光电耦合.7z
(105.27 KB, 下载次数: 37)
2019-6-9 15:07 上传
点击文件名下载附件
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1