📄 7段数码管.c
字号:
/***************************************************
7段数码管动态显示程序
***************************************************/
#include <reg52.h>
#include <stdio.h>
#include <stdlib.h>
#include <absacc.h>
#include <ctype.h>
#include <string.h>
#include <stddef.h>
#include <intrins.h>
#include <absacc.h>
#include <stdarg.h>
#define TIMER0H 0xc4;
#define TIMER0L 0x00;
/* 7段数码管锁存器地址 */
#define LEDADDR 0x8000
// 0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f
/* 0-9 a-f 的7段数码管显示编码 */
unsigned char ledcode[16]={0x3F,0x0C,0x76,0x5E,0x4D,0x5B,0x7B,0x0E,0x7F,0x5F,0x6F,0x79,0x33,0x7C,0x73,0x63};
/* 存放要显示的数字值 */
unsigned char val[4];//
unsigned currled;
/* 写锁存器的子程序 */
void wraddr(unsigned int addr,unsigned char d)
{ unsigned char xdata *pa;
pa=(unsigned char xdata *)addr;
*pa=d;
}
/* 显示子程序 */
void display(void)
{
unsigned char en[4]={1,2,4,8};
if((val[currled]>=0)&&(val[currled]<=15))
{ wraddr(LEDADDR,ledcode[val[currled]]);
P1=en[currled];
}
else
{ wraddr(LEDADDR,0x00);
P1=en[currled];
}
if((currled>=0)&&(currled<3))
{ currled++;
}
else
{ currled=0;
}
}
void time0(void) interrupt 1
{ display();
TL0 = TIMER0L;
TH0 = TIMER0H;
}
/* 初始化子程序 */
void init(void)
{
//timer0 init
TL0 = TIMER0L;
TH0 = TIMER0H;
TR0=1;
ET0=1;//test
// irq init
EX0=0;
IT0=0;
EX1=0;
IT1=0;
EA=1;
//输入要显示的数值
val[0]=1;
val[1]=2;
val[2]=3;
val[3]=4;
currled=0;
}
/* 主程序入口 */
int main(void)
{ init();
while(1)
{
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -