单片机 数码管

来源:百度知道 编辑:UC知道 时间:2024/05/13 06:55:12
首先定义第一位数码管 sbit LED_0=P1^4;和shuma=P0;
在写程序是为什么有时候写成:
shuma=0xc0;
LED_0=0;
LED_0=1;
delay(100);//delay为写好的延时函数。
有时候写成
LED_0=1;
shuma=0xc0;
LED_0=0;
delay(100);
有时候又写成
shuma=a[t];
LED_0=0;
delay(100);
LED_0=1;
这些都是正确写法么(经验证是可以执行的),有什么区别呢?
小弟虚心请教,请高手耐心回答
第三条程序应为
shuma=0xc0;
下面一样。

首先我想你的那一个P14那是这一位数码管的位码。
每一种写法是,我想这一一个共阴极的数码管,先把段码送给p0口,在选通位码,先写0,就是让其灭,为了防抖动,跟着给1延时,亮起。

每二种应该是共阳极的数码管,先给1是让其灭,也是防抖动,在给P0品段码,
在选通位,让数码管亮起,延时。

第三种就是用数组来让数码管亮起的一种写法,,也是常用和比较好的一种用法,那么数组里存放的就是数码管的段码,且是共阴极的,你所写的只是其中一个段码给P0,应该还有其它的,要不就失去了用数组的意义,位选能和前面是一样的先给P0口段码,消抖,选通。

在没有中断程序,并且程序中其他地方不对P1。0或P0进行改动的情况下:
针对本程序,shuma=0xc0这一句在三种“写法”中的位置所产生的效果基本是相同的(因为都在DELAY语句的前面),数码管起码能持续亮DELAY(100)的时间。
在第一种写法上,LED_0=0这一句是基本是废的,P1。4基本是常亮(全亮)的!
同样,第二种写法上,LED_0=1这一句也是废的,P1。4基本是常暗(全暗)的!
第三种写法就有点意思了,P1。4暗的时间比例基本等于总循环时间比上DELAY(100)的时间,如果程序量短,那么外在表现基本是暗(全暗)的,如果程序量大的话,外在表现就会亮(亮度不一定),而且程序量越大,亮度越高!
在前两种写法上,LED_0被置1后马上又被置0,或被置0后马上又被置1,这样的效果等于只有置0(对于第一种)指令或置1(对于第二种)指令。
这三种写法,在语法错误是没有的,只是,无论那一种,如果达不到期望的效果,那么说明就有逻辑错误了,逻辑错误只能靠人去慢慢推敲发现,编译系统无能为力。

shuma=0xc0;//将P0口赋值0xc0,即十六进制的C,p0口8个端口状态为11000000
LED_0=0; //p1.4置为高电平
LED_0=1;//p1.4置为低电平
delay(100);//
其实几种写法都没错,只是执行顺序不一样而已。

可以的,这样的开关速度人眼根本看不出来,我觉得可能起刷新的作用。3种写法都是对的

朋友,