1.首先用字模提取软件提取“大”字的字模。软件网上很多,用“字模提取”关键字可以搜到。也可以用EXCEL在8x8上方框上自己写一个“大字”,然后有标记的为1,没标记的为0,那么一行下来有8位既一个节,总共8行,共8个

单片机程序8x8led点阵显示心形并实现左移右移的程序 使用的单片机仿真试验仪型号为DP-51PRO以下的程序是在8x8led显示频上显示一个心形我需要将它移动起来CLKEQUP3.2DINAEQUP3.3DINBEQUP3.4CLEAREQUP3.5org0000hajmpmainorg0100hmain:mov

每个三态门输入接8个拨动开关,对应0或1,这样子会有64个开关,对应点阵的每一个点。非常麻烦的方法。。。最简单还是乖乖写代码,51一片,138一片,8*8点阵一片,其他小电路找网上最小系统,参考8位数码管的教程,原理

2、运行程序,观察实验结果。运行演示程序将会看到字符“WELCOME TO XINGYAN”在点阵上自下而上循环移动显示。六、演示程序 ;用8255的PA、PC口做LED8*8点阵显示实验 A8255_PAXDATA0FF00H;8255的A0、A1接总线的A0、A1 A

首先需要你把点阵上要显示图形的代码写出来,即每种图形每行显示的数据,每个图形有8行数据,即占8个字节的空间!如果楼主用51单片机来实现的话,可以使用P0口输出行数据,P1口作为点阵的行扫描控制。其次要用按键控制,只

1.首先在Proteus下选择我们需要的元件,AT89C51、74LS138、MATRIX-8*8-GREEN(在这里使用绿色的点阵)。在Proteus 6.9中8*8的点阵总共有四种颜色,分别为MATRIX-8*8-GREEN,MATRIX-8*8-BLUE,MATRIX-8*8-ORANGE ,MATRIX-

if(++j==8) j=0; //每屏一个数字由8 个字节构成 break;

课程设计:单片机的8乘8LED点阵显示屏的设计

单片机点阵8*8的操作程序,主要看你的硬件设计,如果仅是两个8位IO口,分别做成横竖的点阵,可以令一个IO口A,令输出,另IO口B一个令输入(上拉正极电阻3.3~10K)。IO口A,分8位循环输出低电平,这样就可以,读IO口

1. ORG 0HSTART:MOV DPTR,#DATA1 ;指向点阵代码首址;CLR CDISP?这个应该是CLR C(清除标志位,因为下面要判断是否移完8位)吧 2. MOV R2,#80H ; 80H 使第7 列(最左一列)阴极为低电平(这个感觉也有问题)

0x22,0x1C},//3 {0x08,0x18,0x28,0x48,0x7C,0x08,0x08,0x08},//4 {0x3E,0x20,0x20,0x3E,0x02,0x02,0x22,0x1C},//5 {0x1C,0x22,0x20,

一.基于51的点阵屏显示:(1)点亮第一个8*8点阵:1.首先在Proteus下选择我们需要的元件,AT89C51、74LS138、MATRIX-8*8-GREEN(在这里使用绿色的点阵)。在Proteus 6.9中8*8的点阵总共有四种颜色,分别为MATRIX-8*8-GRE

void delay1ms(unsigned int ms);//延时ms函数声明(可根据实际情况更改)unsigned char code led0[]={};//字码表,你自己把你要显示的字码放进去就可以了 void main(){ unsigned char w,i;while(1){ //显示0 w

88点阵动态显示 硬件组成:单片机最小系统+88点阵+按键 图形移动模式 切换 1 跳动 2 上移 3 下移 4 左移 5 右移 显示内容汉字 一 二 三 四。四个字 仿真图:打开APP查看高清大图 程序:打开AP

单片机汉字8x8点阵LED动态显示程序

void delay1(void){ unsigned char i,j,k;for(k=8;k>0;k--)for(i=10;i>0;i--)for(j=15;j>0;j--);} main(){ unsigned int i;while(1){ for(i=0;i<8;i++){ P2=taba[i];P0=tabb[i];dela

temp=_crol_(temp,-1);//移动 delay(100);} }

//定义一个无符号字符型局部变量 i 取值范围 0~255 Delay(50000); P1=0xfe;      //赋初始值 for(i=0;i8;i++)  //加入 for循环,表明for循环大括号中的程序循环执行8次

在8X8 LED 点阵上显示柱形,让其先从左到右平滑移动1次,其次从右到左 平滑移动1次,再次从上到下平滑移动1次,最后从下到上平滑移动次,如此循环下去。LED显示原理:显示某一个点时,列值设为1,行值设为0即可

单片机程序8x8led点阵显示心形并实现左移右移的程序

1、先了解单个LED的控制方式,可以是将正极接电源,负极通过一个限流电阻连接至单片机的某个IO口。IO口输出低电平时,LED就亮,反之,LED灭。2、若按照单个LED的控制方式,每个LED需要占用单片机的一个IO口,控制100个LED就

此类只用一个单片机控制多LED的方案一般是每两之间正反接一个LED,做成线路比较复杂.要是你想手工做个光立方此方法不用考虑,线路太复杂了

表示长宽高分别为1 1 1的点亮 你可以写一些函数 每个函数对应一个图案 然后调用就可以了 具体在单片机上的实现我也不会

LED灯N个,51单片机2个,20或30pf的电容4个,USB转串口下载器1个,,杜邦线一排,5V锂电池一个,晶振2个,漆包线一小卷,自锁按钮2个,烙铁,焊锡丝,LED灯若干。

用简化的SPI发指令 发状态代码就可以 电路也比较简单 单片机就了3个IO口 出去动画的代码 程序也就一二百行的样子,而且大部分是动态扫描的函数,思路就是扫描64束,另外8个层的用来发代码,其实摊平了看跟64*8的

怎样制作光立方、一个单片机最多控制32个灯、我想弄8*8*8的光立方怎么办、需要什么硬件、怎样编程

静态显示变动态显示很简单;利用缓冲数组轻松实现。将要显示的字符全部存为code代码,再定义个缓冲数组disbuf【】,缓冲数组中是要显示的字符代码,显示完后只要改变缓冲数组的代码就可以了

include//单片机头文件 void delay1ms(unsigned int ms);//延时ms函数声明(可根据实际情况更改)unsigned char code led0[]={};//字码表,你自己把你要显示的字码放进去就可以了 void main(){ unsigned

然后 两个FOR循环 大循环0~7自增 内嵌一个 段码【0~7自增】 :这是8*8 单个的点阵了 你所说的 是要16*16才有能力显示汉字的吧 是这样的 你如果也像上面这样的话一个字就用了整个 48个端口了

硬件组成:单片机最小系统+88点阵+按键 图形移动模式 切换 1 跳动 2 上移 3 下移 4 左移 5 右移 显示内容汉字 一 二 三 四。四个字 仿真图:打开APP查看高清大图 程序:打开APP查看高清大图

1. ORG 0HSTART:MOV DPTR,#DATA1 ;指向点阵代码首址;CLR CDISP?这个应该是CLR C(清除标志位,因为下面要判断是否移完8位)吧 2. MOV R2,#80H ; 80H 使第7 列(最左一列)阴极为低电平(这个感觉也有问题)

利用单片机,在一个8*8的点阵显示屏上显示一个“大”字,怎样编程啊??帮帮忙啊,我作业,不用太精炼的语

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

否则51就别学了,其他的单片机就更没希望了,不是打击你,是一个从你那时候走过来的人告诉你的,点阵无非是行扫描,列扫描罢了,选通一行,传数据,延时,下一行,传输局,延时,依次列退,八行都选完再次循环一次,不

P1=tabb[7-i];delay1();} } for(j=0;j<3;j++) //frombottomtotop3time { for(i=0;i<8;i++){ P3=0x00;P1=tabb[i];delay1();}

首先需要你把点阵上要显示图形的代码写出来,即每种图形每行显示的数据,每个图形有8行数据,即占8个字节的空间!如果楼主用51单片机来实现的话,可以使用P0口输出行数据,P1口作为点阵的行扫描控制。其次要用按键控制,只

if(key==0){ delayms(20);if(key==0)flag++;while(key==0);} if(flag==3) flag=0;if(flag==0){ for(i=0;i<8:i++){ P0=table1[i] ;P1=table0[i] ;delayms(2);} } if(flag==1){

CJNE A,#0EEH,NE2;;;将A中的数据与键值表对比,不同则跳到下一个对比 MOV A,#0;;;将输出显示数据送到寄存器 JMP KEYEND;;;跳出对比程序 NE2:CJNE A,#0EDH,NE3;;;1 MOV A,#1 JMP KEYEND NE3:CJN

用一按键切换8*8点阵图形显示三幅图, 要有代码和仿真图,求大佬帮忙, 是单片机,用AT89C51

将显示的内容制成三个表:table1[]={。。。。。。。} table2[]={。。。。。。。} table3[]={。。。。。。。} 另将显示的列制成1个表:table0[]={0x80,0x40,0x20,0x01,0x08,0x04,0x02,0x01} 申请一个变量flag,计按键状态 ,按下按键 flag加1 然后根据flag的值,查不同的表,进行显示 if(key==0) { delayms(20); if(key==0)flag++; while(key==0); } if(flag==3) flag=0; if(flag==0) { for(i=0;i<8:i++) { P0=table1[i] ;P1=table0[i] ;delayms(2);} } if(flag==1) { for(i=0;i<8:i++) { P0=table2[i] ;P1=table0[i] ;delayms(2);} } if(flag==2) { for(i=0;i<8:i++) { P0=table3[i] ;P1=table0[i] ;delayms(2);} }
提示: CLK分频+(0-8的加法器)+译码器,实现位选
8*8点阵显示图形或数字应该怎样编写字模程序?字模该怎么写,原理是什么?菜鸟跪求大神
1. ORG 0HSTART:MOV DPTR,#DATA1 ;指向点阵代码首址; CLR CDISP?这个应该是CLR C(清除标志位,因为下面要判断是否移完8位)吧 2. MOV R2,#80H ; 80H 使第7 列(最左一列)阴极为低电平(这个感觉也有问题) 3.DISP:MOV A,#0; 赋初值0,为了下面能从点阵代码表中从零开始取代码 MOVC A,@A+DPTR ; 取第一列点阵代码 MOV P2,A ; 将第一列点阵代码的值赋给P2口 MOV P1,R2 ;使一列阴极为低电平? CALL DELAY ; 调用延时 INC DPTR ; 指向下一列点阵代码 MOV A,R2 ; R2的值赋给A RRC A ; 右移一位,为下一列阴极输出低电平作准备 MOV R2,A ;右移一位后再把值存储到R2,为了下一次右移 JNC DISP ; 8 列未完跳回到DISP继续执行 4.AJMP START 跳转到START DELAY: MOV R1,#0 ;//这个有问题,R1不是赋零,不然怎么延时啊 DELY0: DJNZ R1,DELY0 ;延时(直到R1的值变为0) 5.RET 返回(这个子程序执行完了) 6.DATA1: DB 24H,44H,DCH,54H,7FH,54H,54H,44H; 点阵代码表
用573和2803驱动LED足够用了,我的就是,不知道你用的是什么样的LED,要不就是程序或是硬件上有问题
直接上彩色的888啦,又不贵,还有详细的制作资料,创优物联工作室→套包
每屏显示时,列控制码左(右)移,就可实现点阵屏左(右)移动。 以显示“ | ” 从右向左移为例,第1 屏,右边第1 列亮1ms后灭,第2 屏,第2 列亮。。。。8 屏显示后,完成“| ”左移。
#include sbit ADDR0 = P1^0; sbit ADDR1 = P1^1; sbit ADDR2 = P1^2; sbit ADDR3 = P1^3; sbit ENLED = P1^4; unsigned char code image[11][8] = { {0xC3, 0x81, 0x99, 0x99, 0x99, 0x99, 0x81, 0xC3}, //数字0 {0xEF, 0xE7, 0xE3, 0xE7, 0xE7, 0xE7, 0xE7, 0xC3}, //数字1 {0xC3, 0x81, 0x9D, 0x87, 0xC3, 0xF9, 0xC1, 0x81}, //数字2 {0xC3, 0x81, 0x9D, 0xC7, 0xC7, 0x9D, 0x81, 0xC3}, //数字3 {0xCF, 0xC7, 0xC3, 0xC9, 0xC9, 0x81, 0xCF, 0xCF}, //数字4 {0x81, 0xC1, 0xF9, 0xC3, 0x87, 0x9D, 0x81, 0xC3}, //数字5 {0xC3, 0x81, 0xF9, 0xC1, 0x81, 0x99, 0x81, 0xC3}, //数字6 {0x81, 0x81, 0x9F, 0xCF, 0xCF, 0xE7, 0xE7, 0xE7}, //数字7 {0xC3, 0x81, 0x99, 0xC3, 0xC3, 0x99, 0x81, 0xC3}, //数字8 {0xC3, 0x81, 0x99, 0x81, 0x83, 0x9F, 0x83, 0xC1}, //数字9 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //全亮 }; void main() { EA = 1; //使能总中断 ENLED = 0; //使能U4,选择LED点阵 ADDR3 = 0; TMOD = 0x01; //设置T0为模式1 TH0 = 0xFC; //为T0赋初值0xFC67,定时1ms TL0 = 0x67; ET0 = 1; //使能T0中断 TR0 = 1; //启动T0 while (1); } /* 定时器0中断服务函数 */ void InterruptTimer0() interrupt 1 { static unsigned char i = 0; //动态扫描的索引 static unsigned int tmr = 0; //1s软件定时器 static unsigned char index = 9; //图片刷新索引 TH0 = 0xFC; //重新加载初值 TL0 = 0x67; //以下代码完成LED点阵动态扫描刷新 P0 = 0xFF; //显示消隐 switch (i) { case 0: ADDR2=0; ADDR1=0; ADDR0=0; i++; P0=image[index][0]; break; case 1: ADDR2=0; ADDR1=0; ADDR0=1; i++; P0=image[index][1]; break; case 2: ADDR2=0; ADDR1=1; ADDR0=0; i++; P0=image[index][2]; break; case 3: ADDR2=0; ADDR1=1; ADDR0=1; i++; P0=image[index][3]; break; case 4: ADDR2=1; ADDR1=0; ADDR0=0; i++; P0=image[index][4]; break; case 5: ADDR2=1; ADDR1=0; ADDR0=1; i++; P0=image[index][5]; break; case 6: ADDR2=1; ADDR1=1; ADDR0=0; i++; P0=image[index][6]; break; case 7: ADDR2=1; ADDR1=1; ADDR0=1; i=0; P0=image[index][7]; break; default: break; } //以下代码完成每秒改变一帧图像 tmr++; if (tmr >= 1000) //达到1000ms时改变一次图片索引 { tmr = 0; if (index == 0) //图片索引10~0循环 index = 10; else index--; } }
#include sbit ADDR0 = P1^0; sbit ADDR1 = P1^1; sbit ADDR2 = P1^2; sbit ADDR3 = P1^3; sbit ENLED = P1^4; unsigned char code image[11][8] = { {0xC3, 0x81, 0x99, 0x99, 0x99, 0x99, 0x81, 0xC3}, //数字0 {0xEF, 0xE7, 0xE3, 0xE7, 0xE7, 0xE7, 0xE7, 0xC3}, //数字1 {0xC3, 0x81, 0x9D, 0x87, 0xC3, 0xF9, 0xC1, 0x81}, //数字2 {0xC3, 0x81, 0x9D, 0xC7, 0xC7, 0x9D, 0x81, 0xC3}, //数字3 {0xCF, 0xC7, 0xC3, 0xC9, 0xC9, 0x81, 0xCF, 0xCF}, //数字4 {0x81, 0xC1, 0xF9, 0xC3, 0x87, 0x9D, 0x81, 0xC3}, //数字5 {0xC3, 0x81, 0xF9, 0xC1, 0x81, 0x99, 0x81, 0xC3}, //数字6 {0x81, 0x81, 0x9F, 0xCF, 0xCF, 0xE7, 0xE7, 0xE7}, //数字7 {0xC3, 0x81, 0x99, 0xC3, 0xC3, 0x99, 0x81, 0xC3}, //数字8 {0xC3, 0x81, 0x99, 0x81, 0x83, 0x9F, 0x83, 0xC1}, //数字9 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //全亮 }; void main() { EA = 1; //使能总中断 ENLED = 0; //使能U4,选择LED点阵 ADDR3 = 0; TMOD = 0x01; //设置T0为模式1 TH0 = 0xFC; //为T0赋初值0xFC67,定时1ms TL0 = 0x67; ET0 = 1; //使能T0中断 TR0 = 1; //启动T0 while (1); } /* 定时器0中断服务函数 */ void InterruptTimer0() interrupt 1 { static unsigned char i = 0; //动态扫描的索引 static unsigned int tmr = 0; //1s软件定时器 static unsigned char index = 9; //图片刷新索引 TH0 = 0xFC; //重新加载初值 TL0 = 0x67; //以下代码完成LED点阵动态扫描刷新 P0 = 0xFF; //显示消隐 switch (i) { case 0: ADDR2=0; ADDR1=0; ADDR0=0; i++; P0=image[index][0]; break; case 1: ADDR2=0; ADDR1=0; ADDR0=1; i++; P0=image[index][1]; break; case 2: ADDR2=0; ADDR1=1; ADDR0=0; i++; P0=image[index][2]; break; case 3: ADDR2=0; ADDR1=1; ADDR0=1; i++; P0=image[index][3]; break; case 4: ADDR2=1; ADDR1=0; ADDR0=0; i++; P0=image[index][4]; break; case 5: ADDR2=1; ADDR1=0; ADDR0=1; i++; P0=image[index][5]; break; case 6: ADDR2=1; ADDR1=1; ADDR0=0; i++; P0=image[index][6]; break; case 7: ADDR2=1; ADDR1=1; ADDR0=1; i=0; P0=image[index][7]; break; default: break; } //以下代码完成每秒改变一帧图像 tmr++; if (tmr >= 1000) //达到1000ms时改变一次图片索引 { tmr = 0; if (index == 0) //图片索引10~0循环 index = 10; else index--; } }
说明你的程序根本就不能控制8x8点阵LED,都不能点亮。 再说了,显示一个汉字,至少要16x16的点阵,开发板上的8x8点阵只能显示一些图形,根本就不能显示汉字的。
这个问题不是很难! 我的理解是楼主可能只用单片机和点阵模块来实现,这需要单片现来做动态扫描。 首先需要你把点阵上要显示图形的代码写出来,即每种图形每行显示的数据,每个图形有8行数据,即占8个字节的空间! 如果楼主用51单片机来实现的话,可以使用P0口输出行数据,P1口作为点阵的行扫描控制。 其次要用按键控制,只需你把每种图形以不同的表存起来,再做一个按键扫描程序,当检测到有键按下时,把动态扫描的表头地址更换即可!
你好!这里有一个不是显示数字的,修改字模就能完成显示