在proteus仿真单片机的时候,比较麻烦的是串口通讯,实际串口通讯也就是一个收发显示的问题。这个一般的可以通过虚拟串口软件来解决(如virtual serial port)。但如果我们没有真正的出口需求的软件,只是想通过串口输出显示的话,完全不必那么麻烦。用一个虚拟终端就可以解决问题。
文章出处: https://haigear.blog.csdn.net/article/details/107141526
一、代码
比如,如下代码,我们仅仅想将写入和读出内存的内容显示出来看看是否正确,那么这个时候虚拟终端就是我们最理想的利器
#include <EEPROM.h>
int addr = 0;
void setup()
{
Serial.begin(9600);
Serial.println("Writting is beginning");
delay(100);
for (int i = 0; i < 512; i++)
EEPROM.write(i, 0);
}
void loop()
{
addr = addr + 1;
if (addr == 512) // 当读写位置到了最大容量时,注意不要溢出。
addr = 0;
int value= EEPROM.read(addr);
Serial.print(addr);
Serial.print("\t");
Serial.print(value, DEC);
Serial.println();
delay(100);
}
二、电路图
接法如下:
三、显示效果:
四、设置与显示
上图是采用的328P来直接充当的arduino板,那么就需要对晶振进行设置(arduino板的仿真模块是无须设置的,可以正常显示)否则就会出现虚拟终端显示乱码。
最关键点,就是要设置这里的时钟频率Clock frequency和CKSEL Fuses两个地方。当然,时钟分频部分也要设置为非编程模式Unprogrammed.
除了上面的设置,那么就是波特率的设置,波特率对应一致就会显示正确。
五、关于乱码
与上面的328P一样,在8051等单片机与虚拟中断连接做显示的时候同样会遇到这样的问题,需要单独对晶振的频率进行设置,否则就会引起虚拟中断乱码,一般8051的设置为11.0592M即可(或者把虚拟终端的频率设置为与单片机同频率也可)。
当然,如果你的单片机没有加载程序也会出现乱码,很显然,你把程序加载上去才能够正常显示。
码字不易,转载注明出处:https://haigear.blog.csdn.net/article/details/107141526