• 大小: 4KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-06-09
  • 语言: 其他
  • 标签: 点阵  串口  单片机  

资源简介

16*16点阵LED串口在线控制程序,通过串口输入命令,即可在点阵上显示,实现在线操作。

资源截图

代码片段和文件信息

///////////16*16点阵LED在线控制系统程序///////////////////

//错误返回数据0xff
//一次数据接收完毕返回0xf0
//命令规则
/*
0x01 0x01(0x00) 0x00 0x01 点阵开关命令
0x01 0x01(0x00) 0x01 0x01 //0x01:matrix写入到dis_matrix0x00清空当前matrix

*/
#include
#include

#define uchar unsigned char
#define uint  unsigned int 

sbit LE0=P1^0;//1#373所存控制口
sbit LE1=P1^1;//2#373所存控制口

uchar matrix[32];//接收字模的数组
uchar dis_matrix[32];//显示字模的数组
uchar count_matrix=0;//计数接收字模的个数
uchar count_dis_matrix;//显示矩阵计数
uchar temprec[4]count;//数据传送以4个字节为一个单位。
                       //第1个字节和第4个字节用于检验是命令还是字模字模0x00命令0x01。
   //当通讯内容为字模时:第3个字节为字模,当通讯内容为命令时,第3个字节为命令选择
   //当通讯内容为命令时:第2个字节为命令状态。
   //一次数据接收完毕返回0xf0
uchar tempret[4];//tempret[0]为接收数据错误标志,0x00:right 0xff:wrong
//tempret[1]解码成功标志,0x00:success 0xff:fail
//tempret[2]接收字模或命令标志 0x00:字模 0x01:命令
//tempret[3]接收为字模时为字模计数标志,接收为数据时为正确执行标志 0x00 :success 0xff:fail
uchar command;//接收命令寄存点阵开关0x00显示dis_matrix中的内容0x01将matrix中的数据送入dis_matix 0x02
uchar ledon;//点阵开关标志
uchar one_com;//一次数据传送完毕标志
uchar count_dis_lie;

void delay()//延时函数
{
uchar ij;
for(i=0;i<5;i++)
for(j=0;j<20;j++);
}

void send_crosswise(uchar i)//行扫描
{
LE1=0;
P0=dis_matrix[i];
LE0=1;
_nop_;
_nop_;
LE0=0;
P0=dis_matrix[i+1];
LE1=1;
}

void dis_led()//点阵显示函数
{
send_crosswise(count_dis_lie*2);
P2=count_dis_lie;
count_dis_lie++;
if(count_dis_lie==16) count_dis_lie=0;
delay();
}

void matrix_to_dis_matrix()//将当前matrix的内容写入到dis_matrix中
{
uchar i;
for(i=0;i<32;i++)
dis_matrix[i]=matrix[i];
tempret[3]=0x00;//命令正确执行
}

void clear_matrix()//清空当前marix
{
uchar i;
count_matrix=0;
for(i=0;i<32;i++)
matrix[i]=0;
tempret[3]=0x00;//命令正确执行
}

void controlled()//点阵开关函数
{
if(temprec[1]==0x01) ledon=1;
else if(temprec[1]==0x00) {ledon=0;tem

评论

共有 条评论