导航:首页 > 操作系统 > 单片机点阵排序

单片机点阵排序

发布时间:2022-09-21 11:34:08

单片机点阵

你是用什么实现点亮16*16点阵的,外围接了什么?
建立个数组,将显示内容放进去,开始时从第一行开始显示, 接在从第二行开始显示你的数组,如此下去可以了,

② 51单片机 点阵问题

左移:处理的是P0 P2口的数据 154是行扫面,就不用更改了。给该行数据就可以了,可以定义一个2字节的变量,用C语言直接左移就可以了(x<<=1;)再将这个变量强制转换位单字节的数据,输出给两个P口。
右移的道理和左移一样,只是方向相反就可以了。

下移:和上移就简单了,上移就是数组开始的2个 2个字节的去掉,后面填上0X00/0XFF。就是第一幅画面不读取数组的1 2字节,后面填上2个空白的字节,第2幅画面的 1 2 3 4字节都不读取,后面填上4个字节的空白。因为一幅画面的字节数是固定了,你只要该数据就可以了。

③ 51单片机 8*8点阵26个英文字母怎么样显示 要从上到下的编码

#include<reg51.h>
#include<intrins.h>
#defineucharunsignedchar
#defineuintunsignedint
//--------------------------------------------
ucharcodeTable_of_Digits[40][8]=
{
{0x1C,0x22,0x22,0x22,0x22,0x22,0x22,0x1C},//0
{0x08,0x18,0x08,0x08,0x08,0x08,0x08,0x1C},//1
{0x1C,0x22,0x02,0x02,0x1C,0x20,0x20,0x3E},//2
{0x1C,0x22,0x02,0x1C,0x02,0x02,0x22,0x1C},//3
{0x08,0x18,0x28,0x48,0x7C,0x08,0x08,0x08},//4
{0x3E,0x20,0x20,0x3E,0x02,0x02,0x22,0x1C},//5
{0x1C,0x22,0x20,0x3C,0x22,0x22,0x22,0x1C},//6
{0x3E,0x02,0x04,0x08,0x10,0x10,0x10,0x10},//7
{0x1C,0x22,0x22,0x1C,0x22,0x22,0x22,0x1C},//8
{0x1C,0x22,0x22,0x22,0x1E,0x02,0x22,0x1C},//9
{0x00,0x1C,0x22,0x22,0x22,0x3E,0x22,0x22},//A
{0x00,0x3C,0x22,0x22,0x3E,0x22,0x22,0x3C},//B
{0x00,0x1C,0x22,0x20,0x20,0x20,0x22,0x1C},//C
{0x00,0x3C,0x22,0x22,0x22,0x22,0x22,0x3C},//D
{0x00,0x3E,0x20,0x20,0x3E,0x20,0x20,0x3E},//E
{0x00,0x3E,0x20,0x20,0x3E,0x20,0x20,0x20},//F
{0x00,0x1C,0x22,0x20,0x3E,0x22,0x22,0x1C},//G
{0x00,0x22,0x22,0x22,0x3E,0x22,0x22,0x22},//H
{0x00,0x1C,0x08,0x08,0x08,0x08,0x08,0x1C},//I
{0x00,0x3E,0x08,0x08,0x08,0x08,0x28,0x18},//J
{0x00,0x20,0x2C,0x30,0x20,0x30,0x2C,0x20},//K
{0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x3E},//L
{0x00,0x42,0x66,0x5A,0x42,0x42,0x42,0x42},//M
{0x00,0x00,0x2C,0x32,0x22,0x22,0x22,0x22},//n
{0x00,0x1C,0x22,0x22,0x22,0x22,0x22,0x1C},//O
{0x00,0x3C,0x22,0x22,0x3C,0x20,0x20,0x20},//P
{0x00,0x1C,0x22,0x22,0x22,0x2A,0x26,0x1F},//Q
{0x00,0x38,0x24,0x24,0x38,0x30,0x28,0x24},//R
{0x00,0x1C,0x22,0x20,0x1C,0x02,0x22,0x1C},//S
{0x00,0x3E,0x08,0x08,0x08,0x08,0x08,0x08},//T
{0x00,0x42,0x42,0x42,0x42,0x42,0x42,0x3C},//U
{0x00,0x22,0x22,0x22,0x14,0x14,0x08,0x00},//V
{0x00,0x41,0x41,0x49,0x55,0x55,0x63,0x41},//W
{0x00,0x00,0x42,0x24,0x18,0x18,0x24,0x42},//X
{0x00,0x22,0x22,0x14,0x08,0x10,0x20,0x00},//Y
{0x00,0x3E,0x02,0x04,0x08,0x10,0x20,0x3E},//Z
};
//---------------------------------------
ucharcodexdat[8]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
ucharcodeydat[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
//---------------------------------------
uchari=0;
ucharj=0;
uchart=0;
ucharNum_Index,disnum;
ucharkey;
ucharxi;
ucharyi;
//---------------------------------------
ucharcodedisstr[]="C201600102020";//显示内容可以自己定义
//---------------------------------------
sbitwe1=P1^1;
sbitwe2=P1^3;
//---------------------------------------
//主程序
//---------------------------------------
voidmain()
{
//P1=0x80;
Num_Index=0;//从0开始显示
TMOD=0x01;//T0方式0
TH0=(65536-2000)/256;//2ms定时
TL0=(65536-2000)%256;
IE=0x82;
key=0;
xi=0;
yi=0;
EX0=1;
IT0=1;
TR0=1;//启动T0
while(1);
}
//---------------------------------------
//外部中断0中断函数
//按键处理
//---------------------------------------
voidext_int0()interrupt0
{
key++;
key&=0x03;
}
//---------------------------------------
//定时器0中断函数
//显示控制
//---------------------------------------
voidLED_Screen_Display()interrupt1
{
TH0=(65536-2000)/256;//2ms定时
TL0=(65536-2000)%256;
switch(key)
{
//显示点阵图形
case0:
P0=0xff;
if(disstr[Num_Index]>='A')disnum=disstr[Num_Index]-'A'+10;
elsedisnum=disstr[Num_Index]-'0';
we1=1;
P0=~Table_of_Digits[disnum][i];
we1=0;
P0=0xff;//输出位码和段码
we2=1;
P0=ydat[i];
we2=0;
if(++i==8)i=0;//每屏一个数字由8个字节构成
if(++t==250)//每个数字刷新显示一段时间
{
t=0;
if(++Num_Index==13)Num_Index=0;//显示下一个数字
}
break;
//流水灯“点”模式
case1:
we1=1;
P0=~xdat[xi];
we1=0;
we2=1;
P0=ydat[yi];
we2=0;
if(++t==250)//每个数字刷新显示一段时间
{
t=0;
yi++;
if(yi>7){yi=0;xi++;}
if(xi>7)xi=0;
}
break;
//流水灯“行列”模式
case2:
we1=1;
P0=0x00;
we1=0;
P0=0xff;//输出位码和段码
we2=1;
P0=xdat[i];
we2=0;
if(++t==250)//每个数字刷新显示一段时间
{
if(++i==8)i=0;//每屏一个数字由8个字节构成
t=0;
}
break;
default:
key=0;
i=0;
j=0;
t=0;
xi=0;
yi=0;
Num_Index=0;
we1=1;
P0=0xff;
we1=0;
we2=1;
P1=0x80;
we2=0;
break;
}
}

④ 单片机io口怎么排序呢

这里的PIO口都是个一字节的寄存器,芯片内部规定P2.0为最低位,P2.7为最高位;
而数据的表示方式按约定是高位在左低位在右的排序,所以有你看到的1111 1110的顺序;
而当数据按位进行串行传输,同时先传低位时,就有你想看到的0111 1111 的顺序了;

⑤ 单片机点阵

16*16的点阵么?单片机控制点阵方法是根据硬件电路来设计的。一般来说,点阵会连一个译码器(比如74HC138等),通过控制138译码器,完成列扫描功能。还有一部分直接接到单片机上,由单片机负责输出。完成行扫描功能。网上这种例子一搜一大堆的。

⑥ 单片机点阵移动怎么编

试试如下修改:

#include<reg51.h>
unsigned char code tab[] = {0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//列选通控制
unsigned char code digittab[9][8] = {
{0x3e,0x41,0x41,0x41,0x3e,0x00,0x00,0x00}, //0 8行,
{0x00,0x3e,0x41,0x41,0x41,0x3e,0x00,0x00},
{0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00},
{0x00,0x00,0x00,0x3e,0x41,0x41,0x41,0x3e},
{0x00,0x00,0x00,0x00,0x3e,0x41,0x41,0x41},
{0x00,0x00,0x00,0x00,0x00,0x3e,0x41,0x41},
{0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x41},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}};

unsigned char tt=0;

void delay()
{
int m, n;
for(m = 20; m > 0; m--) for(n = 15; n > 0; n--);
}

void Disp(unsigned char j)
{
unsigned char i; //i定义列,j定义行
for(i = 0; i < 8; i++) {
P0 = digittab[j][i]; // 行线
P2 = tab[i]; delay(); P2 = 0xff; // 列线, 扫描时间
}
}

void main(void)
{
unsigned char i, j;
while(1) {
for(i = 0; i < 10; i++) Disp(j);
j++;
if(j == 9) j = 0;
}
}

⑦ 单片机汇编语言8乘8点阵从上到下显示修改成从左到右显示

对于点阵显示来说,是从上到下显示还是从左到右显示,还得看待显示的字符的点阵数据是如何排列的;

1)如采用从左到右从上到下的排列结构形式,那么显示方式就如

则行(PC口)输出8位数据,而列(PA口)则仅输出与要显示行对应的位数据;

如果字符的点阵数据是第一种结构的,想要采用第二种显示形式,就需要先把字符的点阵数据进行数据格式的转换。

⑧ 51单片机中,点阵8X8点阵取字模软件有 阴码、阳码、逐列式、逐行式、逆向、顺向,能帮做一个简单的介绍吗

8X8点阵 分为行和列,当以低电平进行行扫描,那么列所送的就是阳码,相反就是阴码。。。。如:阳码::第一个20Us内给第一行送低电平0,给列八位送待显示的高电平,第二个20Us内给第二行送低电平0,给列八位送待显示的高电平,如此进行八次,,刚好扫完一个屏幕,用时不到1Ms人眼是无法分辨出来的,就这样我们看到的就是整平数码。。。

阅读全文

与单片机点阵排序相关的资料

热点内容
rf3148编程器 浏览:505
浙江标准网络服务器机柜云主机 浏览:587
设置网络的服务器地址 浏览:600
java图形界面设计 浏览:751
纯前端项目怎么部署到服务器 浏览:538
瓜子脸程序员 浏览:505
如何保证服务器优质 浏览:94
小微信aPP怎么一下找不到了 浏览:299
算法纂要学术价值 浏览:975
程序员你好是什么意思 浏览:801
倩女幽魂老服务器如何玩 浏览:561
电子钟单片机课程设计实验报告 浏览:999
看加密频道 浏览:381
程序员算不算流水线工人 浏览:632
三星电视我的app怎么卸载 浏览:44
简述vi编译器的基本操作 浏览:507
让程序员选小号 浏览:91
加强数字货币国际信息编译能力 浏览:584
购买的app会员怎么退安卓手机 浏览:891
程序员的种类及名称 浏览:294