导航:首页 > 操作系统 > 单片机1616点阵制作教程

单片机1616点阵制作教程

发布时间:2023-07-07 21:50:23

Ⅰ 16*16点阵程序,行用单片机的P1和P0端口,列用两个74hc595串联。程序写到这儿不会了,求大侠来补充一下

调试成功,帮你简化了下程序,加了点注释
#include <reg52.h>
#define uchar unsigned char
sbit sck=P2^0;//11脚,上升沿时数据寄存器的数据移位
sbit rck=P2^1;//12脚,上升沿时移位寄存器的数据进入数据存储器
sbit outbyte=P2^3;//14脚,串行数据输入口

uchar code table[]={
0x08,0x20,0x08,0x24,0xFF,0xFE,0x08,0x20,
0x0A,0x20,0x02,0x10,0x3F,0xF8,0x02,0x10,
0x02,0x10,0x22,0x18,0x24,0x16,0x44,0x12,
0x08,0x10,0x10,0x10,0x20,0x50,0x40,0x20
};//这里是一个汉字的字模
////////////////////////

void del(uchar i)
{
for(i;i>0;i--);
}
////////////////////////
void hscan(uchar i)
{//假设你用P0^1第一行,P1^0第9行,且你的点阵是按行为0,列为1的方式设计
if(i<8)
P0=~(0x01<<i),P1=0xff;
else
P0=0xff,P1=~(0x01<<(i-8));

}
void send(uchar dat1,uchar dat2)
{
uchar i;
for(i=0;i<8;i++)
{ outbyte=(dat1<<i)&0x80;//可改为outbyte=(dat1>>i)&0x01; //从低位开始串行

sck=0,sck=1; //这里del()延时一般可以不要
}

for(i=0;i<8;i++)
{ outbyte=(dat2<<i)&0x80;//可改为outbyte=(dat1>>i)&0x01;//从低位开始串行

sck=0,sck=1;
}
rck=0;
del(1);
rck=1;
}
/////////////////
void main()
{
uchar i=0;
while(1)
{ for(i=0;i<16;i++)send(0xf0,0xf0),hscan(i),del(10);

}
}
另外P0口要加上拉电阻
行不行,给个反应啊

Ⅱ 基于51单片机的16x16 led点阵显示屏设计原理与电路图

ORG0000H

AJMPBEGIN

ORG0030H

BEGIN:

MOVR0,#8

MAIN:

MOVA,R0

MOVR2,#00H

MOVSP,#60H

MOVR3,A

MOVR4,#16

MOVDPTR,#WORDTAB

START:

JNBP1.0,SLOW

JNBP1.1,SOON

MOVR1,#00H

SCAN8:

MOVA,R1

SWAPA

MOVP3,A

SWAPA

INCA

MOVR1,A

MOVA,R2

MOVCA,@A+DPTR

CJNEA,#0DDH,NEXT

AJMPMAIN

NEXT:

MOVP2,A

INCR2

MOVA,R2

MOVCA,@A+DPTR

MOVP0,A

INCR2

LCALLDELAY1400

MOVP0,#00H

MOVP2,#00H

DJNZR4,SCAN8

MOVR4,#16

DJNZR3,SCAN16

AJMPEND16

SCAN16:

MOVA,R2

CLRC

SUBBA,#32

MOVR2,A

AJMPSTART

END16:

INCDPTR

INCDPTR

MOVA,R2

CLRC

SUBBA,#32

MOVR2,A

MOVA,R0

MOVR3,A

AJMPSTART

SLOW:

LCALLDELAY20000

DECR0

JBP1.0,$

AJMPBACK

SOON:

LCALLDELAY20000

INCR0

JBP1.1,$

AJMPBACK

BACK:

LCALLDELAY20000

AJMPSTART

DELAY1400:;误差0us

MOVR6,#7FH

DL0:

MOVR7,#04H

DJNZR7,$

DJNZR6,DL0

RET

DELAY20000:;误差0us

MOVR6,#0D7H

DL1:

MOVR7,#2DH

DJNZR7,$

DJNZR6,DL1

NOP

NOP

RET

WORDTAB:

DB00H,1FH,80H,20H,40H,40H,20H,40H,10H,40H,08H,40H,04H,20H,02H,10H;

DB02H,10H,04H,20H,08H,40H,10H,40H,20H,40H,40H,40H,80H,20H,00H,1FH;

TAB:;结束码

DB0DDH

Ⅲ 单片机1616点阵显示汉字程序

首先要用取模软件,获得要显示的汉字的字模,每行两个字节,共32字节。然后单片机控制每次送一行的数据,并进行显示,轮流16次,再反复即可。

Ⅳ 单片机实验(液晶点阵16*16)

不知道是否要加上拉电阻呢?可以试试。确认一下芯片是否是好的。

Ⅳ 用单片机实现16*16点阵显示,要用C语言编写程序+注释,顺便还要原理图,能帮帮忙么

问题:
1.字符串没加结束标志'\0'
2. else if(ns>=n&&nt<n)
for(i=0;i<n;i++)
{m1[i]=s[i];
strcat(m1,t);
strcpy(s,m1);
}
这段错误

#include"iostream.h"
#include"string.h"
#include"stdio.h"
void mystrcat(char s[],char t[],int n)
{
char m1[100],m2[100];
int i,ns,nt;
ns=strlen(s);
nt=strlen(t);
if(ns>=n&&nt>=n)
{
for(i=0;i<n;i++)
{
m1[i]=s[i];
m2[i]=t[i];
}
m1[i]='\0';
m2[i]='\0';
strcat(m1,m2);
strcpy(s,m1);
}
else if(ns<n&&nt>=n)
{
for(i=0;i<n;i++)
m2[i]=t[i];
m2[i]='\0';
strcat(s,m2);
}
else if(ns>=n&&nt<n)
{for(i=0;i<n;i++)
{m1[i]=s[i];
}
m1[i]='\0';
strcat(m1,t);
strcpy(s,m1);
}
else
strcat(s,t);

}

void main()
{
char s[100],t[100];
gets(s);
gets(t);
int n;
cin>>n;
mystrcat(s,t,n);
puts(s);
}
我可以帮助你,你先设置我最佳答案后,我网络Hii教你。

阅读全文

与单片机1616点阵制作教程相关的资料

热点内容
公钥加密体制中的算法 浏览:604
python如何转换txt 浏览:546
c程序员做什么工作 浏览:563
微信源码怎么关闭 浏览:261
风险区牛熊区狙击点源码 浏览:815
python变量如何表示虚数 浏览:286
诛仙1服务器怎么改名 浏览:273
ppt的超链接命令的作用是 浏览:89
如何用git拉取服务器代码 浏览:369
锤子系统有文件加密吗 浏览:877
程序员主动离职和被裁员哪个好 浏览:792
360命令行 浏览:726
程序员骗色 浏览:668
cisco2950重启命令 浏览:459
加密货币区块链可以增发吗 浏览:290
黄龙公式源码 浏览:773
linux系统ftp服务器 浏览:321
山西配电服务器机柜云主机 浏览:452
量化选股模型公式源码 浏览:9
龙卡购车分期怎么绑app 浏览:779