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

8行8列,每一行有一个行控制线,连着这一行的led的阳极,每一列也同样有一个 列控制线,连着这一列的led的阴极.然后第一行到第8行的行控制线分别通过D7到D0管脚接单片机,第一列到第8列的列控制线分别接单片机

见下图

{ for(i=0;i<8;i++) { P3=0x00; P1=tabb[7-i]; DELAY1();}} for(j=0;j<3;j++) //FROM bottom to top 3 time

限流电阻肯定要,每段1个就要8个。用一个8位口接8个公共阳极,另一个8位口通过这8个电阻接8个阴极。5V单片机的限流电阻用1k~3k,如果不能点亮或亮度太暗,再加三极管,一般在三极管基极还要加一个1~10k电阻。

我看了你写的,感到秋收的关键问题是不理解8×8点阵LED 驱动电路是如何工作的。这个8×8点阵LED 驱动电路是“行”和“列”的扫描方式工作的,这64个发光管,在每个瞬间只有一个亮。我画了一个简图,图中,红色的仅在1

单片机 8×8点阵LED 驱动电路

8*8的显示与数码管的显示原理一样,上图显示一个数字“1”,行线对应是P0,列线对应P2,显示的原理就是【 假定P0接了上拉电阻,P0为高P2为低是,点阵全亮】P2=0XFF;//关所有显示 P0=0X00;P2.0=0;DELAY();P2

当p1 = 0xff; p2 = 0xfe的时候,就是P2.0那个小灯点亮,其他7个灭,p2 = 0xfe的这个F就是8+4+2+1 =15,对应16进制里的f, 同理E=8+4+2+0 =14,对应16进制里的e。闪烁的话需要用到定时器,时间到了

ff转换成二进制是11111111,而1111转换成10进制为15,15是第16个数,就代表16进制里面的f,如果要让一盏灯亮其他都暗(高电平亮),0x80,也就是二进制的1000 0000,要把二进制快速转换成16进制的话 分为4个二进制分别

从图看出第三行是0010 0100,所以应该是24H,你说的3E应该是第三列数据:0011 1110,所以是3EH

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

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

根据题目要求设计的总体框图,如图1 — 1所示: 图1 — 1单片机数字钟硬件系统的总体设计框图 三、系统硬件设计(1)、输入部分:1.电源模块方案一:采用干电池作为单片机数字钟的电源,由于调试时间较长,使用干电池需经常更换电池,不符合

图5-5 双六十进制电路6. 利用CD4060、电阻及晶振连接成一个分频--晶振电路,见附图5-6。 图5-6 分频-晶振电路7. 利用74HC51D和74HC00及电阻连接成一个校时电路,见附图5-7。 图5-7 校时电路8. 利用74HC30和蜂鸣器连接成

这是1602电路,和时钟电路。元件基本差不多。电路如图 include define uchar unsigned char define uint unsigned int sbit ds1302_RST =P2^0;sbit ds1302_IO =P2^1;sbit ds1302_SCLK=P2^2;sbit ACC0

上面的连接是5744的datasheet 把四个都用上吧,你那个138译码器是用来选择那个574工作的 你需要做的就是用单片机控制四个574管子工作输出,就那么简单 输出-锁存-输出-锁存不断的刷新,一个汉字就出来了 如果你想确保

显示屏软件的主要功能是向屏体提供显示数据,并产生各种控制信号,使屏幕按设计的要求显示。根据软件分层次设计的原理,可把显示屏的软件系统分成两大层:第一层是底层的显示驱动程序,第二层是上层的系统应用程序。显示驱动程序负责向屏体送

1、编写程序,用8255的PA口控制8X8点阵的行;8255的PC口控制8X8点阵的列;显示字符。2、按图连接线路;运行程序,观察实验结果,学会控制LED点阵显示字符。四、实验原理图 五、实验步骤 1、主机连线说明:B4区:CS(8255)

急需:求单片机80S51实训(带汇编程序) 题目要求:8乘8点阵显示 需原理图和器材清单

主要硬件电路:LED 点阵条屏是由 16 个 8*8 的 LED 点阵块组成,形成 16*64 矩形点阵,以AT89S51为控制核心。显示屏的其他主要硬件有: ① 带锁存输出的 8位移位寄存器74HC595,作为LED的列线驱动输入; ② 四六译码器 74LS154,作为

如果用单片机,用一组io口,比如51单片机的p0口,让其左位移或右位移,或者进行加减运算好了。另外可以直接拿计数器4017和555实现流水灯,在第9脚接个二极管到15脚,让其进行复位,这样也可以实现8个LED轮流循环

1、编写程序,用8255的PA口控制8X8点阵的行;8255的PC口控制8X8点阵的列;显示字符。2、按图连接线路;运行程序,观察实验结果,学会控制LED点阵显示字符。四、实验原理图 五、实验步骤 1、主机连线说明:B4区:CS(8255)

8*8不能显示汉字(除非一些简单的),要显示汉字起码也要16*16的。这是一个16*16的电路原理图。希望可以帮到你………

求51单片机控制LED8块8*8点阵双汉字显示屏的电路设计总图,

wei=1; P0=w[n]; wei=0; duan=1; P0=x[n]; delay(); duan=0; } } }

或者是阴极)的开启和关闭。时序是:先输出显示数据,然后输出一个控制信号以开启一个数码管,延时,然后关闭该数码管,接着输出显示数据,再输出控制信号以开启另外一个数码管,延时,然后关闭该数码管,如此循环;

8个数码管的话一般都是由一个三八译码器控制,而且有三个i/o口作为选择数码管的钥匙,三个i/o口按一定顺序组合成的二进制000~111即是数字为0~7的8个数码管分别对应的三极管(开关),三个i/o口对应哪个数字就打开哪个

1、 数码管显示演示程序: 在8个LED数码管上依次显示1,2,3,4,5,6,7,8。引用端口:数码管数据p0,数码管控制p2;DIS_DIGIT EQU 40H;位选通值, 传送到P2口用于选通当前数码管的数值,; 如等于0xfe时, 选通P2

2、不用单片机,用数字电路实现很容易呀。用一片10线-4线编码器,接10个按键,输出为BCD码,再用一片74LS247,七段译码器/驱动器,输出接一个共阳数码管即可,按几号键,数码管就显示几了。下表就是74LS147的真值

大学单片机怎么在8×8点阵数码管上显示数字1

#include typedef unsigned char uint8; typedef unsigned int uint16; typedef unsigned long uint32; code uint8 graph[] = {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xC3,0xE7,0xE7,0xE7,0xE7,0xC3,0xFF, 0xFF,0x99,0x00,0x00,0x00,0x81,0xC3,0xE7, 0xFF,0x99,0x99,0x99,0x99,0x81,0xC3,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF }; sbit ENLED = P1^4; sbit ADDR0 = P1^0; sbit ADDR1 = P1^1; sbit ADDR2 = P1^2; sbit ADDR3 = P1^3; uint8 i= 0,counter = 0; void timer1_init() { TMOD |= 0x10; TMOD &= 0xdf; TH1 = 0xFC; TL1 = 0x67; TR1 = 1; } void int_init() { ET1 = 1; EA = 1; } void refresh_led() { static uint8 j = 0; switch(j) { case 0: ADDR0 = 0;ADDR1 = 0;ADDR2 = 0;break; case 1: ADDR0 = 1;ADDR1 = 0;ADDR2 = 0;break; case 2: ADDR0 = 0;ADDR1 = 1;ADDR2 = 0;break; case 3: ADDR0 = 1;ADDR1 = 1;ADDR2 = 0;break; case 4: ADDR0 = 0;ADDR1 = 0;ADDR2 = 1;break; case 5: ADDR0 = 1;ADDR1 = 0;ADDR2 = 1;break; case 6: ADDR0 = 0;ADDR1 = 1;ADDR2 = 1;break; case 7: ADDR0 = 1;ADDR1 = 1;ADDR2 = 1;break; default: break; } P0 = graph[i + j]; if(7 == j++) j = 0; } main() { ENLED = 0; ADDR3 = 0; timer1_init(); int_init(); while(1); } void interrupt_timer1() interrupt 3 { TH1 = 0xFC; TL1 = 0x67; counter++; if(counter == 200) { counter = 0; i++; if(i>=32){i=0;} } refresh_led(); }这程序显示字母I FC U 8*8太小了 改下就可以了
#includesbit wei=P1^1; //位控制端sbit duan=P1^0; //段控制端 unsigned int i,n;unsigned int w[8]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};unsigned int x[8]={0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f};void delay(){ for(i=400;i>0;i--);} void main(){ while(1) { for(n=0;n<8;n++) { wei=1; P0=w[n]; wei=0; duan=1; P0=x[n]; delay(); duan=0; } } }
给你发过去了,查收。jxhxfen2008@163.com
为何不自己做一下,不清楚的再问
见下图
这个问题不是很难! 我的理解是楼主可能只用单片机和点阵模块来实现,这需要单片现来做动态扫描。 首先需要你把点阵上要显示图形的代码写出来,即每种图形每行显示的数据,每个图形有8行数据,即占8个字节的空间! 如果楼主用51单片机来实现的话,可以使用P0口输出行数据,P1口作为点阵的行扫描控制。 其次要用按键控制,只需你把每种图形以不同的表存起来,再做一个按键扫描程序,当检测到有键按下时,把动态扫描的表头地址更换即可!
avr的静态点阵 #include unsigned char a[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //控制低电平 unsigned char b[]={0xff,0x18,0x18,0xff,0x18,0x18,0x18,0xff}; //控制高电平 void delay(unsigned int cnt) { while(--cnt); } void main(void) { int i=0,n=0; DDRA=0xFF; DDRB=0xFF; while(1) { for (i=0;i<8;i++) { PORTA=a[i]; PORTB=b[i]; delay(300); } } } AVR的动态点阵 #include unsigned char a[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01}; //列高电平控制端 unsigned char b[]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, //行低电平控制端 0x7e,0x76,0x76,0x00,0x00,0x76,0x76,0x7e, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}; void delay(unsigned int cnt) { while(--cnt); } void main(void) { int i=0,n=0,k=0; DDRA=0xFF; DDRB=0xFF; while(1) { for(k=0;k<16;k++) { for(n=0;n<50;n++) { for (i=0;i<8;i++) //i循环8次进去下个语句 { PORTA=a[i]; PORTB=b[i+k]; delay(50); } } }
#include #define uint unsigned int #define uchar unsigned char uint i,j,num,aa; uchar code table12[]={ 0x04,0x82,0xff,0x80, 0xe2,0x91,0x89,0xc6}; uchar code table13[]={ 0x18,0x3c,0x7c,0xf8, 0x7c,0x3c,0x18,0x00}; void delay(uint); void main() { while(1) {for(aa=100;aa>0;aa--) {for(num=0;num<8;num++) { P2=num; P0=table12[num]; delay(2); } //delay(300); }; for(aa=100;aa>0;aa--) {for(num=0;num<8;num++) { P2=num; P0=table13[num]; delay(2); } //delay(300); } } } void delay(uint z) { for(i=z;i>0;i--) for(j=110;j>0;j--); }
你好!这里有一个不是显示数字的,修改字模就能完成显示
我这有以前做来玩的 8x8 74164的 汇编 行么?