资源简介
这是一个基于51单片机的RS485多机通讯,一台主机,三台主机,从机地址可通过拔码开关选择,如,主机要发送数据给从机,则将主机选中要发送的从机地址。然后对应的按键有对应的值。即可以送,有参考价格
代码片段和文件信息
#include
sbit RE_DE=P1^7;
unsigned char code SEG7[10]={0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f};
unsigned char key;
unsigned char addr;
/*--------------------------------------------------
功能:延时子函数
**************************************************/
void delay(unsigned char m)
{
unsigned char ij;
for(i=0;i {
for(j=0;j<121;j++)
{;}
}
}
/*************************************************8
功能:发送子函数
说明:将按键按下对应的值送到每个从机上
**************************************************/
void send(unsigned char dd)
{
RE_DE=1;
TB8=0;
SBUF=dd;
while(!TI);
TI=0;
}
/************************************************
功能:按键中断子程序
说明:判断是否有按键按下
**************************************************/
unsigned char scan_key(void) //第一种
{
unsigned char temp;
temp=P3;
return temp;
}
/**************************************************88
功能:对相应的键值处理
****************************************************/
unsigned char key_return(void)
{
unsigned char keysflag;
if(P3!=0xff)
{
delay(10);
P3=0xff;
if(P3!=0xff)flag=scan_key();
}
switch(flag)
{
case 0xfb:keys=77;break;
case 0xf7:keys=88;break;
case 0xef:keys=99;;break;
case 0xdf:keys=199;break;
default:break;
}
return keys;
}
/*********************************************8
功能:初始化串口
说明:对波特率及选择串口方式
**********************************************/
void Initial(void)
{
TMOD =0x20; // 定时器T1使用工作方式2
TH1 = 0xfd;
TL1 = 0xfd;
TR1 = 1; // 开始计时
PCON = 0x00; // SMOD = 1
SCON = 0xf8; // 工作方式,9位数据位,波特率9600kbit/s,允许接收
ES = 1;
EA = 1;
}
void main()
{
Initial();
RE_DE=1;
while(1)
{
key=key_return();
P1 = 0xff; // 通过P0口读要访问的从机地址
addr =P1&0x0f;
TB8=1;
SBUF = addr;
while(!TI);
TI = 0;
send(key);
P2=SEG7[key%10];P0=0xfe;delay(2);
P2=SEG7[(key%100)/10];P0=0xfd;delay(2);
P2=SEG7[key/100];P0=0xfb;delay(2);
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 221 2008-11-06 09:10 RS485多机通讯,地址可设定\master.plg
文件 2140 2008-11-05 16:31 RS485多机通讯,地址可设定\master.c
文件 44 2008-11-05 16:31 RS485多机通讯,地址可设定\master.lnp
文件 7364 2008-11-05 16:31 RS485多机通讯,地址可设定\master.M51
文件 775 2008-11-05 16:31 RS485多机通讯,地址可设定\master.hex
文件 4784 2008-11-05 16:31 RS485多机通讯,地址可设定\master.LST
文件 5332 2008-11-05 16:31 RS485多机通讯,地址可设定\master.OBJ
文件 4729 2008-11-05 16:31 RS485多机通讯,地址可设定\master
文件 2957 2008-11-05 16:56 RS485多机通讯,地址可设定\sing.plg
文件 1741 2008-11-05 16:55 RS485多机通讯,地址可设定\sing.c
文件 40 2008-11-05 16:55 RS485多机通讯,地址可设定\sing.lnp
文件 6347 2008-11-05 16:55 RS485多机通讯,地址可设定\sing.M51
文件 694 2008-11-05 16:55 RS485多机通讯,地址可设定\sing.hex
文件 4829 2008-11-05 16:55 RS485多机通讯,地址可设定\sing.LST
文件 4410 2008-11-05 16:55 RS485多机通讯,地址可设定\sing.OBJ
文件 4015 2008-11-05 16:55 RS485多机通讯,地址可设定\sing
....... 0 2008-11-05 16:32 RS485多机通讯,地址可设定\sing_Uv2.Bak
文件 2151 2008-11-05 16:56 RS485多机通讯,地址可设定\sing.Uv2
文件 989 2008-11-05 16:56 RS485多机通讯,地址可设定\sing.Opt
....... 0 2008-11-05 15:43 RS485多机通讯,地址可设定\master_Uv2.Bak
文件 2146 2008-11-05 16:56 RS485多机通讯,地址可设定\master.Uv2
....... 314 2008-11-05 15:43 RS485多机通讯,地址可设定\master_Opt.Bak
文件 979 2008-11-05 16:56 RS485多机通讯,地址可设定\master.Opt
目录 0 2008-11-05 15:40 RS485多机通讯,地址可设定
----------- --------- ---------- ----- ----
57001 24
评论
共有 条评论