您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 基于Proteus虚拟终端51单片机仿真:串口发送字符串-数码管显示
先上图:实验程序:/**********************************************************************************【编写时间】:2016年6月17日*【作者】:小瓶子*【实验平台】:Proteus7*【外部晶振】:11.0592mhz*【主控芯片】:STC89C51*【编译环境】:KeilμVisio4*【程序功能】:在虚拟终端发送8个字符,通过数码管和虚拟*终端显示出来,8个字符发送完毕,显示发送完毕**********************************************************************************/#includereg51.h#includeintrins.h#defineucharunsignedchar#defineuintunsignedintucharbufr[]=------\r\n;//存放接收数据uchar*prx=&bufr;//接收指针bitstr;//接收完毕标志位//段码ucharcodeleddata[]={0xC0,//00xF9,//10xA4,//20xB0,//30x99,//40x92,//50x82,//60xF8,//70x80,//80x90,//90x88,//A0x83,//B0xC6,//C0xA1,//D0x86,//E0x8E,//F0x89,//H0xC7,//L0xC8,//n0xC1,//u0x8C,//P0xA3,//o0xBF,//-0xFF,//熄灭0xFF//自定义};//延时函数voiddelay(uinti){uintm,n;for(m=i;m0;m--)for(n=90;n0;n--);}//数码管显示函数voidled_display(){uchari;P2=0x01;for(i=0;i8;i++){P0=0xff;P2=_cror_(P2,1);P0=leddata[bufr[i]-'0'];delay(2);}}//字符发送函数voidputchar(uchardata1){SBUF=data1;//将待发送的字符送入发送缓冲器while(!TI);//等待发送完成TI=0;//发送中断标志请0}//字符串发送函数voidputstring(uchar*dat){while(*dat!='\0')//判断字符串是否发送完毕{putchar(*dat);//发送单个字符dat++;//字符地址加1,指向先下一个字符delay(5);}}//串口初始化函数voidserial_init(){TMOD=0x20;//定时器工作方式2SCON=0x50;//串行口工作方式2PCON=0x80;//SMOD=1,波特率加倍TH1=0xfa;TL1=0xfa;//波特率设置9600ES=1;EA=1;//开总中断}voidmain(){serial_init();TR1=1;putstring(Receivingfrom8051...\r\n);putstring(----------------------\r\n);delay(50);while(!str);//等待接收完毕while(1){P0=0xff;while(!str);led_display();}}voidserial()interrupt4{if(RI!=1)return;//判断是否接收{str=0;ES=0;*prx=SBUF;//接收存放数据putchar(*prx);RI=0;prx++;//指针自加if(*prx=='\0')//是否接收完成{prx=&bufr;//指针初始化str=1;//标志位置1putstring(\r\n);putstring(translateover!\r\n);ES=1;return;}ES=1;return;//退出中断}}仿真原理图:
本文标题:基于Proteus虚拟终端51单片机仿真:串口发送字符串-数码管显示
链接地址:https://www.777doc.com/doc-5677591 .html