【51单片机】 系统扩展和串行通信

一、8255与8051单片机的连接要求: 8255的片选信号CS连到8051的P2.7,端口地址选择信号A1、A0由P2.1、P2.0提供。画出Proteus电路,分析8255的PA、PB、PC及控制口的地址。编程实现8255的PA口按方式0输出,PB口按方式0输入,将PB口外接8个开关,开关的状态通过PA口外接的8个LED灯反映出来。利用Proteus进行仿真。

原理图如下:

C语言代码如下:

#include<reg52.h>
#include <absacc.h>
#define uchar usigned char
#define    PORTA 0x7CFF		 //定义8255 PA口地址
#define    PORTB 0x7DFF		 //定义8255 PB口地址
#define    PORTC 0x7EFF		 //定义8255 PC口地址
#define    CADDR 0x7FFF		 //定义控制口地址

void main(){
     XBYTE [CADDR] = 0x82;
     while(1){
        XBYTE[PORTA] = XBYTE[PORTB];
             }
}

二、8051串行口采用方式1发送数据给PC,晶振频率11.0592MHz,定时器T1作为波特率发生器,工作在方式2,设置波特率为9600,smod=0,计算T1的初值并给出C语言程序设计, Proteus设计电路并进行仿真。

首先计算SCON和T1的初值:

SCON=01010000=50H

T1=256-11059200/(9600*32*12)=256-3=253=FDH

代码如下:

#include<reg51.h>
code Tab [ ]={ 0x31, 0x32, 0x33,0x34,0x35,0x36,0x37,0x38,0x39};
void send(unsigned char dat ){
	SBUF=dat;
	while(TI==0);
	TI=0;
}
void delay()
{    unsigned int i;
    for(i=0;i<30000;i++);
}
	void main(void){  	 
		unsigned char i;
		TMOD=0X20;	
		SCON=0X50;
		PCON=0X00;
		TH1=0xFD;
		TL1=0xFD;
		TR1=1;
		while(1){
			for(i=0;i<9;i++){
				send(Tab[i]);
				P1=Tab[i]-0x30;
				delay();}
		}
}

keil5仿真图:

 protues仿真原理图:

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值