標(biāo)題:
數(shù)碼管顯示程序
[打印本頁(yè)]
作者:
727602048
時(shí)間:
2017-6-23 01:40
標(biāo)題:
數(shù)碼管顯示程序
本帖最后由 727602048 于 2017-6-23 01:41 編輯
八個(gè)七段數(shù)碼管顯示程序
#include <reg51.h> //包含頭文件
#include <intrins.h> //包含移位函數(shù)頭文件
//段碼表
unsigned char code dis_code[11]={0xc0,0xf9,0xa4,0xb0, // 0, 1, 2, 3
0x99,0x92,0x82,0xf8,0x80,0x90, 0xff};// 4, 5, 6, 7, 8, 9, off
unsigned char code wei_code[8]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
unsigned char shi=0,fen=0,miao=0;
//毫秒級(jí)延時(shí)函數(shù)
unsigned int jishu,j=0;
void delay(unsigned int x);
void display(void);
void int0Init(void);
//主函數(shù)
void main()
{
P0 = 0xff; //先關(guān)閉數(shù)碼管
P2 = 0x00; //
int0Init();
while(1)
{
display();
}
}
void int0Init(void)
{
EA=1;
ET0=1;
TR0=1;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
}
void delay(unsigned int x)
{
unsigned char i;
while(x--)
{
for(i=0;i<120;i++);
}
}
void display(void)
{
P2 = 0x00; //每顯示一位都要關(guān)閉位選端口一次
P2=wei_code[0]; //每次選通一個(gè)位選端口
P0=dis_code[miao%10]; //段碼送P0口
delay(2);
P2 = 0x00; //每顯示一位都要關(guān)閉位選端口一次
P2=wei_code[1]; //每次選通一個(gè)位選端口
P0=dis_code[miao/10]; //段碼送P0口
delay(2);
P2 = 0x00; //每顯示一位都要關(guān)閉位選端口一次
P2=wei_code[2]; //每次選通一個(gè)位選端口
P0=0xbf; //段碼送P0口
delay(2);
P2 = 0x00; //每顯示一位都要關(guān)閉位選端口一次
P2=wei_code[3]; //每次選通一個(gè)位選端口
P0=dis_code[fen%10]; //段碼送P0口
delay(2);
P2 = 0x00; //每顯示一位都要關(guān)閉位選端口一次
P2=wei_code[4]; //每次選通一個(gè)位選端口
P0=dis_code[fen/10]; //段碼送P0口
delay(2);
P2 = 0x00; //每顯示一位都要關(guān)閉位選端口一次
P2=wei_code[5]; //每次選通一個(gè)位選端口
P0=0xbf; //段碼送P0口
delay(2);
P2 = 0x00; //每顯示一位都要關(guān)閉位選端口一次
P2=wei_code[6]; //每次選通一個(gè)位選端口
P0=dis_code[shi%10]; //段碼送P0口
delay(2);
P2 = 0x00; //每顯示一位都要關(guān)閉位選端口一次
P2=wei_code[7]; //每次選通一個(gè)位選端口
P0=dis_code[shi/10]; //段碼送P0口
delay(2);
}
void Time0(void) interrupt 1 using 0
{
j++;
if (j==20)
{miao++;j=0;
if(miao==60)
{miao=0;fen++;
if(fen==60)
{fen=0;shi++;
if(shi==24)
{shi=0;}}}}
TH0 = (65536-50000)/256; //定時(shí)器重新賦初值
TL0 = (65536-50000)%256;
}
作者:
727602048
時(shí)間:
2017-6-23 01:40
#include <reg51.h> //包含頭文件 #include <intrins.h> //包含移位函數(shù)頭文件 //段碼表 unsigned char code dis_code[11]={0xc0,0xf9,0xa4,0xb0, // 0, 1, 2, 3 0x99,0x92,0x82,0xf8,0x80,0x90, 0xff};// 4, 5, 6, 7, 8, 9, off unsigned char code wei_code[8]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01}; unsigned char shi=0,fen=0,miao=0; //毫秒級(jí)延時(shí)函數(shù) unsigned int jishu,j=0; void delay(unsigned int x); void display(void); void int0Init(void); //主函數(shù) void main() { P0 = 0xff; //先關(guān)閉數(shù)碼管 P2 = 0x00; // int0Init(); while(1) { display(); } } void int0Init(void) { EA=1; ET0=1; TR0=1; TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; } void delay(unsigned int x) { unsigned char i; while(x--) { for(i=0;i<120;i++); } } void display(void) { P2 = 0x00; //每顯示一位都要關(guān)閉位選端口一次 P2=wei_code[0]; //每次選通一個(gè)位選端口 P0=dis_code[miao%10]; //段碼送P0口 delay(2); P2 = 0x00; //每顯示一位都要關(guān)閉位選端口一次 P2=wei_code[1]; //每次選通一個(gè)位選端口 P0=dis_code[miao/10]; //段碼送P0口 delay(2); P2 = 0x00; //每顯示一位都要關(guān)閉位選端口一次 P2=wei_code[2]; //每次選通一個(gè)位選端口 P0=0xbf; //段碼送P0口 delay(2); P2 = 0x00; //每顯示一位都要關(guān)閉位選端口一次 P2=wei_code[3]; //每次選通一個(gè)位選端口 P0=dis_code[fen%10]; //段碼送P0口 delay(2); P2 = 0x00; //每顯示一位都要關(guān)閉位選端口一次 P2=wei_code[4]; //每次選通一個(gè)位選端口 P0=dis_code[fen/10]; //段碼送P0口 delay(2); P2 = 0x00; //每顯示一位都要關(guān)閉位選端口一次 P2=wei_code[5]; //每次選通一個(gè)位選端口 P0=0xbf; //段碼送P0口 delay(2); P2 = 0x00; //每顯示一位都要關(guān)閉位選端口一次 P2=wei_code[6]; //每次選通一個(gè)位選端口 P0=dis_code[shi%10]; //段碼送P0口 delay(2); P2 = 0x00; //每顯示一位都要關(guān)閉位選端口一次 P2=wei_code[7]; //每次選通一個(gè)位選端口 P0=dis_code[shi/10]; //段碼送P0口 delay(2); } void Time0(void) interrupt 1 using 0 { j++; if (j==20) {miao++;j=0; if(miao==60) {miao=0;fen++; if(fen==60) {fen=0;shi++; if(shi==24) {shi=0;}}}} TH0 = (65536-50000)/256; //定時(shí)器重新賦初值 TL0 = (65536-50000)%256; }
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1