1、51 单片机开发的点阵实验附录 2 中讲到 Proteus 调试单片机串口的方法附录 1 中讲到 8*8 点阵的显示原理以下程序有本人编写,请参考:用串口调试助手发送个 16 进制 01 是个笑脸;02 是个哭脸。可以用上图,基于 proteus 做仿真。C51 程序:#include#define uchar unsigned char#define uint unsigned intsbit le1=P10;sbit le2=P11;sbit le3=P12;sbit le4=P13;uchar code tab=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7
2、f;uchar code tac88=0x00,0x00,0xf8,0x04,0x32,0x4a,0x02,0x02,0x02,0x12,0x22,0xc2,0x04,0xf8,0x00,0x00,0x00,0x00,0x1f,0x20,0x4c,0x52,0x40,0x40,0x40,0x48,0x44,0x43,0x20,0x1f,0x00,0x00,/笑脸0x00,0x00,0xf8,0x04,0x02,0x4a,0x32,0x02,0x02,0x02,0xc2,0x22,0x04,0xf8,0x00,0x00,0x00,0x00,0x1f,0x20,0x40,0x52,0x4c,0x4
3、0,0x40,0x40,0x43,0x44,0x20,0x1f,0x00,0x00,/哭脸;uchar a=0;int b=0,c=0,flag=0,i;void init()/初始化TMOD=0x20;TH1=0xfd;TL1=0xfd;TR1=1;SM0=0;SM1=1;REN=1;EA=1;ES=1;void delay(uint n)uint i,j;for(i=n;i0;i-)for(j=80;j0;j-);void display()/显示if(b=1)c=0;if(b=2)c=4; P1=0xff;P0=0x00;P2=0xff;le2=0;le4=0;for(i=0;i8;i+
4、)P2=tabi;P0=tac0+ci;delay(1);P1=0xff;P0=0x00;P2=0xff; le1=0;le4=0;for(i=0;i8;i+)P2=tabi;P0=tac1+ci;delay(1);P1=0xff;P0=0x00;P2=0xff; le1=0;le3=0;for(i=0;i8;i+)P2=tabi;P0=tac2+ci;delay(1);P1=0xff;P0=0x00;P2=0xff; le2=0;le3=0;for(i=0;i8;i+)P2=tabi;P0=tac3+ci;delay(1);void main()init();while(1) if(flag
5、=1) if(b=1|b=2)display(); void ser()interrupt 4/串口中断RI=0;a=SBUF;if(a=0x01)b=1;if(a=0x02)b=2;flag=1;附 1:目前我会的有 3 种1.单片机+虚拟终端(作为串口输入设备)+串口2.单片机+虚拟终端(作为串口输入设备)+MAX232+串口3.单片机+串口+虚拟串口程序(virtual serial port)+串口调试助手4.单片机+MAX232+串口+虚拟串口程序(virtual serial port)+串口调试助手(这个不会,主要是不知道该怎么在 Proteus 中连线,理论上方法 4 和 3
6、的连线方法是没有太大差别的,我也不知道哪里设置不对,一直没弄成功,问题出在加入了 MAX232 后)方法 1 和 2 的区别不大,只是在串口和单片机中间多接个 MAX232,因为是仿真软件,所以串口有和没有 MAX232 的仿真结果是一样的,就是细节上的设置不同方法 1 连线如下:方法 2 连线图如下:方法 1 和方法 2 的区别在 PCT(虚拟终端输入串口的 PCT 计算机发送端)的一个设置参数不同,(当波特率改变的时候虚拟终端里面的波特率设置也要改变)方法 1 设置如下 方法 2 设置如下不同的地方在 PCT,串口这边的虚拟终端的 RX/TX Polarity 的设置不同,当在单片机和串口间没接入 MAX232,该项设置为 normal,当在其间接入了 MAX232 该项设置为inverted。综上所述:方法 1 和方法 2 其实是 1 类方法,共同点是单片机的发送端(TXD)与串口接收端(RXD)相连,单片机接收端(RXD)与串口发送端(TXD)相连。(这种连接是交叉连接)方法 3 和方法 4 区别不大,只是在串口和单片机之间多加入了 MAX232,其实实物连接时是要加入 MAX232 的,但是加入 MAX232 的方法 4 用 Proteus 仿真不出来,就仿真效果而言方法 3 和方法 4 是一样的。方法 3 连线图如下: