单片机C51接口实训.ppt
单片机;单片机介绍
;8051单片机的图片;单片机微机接口设备箱;单片机晶振电路图;实训任务;P1接口电路连接图;项目一;原理图;程序框图
;两个两个点亮C语言程序;附:;项目二;三个三个点亮C语言程序;附:;项目三;四个四个点亮C语言程序
;;项目四;C语言程序;voidmain()
{
unsignedcharindex;
unsignedcharLED;
while(1)
{
LED=129;
for(index=0;index8;index++)
{
P1=LED;
delay();
P1=H;
delay();
P1=K;
delay();
P1=Y;
delay();
P1=Y;
delay();
P1=K;
delay();
P1=H;
delay();
P1=LED;
delay();
}
}
};项目五;#includereg51.h
#defineLEDLen6
#definePB12//164时钟位
#definePB01//164数据位
xdataunsignedcharOUTBIT_at_0x8002;//位控制口
xdataunsignedcharOUTSEG_at_0x8004;//段控制口
unsignedcharLEDBuf[LEDLen];//显示缓冲
codeunsignedcharLEDMAP[]={//八段管显示码
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71
};
voidDelay(unsignedcharCNT)
{
unsignedchari;
while(CNT--!=0)
for(i=100;i!=0;i--);
};voidDisplayLED()
{
unsignedchari,j;
unsignedcharPos;
unsignedcharLED;
Pos=0x20;//从左边开始显示
for(i=0;iLEDLen;i++){
OUTBIT=0;//关所有八段管
LED=LEDBuf[i];
OUTSEG=LED;
OUTBIT=Pos;//显示一位八段管
Delay(1);
Pos=1;//显示下一位
}
}
;#defineTick10000//10000x100us=1s
#defineT100us(256-50)//100us时间常数(6M)
unsignedcharHour,Minute,Second;
unsignedintC100us;//100us记数单元
voidT0Int()interrupt1
{
C100us--;
if(C100us==0){
C100us=Tick;//100us记数器为0,重置记数器
Second++;
if(Second==60){
Second=0;
Minute++;
if(Minute==60){
Minute=0;
Hour++;
if(Hour==24)Hour=0;
}
}
}
};voidmain()
{
TMOD=0x02;//方式2,定时器
TH0=T100us;
TL0=T100us;
IE=0x82;//EA=1,IT0=1
Hour=0;
Minute=0;
Second=0;
C100us=Tick;
TR0=1;//启动定时器0
while(1){
LEDBuf[0]=LEDMAP[Ho