您的位置 首页 测评

51单片机串口通讯仿真完成16 16点阵显现程序

首先要了解串口通信的基本工作原理,连接图如下:虚拟终端连接:单片机+虚拟终端(作为串口输入设备)+串口连接图如下:设置如下:单片机虚

首先要了解串口通讯的根本作业原理,衔接图如下:



虚拟终端衔接:
单片机+虚拟终端(作为串口输入设备)+串口

衔接图如下:

设置如下:


单片机虚拟终端选项效果如下:

假如输入的是ASCII码,那么就不要勾选 Hex Display Mode
假如输入的是16进制,那么就不要勾选 Hex Display Mode

Clear Screen 是清屏
Echo Typed Characters 是你在虚拟终端窗口输入字符时,输入的字符显现在虚拟终端窗口上。



详细C程序如下(如有疑问联络自己,新浪微博地址:

http://t.sina.com.cn/1858560312):

#include
#include
#define uint unsigned int
#define uchar unsigned char
unsigned char a,flag;
char code YD[]={

0x01,0x00,0x01,0x00,0x7F,0xFC,0x03,0x80,
0x05,0x40,0x09,0x30,0x31,0x0E,0xDF,0xE4,
0x00,0x80,0x01,0x00,0x7F,0xFE,0x01,0x00,
0x01,0x00,0x01,0x00,0x05,0x00,0x02,0x00,

0x20,0x40,0x30,0x40,0x24,0x4C,0x42,0x70,
0xFF,0x44,0x42,0x46,0x00,0x7C,0x7E,0x00,
0x42,0x40,0x7E,0x4C,0x42,0x70,0x7E,0x40,
0x42,0x44,0x42,0x46,0x4A,0x3C,0x44,0x00,

0x00,0x00,0x0F,0xF0,0x08,0x10,0x0F,0xF0,
0x08,0x10,0x0F,0xF0,0x00,0x00,0xFF,0xFE,
0x01,0x00,0x09,0x00,0x09,0xF8,0x09,0x00,
0x15,0x00,0x23,0x00,0x40,0xFE,0x00,0x00,

0x01,0x00,0x01,0x00,0x02,0x80,0x02,0x40,
0x04,0x20,0x09,0x18,0x11,0x0E,0x61,0x04,
0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,
0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x00,

0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,
0x01,0x00,0xFF,0xFE,0x01,0x00,0x02,0x80,
0x02,0x80,0x02,0x40,0x04,0x40,0x04,0x20,
0x08,0x10,0x10,0x18,0x20,0x0E,0x40,0x04,/

0x08,0x20,0x08,0x20,0x08,0x20,0x4B,0xFE,
0x4A,0x22,0x4A,0x22,0x4A,0x22,0x4A,0x22,
0x4A,0x22,0x4A,0x22,0x4A,0x22,0x12,0x2E,
0x12,0x24,0x20,0x20,0x40,0x20,0x80,0x20,

0x00,0x00,0x7F,0xFC,0x00,0x10,0x1F,0x90,
0x10,0x90,0x1F,0x90,0x10,0x90,0x00,0x04,
0xFF,0xFE,0x00,0x10,0x1F,0x90,0x10,0x90,
0x1F,0x90,0x10,0x90,0x00,0x50,0x00,0x20
};

void delay(uint z)
{
uint x,y;
for(x=z;x>0;x–)
for(y=110;y>0;y–);
}

void main()
{
int i;
TMOD=0x20;//设置定时器1为作业方式2
TH1=0xfd;
TH2=0xfd;//设置波特率为9600
TR1=1;//发动定时器1
SM0=0;
SM1=1;//挑选串口作业方式1
REN=1;//答应接纳数据
EA=1;//翻开总中止
ES=1;//翻开串口中止

while(1)
{
if(flag==1)
{
flag=0;
while(1)
{
if(a==0x31)//键盘码十六进制
{
for(i=0;i<16;i++)
{
P1=i;
P0=~YD[2*i];
P2=~YD[2*i+1];
delay(2);
}
}

if(a==0x32)
{
for(i=1;i<17;i++)
{
P1=i;
P0=~YD[32+2*i];
P2=~YD[32+2*i+1];
delay(2);

}
}

if(a==0x33)
{
for(i=1;i<17;i++)
{
P1=i;
P0=~YD[64+2*i];
P2=~YD[64+2*i+1];
delay(2);
}
}

if(a==0x34)
{
for(i=1;i<17;i++)
{
P1=i;
P0=~YD[96+2*i];
P2=~YD[96+2*i+1];
delay(2);
}
}

if(a==0x35)
{
for(i=1;i<17;i++)
{
P1=i;
P0=~YD[128+2*i];
P2=~YD[128+2*i+1];
delay(2);
}
}

if(a==0x36)
{
for(i=1;i<17;i++)
{
P1=i;
P0=~YD[160+2*i];
P2=~YD[160+2*i+1];
delay(2);
}
}

if(a==0x37)
{
for(i=1;i<17;i++)
{
P1=i;
P0=~YD[192+2*i];
P2=~YD[192+2*i+1];
delay(2);
}
}

}//第二个while结束
}//if结束
}//第一个while结束
}//主函数结束

void ser() interrupt 4
{
RI=0;//承受中止标志位,清0为撤销中止请求
a=SBUF;//接纳数据
flag=1;//中止标志位
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ceping/261201.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部