proteus 8.9 8.6 串口 无法仿真 仿真不出来 51单片机
分享一个问题,STC89C52。
今天使用仿真软件去仿真51单片机的串口,却发现无论怎么设置51单片机计算器串口都无法工作,经过多方面的调试最终发现是keil的原因。可能的原因是:可能程序工程是很早以前创建的,和现在电脑版本的有所区别,编译出来的窗口是不能使用的。
解决方法:当前电脑用什么版本的keil软件,自己用软件创建出一个新的工程。
下面我贴出能够正常工作的仿真图和仿真代码。
另外一个分析:如果用了定时器0,把初始化定时器0的代码放在初始化串口之后。
下面就是我的仿真图:
下面就是我的测试代码:
#include "reg52.h"
#include <intrins.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>/********************************************************************************** 【函 数 名】: void send_cmd(unsigned char dat)* 【功 能】: 串口发送数据命令**********************************************************************************/
void send( unsigned char dat )
{SBUF = dat; /* 发送指令到SBUF */while ( !TI ); /* 等待发送结束 */TI = 0; /* 清除结束标志,以便再发送数据 */
}
/********************************************************************************** 【函 数 名】: Print_Str(unsigned char *s)* 【功 能】: 串口发送 一个字符串**********************************************************************************/
void Print_Str( unsigned char *s )
{while ( *s != '\0' ){send( *s++ );}
}
#define FSOC 11059200L /* 晶振 */
#define BAUD 9600 /* 波特率 */
/********************************************************************************** 【函 数 名】: void SerInit(void)* 【功 能】: 串口初始化程序 设置波特率为9600**********************************************************************************/
void SerInit( void )
{SCON = 0x50; /* 010 1 0000B,工作方式1, 8位UART,波特率可变,允许接收 */TMOD = 0x20; /* T1工作于方式2 */TCON = 0x40; /* 定时器1开始计数 */TH1 = -(FSOC / BAUD / 12 / 16); /* T1计数初值 */TL1 = -(FSOC / BAUD / 12 / 16);PCON = 0x80; /* SMOD置1,双倍速率 */RI = 0;TI = 0;ES = 1; /* 关闭串口中断 */
}unsigned char Txd_data;
void Uart_isr() interrupt 4 /* 中断接收程序 */
{if ( RI ) /* 判断是否接收完,接收完成后,由硬件置RI位 */{Txd_data = SBUF; /* 读入缓冲区 */RI = 0; /* 清标志 */send( Txd_data );}
}void delay_ms( unsigned int t ) /* 延时xms */
{unsigned char ttt;while ( t-- ){for ( ttt = 0; ttt < 125; ttt++ );}
}
/*********************************************************************************** 主函数**********************************************************************************/
void main( void )
{SerInit();EA = 1;delay_ms( 200 );Print_Str( "zheng dian bao shi " );Print_Str( "\r\n" ); /* 发送换行符号 便于看 */while ( 1 ){}
}
proteus 8.9 8.6 串口 无法仿真 仿真不出来 51单片机相关推荐
- 51单片机串口通信模板_深入理解51单片机串口通信及通信实例
串口通信的原理 串口通信(SerialCommunications)的概念非常简单,串口按位(bit)发送和接收字节.尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一 ...
- c语言设计一个仿真窗口的程序,51单片机C语言实例(350例)Proteus仿真和代码
100-24c02记忆开机次数 101-24c02存储上次使用中状态 102-DS1302 时钟原理 103-DS1302可调时钟 104-DS1302时钟串口自动更新时间 105-1602液晶显示D ...
- sTC8G1K08+通过串口显示内部电压_基于51单片机的数字电流电压表
请点上面蓝色字 即可免费订阅! 1.简述 本文介绍了基于STC89C52单片机为核心,分别以ACS712-05芯片和串联分压电路为为电流检测和电压检测电路,并通过AD0809数模转换芯片对电压 ...
- 恒温控制系统单片机仿真c语言,基于51单片机的恒温控制系统
#include void main()//主函数 { init();//初始化函数 while(1) { temp_control();//控制按键函数 unnormal_proccessing(g ...
- 51单片机+DS18B20+数码管显示+串口通讯+Proteus仿真
51单片机+DS18B20+数码管显示+串口通讯+Proteus仿真 本实验通过51单片机读取DS18B20温度传感器的温度,然后通过数码管显示,并通过串口,将读取到的温度数据发送出去. 本案例需要使 ...
- 基于51单片机简易数字示波器Proteus仿真
功能介绍: 采用51单片机作为主控CPU:LCD12864可显示方波,三角波,锯齿波,正弦波等,可通过光标对波形进行测量,可以调节显示波形的幅度和频率,也可以将波形进行左右拖拉,完美的仿真出一个51单 ...
- 51单片机全自动洗衣机proteus仿真设计
51单片机全自动洗衣机proteus仿真设计 目录标题 51单片机全自动洗衣机proteus仿真设计 设计介绍 仿真图 电动机驱动模块电路设计 电源模块电路设计 控制按键 进水阀和排水阀控制继电器 程 ...
- 使用proteus仿真51单片机来实现十字路口红绿灯
一.实验内容 1.需要仿真的元件:51单片机,一个动态显示的双数码管,六个LED灯. 2.实验要求:做一个十字路口红绿灯,每一向各一个,红绿灯要求能够按照通行的要求来亮灯.南北向红绿灯,红灯亮60秒, ...
- 基于51单片机的多彩霓虹灯控制系统proteus仿真
仿真电路图: 基于51单片机,8个LED组成流水灯,通过一个按键切换模式 部分代码: #include<reg51.h>void delay(unsigned char ms) //延时函 ...
- 51单片机温度检测及串口传输(带时间显示)
具体实现功能: 1.LCD显示实时时钟:年.月.日.时.分.秒: 2.实时测量温度,LCD更新显示温度值: 3.按键触发存储当前温度和时钟信息(年.月.日.时.分): 4.按键触发串口传输存储的温度和 ...
最新文章
- 计算机书籍- 网络爬虫开发实战
- 古塔问题matlab,基于 Matlab 对古塔变形趋势探究的数学模型
- 极致的线上产品设计与终极数据分析工具,两者缺一不可(中)
- [Cake] 2. dotnet 全局工具 cake
- 配置springcloud配置中心读取github上的配置文件报错:com.jcraft.jsch.JSchException: Auth fail解决方案
- python requests 10041报错_Python:requests高级_模拟登陆
- 实验4-1-10 兔子繁衍问题 (15 分)
- php memcache 有效期,PHP可以拿到memcache中的key的过期时间吗?
- astype()函数
- 3、FFmpeg 过滤器
- Anaconda安装报错(Failed to create Anaconda menus)
- cds云服务器_云探CDS拨测服务全面上线
- Cadence学习七:给板子外形倒角
- mysql group_concat去重_mysql GROUP_CONCAT 函数 将相同的键的多个单元格合并到一个单元格...
- java拼图游戏设计文档_基于JAVA的拼图游戏的设计与实现(含录像)
- 一文带你理解前后端分离本质
- 画多个矩形c语言,C# winform开发:Graphics、pictureBox同时画多个矩形
- l5630鲁大师跑分_鲁大师安卓3D引擎更新,跑分测试精准度再升级
- mysql5.7 树遍历_Mysql5.7 存储过程 遍历select结果集并进行其他操作
- selenium版本低导致运行报错打不开浏览器问题