如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
一:内容及要求:本题要求通过RS232串行通信,将PC机与单片机连接,实现远程开关量监测和控制。单片机上有四个LED数码管,并设有若干个选择开关。基本功能是显示PC机上超级终端发送的字符编码,左边第一个LED显示接收字符数,第二个显示‘-’,右边两个LED显示编码,如发送‘1’时显示1-31,发送‘A’时显示2-41。提示:单片机的通信口可工作在模式1和模式3,晶振用11.0592MHz,通信速率为9600bps。1–41PC机发送接收LED显示单片机部分二:实现方案:(1)元器件清单:元件清单元件参数数量STC89C521排阻1K1数码管4位数码管1晶体12MHZ1按键2MAX232电平转换芯片1LED1串口1插座40孔1插针若干电阻470、1K、若干电容22PF、10uF若干(2)原理叙述:电路:串口、LED显示、中断按钮、微控制器(89C51)PC:MFC编写,由编辑框输入字符,按钮发送到单片机。当接收到字符发送请求时,转换到此界面。当接收到时间发送请求时,把电脑获取的时间发送到单片机,单片机分三个模式循环显示。MCU:串口中断,外部中断(INT0(接收字符请求),INT1(接收时间请求)),数码管动态显示三:实现原理图(1)软件流程图:主程序流程图中断程序流程图(2)硬件原理图:4位数码管连接:串口电路原理图:单片机数码管原理图:四:附录(1)软件代码#include"reg51.h"#definebps9600#definefosc11059200unsigned,char,codetab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x08}unsignedchardat=0;//定义全局变量unsignedcharcount=0;//记录接收到字符的个数,当个数大于15时,回到0开始sbitbutton=P2^0;//串行口初始化程序voidInit_Com(void){TMOD=0x20;//T1定时器方式2PCON=0x00;//波特率不加倍SCON=0x50;//串口方式1,允许接收//TH1=0xFd;波特率9600//TL1=0xFd;TH1=-fosc/384/bps;//设置波特率9600TL1=-fosc/384/bps;TR1=1;//启动定时}//LED数码管延时程序voiddelay(void){intk;for(k=0;k<200;k++);}//串行中断服务程序serial()interrupt4using1{if(RI){count++;RI=0;dat=SBUF;}}//LED数码管显示程序voiddisplay(intk){if(count>15)count=0;P2=0xfe;//位选P0=tab[count];//显示接收字符个数delay();//延时P2=0xfd;//位选P0=tab[0x10];//显示符号“_”delay();//延时P2=0xfb;//位选P0=tab[k/16];//显示接收字符ASCII码高位delay();//延时P2=0xf7;//位选P0=tab[k%16];//显示接收字符ASCII码地位delay();//延时P2=0xff;}//主程序voidmain(){P2=0xff;P0=0xff;EA=1;//允许所有中断ES=1;//串口中断允许Init_Com();while(1){display(dat);//显示数据}}(2)proteus仿真图: