蓝桥杯数码管静态显示

分为段码(a,b,c,d,e,f,g,dp)和公共端
可理解为P0口直接控制这个端口了
公共端由Y6控制 。
Y7控制段码,Y6控制公共端

例题:让第一个数码管显示数字6
#include "reg52.h"
unsigned char code SMDD_duanma[18]={0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x80,
0xc6,0xc0,0x86,0x8e,
0xbf,0x7f};
void HC138init(unsigned char i)
{
switch(i)
{
case 4:
P2=(P2&0x1f)|0x80;
break;
case 5:
P2=(P2&0x1f)|0xa0;
break;
case 6:
P2=(P2&0x1f)|0xc0;
break;
case 7:
P2=(P2&0x1f)|0xe0;
break;
}
}
void ShowSMG()
{
HC138init(6);
P0=0x01;
HC138init(7);
P0=0x82;
}
void main()
{
ShowSMG();
while(1)
{
}
}
所有数码管循环播放6
#include "reg52.h"
unsigned char code SMDD_duanma[18]={0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x80,
0xc6,0xc0,0x86,0x8e,
0xbf,0x7f};
void delay(unsigned int t)
{
while(t--);
while(t--);
}
void HC138init(unsigned char i)
{
switch(i)
{
case 4:
P2=(P2&0x1f)|0x80;
break;
case 5:
P2=(P2&0x1f)|0xa0;
break;
case 6:
P2=(P2&0x1f)|0xc0;
break;
case 7:
P2=(P2&0x1f)|0xe0;
break;
}
}
void ShowSMG_Bit(unsigned char dat,unsigned char pos)
{
HC138init(6);
P0=0x01< HC138init(7); P0=dat; } void SMG_Static() { unsigned char i; for(i=0;i<8;i++) { ShowSMG_Bit(SMDD_duanma[6],i); delay(60000); } } void main() { HC138init(5); P0=0x00; HC138init(4); P0=0xff; while(1) { SMG_Static(); } } 每个数码管输出0-9: #include "reg52.h" unsigned char code SMDD_duanma[18]={0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x80, 0xc6,0xc0,0x86,0x8e, 0xbf,0x7f}; void delay(unsigned int t) { while(t--); while(t--); } void HC138init(unsigned char i) { switch(i) { case 4: P2=(P2&0x1f)|0x80; break; case 5: P2=(P2&0x1f)|0xa0; break; case 6: P2=(P2&0x1f)|0xc0; break; case 7: P2=(P2&0x1f)|0xe0; break; } } void ShowSMG_Bit(unsigned char dat,unsigned char pos) { HC138init(6); P0=0x01< HC138init(7); P0=dat; } void SMG_Static() { unsigned char i,j; for(i=0;i<8;i++) { for(j=0;j<10;j++) { ShowSMG_Bit(SMDD_duanma[j],i); delay(60000); } } } void main() { HC138init(5); P0=0x00; HC138init(4); P0=0xff; while(1) { SMG_Static(); } } 例题:8个数码管分别单独依次显示0-9的值,然后所有数码管一起显示同时显示0-F的值。 #include "reg52.h" unsigned char code SMDD_duanma[18]={0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x80, 0xc6,0xc0,0x86,0x8e, 0xbf,0x7f}; void delay(unsigned int t) { while(t--); while(t--); } void HC138init(unsigned char i) { switch(i) { case 4: P2=(P2&0x1f)|0x80; break; case 5: P2=(P2&0x1f)|0xa0; break; case 6: P2=(P2&0x1f)|0xc0; break; case 7: P2=(P2&0x1f)|0xe0; break; } } void ShowSMG_Bit(unsigned char dat,unsigned char pos) { HC138init(6); P0=0x01< HC138init(7); P0=dat; } void SMG_Static() { unsigned char i,j; for(i=0;i<8;i++) { for(j=0;j<10;j++) { ShowSMG_Bit(SMDD_duanma[j],i); delay(60000); } } for(j=0;j<16;j++) { HC138init(6); P0=0xff; HC138init(7); P0=SMDD_duanma[j]; delay(60000); } } void main() { HC138init(5); P0=0x00; HC138init(4); P0=0xff; while(1) { SMG_Static(); } } 本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
