栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【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
#include 
#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
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仿真原理图:

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/604880.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号