51单片机 8*8点阵26个英文字母怎么样显示 用51单片机以及8*8点阵显示英文字母或者数字(最好是全部数...

作者&投稿:伯鹏 (若有异议请与网页底部的电邮联系)
你真厉害,一位数组显示点阵实验,点阵最好是用二位数组,基本思路也就是单片机两个IO口控制点阵的行和列,定义一个二位数组控制点阵每一行要亮拿几个灯,然后下一行亮那几个灯,以此类推,快速刷出没一个亮的灯就能让人感觉是一个字了,好啦,给你程序你自己看吧
unsigned char code table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //列位
unsigned char code Dispay[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
我建议你套用这个程序之后把延时的时间改长一点,最好到个500ms左右,这样你就可以清楚的看到点阵是怎么显示字的了

要么是转换程ASCII码显示,要么直接加引号送液晶显示,看你用了数组,可能是转成ASCII显示。

在百度搜索里敲入“字符点阵 软件”
一大堆!!自己看看吧

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

#include#include#define uchar unsigned char#define uint unsigned int//--------------------------------------------uchar code Table_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};//---------------------------------------uchar code xdat[8]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};uchar code ydat[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//---------------------------------------uchar i=0;uchar j=0;uchar t=0;uchar Num_Index,disnum;uchar key;uchar xi;uchar yi;//---------------------------------------uchar code disstr[]="C201600102020";//显示内容可以自己定义//---------------------------------------sbit we1=P1^1;sbit we2=P1^3;//---------------------------------------//主程序//---------------------------------------void main(){//P1=0x80;Num_Index=0; //从0 开始显示TMOD=0x01; //T0 方式0TH0=(65536-2000)/256; //2ms 定时TL0=(65536-2000)%256;IE=0x82;key=0;xi=0;yi=0;EX0=1;IT0=1;TR0=1; //启动T0while(1);}//---------------------------------------//外部中断0 中断函数//按键处理//---------------------------------------void ext_int0() interrupt 0{key++;key&=0x03;}//---------------------------------------//定时器0 中断函数//显示控制//---------------------------------------void LED_Screen_Display() interrupt 1{TH0=(65536-2000)/256; //2ms 定时TL0=(65536-2000)%256;switch(key){//显示点阵图形case 0: P0=0xff; if(disstr[Num_Index]>='A')disnum=disstr[Num_Index]-'A'+10; else disnum=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;//流水灯“点”模式case 1: 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;//流水灯“行列”模式case 2: 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;}}

8*8点阵是动态扫描的 静态显示也是动态扫描的结果。
比如说下面这个程序:
#include
#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();
}
当然,由于不同的单片机引脚不同,可能编译没错,但是实际是显示不了的。
就是那么多,望采纳。