?? 7段數(shù)碼管.c
字號:
/***************************************************
7段數(shù)碼管動(dòng)態(tài)顯示程序
***************************************************/
#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段數(shù)碼管鎖存器地址 */
#define LEDADDR 0x8000
// 0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f
/* 0-9 a-f 的7段數(shù)碼管顯示編碼 */
unsigned char ledcode[16]={0x3F,0x0C,0x76,0x5E,0x4D,0x5B,0x7B,0x0E,0x7F,0x5F,0x6F,0x79,0x33,0x7C,0x73,0x63};
/* 存放要顯示的數(shù)字值 */
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;
//輸入要顯示的數(shù)值
val[0]=1;
val[1]=2;
val[2]=3;
val[3]=4;
currled=0;
}
/* 主程序入口 */
int main(void)
{ init();
while(1)
{
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -