proteus设计了一个交通灯进行仿真,为什么LED和数码管都不会亮?

第一次用软件仿真,不太懂为什么不会亮。求教大佬们!! #include<reg51.h> sbit DIN=P3^0; sbit LOAD=P1^1; sbit CLK=P3^3; sbit south_yellow=P1^1; sbit south_red=P1^2; sbit south_green=P1^0; sbit east_yellow=P0^1; sbit east_red=P0^2; sbit east_green=P0^0; unsigned char minute=0; unsigned char counter=0; unsigned char num_add[]={0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08}; unsigned char num_dat[]={0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89}; void max7219_send(unsigned char add,unsigned char dat) { unsigned char ADS,i,j; LOAD=0; while(i<16) { if(i<8) { ADS=add; } else { ADS=dat; } for(j=8;j<=1;j--) { DIN=ADS&0x80; ADS=ADS<<1; CLK=1; CLK=0; } i=i+8; } LOAD=1; } void max7219_init() { max7219_send(0x0c,0x01); max7219_send(0x0b,0x07); max7219_send(0x0a,0xf5); max7219_send(0x09,0xff); } void east_display(unsigned char x) { unsigned char i,j; i=x/10; j=x%10; max7219_send(num_add[1],num_dat[j]); max7219_send(num_add[0],num_dat[i]); }void south_display(unsigned char x){ unsigned char i,j; i=x/10; j=x%10; max7219_send(num_add[3],num_dat[j]); max7219_send(num_add[2],num_dat[i]);}void timer_init(){ EA=1; ET0=1; TMOD=0x01; TH0=0xd8; TL0=0xef; TR0=1; counter=0;}void main(){ max7219_init(); timer_init(); while(1);}void traffic() interrupt 1{ if(counter<100) { counter++; } else { counter=0; minute++; if((minute<80)&&(minute>=0)) { east_green=0; east_yellow=1; east_red=1; south_green=1; south_yellow=1; south_red=0; east_display(80-minute); south_display(83-minute); } else if((minute>=80)&&(minute<83)) { east_green=1; east_yellow=0; east_red=1; south_green=1; south_yellow=1; south_red=0; east_display(83-minute); south_display(83-minute); } else if((minute>=83)&&(minute<143)) { east_green=1; east_yellow=1; east_red=0; south_green=0; south_yellow=1; south_red=1; east_display(146-minute); south_display(143-minute); } else if((minute>=143)&&(minute<146)) { east_green=1; east_yellow=1; east_red=0; south_green=1; south_yellow=0; south_red=1; east_display(146-minute); south_display(146-minute); } else { minute=0; } } TH0=0xd8; TL0=0xef; TR0=1;}

第1个回答  2019-05-27
设计有问题

这类问题,硬件有对,程序更要对追问

因为是初学,所以是按照参考书来进行编程的,程序应该不会有错。不知道是不是仿真的那个器件有问题

本回答被提问者采纳
第2个回答  2020-06-11
大致看了,VCC的问题,应该红色,现在是灰色,大不了上个5伏电源呗。程序不像教材里的吧?哪有那么长的中断程序。

proteus仿真中数码管不亮
4、如果是程序控制数码管,注意延时时间的长短,太短会看不到亮。

proteus仿真LED不亮
你程序跟数码管没关呀!初始状态下,单片机端口应该是全部为高电平的!所以你数码管的阴极和阳极都是高电平,肯定不会亮呀!这个数码管应该是共阳极的,你给p2口送高(ff),p0送低(00),试下!

Proteus仿真数码管为何不亮啊?高低电平应该没问题,共阴共阳都试过了...
数码管不亮的根本原因是:P0,P3口每一个脚到总线上每一条导线必须加网络标号,总线到三极管基极,总线到排电阻,总线到数码管公共端的每一条也都必须加网络标号。点左边工具条中的LBL,当鼠标移到导线上时出现一个小叉,点一下左键,出现一个对话框,就可以输入网络标号了。在总线两端需要相连的导线...

如图proteus仿真 为什么数码管点不亮啊
如果还有问题要确定数码管是共阴还是共阳,然后检查电路和程序的对应是否正确。

Proteus仿真数码管不亮?
你用的是共阴极(型号中有CC为共阴,CA为共阳)数码管,位选应加低电平,你恰好做反了,就是位选不正常。还有,电源端子是+1.8电压不够,数码管要亮,至少要2V。为啥有1.8V?就是实物1.8V也不亮的。这是仿真,用默认的5V(不用输入电压值)就行,或者是3.3V。

用proteus仿真做数字电压表时数码管不亮怎么回事?程序都是对的,数码...
首先检查HEX文件是否载入单片机 再检查LED取码是否正确,共阴取码的0是0x3f,而共阳取码的0是0xc0 最后是位选,共阴位选低电平有效,例如P2=0x0e时第一个数码管选通(相对你这个图)纯手打,望采纳···

proteus数码管为什么不亮 程序没有问题
你这仿真图用总线了,而且用了8155,凡是从8155画出的总线都要定义总线的网络标号,可以就按它内部对应的标注的字母加到每条总线上。同时,从总线上画的每一条导线也都要加网络标号的。否则,从总线画出的每一条导线与8155的某个脚相连就不知道了。这仿真图是你自己独立画的吗,找一下类似的仿真图...

proteus仿真的时候,为什么数码管有一段总是不亮!?
看你七段数码管显示的频率,过快的话肉眼看不清,就以为那一段没有给到电平。如果是低频率显示,估计就是没上电的缘故吧

proteus仿真我的七段数码管为什么不亮,而且管脚是有点位的,图如下,
你的数码管段码输入口与P口间加一个驱动试试比如245、244或373都可以,也可以加上拉电阻,这应该是驱动能力不够造成的。

proteus仿真为什么数码管闪一下就暗了呢?求解……
换成4个PNP型的三极管,发射极接到VCC,集电极接到数码管上,基极接到单片机上。但这样改后要改程序:P0 = (0xf7<< which)&0xf0 | num;改成这样。而且数码管的1234脚还要加一个排电阻,公共端即不能接VCC,也不能GND。因这必竟是软件仿真的,会有一些意想不到的问题。效果见下图。

相似回答