標題:
51單片機串口通信Proteus仿真程序
[打印本頁]
作者:
shizhi`xun
時間:
2019-11-17 17:33
標題:
51單片機串口通信Proteus仿真程序
使用串口通信。具體功能描述如下:采用USART,波特率為9600,一個單片機發(fā)送數(shù)字,一個單片機接收,并把接收的數(shù)字用數(shù)碼管顯示。
51hei.png
(18.08 KB, 下載次數(shù): 57)
下載附件
2019-11-22 13:41 上傳
單片機源程序如下:
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int //宏定義
bit tt;
uchar aa;
void display(uchar aa);
void delay(uint c);
void init();
sbit Ledshi = P2^0; //十位數(shù)碼管使能端
sbit Ledge = P2^1; //個位數(shù)碼管使能端
uchar ma[]=
{
0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f
}; //編碼0~9
void main()
{
init();
while(1)
{
while(tt)
{
display(aa);
delay(20);
}
}
}
void init()
{
PCON &= 0x7F; //波特率不加倍
TMOD=0x20; //定時器1工作方式2
TH1=0xfd;
TL1=0xfd; //給定時器定初值,設(shè)置波特率為9600
TR1=1; //開啟定時器1工作
SCON=0x50; //允許串行口接收數(shù)據(jù),設(shè)置串行口工作方式1
EA=1;
ES=1; //打開串行口中斷
ET1=0; //禁止定時器1中斷
}
void display(uchar aa) //顯示函數(shù)
{
uchar shi,ge;
shi=aa/10; //取十位
ge=aa%10; //取個位
P0=ma[shi]; //送十位值
P2=0xbf; //選擇段選位置
delay(5);
P0=0; //數(shù)碼管消影
P2=0xff;
P0=ma[ge]; //送個位值
P2=0x7f; //選擇段選位置
delay(5);
P0=0; //數(shù)碼管消影
P2=0xff;
}
void delay(uint c) //延時函數(shù)
{
uchar i,j;
for(i=0;i<c;i++)
for(j=0;j<110;j++);
}
void receive() interrupt 4
{
aa=SBUF;
tt = 1; //接受一次后打開顯示
ES = 0; //關(guān)閉串行中斷
RI = 0; //清除串行接受標志位
}
復(fù)制代碼
所有資料51hei提供下載:
51單片機串口通信.zip
(18.6 KB, 下載次數(shù): 157)
2019-11-17 17:32 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
value123
時間:
2019-12-31 00:04
tt這個變量什么意思?
作者:
s擦掉
時間:
2020-5-31 18:47
少東西,下完后只有一個單片機的程序,缺少另一個發(fā)送的
作者:
csy-2015-06
時間:
2020-6-4 00:10
大學(xué)的練習(xí)?
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1