欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
基于單片機(jī)的雙機(jī)通信電路設(shè)計(jì)(十六進(jìn)制)附仿真程序
[打印本頁(yè)]
作者:
2219945883
時(shí)間:
2024-6-26 09:13
標(biāo)題:
基于單片機(jī)的雙機(jī)通信電路設(shè)計(jì)(十六進(jìn)制)附仿真程序
這是學(xué)單片機(jī)以來(lái)做的第二個(gè)實(shí)驗(yàn)內(nèi)容 ,文件含proteus仿真工程以及keil源文件,功能(如下)都已經(jīng)實(shí)現(xiàn)。新人第一次發(fā)分享的帖子,請(qǐng)大家多多指教。
單片機(jī)功能;在二個(gè)單片機(jī)之間編程實(shí)現(xiàn)串行口通訊,發(fā)送方以流水燈字節(jié)碼作為發(fā)送數(shù)據(jù)定時(shí)發(fā)送,并在接收方的 P0 口上顯示接收到的字節(jié),在數(shù)碼屏上以十六進(jìn)制顯示,中間有按鈕可以啟動(dòng)和暫停。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
屏幕截圖 2024-06-26 091050.png
(187.15 KB, 下載次數(shù): 15)
下載附件
2024-6-26 09:11 上傳
發(fā)送方源碼
#include<reg51.h>
#define uchar unsigned char
uchar code Tab[16]={0xC0,/*0*/
0xF9,/*1*/
0xA4,/*2*/
0xB0,/*3*/
0x99,/*4*/
0x92,/*5*/
0x82,/*6*/
0xF8,/*7*/
0x80,/*8*/
0x90,/*9*/
0x88,/*A*/
0x83,/*B*/
0xC6,/*C*/
0xA1,/*D*/
0x86,/*E*/
0x8E /*F*/};
uchar Counter=0;Second_1=0,Second_0=0;
sbit Key = P3^2;
void Display(void);
void Delay(void);
void UARTInit(void);
void UARTSend(uchar data1);
void timer0Init(void);
void main()
{
P1=0xff;//給流水燈初始化值
UARTInit();//串口初始化
timer0Init();//定時(shí)器初始化
while(1)
{
if(Key == 0)
{
EA = 1; //打開(kāi)總中斷
}
if(Key == 1)
{
EA = 0; //關(guān)閉總中斷
}
Display();//數(shù)碼管顯示函數(shù)
}
}
void Display(void)
{
switch (P1)//根據(jù)P1的值給數(shù)碼管賦值
{
case 0xFE:{Second_1 = 15, Second_0 = 14; break;}
case 0xFD:{Second_1 = 15, Second_0 = 13; break;}
case 0xFB:{Second_1 = 15, Second_0 = 11; break;}
case 0xF7:{Second_1 = 15, Second_0 = 7 ; break;}
case 0xEF:{Second_1 = 14, Second_0 = 15; break;}
case 0xDF:{Second_1 = 13, Second_0 = 15; break;}
case 0xBF:{Second_1 = 11, Second_0 = 15; break;}
case 0x7F:{Second_1 = 7 , Second_0 = 15; break;}
default: break;
}
P0=Tab[Second_1];
P2=0x01;
Delay();
P2=0x00;
P0=Tab[Second_0];
P2=0x02;
Delay();
P2=0x00;
}
void timer0Init()
{
EA = 1; //打開(kāi)總中斷
ET0 = 1;//打開(kāi)定時(shí)器0中斷
TR0 = 1; //啟動(dòng)定時(shí)器0
REN = 1;//允許串口接收
TMOD |= 0X01; //定時(shí)器工作模式1,16位定時(shí)模式
TH0=0x3c;
TL0=0xb0;
}
//串口初始化
void UARTInit()
{
EA = 1; //打開(kāi)總中斷
ES = 1; //打開(kāi)串口中斷
SM0 = 0; SM1 = 1;//串口工作方式1,8位UART波特率可變
REN = 1;//串口允許接收
TR1 = 1;//啟動(dòng)定時(shí)器1
TMOD |= 0x20;//定時(shí)器1,工作模式2 8位自動(dòng)重裝
TH1 = 0xfd;
TL1 = 0xfd;//設(shè)置比特率9600
}
void Timer0() interrupt 1
{
ET0=0;
TH0=0x3c;
TL0=0xb0;
Counter++;
if(Counter==20)
{
Counter=0;
P1<<=1;//左移一位
P1|=0x01;//最后一位補(bǔ)1
if(P1==0xff)//檢測(cè)是否移到最左端
{
P1=0xfe;
}
UARTSend(P1);//串口發(fā)送流水燈的值
}
ET0=1;
}
// 串口發(fā)送函數(shù)
void UARTSend(uchar data1)
{
SBUF = data1;
while(!TI);
TI = 0;
}
void Delay(void)
{
uchar data i;
for(i=500;i>0;i--);
}
復(fù)制代碼
接收方源碼
#include <reg51.h>
#define uchar unsigned char
uchar code Tab[16]={0xC0,/*0*/
0xF9,/*1*/
0xA4,/*2*/
0xB0,/*3*/
0x99,/*4*/
0x92,/*5*/
0x82,/*6*/
0xF8,/*7*/
0x80,/*8*/
0x90,/*9*/
0x88,/*A*/
0x83,/*B*/
0xC6,/*C*/
0xA1,/*D*/
0x86,/*E*/
0x8E /*F*/};
uchar Counter=0;Second_1=0,Second_0=0;
uchar receivedData = 0;//串口接收數(shù)據(jù)
void Display(void);
void Delay(void);
void UARTInit(void);
void main()
{
P1=0xff;//給初始化值
UARTInit(); // 初始化串口
while (1)
{
Display();//數(shù)碼管顯示函數(shù)
}
}
void Display(void)
{
switch (P1)
{
case 0xFE:{Second_1 = 15, Second_0 = 14; break;}
case 0xFD:{Second_1 = 15, Second_0 = 13; break;}
case 0xFB:{Second_1 = 15, Second_0 = 11; break;}
case 0xF7:{Second_1 = 15, Second_0 = 7 ; break;}
case 0xEF:{Second_1 = 14, Second_0 = 15; break;}
case 0xDF:{Second_1 = 13, Second_0 = 15; break;}
case 0xBF:{Second_1 = 11, Second_0 = 15; break;}
case 0x7F:{Second_1 = 7 , Second_0 = 15; break;}
default: break;
}
P0=Tab[Second_1];
P2=0x01;
Delay();
P2=0x00;
P0=Tab[Second_0];
P2=0x02;
Delay();
P2=0x00;
}
//串口初始化
void UARTInit()
{
EA = 1; //打開(kāi)總中斷
ES = 1; //打開(kāi)串口中斷
SM0 = 0; SM1 = 1;//串口工作方式1,8位UART波特率可變
REN = 1;//串口允許接收
TR1 = 1;//啟動(dòng)定時(shí)器1
TMOD |= 0x20;//定時(shí)器1,工作模式2 8位自動(dòng)重裝
TH1 = 0xfd;
TL1 = 0xfd;//設(shè)置比特率9600
}
// 串口接收函數(shù)
void UART() interrupt 4
{
if(RI)
{
RI = 0;
receivedData = SBUF;
P1 = receivedData;
}
else
TI = 0;
}
void Delay(void)
{
uchar data i;
for(i=500;i>0;i--);
}
復(fù)制代碼
Proteus8.10 仿真程序:
基于單片機(jī)的雙機(jī)通信電路設(shè)計(jì).7z
(66.14 KB, 下載次數(shù): 2)
2024-6-26 14:21 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1