单片机课程设计报告 精品.docx

上传人:b****8 文档编号:24014808 上传时间:2023-05-23 格式:DOCX 页数:50 大小:638.53KB
下载 相关 举报
单片机课程设计报告 精品.docx_第1页
第1页 / 共50页
单片机课程设计报告 精品.docx_第2页
第2页 / 共50页
单片机课程设计报告 精品.docx_第3页
第3页 / 共50页
单片机课程设计报告 精品.docx_第4页
第4页 / 共50页
单片机课程设计报告 精品.docx_第5页
第5页 / 共50页
点击查看更多>>
下载资源
资源描述

单片机课程设计报告 精品.docx

《单片机课程设计报告 精品.docx》由会员分享,可在线阅读,更多相关《单片机课程设计报告 精品.docx(50页珍藏版)》请在冰豆网上搜索。

单片机课程设计报告 精品.docx

单片机课程设计报告精品

前言

目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。

导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。

更不用说自动控制领域的机器人、智能仪表、医疗器械以及各种智能机械了。

因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。

单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴:

  1.在智能仪器仪表上的应用

  单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。

采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或数字电路更加强大。

例如精密的测量设备(功率计,示波器,各种分析仪)。

  2.在工业控制中的应用

  用单片机可以构成形式多样的控制系统、数据采集系统。

例如工厂流水线的智能化管理,电梯智能化控制、各种报警系统,与计算机联网构成二级控制系统等。

  3.在家用电器中的应用

  可以这样说,现在的家用电器基本上都采用了单片机控制,从电饭煲、洗衣机、电冰箱、空调机、彩电、其他音响视频器材、再到电子秤量设备,五花八门,无所不在。

  4.在计算机网络和通信领域中的应用

  现代的单片机普遍具备通信接口,可以很方便地与计算机进行数据通信,为在计算机网络和通信设备间的应用提供了极好的物质条件,现在的通信设备基本上都实现了单片机智能控制,从手机,电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信,无线电对讲机等。

  5.单片机在医用设备领域中的应用

  单片机在医用设备中的用途亦相当广泛,例如医用呼吸机,各种分析仪,监护仪,超声诊断设备及病床呼叫系统等等。

  6.在各种大型电器中的模块化应用

  某些专用单片机设计用于实现特定功能,从而在各种电路中进行模块化应用,而不要求使用人员了解其内部结构。

如音乐集成单片机,看似简单的功能,微缩在纯电子芯片中(有别于磁带机的原理),就需要复杂的类似于计算机的原理。

如:

音乐信号以数字的形式存于存储器中(类似于ROM),由微控制器读出,转化为模拟音乐电信号(类似于声卡)。

  在大型电路中,这种模块化应用极大地缩小了体积,简化了电路,降低了损坏、错误率,也方便于更换。

  7.单片机在汽车设备领域中的应用

  单片机在汽车电子中的应用非常广泛,例如汽车中的发动机控制器,基于CAN总线的汽车发动机智能电子控制器,GPS导航系统,abs防抱死系统,制动系统等等。

此外,单片机在工商,金融,科研、教育,国防航空航天等领域都有着十分广泛的用途。

本次课程设计,主要学习单片机内部功能模块的应用,如定时器/计数器、中断、片内外存贮器、I/O、串行口通信等,实现键盘显示、电机控制应用等。

1.数码管显示系统

1.1.工作原理

利用动态显示方式实现在数码管上稳定显示123456。

1.2.硬件电路设计及描述

单片机、6位的7段数码管。

单片机的P1口输出相应的段码,P2口低6位选择相应的数码管。

硬件电路图如下。

1.3.软件设计流程及描述

#include

#defineuintunsignedint

#defineucharunsignedchar

ucharcodetable[]={0x60,0xda,0xf2,0x66,0xb6,0xbe,};//数字1-6段码表

ucharcodeadress[]={0xfe,0xfd,0xf7b,0xf7,0xef,0xdf};//位码表

voiddelay(uintm)//延时程序

{

while(m--);

}

voidmain()

{

ucharm=0;

while

(1)//动态循环

{

if(m==6)

m=0;

P2=0xff;//数码管清零

P2=adress[m];//P2口输出位码,选择位

P1=table[m++];//P1输出段码,显示相应数字

delay(500);

}

}

1.4.综合调试结果分析与展示

动态显示的结果是静态的。

当动态循环一个一个数码管显示足够快的时候,由于视觉原因,看上去是同时显示的。

2.步进电机控制系统

2.1.工作原理

通过单片机的I/O口控制步进电机运转,实现正传和反转。

2.2.硬件电路设计及描述

单片机、74LS240、步进电机。

P0口的低4位送出励磁电平,74LS240作为驱动电路。

接线图如下。

2.3.软件设计流程及描述

#include

unsignedcharLvalue[8]={0x0e,0x0c,0x0d,0x09,0x0b,0x03,0x07,0x06};

voiddelay()//延时程序

{

unsignedinti;

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

}

voidmain()

{

unsignedcharm,n;

P0=0;//P0口清零

while

(1)

{

for(n=0;n<12;n++)//电机正转

{

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

{

P0=Lvalue[m];

delay();

}

}

for(n=0;n<12;n++)//电机反转

{

for(m=8;m>0;m--)

{

P0=Lvalue[m-1];

delay();

}

}

}

}

2.4.综合调试结果分析与展示

步进电机正转一会,然后反转一会。

3.直流电机PWM调速系统

3.1.工作原理

通过调节脉冲宽度,改变占空比,从而改变输出,达到改变直流电机转速的目的。

3.2.硬件电路设计及描述

单片机、ULN2003A、直流电机、12V电源。

单片机P1.7输出PWM波,经过ULN2003A驱动,加到直流电机上,改变PWM波占空比,即可改变输出电压平均值大小,从而改变电机转速。

接线图如下。

3.3.软件设计流程及描述

#include

#defineN6//N不能大于10

sbitP17=P1^7;//P1.7输出PWM波

unsignedchari=0;

voidmain()

{

TMOD=0x01;//定时器T0,方式1

TH0=0xd8;TL0=0xf0;//定时10ms产生中断

EA=1;ET0=1;TR0=1;//开启中断

P17=1;//先置高电平

while

(1);

}

voidtime0()interrupt1//中断程序

{

TH0=0xd8;TL0=0xf0;//重装初值

i++;

if(i==N)P17=0;//决定PWM波占空比

if(i==10)

{

P17=1;

i=0;

}

}

3.4.综合调试结果分析与展示

改变程序中N的值即可改变占空比进行调速。

4.点阵LED广告屏设计(题目4)

4.1.工作原理

16×16LED点阵由四块8×8LED点阵组成。

控制点阵的扫描显示,使16×16LED点阵循环显示汉字。

例如:

新年好,同学们好,欢迎您。

4.2.硬件设计电路及描述

单片机、4块74LS541、4块8×8LED。

P0口经74LS541驱动接前8行LED,P2口经驱动接后8行,P3口经驱动接前8列,P1口经驱动接后8列。

4.3.软件设计流程及描述

#include"sst89x5x4.h"

#include"hzdot1.h"//要显示的字模文件

#include

voidDelay(void)//延时程序

{

unsignedchari;

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

}

voidclear(void)//清屏

{

P3=0x00;//前8列

P1=0x00;//

P0=0xff;//

P2=0xff;//

}

voidmain(void)

{

unsignedcharScan=0xfe,i,j;

unsignedintcount=0;

clear();

while

(1)

{

for(i=0;i<50;i++)//每16行重复扫描50次

{

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

{

P0=Scan;//0--7行

P3=hzdot[count];//0--7列

P1=hzdot[count+1];//8--15列

count+=2;

Scan=_crol_(Scan,1);//行扫

Delay();

}

P0=0xff;

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

{

P2=Scan;//8--15行

P3=hzdot[count];

P1=hzdot[count+1];

count+=2;

Scan=_crol_(Scan,1);//行扫

Delay();

}

P2=0xff;

count-=32;

}

count+=2;//向上滚动一行

if(count==(192-32))count=0;

//最后一个字完全显示后,又从第一个字开始显示

}

}

字模文件"hzdot1.h"

unsignedcharcodehzdot[320]={

0x80,0x00,0x80,0x00,0xFE,0x3F,0xC0,0x01,0xA0,0x02,0x90,0x04,0x8C,0x18,0x83,0x60,

0xF0,0x07,0x00,0x02,0x00,0x01,0xFF,0x7F,0x80,0x00,0x80,0x00,0xA0,0x00,0x40,0x00,/*"李",0*/

0x10,0x00,0x90,0x3F,0x10,0x22,0x7E,0x22,0x10,0x22,0x10,0x29,0xFF,0x10,0x10,0x3F,

0x14,0x21,0x14,0x21,0x74,0x21,0x14,0x3F,0x14,0x00,0x1A,0x00,0xF2,0x7F,0x01,0x00,/*"超",1*/

0x80,0x00,0x40,0x00,0x20,0x00,0xF8,0x0F,0x08,0x08,0x08,0x08,0x08,0x08,0xF8,0x0F,

0x08,0x08,0x08,0x08,0xF8,0x0F,0x08,0x08,0x08,0x08,0x08,0x08,0xF8,0x0F,0x08,0x08,/*"自",2*/

0x08,0x02,0x08,0x04,0x08,0x04,0xC8,0x7F,0x5F,0x40,0x28,0x29,0x88,0x10,0x58,0x20,

0x0C,0x00,0x8B,0x3F,0x08,0x04,0x08,0x04,0x08,0x04,0x08,0x04,0xEA,0x7F,0x04,0x00,/*"控",3*/

0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x24,0x24,0x42,0x42,0x42,0x42,0x42,0x42,

0x42,0x64,0x42,0x58,0x42,0x40,0x42,0x40,0x24,0x24,0x18,0x1C,0x00,0x00,0x00,0x00,/*"09",4*/

0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x20,0x24,0x30,0x42,0x28,0x42,0x24,0x42,0x24,

0x42,0x22,0x42,0x22,0x42,0x7E,0x42,0x20,0x24,0x20,0x18,0x78,0x00,0x00,0x00,0x00,/*"04",5*/

};

4.4.综合调试结果分析及展示

16×16LED显示屏向上滚动显示“李超自控0904”6个字。

5.温度显示系统设计(题目6)

5.1.工作原理

1)利用数字温度传感器DS18B20,测量环境温度,并在二位LED数码管上显示实时温度值。

2)使用ADC0809通道IN1作为报警值输入。

按下S1键,CPU从IN1通道读入报警值显示在数码管上。

放开S1键时将此时的IN1采样值作为报警值。

使用S1设置高限报警温度值。

3)可以通过按键设定高限报警温度值和低限报警温度值。

当外界温度高于设定最高温度时,启动风扇降温:

发出短嘀报警声和光报警。

当外界温度低于指定最低温度时,发出长嘀报警声,并点亮报警指示灯。

低限报警温度值可用键盘设置。

5.2.硬件设计电路及描述

单片机,3个数码管,一个数字温度传感器DS18B20,红、绿led各一个,蜂鸣器,按键。

具体连线见后面结果展示。

5.3.软件设计流程及描述

#include

#defineucharunsignedchar

#defineuintunsignedint

sbitDQ=P2^0;

sbitred=P2^5;

sbitgreen=P2^6;

sbitfm=P2^7;

sbitfu=P0^7;

union{ucharc[2];uintx;}temp;

ucharflag;

uintcc;

voiddelay(uints)

{for(;s>0;s--);}

ucharreset()

{ucharp;

DQ=0;delay(50);

DQ=1;delay(3);

p=DQ;delay(25);

return(p);

}

ucharread_b()

{uchari;ucharvalue=0;

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

{value>>=1;DQ=0;DQ=1;delay

(1);

if(DQ)value|=0x80;delay(6);

}

return(value);

}

voidwrite_b(ucharval)

{uchari;

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

{DQ=0;DQ=val&0x01;delay(5);DQ=1;val=val/2;}

delay(5);

}

ucharread_temperature()

{reset();

write_b(0xCC);write_b(0x44);

reset();

write_b(0xCC);write_b(0xBE);

temp.c[1]=read_b();

temp.c[0]=read_b();

return(temp.x/2);

}

voids_p(ucharx,uchary)

{ucharcodevalue[10]={0x3f,0x06,0x5B,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

P0=codevalue[x];

P1=codevalue[y];

if(flag==1)

{fu=1;}

}

voidmain()

{

red=0;green=0;

P0=0x00;

P1=0x00;

EA=1;

IT0=1;

EX0=1;

while

(1);

}

voidint_x0()interrupt0

{

ucharj;

uchara,b;

read_temperature();

cc=temp.c[0]*256+temp.c[1];

if(temp.c[0]>0xf8)

{flag=1;cc=~cc+1;}

cc=cc/16;

a=(int)cc%10;b=((int)cc/10)%10;

s_p(a,b);

if(cc>30)

{red=1;

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

{fm=0;delay(50000);

fm=1;delay(50000);

};

red=0;fm=1;

}

if(cc<0||flag==1)

{green=1;

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

{fm=0;delay(50000);};

green=0;fm=1;flag=0;

}

}

5.4.综合调试结果分析与展示

6.字符型LCD显示设计(题目7)

6.1.工作原理

1)在液晶显示器上显示字符串、数字等,并循环动态显示。

如显示“Happynewyear!

2)按下不同按钮,显示内容改变。

6.2.硬件设计电路及描述

单片机,LCD显示屏,按键控制显示内容。

具体接线见后面结果展示。

6.3.软件设计流程及描述

ORG0000H

LJMPMAIN

ORG0003H

LJMPLOOP2

ORG0030H

RSBITP3.5

RWBITP3.6

EBITP3.7

LCDEQUP1

MAIN:

ACALLINIT_LCD

SETBIT0

SETBEX0

SETBEA

LOOP1:

ACALLDELAY

MOVLCD,#81H

ACALLWR_COM

MOVDPTR,#LINE1

MOVR0,#6

ACALLDISP_LCD

ACALLDELAY

MOVLCD,#0C0H

ACALLWR_COM

MOVDPTR,#LINE2

MOVR0,#15

ACALLDISP_LCD

ACALLDELAY

ACALLCLS

JMPLOOP1

LOOP2:

ACALLCLS

MOVR3,#02H

LL2:

ACALLDELAY

MOVLCD,#80H

ACALLWR_COM

MOVDPTR,#LINE3

MOVR0,#16

ACALLDISP_LCD

ACALLDELAY

MOVLCD,#0C0H

ACALLWR_COM

MOVDPTR,#LINE4

MOVR0,#10

ACALLDISP_LCD

ACALLDELAY

ACALLCLS

DJNZR3,LL2

RETI

INIT_LCD:

MOVLCD,#00000001B

ACALLWR_COM

MOVLCD,#00111000B

ACALLWR_COM

MOVLCD,#00001111B

ACALLWR_COM

MOVLCD,#00000110B

ACALLWR_COM

RET

WR_COM:

CLRRS

CLRRW

CLRE

ACALLCHECK_BF

SETBE

RET

CHECK_BF:

MOVLCD,#0FFH

CLRRS

SETBRW

CLRE

NOP

SETBE

JBLCD.7,CHECK_BF

RET

WR_DATA:

SETBRS

CLRRW

CLRE

ACALLCHECK_BF

SETBE

RET

DISP_LCD:

MOVR1,#0

LOOP:

MOVA,R1

MOVCA,@A+DPTR

MOVLCD,A

INCR1

ACALLWR_DATA

DJNZR0,LOOP

RET

CLS:

MOVLCD,#00000001B

ACALLWR_COM

RET

DELAY:

MOVR5,#100

D1:

MOVR6,#100

D2:

MOVR7,#100

DJNZR7,$

DJNZR6,D2

DJNZR5,D1

RET

LINE1:

DB'Hello!

'

LINE2:

DB'WelcometoLCD!

'

LINE3:

DB'Nicetoseeyou!

'

LINE4:

DB'Goodluck!

'

END

6.4.综合调试结果分析与展示

循环显示内容:

按下键后显示内容如下:

7.数字钟设计(题目11)

7.1.工作原理

1)系统运行从00点00分00秒开始计时,并在六个数码管上动态显示时、分、秒当前值。

2)用键盘设置当前时间。

红色发光二极管是秒灯,每闪烁一次表示时间走动一秒钟。

绿色发光二极管是设置灯,当时间正常走动时此灯不亮,当第一次按下设置键时,设置灯亮,分钟的两位数码管出现闪烁,时间停止走动,进入校时状态,表示此时可以进行分钟的调整,当按一次加1键,可实现分钟加1功能。

如果再次按下设置键时,秒灯保持熄灭,设置灯保持点亮状态,表示分钟的数码管停止闪烁,表示小时的两位数码管则开始闪烁,此时可进行小时的调整,按加1键可实现小时的加1功能,小时调整以24为上限,超出24小时则重新回0。

当第三次按下设置键时,数码管停止闪烁,设置灯熄灭,秒灯重新闪烁,时间以设置值开始计时。

3)可以设置闹铃时间为:

07:

30:

00蜂鸣器发音。

7.2.硬件设计电路及描述

单片机,7段8位数码管,蜂鸣器作为闹铃发声,按键来设置时间。

具体接线见后面结果展示。

7.3.软件设计流程及描述

#include

unsignedcharcodecodevalue[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};

unsignedchardispbitcode[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

unsignedchardispbuf[8]={0,0,16,0,0,16,0,0};

unsignedchardispbitcnt=0;

unsignedcharmstcnt=0;

unsignedcharsecond;

unsignedcharminite;

unsignedcharhour;

unsignedin

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

当前位置:首页 > 外语学习 > 其它语言学习

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

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