河南理工大学单片机课设Word下载.docx

上传人:b****2 文档编号:5251088 上传时间:2023-05-04 格式:DOCX 页数:38 大小:265.15KB
下载 相关 举报
河南理工大学单片机课设Word下载.docx_第1页
第1页 / 共38页
河南理工大学单片机课设Word下载.docx_第2页
第2页 / 共38页
河南理工大学单片机课设Word下载.docx_第3页
第3页 / 共38页
河南理工大学单片机课设Word下载.docx_第4页
第4页 / 共38页
河南理工大学单片机课设Word下载.docx_第5页
第5页 / 共38页
河南理工大学单片机课设Word下载.docx_第6页
第6页 / 共38页
河南理工大学单片机课设Word下载.docx_第7页
第7页 / 共38页
河南理工大学单片机课设Word下载.docx_第8页
第8页 / 共38页
河南理工大学单片机课设Word下载.docx_第9页
第9页 / 共38页
河南理工大学单片机课设Word下载.docx_第10页
第10页 / 共38页
河南理工大学单片机课设Word下载.docx_第11页
第11页 / 共38页
河南理工大学单片机课设Word下载.docx_第12页
第12页 / 共38页
河南理工大学单片机课设Word下载.docx_第13页
第13页 / 共38页
河南理工大学单片机课设Word下载.docx_第14页
第14页 / 共38页
河南理工大学单片机课设Word下载.docx_第15页
第15页 / 共38页
河南理工大学单片机课设Word下载.docx_第16页
第16页 / 共38页
河南理工大学单片机课设Word下载.docx_第17页
第17页 / 共38页
河南理工大学单片机课设Word下载.docx_第18页
第18页 / 共38页
河南理工大学单片机课设Word下载.docx_第19页
第19页 / 共38页
河南理工大学单片机课设Word下载.docx_第20页
第20页 / 共38页
亲,该文档总共38页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

河南理工大学单片机课设Word下载.docx

《河南理工大学单片机课设Word下载.docx》由会员分享,可在线阅读,更多相关《河南理工大学单片机课设Word下载.docx(38页珍藏版)》请在冰点文库上搜索。

河南理工大学单片机课设Word下载.docx

sbitD10=P3^3;

sbitD11=P3^4;

sbitD12=P3^5;

//函数声明------------------------------------------------*/

voiddelayus(unsignedintt)

{

while(--t);

}

voiddelayms(unsignedintt)

while(t--)

{//大致延时1mS

delayus(245);

}

/*------------------------------------------------

主函数

------------------------------------------------*/

main()

{uchari;

//定义一个无符号字符型

for(i=0;

i<

3;

i++)//12灯闪三次

{

P2=0xFC;

delayms(1000);

P2=0xFF;

}

P0=0xFF;

P3=0x3f;

flag=1;

while

(1)

{

H1=0;

H2=1;

L1=1;

L2=1;

L3=1;

if(L1==0)

flag=~flag;

if(flag==1)

{

for(i=0;

8;

i++)

P2=datanum[i];

delayms(300);

if(L1==0)

}

P2=0xff;

//关p0控制的数码管

for(i=8;

13;

P3=datanum[i];

if(L1==0)

}

}

if(flag==0)

for(i=11;

i>

7;

i--)

P3=datanum[i];

delayms(300);

}

P3=0x3F;

//关p3口控制的数码管

i=7;

do

P2=datanum[i];

}while(i--);

//关p0控制的数码管

五、实验过程中遇到的问题及解决方法

1)由于没有中断,使用按键是怎么做到及时性?

解决方法:

通过在流水灯循环点亮时,在程序中多次插入按键扫描函数,在使用中效果还是较好的。

能保证没有按键,都能使流水灯实习反转。

指导老师签字:

日期:

实验二定时器实验

1)数码管动态显示技术

2)定时器的应用

3)按键功能定义

按键5切换时钟和定时显示,分别进入相应模式下设置。

在定时功能显示下,按键4实现分加,按键5实现分减。

在时钟下,按键4实现秒加,按键5实现秒减。

定时功能:

定时分钟和时钟正常显示分钟一样时,D5,D6数码管闪烁一分钟。

defineucharunsignedchar

sbitW1=P0^0;

sbitW2=P0^1;

sbitW3=P0^2;

sbitW4=P0^3;

bitflag,daring;

ucharfen=0,miu=0,fen_shi=0,fen_ge=0,miu_shi,miu_ge;

uchard_fen=2,d_miu,d_fen_shi,d_fen_ge,d_miu_shi,d_miu_ge;

unsignedchartemp[5];

//显示时间存储

unsignedchardtemp[5];

//定时时间存储

unsignedcharcodeduanma[12]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,

0x07,0x7f,0x6f};

//共阴极数码管

//函数声明------------------------------------------------*/()

unsignedcharkeyscan(void);

//按键扫描

voiddisplay();

//显示程序

/****定时器0初始化**/

voidInit_time0()

{

TMOD=TMOD|0x01;

TH0=0X00;

TL0=0X00;

EA=1;

ET0=1;

TR0=1;

/****微秒**/

voiddelayus(unsignedchart)

/****毫秒**/

voiddelayms(unsignedchart)

while(t--)

{//大致延时1mS

delayus(245);

ucharkey;

flag=0;

keyscan();

Init_time0();

while

(1)

{

key=keyscan();

/****定时和正常显示的切换标识******/

if(key==5)

flag=~flag;

else

/****时钟调时******/

if(key==3)

{

miu++;

if(miu==60)

miu=0;

if(key==4)

miu--;

if(miu==0xff)

/****定时功能处理*****/

d_fen++;

if(d_fen==60)

d_fen=0;

d_fen--;

if(d_fen==0xff)

/****定时功能分秒处理*****/

d_fen_shi=d_fen/10;

d_fen_ge=d_fen%10;

d_miu_shi=d_miu/10;

d_miu_ge=d_miu%10;

dtemp[0]=duanma[d_fen_shi];

dtemp[1]=duanma[d_fen_ge];

dtemp[2]=duanma[d_miu_shi];

dtemp[3]=duanma[d_miu_ge];

display();

}//定时程序结束

if(flag==0)

{/****时钟正常显示分秒处理*****/

fen_shi=fen/10;

fen_ge=fen%10;

miu_shi=miu/10;

miu_ge=miu%10;

if(fen_shi>

0)

{temp[0]=duanma[fen_shi];

temp[1]=duanma[fen_ge];

temp[2]=duanma[miu_shi];

temp[3]=duanma[miu_ge];

if(fen_ge>

=0)

/****定时时钟的比较处理*****/

if(d_fen==fen)

daring=1;

/*************定时器程序******************/

voidtime0()interrupt1

{unsignedinti;

TH0=(65536-1000)/256;

TL0=(65536-1000)%256;

i++;

if(i==1000)

{i=0;

miu++;

D1=~D1;

if(daring==1)

{daring=~daring;

D5=~D5;

D6=~D6;

{D5=1;

D6=1;

if(miu==60)

miu=0;

fen++;

if(fen==60)

fen=0;

miu=0;

/********显示程序******************/

voiddisplay()

ucharx,i;

/***正常显示**/

P0=P0|0x0f;

//把位选拉高关数码管

x=0x0e;

for(i=0;

4;

P0=x;

//开位选

P1=temp[i];

//送段值

delayus(220);

x=((x<

<

1)&

0X0F|0x01);

//利用移位开位选

/**定时显示*/

P1=dtemp[i];

1)|0x01&

0X0F);

/********按键扫描程序******************/

unsignedcharkeyscan(void)

ucharx;

H1=0;

H2=0;

L1=1;

L2=1;

L3=1;

if((L1&

L2&

L3)==0)

delayms

(2);

/********第一行扫描***************/

H2=1;

delayms(10);

if(L1==0)

x=10;

while(L1==0);

return(x);

if(L2==0)

x=1;

while(L2==0);

if(L3==0)

x=2;

while(L3==0);

/********第二行扫描***************/

H1=1;

delayms(11);

x=3;

x=4;

while(L2==0);

return(x);

x=5;

}//第二行扫描完

}//检测按键有无按下消抖

}//检测有无按键按下

1)数码管显示过程中,显示内容不稳定?

首先自己试了试很多种方法,通道不断的调整程序结构和显示点亮数码管过程中延时时间,将会得到较好的显示效果。

2)如何进行按键扫描,使得每一次按键都能有效?

通过反复实验,总结中使用按键消抖可以实现按键功能的稳定性,增加抗干扰能力。

实验三双机通信实验

UART串行通信接口技术应用

双机通信,可实现双机互发。

当主机向从机发送数据时,现在本单板上的数码管1显示发送数据,从机在数码管4显示接受数据。

主机和从机都通过按键4实习发送。

实验中用到硬件有:

两块课程设计核心板,两根杜邦线

reg51.h>

string.h>

unsignedcharTable[12]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

unsignedchartemp[12];

unsignedcharBuff[20];

//数据缓冲区

unsignedcharflag,flag_rec;

//延时1ms函数

/****WEIMIAO**/

/****HAOMIAO**/

//大致延时1mS

//缓冲区初始化

voidBuff_init()

unsignedchari;

//将Table里的数据放到缓冲区里

9;

i++)

Buff[i]=Table[i];

delayms(100);

//串口初始化函数

voidserial_init()

TMOD=0x20;

//定时器1工作于方式2

TH1=0xfd;

TL1=0xfd;

//波特率为9600

PCON=0;

SCON=0x50;

//串口工作于方式1

TR1=1;

//开启定时器

TI=0;

RI=0;

ES=1;

//发送数据函数

voidSEND_data(unsignedcharBuff)

SBUF=Buff;

while(!

TI);

}

voidmain()

unsignedinti;

Buff_init();

serial_init();

delayms(6);

if(L1==0)

flag=1;

while(flag==1)

12;

SEND_data(Buff[i]);

P1=Buff[i];

W1=0;

delayms(500);

W1=1;

voidUART_SER(void)interrupt4//串行中断服务程序

unsignedchari=0;

if(RI)//判断是接收中断产生

W4=1;

//标志位清零

temp[i]=SBUF;

//读入缓冲区的值

P1=temp[i];

W4=0;

if(i==12)

i=0;

if(TI)//如果是发送标志位,清零

1)串口发送的工作过程不理解。

解决方法:

通过看书,并在实验中发送接受过程中,设置相应的标识。

通过反复实验和修改参数,对比标识,逐渐的理解了串口的工作原理。

实验四交通灯实验

1)按键、数码管、发光二极管综合应用编程技术

2)数据存储于EEPROM的技术(也可以不使用)

3)定时中断技术

4)按键中断技术

模拟交通灯:

通过按键4,进行紧急交通管制和自动红绿灯转换。

自动红绿灯模式下:

按键5实习绿灯时间增加,绿灯最大时间25秒。

按键6实习黄灯时间增加,黄灯最大时间25秒。

通过数码管1、2显示红绿灯时间。

交通管制模式下:

全部红灯亮,数码管关闭。

实验中用到的硬件有:

1块stc51单片机、12个发光二极管、6个按键、1个共阴极四位数码管

实验程序如下:

/*按键4加绿灯时间

按键5加黄灯时间

按键3加紧急全红灯

*/

//包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义

bitflag,flag1,flag2,flag3,flag4,flag_yel=1;

unsignedchargreen,yellow;

//绿灯和黄灯时间存储

unsignedchardis_green,dis_yellow;

unsignedcharcodeduanma[12]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

#definezhu_red{D1=0;

D7=0;

D2=1;

D3=1;

D8=1;

D9=1;

#definezhu_green{D2=0;

D8=0;

D1=1;

D7=1;

#definezhu_yellow{D3=0;

D9=0;

#definefu_red{D4=0;

D10=0;

D5=1;

D11=1;

D12=1;

#definefu_green{D5=0;

D11=0;

D4=1;

D10=1;

#definefu_yellow{D6=0;

D12=0;

/******定时器0初始化**********/

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

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

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2