⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 51

📁 51单片机大量源码
💻
字号:

#include <reg52.h> //51芯片管脚定义头文件 
#include <intrins.h>//内部包含延时函数 _nop_(); 

#define uchar unsigned char 
#define uint unsigned int 

uchar code ledcode[11] ={ 0xC0,0xF9,0xA4,0xB0,0x99, 
0x92,0x82,0xF8,0x80,0x90,0xff }; 

uchar data display[9]={10,10,10,10,10,10,10,10,10}; 

uchar shift,n; 

/********************************************************/ 
/* */
/* 延时函数 */
/* */ 
/********************************************************/ 

void delayms(uint ms) 

{ 
uchar t; 
while(ms--) 
{ 

for(t = 0; t < 120; t++); 
} 
} 

/**********************************************************

 数据交换函数(向左移动) 

**********************************************************/ 

void exchange1() 
{ 
uchar i; 

for(i=1; i<9; i++)

 { 
display[i] = i; 
delayms(1000);


 } 
} 

/**********************************************************

 数据交换函数(向右移动) 

**********************************************************/ 

void exchange2() 
{ 
uchar i,j; 

for(j=0; j<8; j++) 
{ for(i=0; i<8; i++) 
{ 


display[i]=display[i+1]; 
} 
display[8]=10; 
delayms(1000); 


} 
} 

/**********************************************************

 主函数 

**********************************************************/ 

void main(void) 

{ 
uchar times; 
P0=0xff; 
P2=0xff; 
n=0; 
shift=0xfe; 
times=8;

 TMOD = 0x01; //定时器T0工作方式1 
TH0 = 0xfc; //1ms定时常数 
TL0 = 0x66; 
IE = 0x82; //允许定时器T0中断 
TR0 = 1; //启动定时器T0 


while(1)

 { 
exchange1(); 
delayms(1000); //停止滞留时间


 exchange2(); 
delayms(1000); //停止滞留时间 
} 
}
/**********************************************************

 中断服务函数 

**********************************************************/ 

void leddisplay() interrupt 1 

{ 
TH0 = 0xFC; //1ms定时常数 
TL0 = 0x66; 
n++; 
P0=ledcode[display[n]]; //送段码 
P2=shift; //送位码 
shift=shift<<1|0x01; //修改位码 
if(n>8) 
{
 n=0; 
shift=0xfe; 
} 
} 

/*********************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -