自动化专业单片机课程设计Word格式.docx
- 文档编号:20758239
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:17
- 大小:17.24KB
自动化专业单片机课程设计Word格式.docx
《自动化专业单片机课程设计Word格式.docx》由会员分享,可在线阅读,更多相关《自动化专业单片机课程设计Word格式.docx(17页珍藏版)》请在冰豆网上搜索。
/********************************子函数*********************************/
voidDelay(uintdel)//延时del(ms)子函数
{
uinti,j;
for(i=0;
i<
del;
i++)
for(j=0;
j<
1940;
j++);
}
voidAll_flash(uintk)//所有灯闪烁5次
uinti;
i<
k;
i++)
{
P0=0x00;
Delay(500);
P0=0xff;
}
voidfunction1()
P0=0xff;
Delay(time);
while
(1)
P0=0xfe;
//功能18个灯依次点亮
Delay(time);
for(i=0;
7;
P0=_irol_(P0,1);
Delay(time);
}
P0=0x80;
//功能28个灯依次熄灭
P0=0xc0;
P0=0xe0;
P0=0xf0;
P0=0xf8;
P0=0xfc;
P0=0xff;
All_flash
(2);
//功能3全亮全灭循环2次
P0=0x01;
//功能4
P0=_crol_(P0,1);
P0=0x00;
//功能5
P0=_cror_(P0,1);
All_flash(3);
voidfunction2()
n=7;
P0=0x7f;
{
for(i=n;
i>
0;
i--)
n;
}
/********************************中断服务程序*********************************/
voidInterrupt0(void)interrupt0
EX0=0;
Delay(3);
cont++;
if(cont>
=7)cont=1;
switch(cont)
case1:
{P0=0x7f;
break;
case2:
{P0=0x3f;
n=6;
case3:
{P0=0x1f;
n=5;
case4:
{P0=0x0f;
n=4;
case5:
{P0=0x07;
n=3;
case6:
{P0=0x03;
n=2;
case7:
{P0=0x01;
n=1;
default:
{P0=0xfe;
EX0=1;
}
/***************************交通灯实验****************************/
#definecont5//黄灯闪烁次数
#definetime5000//黄灯闪烁时间10s
#definetime25000//救护车通过时间10s
sbitKEY=P3^2;
//救护车按键外中断0
sbitEWR=P0^0;
//东西红灯EastWestRed缩写
sbitEWY=P0^2;
//东西黄灯
sbitEWG=P0^4;
//东西绿灯
sbitSNR=P0^1;
//南北红灯SouthNorthRed缩写
sbitSNY=P0^3;
//南北黄灯
sbitSNG=P0^5;
//南北绿灯
voidflash();
//南北黄灯闪烁cont次
voidEWY_flash();
//东西黄灯闪烁cont次
//延时del(ms)子函数
voidmain()
EWR=0;
//初始状态俩红灯亮
EWY=1;
EWG=1;
SNR=0;
SNY=1;
SNG=1;
Delay(1000);
//开总中断
EWR=1;
//东西绿灯亮南北红灯亮
EWY=1;
EWG=0;
SNR=0;
SNY=1;
SNG=1;
//延时10s
EWG=1;
//东西绿灯灭
flash();
//东西黄灯闪烁
EWR=0;
//东西红灯亮南北绿灯亮
SNR=1;
SNG=0;
uinti,j;
for(j=0;
voidflash()//黄灯闪烁cont次
uinti;
EWR=1;
SNR=1;
cont;
EWY=0;
SNY=0;
Delay(1000);
EWY=1;
SNY=1;
uchartemp;
EX0=0;
temp=P0;
Delay(3);
//救护车到俩红灯亮
Delay(time2);
//救护车通过时间
P0=temp;
}
/************************数码管显示实验**************************/
#defineuintunsignedint
codeucharduan[16]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09,0x11,0xc1,0x63,0x85,0x61,0x71};
//显示段码数码管字跟
ucharwei[4]={0x7f,0xbf,0xdf,0xef};
//位的控制端
uintcont=1;
uintq=0;
uintb=0;
uints=0;
uintg=0;
voiddelay(uchart);
voiddisplay();
/************************************主函数***********************************/
IT1=1;
EX1=1;
EA=1;
display();
/**********************************子函数***********************************/
voiddelay(uchart)
uchari,j;
t;
for(j=2122;
j>
j--);
voiddisplay()//显示函数
if(q>
16)q=0;
if(b>
16)b=0;
if(s>
16)s=0;
if(g>
16)g=0;
P2=duan[q];
P1=wei[0];
delay(100);
P2=duan[b];
P1=wei[1];
P2=duan[s];
P1=wei[2];
P2=duan[g];
P1=wei[3];
switch(cont)
{g++;
{s++;
{b++;
{q++;
g++;
voidInterrupt1(void)interrupt2
EX1=0;
cont++;
if(cont>
4)cont=1;
{P0=0xfd;
{P0=0xfb;
{P0=0xf7;
P0=0xfe;
;
}
/******************************************************************************
***********************************DS18B20************************************
******************************************************************************/
#definejump_ROM0xCC
#definestart0x44
#defineread_EEROM0xBE
#defineT4
unsignedcharcodeduan[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};
sbitDQ=P3^7;
//DS18B20数据口
unsignedcharTMPH,TMPL;
voiddelay(uintN)
inti;
for(i=0;
T*N;
i++);
voiddelay_1()
inti,j;
=10;
for(j=0;
=2;
voiddelay_2(uchart)//数码管显示
for(j=80;
ucharReset(void)//复位DS18B20
uchardeceive_ready;
DQ=0;
delay(29);
DQ=1;
delay(3);
deceive_ready=DQ;
delay(25);
return(deceive_ready);
ucharread_bit(void)//从DS18B20读一个位值
uchari;
3;
return(DQ);
voidwrite_bit(ucharbitval)//向DS18B20写一位
DQ=0;
if(bitval==1)
DQ=1;
delay(5);
ucharread_byte(void)//从DS18B20读一个字节
uchari,m,receive_data;
m=1;
receive_data=0;
8;
if(read_bit())
receive_data=receive_data+(m<
<
i);
delay(6);
return(receive_data);
voidwrite_byte(ucharval)//向DS18B20写一个字节
uchari,temp;
temp=val>
>
i;
temp=temp&
0x01;
write_bit(temp);
voiddisplayz(unsignedintv)
{
unsignedchars,g;
s=v%100/10;
g=v%10;
P1=wei[0];
delay_2(100);
voiddisplayx(unsignedintv)
voiddisplay(unsignedintv)
unsignedcharc,b,s,g;
c=v/1000;
b=v%1000/100;
P1=0xff;
P2=duan[c];
delay_2(100);
P2=0xfe&
duan[b];
voidmain()//主函数
floatt;
uinttemp;
while
(1)
Reset();
write_byte(jump_ROM);
write_byte(start);
write_byte(jump_ROM);
write_byte(read_EEROM);
TMPL=read_byte();
TMPH=read_byte();
temp=TMPH;
temp<
=8;
temp=temp|TMPL;
t=temp*0.0625;
temp=t*100;
display(temp);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 自动化 专业 单片机 课程设计