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

单片机点阵扫描

发布时间: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();
}
当然,由于不同的单片机引脚不同,可能编译没错,但是实际是显示不了的。
就是那么多,望采纳。

阅读全文

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

热点内容
弹球解压视频全集 浏览:900
程序员比较好的笔记本 浏览:185
三个孔怎么编程 浏览:121
云服务器如何提交作业 浏览:877
dvipdf 浏览:827
苹果app怎么移动不到app哪里 浏览:371
解压文件时密码怎么用 浏览:172
程序员怎么规划自己的未来 浏览:876
我的世界我18服务器地址大全 浏览:732
程序员行业产业链 浏览:56
医保app授权在哪里 浏览:767
宝可梦大探险为什么没有服务器 浏览:391
哪里有国网App绑定 浏览:914
解压小黄鸭脏了怎么清洗 浏览:958
前端程序员做哪些副业 浏览:248
一线城市女程序员 浏览:588
修改窗口文件夹显示方式为缩略图 浏览:745
微信加密货币封号 浏览:707
java程序员实习生 浏览:955
天马行空编程视频教学 浏览:451