导航:首页 > 操作系统 > 让单片机中数码管亮1

让单片机中数码管亮1

发布时间:2022-09-26 12:44:04

A. 数码管共阳极,让第一个数码管显示数字1,是先打开“段选”还是“位选”

单片机上电瞬间我记得IO电平是不定的,所以控制数码管的IO如果没有外部上拉的话是不会亮的,如果你只点亮一个数码管的话,段选和位选的先后没什么关系,如果轮询多个的话建议还是先段后位

B. 我在给单片机编程时,想让第一个数码管亮,然后编了下面的程序

你好
如楼上说的,程序没问题,第一段程序,先把语句顺序调一下:
void main()
{
P0=0xfe;
wela=1;
wela=0;

P0=0x06;
la=1;
la=0;
}
还不行的话,查查电源电压,是否在4.5-5.5.

第二段程序是扫描速度太快,造成MCU外部芯片跟不上MCU的速度,在末尾加入延时,才能正常,如:
void Delay(unsigned int t)
{
while(--t);
}
主程序:
while(1)
{
wela=1;
P0=0xfe;
wela=0;

la=1;
P0=0x06;
la=0;
Delay(200); //扫描间隙延时,时间太长会闪烁,太短会造成重影
}

C. 51单片机怎么点亮数码管

单片机通过驱动电路给数码管中相应各段的发光二极管加正向电压,该段发光二极管就会被点亮。
不同段的发光二极管加正向电压则亮,不加正向电压则灭,这样就可以通过各段的亮灭组合,来显示不同的数字和字符了。

单片机是通过向数码管送段形(即显示编码),来给数码管相应的各段加正向电压来实现的。

D. 怎么让51单片机亮一数码管,或者亮几个能从一变的。用c语言的,顺便帮我讲讲端口问题,刚开始学,谁能告诉

#include <REG51.H>
#define uchar unsigned char
#define uint unsigned int
uchar code SEG7[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar code ACT[4]={0xfe,0xfd,0xfb,0xf7};
/***********************************************************/
sbit D0=P1^0;
sbit D1=P1^1;
sbit D2=P1^2;
sbit D3=P1^3;
sbit D4=P1^4;
sbit D5=P1^5;
sbit D6=P1^6;
sbit D7=P1^7;
#define ON 0
#define OFF 1
uchar a[2]; //a[0]用于存放发光管编号,a[1]用于存放发光管亮、灭的选择
uchar cnt;
uchar temp,tp,i;
bit outflag; //定义位标志用于输出控制
/****************************************/
void delay(uint k)
{
uint data i,j;
for(i=0;i<k;i++)
{
for(j=0;j<121;j++){;}
}
}
/**************************************/
void init(void)
{
TMOD=0x20; //定时器T1方式2
TH1=0xfd; //波特率9600 初值由公式P210得来,SMOD默认是0
TL1=0xfd; //
SCON=0x50; //串口方式1,10位可变波特率,允许接收
TR1=1; //启动T1
ES=1; //串口1开中断
EA=1; //打开总中断
}
/****************************************/
void main(void)
{
init();
while(1)
{
P0=SEG7[a[0]];P2=ACT[2];delay(1); //显示变量a[0](发光管编号)
P0=SEG7[a[1]];P2=ACT[0];delay(1); //显示变量a[1](发光管亮、灭的选择)
if(outflag==1) //如果输出标志为1,进入if语句
{
switch(a[0])
{
case 1:if(a[1]==1)D0=ON;else D0=OFF;break;
case 2:if(a[1]==1)D1=ON;else D1=OFF;break;
case 3:if(a[1]==1)D2=ON;else D2=OFF;break;
case 4:if(a[1]==1)D3=ON;else D3=OFF;break;
case 5:if(a[1]==1)D4=ON;else D4=OFF;break;
case 6:if(a[1]==1)D5=ON;else D5=OFF;break;
case 7:if(a[1]==1)D6=ON;else D6=OFF;break;
case 8:if(a[1]==1)D7=ON;else D7=OFF;break;
default:break;
}
outflag=0; //置输出标志为0
}
if(RI)
{
RI=0;
SBUF=tp; while(TI==0);TI=0;
EA=1;
}
}
}
/******************************************/
void serial_serve(void) interrupt 4 //定义函数名为serial_serve的串口接收中断服务函数,使用默认的寄存器组
{

//RI=0; //清除接收标志
EA=0; //关闭总中断
temp=SBUF; //将接收到的信息存放在temp中,单片机中的SBUF一般只有一个字节,字符也是一个字节,因此一次只接受一个字符,这里一共进行了5次中断
tp=temp;
switch(cnt)
{
case 0:if(temp=='#')cnt=1;else outflag=0;break;
case 1:if((temp>0x30)&&(temp<0x39)){a[0]=temp-0x30;cnt=2;}else outflag=0;break;
case 2:if(temp=='(')cnt=3;else outflag=0;break;
case 3:if((temp>=0x30)&&(temp<=0x38)){a[1]=temp-0x30;cnt=4;}else outflag=0;break;
case 4:if(temp==')'){cnt=0;outflag=1;}else outflag=0;break;
default:break;
}
//EA=1; //打开总中断
}

串口通讯,你还是好好看看吧,直接给你个程序有什么用呢?又不是万能的,要自己根据实际情况写的。

E. 我在给单片机编程时,想让第一个数码管亮,然后编了下面的程序

你好
如楼上说的,程序没问题,第一段程序,先把语句顺序调一下:
void
main()
{
P0=0xfe;
wela=1;
wela=0;
P0=0x06;
la=1;
la=0;
}
还不行的话,
查查
电源电压,是否在4.5-5.5.
第二段程序是扫描速度太快,造成MCU外部芯片跟不上MCU的速度,在末尾加入延时,才能正常,如:
void
Delay(unsigned
int
t)
{
while(--t);
}
主程序:
while(1)
{
wela=1;
P0=0xfe;
wela=0;
la=1;
P0=0x06;
la=0;
Delay(200);
//扫描间隙延时,时间太长会闪烁,太短会造成
重影
}

F. 怎么的单片机一位数码管输入0xbe就可以显示1

这个取决于数码管引脚与单片机IO口的连接,0xbe显示1,说明数码管右边的两划(笔画段b和c)接在单片机某个端口的第0脚和第6脚,因为0xbe的二进制是10111110,两个0就是两个被点亮的笔画段,这是共阴数码管

G. 单片机数码管同时显示 1 2.

你的延时程序不对。
void delay(uint z)
{
uint x,y;
for(x=0;x<z;x++)
for(y=0;y<110;y++);//你这里竟然是大于!?
}

还有,问这种问题前先要告诉别人,你的数码管是共阴还是共阳的。你的位选到底是怎么样的。

不然怎么看得懂程序。

最后,给别人看的程序最好在变量处添加变量的作用的注释。这个程序短,不然我肯定

不高兴看。

要亮的那些灯,即P0=table[x]后面,加上延时delay(50);在延时过程中,P0不变,可以让

灯亮的久一点。

我估计你的重影就是应为延时程序失效,每次都不满足循环条件直接跳出,亮灯程序后

面没有延时,灯亮和暗时间一样就闪了,闪的很快情况下就是重影。

H. 怎么让51单片机亮一数码管,或者亮几个能从一变的。

问题很简单用动态扫描,或是用译码器芯片或是用74HC164

I. 51单片机数码管如何依次点亮

51单片机数码管依次点亮:选择数码管操作称为位选,根据自己的开发板原理图找到位选对应的管脚,以共阴极为例。要在编程时执行选中操作,只要给对应管脚低电平即可。段选同样。如果每个单独连接占用管脚太多,很浪费硬件资源,所以采用多位串联控制。

数码管通常有两种不同的接法,共阴极和共阳极,共阴极顾名思义就是讲八个二极管的阴极连接在一起,这样根据二极管导通原理,通过控制不同二极管阳极电平就可以控制数码管显示不同的数字。单个数码管是由八个发光二极管连接而成,通过控制不同led点亮,可以使之显示不同的数字。

注意区分两个概念即段选和位选;位选指数码管对应的位,例如图共有八个数码管,位选就是选中哪一个数码管操作,段选则是控制数码管显示什么数字。静态显示为了缩短代码长度,一般都是采用总线式编程,显示数字共阴共阳互为反。

J. 本人初学单片机,请各位大神帮帮忙,我点亮一号数码管显示数字1,可是4.5.6.7.8号数码管微亮显示数字1。

你这是仿真,还是实物呀?
是用两片74HC573锁存器的吧?你看过,谁这么写程序的?

阅读全文

与让单片机中数码管亮1相关的资料

热点内容
php多表批量导入 浏览:49
免费理论电影大全 浏览:874
法国两男一女电影 浏览:292
有一部电影叫什么湖泊 浏览:83
大尺度电影床戏视频 浏览:672
压缩机线圈烧了可以修吗 浏览:783
cctv5加密收费吗 浏览:211
理财app关闭该怎么办 浏览:452
服务器如何配置多个https域名 浏览:86
怎样制作文件夹的中文翻译 浏览:518
泰剧大尺度影片 浏览:730
为什么python适合做算法 浏览:810
新疆政务服务app中如何实名认证 浏览:224
重生成小孩 浏览:104
二战中的加密技术 浏览:515
美逛app如何建群 浏览:819
iphone用什么app3d扫描 浏览:289
冠生园葱油压缩饼干 浏览:503
Linux库文件安装 浏览:225
解压玩具黑猩猩 浏览:967