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

 我来答
还在等着na
2013-07-03 · TA获得超过225个赞
知道答主
回答量:51
采纳率:0%
帮助的人:23.5万
展开全部
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();
}
当然,由于不同的单片机引脚不同,可能编译没错,但是实际是显示不了的。
就是那么多,望采纳。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式