导航:首页 > 操作系统 > 单片机点阵扫描

单片机点阵扫描

发布时间:2024-12-10 22:11:09

❶ 51单片机做点阵屏的问题,64行 16列,采用行扫,但显示的时候,画面总是跳动闪烁,我是在Proteus 7上模拟

^_^,我以前做个一个类似的项目,经验认为一般每一行使用1~2ms就可以了,也就是说实际应用中20ms内完成一个周期一般是没有问题的,频率太高,显示会变暗,频率太低就会闪烁,下面是部分代码,原程序还有一个红外遥控输入程序的:

/********************show****************************************************/
void trasmit(unsigned char byte,unsigned char bit_count){
unsigned char tmp;
tmp=bit_count;
byte<<=3;
clock=0;
for(;tmp>0;tmp--) {
// while(tmp--){
if (byte&0x80)wdata=1;
else wdata=0;
clock=1;_nop_();clock=0;
byte<<=1;
}
rdata=0;
rdata=1;_nop_();rdata=0;
}

/*****************************************************************************/
void show0(unsigned char y){
unsigned char i;
wdata=1;
for(i=0;i<y;i++){
clock=1;
clock=0;
}
rdata=1;
rdata=0;
}

/***************************************************************/
void display(void){
unsigned char k,row,bit_cnt;
iout=0x01;
for(row=0;row<7;row++)
{
bit_cnt=5;

for(k=0;k<9;k++){
if(show_letter[k]>127)show_letter[k]=_NUL;//
temp_data[k]=letter[show_letter[k]][row];

}

SCAN_PORT=0xff;
for(k=0;k<9;k++)
{
if(!int_f){
if(k==8)bit_cnt=bit_step_temp;
trasmit(temp_data[k],bit_cnt);
}
else if(k==8 && !brake_f){
if(right_flag|left_flag)trasmit(temp_data[k],bit_cnt);
}
else {
if(brake_f)show0(40);
else trasmit(temp_data[k],bit_cnt);
}

if((brake_f1|right_flag|left_flag| k==8) && REVERSE_S);
else show0(1);

}

if(right_flag|left_flag){
show0(2);
}
//if(brake_f1)show0(5);
SCAN_PORT=~iout;
//if(brake_f)SCAN_PORT=0xff;
// if(brake_f)
DelayMs(4);
iout=iout<<1;
SCAN_PORT=0xff;
}
}
/***************************************************************************/

❷ 我用51单片机串行通信方式去控制一块8×8LED点阵屏,显示的时候,文字闪烁厉害……

按照人的常规的视觉停留的频率计算就行了,一般地,扫描频率要50HZ以上肉眼看起来就不闪烁,就拿50HZ阀值,那么一个点阵显示的时间为1S/50=20mS,即需要20mS后知薯再对它进行扫描;

但是你每行是5mS,那么一共有8行,重复扫描时间为5mS*8=40mS>>20mS,所以当然看起来闪烁。

把扫描时间跳到2.5到枯凯2mS就差不多了,太小的话,没猛唤通电时间过短,显示亮度不足。

❸ 怎么控制单片机8*8点阵每个点亮或不亮,每个点对应的十六进制是多少

用单片机控制8×8点阵的每个LED的亮灭,要采用扫描方式实现。如下图的8×8点阵,用8系列线和8线条行线控制。在8条列线加高电平,逐条行线加低电平,就会逐行点亮。

❹ 51单片机点阵问题,总是乱码

好象是滚动显示中间的8个代码看看阴码阳码是否搞错,行列是否搞错
delay(1000);不知你是多大的延时,要是1000ms可有点大,100ms以下还差不多
扫描一次才花费16ms,中间你敢停1000ms吗?
个人认为,这个延时太小了会无滚动效果,太大了会造成其它行很暗、而只有最后一行很亮的情况
所以,干脆去掉这个延时,而将每一次扫描重复5-7次,也就是80-110ms,然后再i++,将图像向上推进
就是在for(z=0;z<8;z++)外面再加一层for循环
for(m=0;m<10;m++)//m值由实验确定
{
for(z=0;z<8;z++)
{
c=i+z;
DULA=1;
P1=HANG[z];
DULA=0;
delay(1);
WELA=1;
P1=LIE_2[c];
WELA=0;
delay(1);
}
}
另外8*8点阵显示效果不会很好,特别是点与点之间的空隙太大,有时不仔细看,还真看不出显的是什么东东

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

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

❻ 用51单片机以及8*8点阵显示英文字母或者数字(最好是全部数字和字母都说说哈),静态显示就可以 谢谢啊

8*8点阵是动态扫描的 静态显示也是动态扫描的结果。
比如说下面这个程序:
#include <AT89X52.H>
#include "74HC595.H"
unsigned char code a[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsigned char code b[]={0x00,0x7F,0x40,0x40,0x40,0x00,0x00,0x00};/*"L",0*/
void main(void)
{
unsigned char i;
while (1) //如果没有while循环,将出现闪烁现象
{
for(i=0;i<8;i++)
{
Ser_IN(a[i]);//8X8点阵列扫描
Ser_IN(b[i]);//8X8点阵行扫描
Par_OUT();//74HC595输出显示
}
i=0;
}
}
程序里面还要包含"74HC595.H"
把它放在工程文件夹里面就可以了。"74HC595.H"具体程序如下:
#ifndef __74HC595_H__
#define __74HC595_H__

sbit SD = P1^4; //串行数据输入
sbit ST_CK = P1^5; //存储寄存器时钟输入
sbit SH_CK = P1^6; //移位寄存器时钟输入
void Ser_IN(unsigned char Data); //串行数据输入
void Par_OUT(void); //串行数据输出
//void Ser_Par(unsigned char Data); //串行输入,并行输出
//串行数据输入
void Ser_IN(unsigned char Data)
{
unsigned char i;
for(i = 0; i < 8; i++)
{
SH_CK = 0; //CLOCK_MAX=100MHz
SD = Data & 0x80;
Data <<= 1;
SH_CK = 1;
}
}
//并行数据输出
void Par_OUT(void)
{
ST_CK = 0;
ST_CK = 1;
}
//串行输入,并行输出
void Ser_Par(unsigned char Data)
{
Ser_IN(Data);
Par_OUT();
}
当然,由于不同的单片机引脚不同,可能编译没错,但是实际是显示不了的。
就是那么多,望采纳。

阅读全文

与单片机点阵扫描相关的资料

热点内容
760贴片机编程视频 浏览:333
欧姆龙plc编程第36讲 浏览:913
我的世界如何将一个服务器弄崩 浏览:8
php网站访问量代码 浏览:431
怠速压缩机咔咔响 浏览:176
怎么才能修改APP中的数据 浏览:688
哪里有抢单的app 浏览:462
算法概率题 浏览:465
长方形拉伸的命令 浏览:279
python代码函数编程技术 浏览:194
java正则式 浏览:429
外包程序员好进吗 浏览:384
云服务器服务模型架构 浏览:901
删文件夹什么指令 浏览:509
极速抖音已加密怎么办 浏览:603
matlab拉格朗日算法框图 浏览:430
华为公司计算机视觉算法顾问 浏览:254
夏老师讲的单片机 浏览:298
在编程中如何将图片放大 浏览:163
appstore怎么看是否付费 浏览:603