程序扫描的方法不一样,所以你用软件做出来的点阵可能也不一样,还有LCD不一样的话,使用的字模也不一样的,给你推荐个软件,字模提取V2.2,这个软件提供了几种扫描字模的方法,横的或者纵的都可以,你这个显示是纵向取

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

这个对软件编程的确麻烦,想要改变的话,可以只取两个引脚,做串行输出,然后外加个串行转并行的芯片,如74HC595芯片,这样编程上就直观了;

把LED的负极连在一起接到电源负极,搭建一个三极管共射电路,LED的正极连在一起经过一个适当阻值的电阻接到三极管共射电路的输出端,三极管的控制端---基极接单片机的IO口,编写程序使该口为高电平,笑脸即点亮。哈哈,很

unsigned char code taba[]={0xFF,0x99,0x00,0x00,0x00,0x81,0xC3,0xE7};unsigned char code tabb[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};void delay1(void){ unsigned char i,j,k;for(k=8;

单片机上电复位都是高电平,你的数码管或者点阵应该是高电平驱动的。。。你看看你的驱动电路是不是NPN型的三极管。。假如是NPN的,就是上电全亮

为什么我的51单片机点阵数码管显示爱心图形,而是全亮

// 51单片机控制八个发光二极管 左右循环。include define uchar unsigned char define uint unsigned int unsigned char TAB[]= {0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff,0x7f,0xbf,0xdf

//prj1 流水灯实验,LED灯是共阳极,给0亮。J1跳线帽 //用的是移位的方法 //头文件定义 include include //延时函数定义 void delay(void){ unsigned int i;unsigned int j;for(i=200;i>

51单片机汇编语言编程,流水灯如P1口8个Ⅰ/O依次输出低电平点亮发光二极管,思路可以用定时器中断+计数来定时,可以用位移输出或者用状态表(查表法)输出,如表01111111、10111111、---、11111110,就是查表取状态字节再写入P1

} void main(){ P0 = 0x00; //P0.0~P0.7分别接八个发光二极管,刚开始全灭 while(1){ delay(1000);P0 = 0xc0;//点亮前两个发光二极管P0.0和P0.1;delay(1000);//延时1秒 P0 = 0x30;//点亮第三个和

我本想给你写个

编程实现对 8 个 LED 的输出控制 将实验箱中的 8255 片选信号连接到 218H~21FH,将 8255 的 4 个寄存器地址(A、B、 C 端口及控制字寄存器端口)设置为 218H~21BH。将 8255 的端口 A 的 8 个引脚:PA0~PA7

;启动入口 ORG 0000H;复位启动 LJMP START;ORG 000BH;T0中断 LJMP T0INT;ORG 0100H;LJMP START;;;主控程序 START:MOV SP,#80H;初始堆栈值 MOV TMOD,#01H;定时器0工作于方式1,50毫秒@12.000MHz MOV TH0,#03CH

51单片机编程题单片机P1.0~1.7口接八个发光二极管(爱心图样)试编写流水灯的汇编程序使发光二极管逐个亮

P0 = 0xc0;//点亮前两个发光二极管P0.0和P0.1;delay(1000);//延时1秒 P0 = 0x30;//点亮第三个和第四个LED delay(1000);P0 = 0x0c;delay(1000);P0 = 0x03;} } 二、include include <

sbit led2 = P2^1;sbit led3 = P2^2;sbit led4 = P2^3;sbit led5 = P2^4;sbit led6 = P2^5;sbit led7 = P2^6;sbit led8 = P2^7;void main(){ int i,j;//点亮第一个灯 led1 = 1;led2 =

R5,D1 RET (2).输出控制 如图所示,当P1.0端口输出高电平,即P1.0=1时,根据发光二极管的单向导电性可知,这时发光二极管L1熄灭;当P1.0端口输出低电平,即P1.0=0时,发光二极管L1亮;我们可以使用SETB P1.

KC24W-600(X1X2X3) 5.5-48 600 96 21.6 22.10*12.55*9.1 RoHS 模拟调光+PWM调光 KC24W-700(X1X2X3) 5.5-48 700 96 25.2 22.10*12.55*9.1 RoHS 模拟

把LED灯在电路板上拼成一个笑脸图案就可以了。把LED的负极连在一起接到电源负极,搭建一个三极管共射电路,LED的正极连在一起经过一个适当阻值的电阻接到三极管共射电路的输出端,三极管的控制端---基极接单片机的IO口,

急求,51单片机万能LED灯。(显示一个笑脸图案的)1,电路图,2,编程程序,3,电路结构。

EA = 1; //使能总中断 ENLED = 0; //使能U4,选择LED点阵 ADDR3 = 0;TMOD = 0x01; //设置T0为模式1 TH0 = 0xFC; //为T0赋初值0xFC67,定时1ms TL0 = 0x67;ET0 = 1; //使能T0中

单片机8*8点阵(0~F十六进制数字,可做成8*8图形)仿真实例。)LED EQU P3;;;LED灯显示定义 KEY EQU P1;;;键盘接口定义 TIME EQU 30H CNTA EQU 31H CNTB EQU 32H ;---程序入口定义 ORG 0000H JMP START

把LED灯在电路板上拼成一个笑脸图案就可以了。把LED的负极连在一起接到电源负极,搭建一个三极管共射电路,LED的正极连在一起经过一个适当阻值的电阻接到三极管共射电路的输出端,三极管的控制端---基极接单片机的IO口,

点阵原理就是一个LED的两端都接IO,当正极为1,负极为0时点亮相应的LED。下面是8×8的LED点阵程序,参考一下吧 include define uchar unsigned char define uint unsigned int uchar code TAB[]={ 0X00,0X0

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

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

delay1();} } }

设计一个用于51单片机的8x8的单色点阵LED驱动程序使,显示一个心形,在Proteus上仿真 求大神

1、可以通过左移函数_crol_()和右移函数_cror_()来实现LED等的来回流动。2、具体实现方法可以参考如下程序:

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 屏,右边第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--; } }
首先你要搞清楚点阵显示原理。 8*8点阵要显示一个画面,通常采用扫描的形式。点阵内部发光阵列每一行的阴极连在一起,引出一条共阴线;每一纵向阳极连在一起,引出一条共阳线。这样8*8点阵就共有8条共阴线和8条共阳线。具体请参考点阵内部结构示意图! 扫描的过程:例如将共阳线作为扫描线,即每次给其中一条阳线供电,其它阳线断电。这样,在该条阳线上的LED点亮与否就取决于8条阴线的电平高低了。快速地扫描阳线,并且每扫描一条就给阴线变化相应的电平,就实现了一组图像的显示。 在你给的程序中,很明显的 tabP2是用来形成扫描输出的。你自己分析一下这些值每次是不是只发生了0这个值的移位。这是采用查表法来得到扫描功能的,每次让IO口(一组)输出这表中的一个值,最终就形成了扫描动作。至于tabP0就是对应于每一个扫描线输出的心形数据表了。每次扫描IO输出 tabP2的一个值,对应数据IO输出tabP0的一个值。 至于你说的“还有8X8点阵图中接口P23,P25,LP04,LP06,其中的LP04,LP06是不是指单片机的P04和P06接口啊?”我个人认为你应该自己有能力对这等电路进行分析了,不要一味只是单纯复制制作。只有自己尝试了解,以后才能做出更具特色的东西而不会仅仅停留在心形显示。
上拉电阻和三极管都是为了提高单片机的输出能力。你确认程序写的没问题吗?只亮一个灯?那灯的亮度又如何?
#include #define uint unsigned int #define uchar unsigned char uchar count ,z; sbit key_1 = P3^7; sbit key_2 = P3^6; sbit PWM = P2^0; void key_control(); void init (); void create_PWM(uchar); void delay(uint); void main () { init (); while(1); { key_control(); create_PWM(count); } } void delay(uint z) { uint x,y; for(x = z;x>0;x--) for(y = 110;y>0;y--); } void init() { TMOD = 0x10; TH1 = (65536-4608)/256;//50sm TL1 = (65536-4608)%256; TR1 = 1; } void create_PWM(uchar count) { static i; if(TF1 == 1) { TF1 = 0; TH1 = (65536-4608)/256;//50sm TL1 = (65536-4608)%256; i++; if(i == 100) i=0; if(i <= count) PWM = 1; else PWM = 0; } } void key_control() { if(key_1 ==0) { delay(10); if(key_1 == 0) { count+= 5; if(count >= 100)count = 0; } } if(key_2 ==0) { delay(10); if(key_2 ==0) { count-= 5; if(count <= 0)count =100; } } }
#include #include #define uchar unsigned char #define uint unsigned int //延时 void DelayMS(uint x){ uchar i; while(x--) { for(i=0;i<120;i++); } }// 主程序 void main() { uchar i; while(1) { P2=0x01;//此处有改 for(i=0;i<7;i++) { P2=_crol_(P2,1); //P2 的值向左循环移动 DelayMS(150); } P2=0x80;//此处有改 for(i=0;i<7;i++) { P2=_cror_(P2,1); //P2 的值向右循环移动 DelayMS(150); } } } 您复制进去试一下,不行再追加吧,谢谢
//prj1 流水灯实验,LED灯是共阳极,给0亮。J1跳线帽 //用的是移位的方法 //头文件定义 #include #include //延时函数定义 void delay(void) { unsigned int i; unsigned int j; for(i=200;i>0;i--) { for(j=200;j>0;j--); } } void main() { P0 = 0xfe; //1111 1110 delay(); while(1) { P0 = _crol_(P0,1) ; // 将P0端口循环左移   delay(); if(P0 == 0x7f) { P0 = _cror_(P0,1); delay(); P0 = _cror_(P0,1); delay(); P0 = _cror_(P0,1); delay(); P0 = _cror_(P0,1); delay(); P0 = _cror_(P0,1); delay(); P0 = _cror_(P0,1); delay(); P0 = _cror_(P0,1); delay(); } } }
ORG 0000HORG 000BHLJMP T0ISRLJMP MAINORG 0030HMAIN: MOV TMOD,#01H MOV TH0,#HIGH(65536-50000) MOV TL0,#LOW(65536-50000) SETB TR0 SETB ET0 SETB EA MOV R2,#200 MOV P1,#00H SJMP $T0ISR: CLR TR0 MOV TH0,#HIGH(65536-50000) MOV TL0,#LOW(65536-50000) SETB TR0 DJNZ R2,T0E CLR TR0 MOV P1,#0FFHT0E: RETI END
这要看是几位数码管,是开发板新烧录的程序,那就看看显示程序是不是循环扫描显示的。最好发个截图看一下是什么样。
把点阵图形的代码存于表格中,一次取一个数,反复显示即可。