自动化专业单片机课程设计.docx

上传人:b****5 文档编号:7637007 上传时间:2023-01-25 格式:DOCX 页数:17 大小:17.24KB
下载 相关 举报
自动化专业单片机课程设计.docx_第1页
第1页 / 共17页
自动化专业单片机课程设计.docx_第2页
第2页 / 共17页
自动化专业单片机课程设计.docx_第3页
第3页 / 共17页
自动化专业单片机课程设计.docx_第4页
第4页 / 共17页
自动化专业单片机课程设计.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

自动化专业单片机课程设计.docx

《自动化专业单片机课程设计.docx》由会员分享,可在线阅读,更多相关《自动化专业单片机课程设计.docx(17页珍藏版)》请在冰豆网上搜索。

自动化专业单片机课程设计.docx

自动化专业单片机课程设计

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

****电子信息与自动化学院自动化专业单片机课程设计****

/***彩灯移动实验****/

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

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

#definetime500//点亮时间间隔

uintcont=1,n=7;

voidDelay(uintdel);//基本延时程序

voidAll_flash(uintk);//全部灯闪烁k次

voidfunction1();//基本功能

voidfunction2();//拓展功能

/********************************主函数*********************************/

voidmain()

{

EX0=1;//开外部中断0

IT0=1;//负边沿触发

EA=1;//开总中断

All_flash(3);

while

(1)

{

function1();

}

}

/********************************子函数*********************************/

voidDelay(uintdel)//延时del(ms)子函数

{

uinti,j;

for(i=0;i

for(j=0;j<1940;j++);

}

voidAll_flash(uintk)//所有灯闪烁5次

{

uinti;

for(i=0;i

{

P0=0x00;

Delay(500);

P0=0xff;

Delay(500);

}

}

voidfunction1()

{

uinti;

P0=0xff;

Delay(time);

while

(1)

{

P0=0xfe;//功能18个灯依次点亮

Delay(time);

for(i=0;i<7;i++)

{

P0=_irol_(P0,1);

Delay(time);

}

P0=0x80;//功能28个灯依次熄灭

Delay(time);

P0=0xc0;

Delay(time);

P0=0xe0;

Delay(time);

P0=0xf0;

Delay(time);

P0=0xf8;

Delay(time);

P0=0xfc;

Delay(time);

P0=0xfe;

Delay(time);

P0=0xff;

Delay(time);

All_flash

(2);//功能3全亮全灭循环2次

P0=0x01;//功能4

Delay(time);

for(i=0;i<7;i++)

{

P0=_crol_(P0,1);

Delay(time);

}

P0=0x00;//功能5

Delay(time);

P0=0x80;

Delay(time);

for(i=0;i<7;i++)

{

P0=_cror_(P0,1);

Delay(time);

}

All_flash(3);

}

}

voidfunction2()

{

uinti;

n=7;

P0=0x7f;

Delay(time);

while

(1)

{

for(i=n;i>0;i--)

{

P0=_cror_(P0,1);

Delay(time);

}

for(i=0;i

{

P0=_crol_(P0,1);

Delay(time);

}

}

}

/********************************中断服务程序*********************************/

voidInterrupt0(void)interrupt0

{

EX0=0;

Delay(3);

cont++;

if(cont>=7)cont=1;

switch(cont)

{

case1:

{P0=0x7f;n=7;break;}

case2:

{P0=0x3f;n=6;break;}

case3:

{P0=0x1f;n=5;break;}

case4:

{P0=0x0f;n=4;break;}

case5:

{P0=0x07;n=3;break;}

case6:

{P0=0x03;n=2;break;}

case7:

{P0=0x01;n=1;break;}

default:

{P0=0xfe;n=7;}

}

EX0=1;

}

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

/***************************交通灯实验****************************/

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

#include

#defineucharunsignedchar

#defineuintunsignedint

#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次

voidDelay(uintdel);//延时del(ms)子函数

/********************************主函数*********************************/

voidmain()

{

EWR=0;//初始状态俩红灯亮

EWY=1;

EWG=1;

SNR=0;

SNY=1;

SNG=1;

Delay(1000);

EX0=1;//开外部中断0

IT0=1;//负边沿触发

EA=1;//开总中断

while

(1)

{

EWR=1;//东西绿灯亮南北红灯亮

EWY=1;

EWG=0;

SNR=0;

SNY=1;

SNG=1;

Delay(time);//延时10s

EWG=1;//东西绿灯灭

flash();//东西黄灯闪烁

EWR=0;//东西红灯亮南北绿灯亮

EWY=1;

EWG=1;

SNR=1;

SNY=1;

SNG=0;

Delay(time);//延时10s

SNG=1;//东西绿灯灭

flash();//东西黄灯闪烁

}

}

/********************************子函数*********************************/

voidDelay(uintdel)//延时del(ms)子函数

{

uinti,j;

for(i=0;i

for(j=0;j<1940;j++);

}

voidflash()//黄灯闪烁cont次

{

uinti;

EWR=1;

EWY=1;

EWG=1;

SNR=1;

SNY=1;

SNG=1;

for(i=0;i

{

EWY=0;

SNY=0;

Delay(1000);

EWY=1;

SNY=1;

Delay(1000);

}

}

/********************************中断服务程序*********************************/

voidInterrupt0(void)interrupt0

{

uchartemp;

EX0=0;

temp=P0;

Delay(3);

EWR=0;//救护车到俩红灯亮

EWY=1;

EWG=1;

SNR=0;

SNY=1;

SNG=1;

Delay(time2);//救护车通过时间

P0=temp;

EX0=1;

}

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

/************************数码管显示实验**************************/

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

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

#include

#defineucharunsignedchar

#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();

/************************************主函数***********************************/

voidmain()

{

IT0=1;

IT1=1;

EX0=1;

EX1=1;

EA=1;

P0=0xfe;

while

(1)

{

display();

}

}

/**********************************子函数***********************************/

voiddelay(uchart)

{

uchari,j;

for(i=0;i

for(j=2122;j>0;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];

delay(100);

P2=duan[s];

P1=wei[2];

delay(100);

P2=duan[g];

P1=wei[3];

delay(100);

}

/********************************中断服务程序*********************************/

voidInterrupt0(void)interrupt0

{

EX0=0;

switch(cont)

{

case1:

{g++;if(g>16)g=0;break;}

case2:

{s++;if(s>16)s=0;break;}

case3:

{b++;if(b>16)b=0;break;}

case4:

{q++;if(q>16)q=0;break;}

default:

g++;

}

EX0=1;

}

voidInterrupt1(void)interrupt2

{

EX1=0;

cont++;

if(cont>4)cont=1;

switch(cont)

{

case1:

{P0=0xfe;break;}

case2:

{P0=0xfd;break;}

case3:

{P0=0xfb;break;}

case4:

{P0=0xf7;break;}

default:

P0=0xfe;;

}

EX1=1;

}

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

***********************************DS18B20************************************

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

#include

#defineucharunsignedchar

#defineuintunsignedint

#definejump_ROM0xCC

#definestart0x44

#defineread_EEROM0xBE

#defineT4

unsignedcharcodeduan[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};

ucharwei[4]={0x7f,0xbf,0xdf,0xef};

sbitDQ=P3^7;//DS18B20数据口

unsignedcharTMPH,TMPL;

voiddelay(uintN)

{

inti;

for(i=0;i

}

voiddelay_1()

{

inti,j;

for(i=0;i<=10;i++)

for(j=0;j<=2;j++);

}

voiddelay_2(uchart)//数码管显示

{

uchari,j;

for(i=0;i

for(j=80;j>0;j--);

}

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;

DQ=0;

DQ=1;

for(i=0;i<3;i++);

return(DQ);

}

voidwrite_bit(ucharbitval)//向DS18B20写一位

{

DQ=0;

if(bitval==1)

DQ=1;

delay(5);

DQ=1;

}

ucharread_byte(void)//从DS18B20读一个字节

{

uchari,m,receive_data;

m=1;

receive_data=0;

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

{

if(read_bit())

{

receive_data=receive_data+(m<

}

delay(6);

}

return(receive_data);

}

voidwrite_byte(ucharval)//向DS18B20写一个字节

{

uchari,temp;

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

{

temp=val>>i;

temp=temp&0x01;

write_bit(temp);

delay(5);

}

}

voiddisplayz(unsignedintv)

{

unsignedchars,g;

s=v%100/10;

g=v%10;

P2=duan[s];

P1=wei[0];

delay_2(100);

P2=duan[g];

P1=wei[1];

delay_2(100);

}

voiddisplayx(unsignedintv)

{

unsignedchars,g;

s=v%100/10;

g=v%10;

P2=duan[s];

P1=wei[2];

delay_2(100);

P2=duan[g];

P1=wei[3];

delay_2(100);

}

voiddisplay(unsignedintv)

{

unsignedcharc,b,s,g;

c=v/1000;

b=v%1000/100;

s=v%100/10;

g=v%10;

P1=0xff;

P2=duan[c];

P1=wei[0];

delay_2(100);

P1=0xff;

P2=0xfe&duan[b];

P1=wei[1];

delay_2(100);

P1=0xff;

P2=duan[s];

P1=wei[2];

delay_2(100);

P1=0xff;

P2=duan[g];

P1=wei[3];

delay_2(100);

}

voidmain()//主函数

{

floatt;

uinttemp;

while

(1)

{

Reset();

write_byte(jump_ROM);

write_byte(start);

Reset();

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);

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1