用PROTEUS仿真单片机串口通讯

发布者:Zhenai5201314最新更新时间:2024-08-14 来源: cnblogs关键字:PROTEUS仿真  单片机  串口通讯 手机看文章 扫描二维码
随时随地手机看文章

设计要求:

实现与Proteus中的8051单片机进行串行通信。先回顾一下串行通信。在串行通信中有两个引脚分别称为TX和RX。TX引脚用于发送数据,而RX引脚用于接收数据。


原理图和代码就直接放一下好了

#include


#define Baud_rate 0xFD


void SerialInitialize(void);

void SendByteSerially(unsigned char);

void cct_init(void);


sbit Appliance1 = P1^0;

sbit Appliance2 = P1^1;

sbit Appliance3 = P1^2;

sbit Appliance4 = P1^3;

sbit Appliance5 = P1^4;

sbit Appliance6 = P1^5;

sbit Appliance7 = P1^6;

sbit Appliance8 = P1^7;



void main()

{

cct_init();

SerialInitialize();


EA = 1;

ES = 1;


 while(1) {;}

}



void cct_init(void) 

{

 P0 = 0x00; 

 P1 = 0x00;  

 P2 = 0x00;  

 P3 = 0x03; 


}


void SerialInitialize(void) 

{

 TMOD = 0x20; 

SCON = 0x50;

 

 TH1 = Baud_rate; 

 TR1 = 1; 

}


void SendByteSerially(unsigned char serialdata)

{

 SBUF = serialdata; 

 while(TI == 0); 

 TI = 0; 

}


void serial_ISR (void) interrupt 4

{

 

 char chr;

 if(RI==1)

 {

 chr = SBUF;

 RI = 0;

 }


 P0 = ~P0; 


 switch(chr)

 {

 case '1': Appliance1 = 1; SendByteSerially('k'); break;

 case '2': Appliance2 = 1; SendByteSerially('k'); break;

 case '3': Appliance3 = 1; SendByteSerially('k'); break;

 case '4': Appliance4 = 1; SendByteSerially('k'); break;

 case '5': Appliance5 = 1; SendByteSerially('k'); break;

 case '6': Appliance6 = 1; SendByteSerially('k'); break;

 case '7': Appliance7 = 1; SendByteSerially('k'); break;

 case '8': Appliance8 = 1; SendByteSerially('k'); break;

     

 case 'a': Appliance1 = 0; SendByteSerially('k'); break;

 case 'b': Appliance2 = 0; SendByteSerially('k'); break;

 case 'c': Appliance3 = 0; SendByteSerially('k'); break;

 case 'd': Appliance4 = 0; SendByteSerially('k'); break;

 case 'e': Appliance5 = 0; SendByteSerially('k'); break;

 case 'f': Appliance6 = 0; SendByteSerially('k'); break;

 case 'g': Appliance7 = 0; SendByteSerially('k'); break;

 case 'h': Appliance8 = 0; SendByteSerially('k'); break;



 default: ; break;

 }


 RI = 0;

}


好像没什么特别需要注意的

关键字:PROTEUS仿真  单片机  串口通讯 引用地址:用PROTEUS仿真单片机串口通讯

上一篇:机器周期,指令周期,时钟周期,节拍与晶振
下一篇:用PROTEUS仿真点亮LED项目

推荐阅读最新更新时间:2026-03-21 04:21

《逗比小憨憨51单片机Proteus仿真系列》第14期基于单片机的LCD12864显示汉字实验
源代码: #include reg52.h #include intrins.h #define LcdDataPort P2 typedef unsigned char u8; typedef unsigned int u16; sbit Busy = P2^7; sbit Reset = P3^0; sbit RS = P3^1; sbit E = P3^2; sbit RW = P3^3; sbit CS1 = P3^4; sbit CS2 = P3^5; const u8 code table1 =
[单片机]
《逗比小憨憨51单片机Proteus仿真系列》第28期单片机+74HC164+数码管显示
源代码: LEDCLK EQU P1.5 LEDDTA EQU P1.6 LEDCS EQU P1.7 ORG 0000H AJMP MAIN ORG 0030H MAIN: SETB LEDCS MOV 40H,#1 MOV 41H,#2 MOV 42H,#3 MOV 43H,#4 MOV 44H,#5 MOV 45H,#6 MOV R7,#06H MOV R0,#40H NEXT: MOV A,@R0 CALL DOUT INC R0 DJNZ R7,NEXT CLR LEDCS AJMP MAIN DOUT: MOV DPTR,#TAB MOVC A,@A+DPTR JNB
[单片机]
《逗比小憨憨51单片机Proteus仿真系列》第13期单片机的虚拟串口实验仿真
源代码: #include reg51.h //void delay_ms(int xms) //{ // int k,j; // for(k = 0; k xms; k++) // for(j = 0; j 125; j++);//1ms //} void init(void) { TMOD = 0X20; SCON = 0X50; PCON = 0X00; TL1 = 0XFD; TH1 = 0XFD; //11.0592M 9600 TR1 = 1; } void main(void) { unsigned char dat; init(); while(1) { if(RI) {
[单片机]
单片机实现PWM LED灯亮度调节:详细教程与Proteus仿真源码分享
单片机实现PWM LED灯亮度调节及Proteus仿真 PWM(脉宽调制)是一种常见的调节电流、功率以及信号的技术。它广泛应用于LED灯亮度调节、马达控制、音频输出等场景。在单片机控制的应用中,我们通常通过PWM信号来调节LED灯的亮度,通过改变占空比来控制LED的亮灭程度,从而实现亮度调节。 在本项目中,我们将使用单片机(如AT89C51或类似的8051系列单片机)来实现PWM控制LED亮度的功能,并通过Proteus仿真进行测试和验证。 1. 项目需求分析 目标: 实现PWM信号生成:通过单片机产生PWM信号,并控制LED亮度。 通过按钮调节亮度:使用按钮来增加或减少LED的亮度。 通过PWM控制LED亮度:LED的亮
[单片机]
《逗比小憨憨51单片机Proteus仿真系列》第21期基于单片机的简易音乐播放器设计与仿真
源代码: #include reg51.h #define SYSTEM_OSC 12000000 #define SOUND_SPACE 4/5 sbit BeepIO = P3^7; unsigned int code FreTab = { 262,277,294,311,330,349,369,392,415,440,466,494 }; unsigned char code SignTab = { 0,2,4,5,7,9,11 }; unsigned char code LengthTab = { 1,2,4,8,16,32,64 }; unsigned char Sound_Temp_
[单片机]
Proteus仿真实例:基于51单片机设计得交通灯控制系统
这次我们来认识一个稍微复杂一点的单片机系统。下面这个基于Proteus仿真51单片机的交通灯控制系统,用到的元器件在Proteus软件内找到。 交通灯系统仿真 系统包括: Proteus仿真51单片机控制器 晶振电路(晶振电路是最小系统中的时钟电路,给单片机提供时间基准。它产生像时钟一样准确运动的振荡电路。任何工作都按时间顺序。用于产生这个时间的电路就是时钟电路。时钟电路一般由晶体振荡器心、晶振控制芯片和电容组成。) 复位电路(单片机复位电路是单片机系统中不可或缺的一部分,它是系统正常工作的基础。它有助于单片机系统从异常状态恢复到正常状态,并保持系统的稳定性。 单片机复位电路主要由复位电路和复位信号两部分组成。复位信号是由
[单片机]
基于51单片机的简易电子琴的设计与制作(Proteus仿真部分)
题目: 基于51单片机的简易电子琴的设计与制作(Proteus仿真部分) 仿真图: Proteus仿真连线图 程序源代码: /* *@brief: 基于单片机的简易电子琴设计与制作 *@author: 逗比小憨憨 *@website:https://space.bilibili.com/314404732 */ #include reg51.h #define uint unsigned int #define uchar unsigned char #define KEYPORT P1 #define SMGPORT P0 #define delayValue 10 sbit buzzer=P2^3; uint
[单片机]
PROTEUS仿真单片机与LCD接口项目
设计要求: 在上一个项目中,介绍了如何使用8051微控制器进行串行通信,这是一个非常基础的项目,不需要太多的硬件。接下来将实现LCD与8051微控制器的接口。经常将LCD作为硬件工程项目的调试工具。使用LCD来显示不同的值。例如, ATM机,手机也都配有LCD。该项目将使用通常称为1602 的LCD。因此,我们使用8051单片机同LCD的连接。 还是放一下图和代码吧 #include reg51.h #define uchar unsigned char #define uint unsigned int sbit RS = P1^0; sbit RW = P1^2; sbit EN = P1^1; voi
[单片机]
用<font color='red'>PROTEUS仿真</font><font color='red'>单片机</font>与LCD接口项目
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved