标签:P2 AD int unsigned 甲机 通信 单片机 sbit define
要求
用两片单片机进行通信,其中甲机外接0809芯片进行AD转换,将AD转换结果送至P0端口用4位数码管显示,并将数据发送至乙机;乙机接收甲机发送的数据,和甲机同步显示AD转换结果。
ADC0809芯片
由于芯片介绍篇幅过大这里就,不做详细描述。详情请见ADC0809芯片简介
硬件及连线
甲机(发射机)代码:
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
int display[]= {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
int show[4]={0,1,2,3};
sbit OE=P3^4;
sbit EOC=P3^5;
sbit ST=P3^6;
sbit CLK=P3^7;
sbit L1=P2^0;
sbit L2=P2^1;
sbit L3=P2^2;
sbit L4=P2^3;
uint num;
void delay(int x)
{
int i;
while(x--)
{
for(i=0;i<120;i++);
}
}
void xianshi(uint x) //显示函数
{
int i,p_2;
x=x*100/51; //AD转换值换算为相应电压值
show[0]=0;//5V用不到这一位
show[1]=x/100;
show[2]=x%100/10;
show[3]=x%10;
p_2=0x01;
for(i=0; i<4; i++)
{
P0=0x00; //清屏,避免重影
if(i==1)
P0=display[show[i]]+0x80;
else
P0=display[show[i]];
P2=~p_2;
p_2=p_2<<1;
delay(3);
}
}
void sending(uint i)//发送
{
SBUF=i;//送给缓冲器
while(!TI);//发送完毕
TI=0;//清零
}
void Init()
{
SCON=0X40;
PCON=0x00;
TMOD=0x20;
TH1=0xFD;
TL1=0xFD;
ES=1; //打开接收中断
EA=1; //打开总中断
TR1=1;
}
void main()
{
Init();
while(1)
{
ST=0;
OE=0;
ST=1;//启动转换器,
ST=0;//下降沿开始转换
while(!EOC);//EOC转换完成
OE=1;//输出允许位有效
num=P1;
xianshi(num);//将P3口状态显示
OE=0;//输出关闭
sending(num);
}
}
乙机(接收机)代码:
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
int display[]= {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
int show[4]={0};
uint num=0;
void delay(int x)
{
int i;
while(x--)
{
for(i=0;i<120;i++);
}
}
void xianshi() //显示函数
{
int i,p_2;
num=num*100/51; //AD转换值换算为相应电压值
show[0]=0;//5V用不到这一位
show[1]=num/100;
show[2]=num%100/10;
show[3]=num%10;
p_2=0x01;
for(i=0; i<4; i++)
{
P0=0x00; //清屏,避免重影
if(i==1)
P0=display[show[i]]+0x80;
else
P0=display[show[i]];
P2=~p_2;
p_2=p_2<<1;
delay(10);
}
}
void receive() interrupt 4//接收
{
if(RI)//接收完毕
{
num=SBUF;//取出数据
RI=0;//清零
}
//xianshi();
}
void UART_init()
{
TMOD=0x20;//T1工作方式2
SCON=0x50;//串行口方式1允许接收
PCON=0x00;//波特率不加倍
TH1=0XFD; //计数器初始值设置,注意波特率是9600的
TL1=0XFD;
TR1=1;
EA=1;
ES=1;
}
void main()
{
UART_init();
while(1)
{
xianshi();//将P3口状态显示
}
}
仿真结果
最大电压位5V:
标签:P2,AD,int,unsigned,甲机,通信,单片机,sbit,define 来源: https://blog.csdn.net/flakjsdfhjka/article/details/106955631
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。