网站建设资讯

NEWS

网站建设资讯

c语言继电器函数 c语言中继续

PC通过485与51单片机通讯去控制继电器,如何编单片机C语言程序?

51对于继电器的控制,只用高低电平就可以了。关键是,你在明晌你的程序里要有一个判断子程序,判断单片机从PC机(通过RS485)穿过来的谨贺是什么数据,从而对单片机的某位置位或者复位。比如:你可以用一个if语句,如果收到的数据时11111,在置位,如果收到的数据时00000,则复位,相应的继激晌锋电器就会动作了。

创新互联公司专注为客户提供全方位的互联网综合服务,包含不限于网站设计、成都网站设计、华州网络推广、微信小程序、华州网络营销、华州企业策划、华州品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联公司为所有大学生创业者提供华州建站搭建服务,24小时服务热线:13518219792,官方网址:www.cdcxhl.com

单片机C语言编程作业求帮助, (1)可通过串口控制光敏传感器、数码管、继电器、蜂鸣器的开关, 发送

没有芯片和设备,所以程序没调,有问题可以再q我。

光敏传感器是个检测设备,你要怎么控制它。

#includestc15f2kxx.h

#define u16 unsigned int

#define u8 unsigned char

sbit PHOTORESISTOR=P3^7;

sbit RELAY=P3^6;

sbit BEEP=P4^5;

u8 ds[8]={0,1,2,3,4,5,6,7,}; //数码管显示缓存

u8 smg_zt=1;

//共阳

code u8 w[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,}; //位码

code u8 d[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,};//断码

void dispaly(){//显示函数

static u8 a;

if(++a=8)a=0;

P0=0xff;

P2=w[a];

P0=d[ds[a]];

}

/*

//共阴

code u8 w[]={~0x01,~0x02,~0x04,~0x08,~0x10,~0x20,~0x40,~0x80,}; //位码

code u8 d[]={~0xc0,~0xf9,~0xa4,~0xb0,~0x99,~0x92,~0x82,~0xf8,~0x80,~0x90,0x00,};//断码

void dispaly(){//显示函数

static u8 a;

if(++a=8)a=0;

P0=0x00;

P2=w[a];

P0=d[ds[a]];

}

*/

#define UART_RX_SIZE 30

u8 uartRx_buf[UART_RX_SIZE];

u8 uartRx_count=0;

u8 uartRx_outtime=0;

void UartInit(void) //9600bps@11.0592MHz

{

SCON = 0x50; //8位数搜陵团据,可变波特率

AUXR |= 0x40; //定时器1时钟为Fosc,即1T

AUXR = 0xFE; //串口1选择定时器1为波特率发生器

TMOD = 0x0F; //设定定时器1为16位自动重装方式

TL1 = 0xE0; //设定定时初值

TH1 = 0xFE; //设定定时初值

ET1 = 0; //禁止定时器1中断

TR1 = 1; //启动定时器1

}

void Send_byte(u8 val){

SBUF=val;

while(!TI);

TI=0;

}

void Send_Uart(u8 *p,u8 size){

while(size--0){

Send_byte(*p);

p++;

}

}

void Timer0Init(void) //1毫秒@11.0592MHz

{

AUXR |= 0x80; //定时器时钟1T模式

TMOD = 0xF0; //设置定时器模式

TL0 = 0xCD; //设置定时世橘初值

TH0 = 0xD4; //设置定时初值

TF0 = 0; //清除TF0标志

TR0 = 1; //定时器0开始计时

}

void IO_Init(){

P0M1=0x00;//P0口和P2口设为强推挽输出

P0M0=0xff;

P2M1=0x00;

P2M0=0xff;

}

void init() //初始化函数

{   

IO_Init();

UartInit();

Timer0Init();

}

//判断两个字符串是否相等

u8 puanduan(u8 *p,u8 size,u8 *pp){

u8 i;

for(i=0;pp[i]!=0;i++){

if(i=size)return 0;

if(p[i]!=pp[i])return 0;

}

return 1;

}

//串口解析程序

void UART_Protocol(){

if(uartRx_outtime=10汪郑uartRx_count=3){

if(puanduan(uartRx_buf,uartRx_count,"lightsensor:on")!=0){

}else if(puanduan(uartRx_buf,uartRx_count,"lightsensor:off")!=0){

}else if(puanduan(uartRx_buf,uartRx_count,"digital:on")!=0){

  smg_zt=1;

}else if(puanduan(uartRx_buf,uartRx_count,"digital:off")!=0){

smg_zt=0;

}else if(puanduan(uartRx_buf,uartRx_count,"relay:on")!=0){

RELAY=0;

}else if(puanduan(uartRx_buf,uartRx_count,"relay:off")!=0){

RELAY=1;

}else if(puanduan(uartRx_buf,uartRx_count,"beep:on")!=0){

BEEP=1;

}else if(puanduan(uartRx_buf,uartRx_count,"beep:off")!=0){

}

uartRx_count=0;

}

}

void main()//主函数

{

u8 i;

init();

while(1){

UART_Protocol();

if(smg_zt==1){

for(i=0;i8;i++)ds[i]=i;

}else {

for(i=0;i8;i++)ds[i]=10;

}

}

}

void timer0() interrupt 1//定时器,实现倒计时

{   

dispaly();

if(++uartRx_outtime=100){

uartRx_outtime=0;

uartRx_count=0;

}

}

void uart0() interrupt 4

{

if(RI){

u8 t=SBUF;RI=0;

uartRx_outtime=0;

if(uartRx_countUART_RX_SIZE){

uartRx_buf[uartRx_count++]=t;

}

}

}

求STC89c52单片机控制继电器程序:关、开时间间隔为120s。 有悬赏

#includereg52.h

#define uchar unsigned char

#define uint unsigned int

uchar Count = 0; //20ms计数

uchar SecCount = 0; // 1m计数

sbit DELAY = P2^0; //P20引脚控制继电器

/********************************************************************

* 名称 : Time0_Init()

* 功能 : 定时器的初始化,11.0592MZ晶振,50ms

* 输入 : 无

* 输出 : 无

***********************************************************************/

void Time0_Init()

{

TMOD = 0x01;

IE = 0x82;

TH0 = 0x4c;

TL0 = 0x00;

TR0 = 1;

}

/********************************************************************

* 名称 : Time0_Int()

* 功闷乎能 : 定时器中断,中断中实现 Count 加一

* 输入 : 无

* 输出 : 无

***********************************************************************/

void Time0_Int() interrupt 1

{

TH0 = 0x4c;

TL0 = 0x00;

Count++;

if(Count == 20)//中断20次,等于1s

{

Count = 0;

SecCount ++; //秒数加1

}

}

/********************************************************************

* 名称 : Main()

* 功能 : 主函数

* 输入纤信 : 无

* 输出 : 无

***********************************************************************/

void main()

{

RELAY = 1; //上电使继电器处于关闭状态.图中的8550三极管,低电平时为继电器打开,高电平关闭.

Time0_Init(); //定时器初始化

while(1)

{

if(SecCount == 120) //当蚂竖悉SecCount等于120秒时

{

RELAY = ~RELAY; //继电器状态取反,原本关闭的打开,

}

}

}


本文名称:c语言继电器函数 c语言中继续
路径分享:http://njwzjz.com/article/dspjehj.html