Ⅰ 51单片机做点阵屏的问题,64行 16列,采用行扫,但显示的时候,画面总是跳动闪烁,我是在Proteus 7上模拟
每行显示的时间停留0.5ms就可以了
设置一个0.5ms的定时中断,每次中断就换一行
显示,64行循环显示,64*0.5=32ms
每秒30次刷屏,应该ok
Ⅱ 这个单片机电路图怎么看
电路图原理图是很严谨的,标识号要具有唯一性和对应性。
从这个图上看出楼主的理解是对的,要我看这个图会吧所有DB0~7看做都是对应的。
应为图纸是这么表达的,不知道是谁说只能对应的,但是图纸上是这么标识。
所以建议楼主:
1、按图纸走,标识对应是没错的。
2、听别人说,改图纸。
个人推测:
此处DB0~7是一一对应,楼主的理解正确。
图中有2个电路模块:
1、点阵式显示器。
2、数码管显示LEDS0~7。
点阵式显示器靠U3和U2共同输入控制。
数码管靠U3控制。
图中:U3,U4可以进行片选,但信号是一样的ENLED!
所以推出:这两个模块是同事工作。
我说清楚了吗?
Ⅲ 单片机C语言红绿灯程序,要求:数码管显示时间倒计时、16*16LED点阵显示模块显示红绿黄灯、
#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
#define BLKN 2 //列锁存器数
sbit G = P1^7; //P1.7为显示允许控制信号端口
sbit RCLK = P2^0; //P2.0为输出锁存器时钟信号端
sbit SCLR = P2^1; //P2.1为移位寄存器清○端
void delay(uint); //延时函数
uchar data display[32]; //显示缓存
uchar code BMP[][32]={{16,0,16,0,37,248,36,64,120,64,8,64,16,64,32,64,124,64,0,64,0,64,12,64,112,64,3,252,0,0,0,0},
{16,0,19,240,32,16,41,240,120,16,19,252,32,64,122,72,1,80,0,224,25,80,102,76,0,64,1,192,0,0,0,0},
{4,64,4,64,63,248,4,64,127,252,1,0,31,240,17,16,31,240,17,16,31,240,8,32,16,16,32,8,0,0,0,0}}; //字模表'红‘’绿‘‘黄’
void main()
{
register uchar i,j;
SCON=0x00; //串口工作模式0:移位寄存器方式
TMOD=0x01; //定时器T0工作方式1:16位方式
P1=0x3f; //P1端口初值:允许接收、锁存、显示
TR0=1; //启动定时器T0
ET0=1; //允许定时器T0中断
EA=1; //开启总中断;
while(1)
{
delay(2000);
for(j=0;j<3;j++)
{
for(i=0;i<32;i++)
{
display[i]=~BMP[j][i];
if (i%2) delay(100);
}
delay(10000);
}
}
}
void delay(uint x)
{
register uchar i,j;
for (i=x;i>0;i--)
for (j=120;j>0;j--);
}
void leddisplay(void) interrupt 1 using 1
{
register uchar i, j=BLKN;
TH0 =(65536-100)/256; //设定显示屏刷新率每秒60帧
TL0 =(65536-100)%256;
i = P1; //读取当前显示的行号
i = ++i & 0x0f; //行号加1,屏蔽高4位
while(j)
{
j--;
SBUF = display[i*BLKN + j]; //送显示数据
while (!TI);
TI = 0;
} //完成一行数据的发送
G = 1; //消隐(关闭显示)
P1 &= 0xf0; //行号端口清○
RCLK = 1; //显示数据打入输出锁存器
P1 |= i; //写入行号
RCLK = 0; //锁存显示数据
G = 0; //打开显示
}
Ⅳ 51单片机的点阵万年历和51单片机的万年历有什么区别,解释具体一点,谢谢啊各位大神
点阵万年历,就是万年历通过点阵形式显示出来,点阵就是人机交互的一个界面,51单片机的万年历说的是,人机交互可以用任何能显示的形式体现出来