单片机课程设计报告洛阳理工学院文档格式.docx

上传人:b****6 文档编号:21321554 上传时间:2023-01-29 格式:DOCX 页数:25 大小:1.88MB
下载 相关 举报
单片机课程设计报告洛阳理工学院文档格式.docx_第1页
第1页 / 共25页
单片机课程设计报告洛阳理工学院文档格式.docx_第2页
第2页 / 共25页
单片机课程设计报告洛阳理工学院文档格式.docx_第3页
第3页 / 共25页
单片机课程设计报告洛阳理工学院文档格式.docx_第4页
第4页 / 共25页
单片机课程设计报告洛阳理工学院文档格式.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

单片机课程设计报告洛阳理工学院文档格式.docx

《单片机课程设计报告洛阳理工学院文档格式.docx》由会员分享,可在线阅读,更多相关《单片机课程设计报告洛阳理工学院文档格式.docx(25页珍藏版)》请在冰豆网上搜索。

单片机课程设计报告洛阳理工学院文档格式.docx

7、环境适应能力强。

本次课程设计就是利用STC系列单片机作为微控制器开发一套软、硬件相结合的单片机实验平台,主要通过电路原理图,进行电路的焊接。

原理图主要包括集LCD显示模块、串口通信模块、数码管显示模块、LED发光二极管、键盘等接口电路的设计。

这次单片机的课设它具有模块化硬件结构和简单的人机交互功能,硬件功能模块及部分演示程序。

该实验板具有降低设计成本,缩短开发周期,丰富学生知识,提高设计水平等优点。

第1章概述

1.1设计题目

1.2设计步骤

1.学习各元器件,弄清楚其工作原理;

2.Proteus软件仿真电路图的绘制;

3.根据电路图在开发板上进行焊接;

4.编写、调试开发板程序

5.下载到单片机中,查看实际运行效果。

1.3Proteus与KeilC51软件介绍

Proteus软件是英国LabCenterElectronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。

它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。

它是目前比较好的仿真单片机及外围器件的工具。

虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。

Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。

是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。

在编译方面,它也支持IAR、Keil和MATLAB等多种编译器。

KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。

Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(μVision)将这些部分组合在一起。

运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。

如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍

第2章硬件电路设计

2.1电路各元器件介绍

2.1.1LCD1602液晶

液晶显示器,或称LCD(LiquidCrystalDisplay),为平面超薄的显示设备,它由一定数量的彩色或黑白像素组成,放置于光源或者反射面前方。

液晶显示器功耗很低,因此倍受工程师青睐,适用于使用电池的电子设备。

它的主要原理是以电流刺激液晶分子产生点、线、面配合背部灯管构成画面。

1、LCD1602实物图

图1LCD外观及引脚

显示容量:

16个×

2排字符;

工作电流2.0mA(5.0V);

字符尺寸:

2.95×

4.35mm。

【能够看到的是2排,各16个字符,不是汉字】

2、LCD1602的读写

LCD1602的第5脚:

R/W,读写操作选择(1-读,0-写)。

表1LCD1602的读写

RS

R/W

寄存器及操作

指令寄存器写入

1

忙信号和地址计数器读出

数据寄存器写入

数据寄存器读出

LCD1602的第6脚:

E端为使能端,当E端由高电平跳变成低电平时(负

跳变),液晶模块执行命令。

【类似于74LS373,需要负跳变】执行一条命令或写入一个数据,都要使E有一个负跳变。

2.1.2两位一体共阴数码管

2

2.1

数码管是一种半导体发光器件,其基本单元是发光二极管。

共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管,共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮,当某一字段的阳极为低电平时,相应字段就不亮。

同时数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字

1、实物图

图2两位一体LED数码管

2、共阴极LED数码管的内部结构原理图:

图3共阴极LED数码管的内部结构原理图

表2共阴数码管字模表

显示

3

4

5

6

7

8

9

字模

0x3f

0x06

0x5b

0x4f

0x66

0x6d

0x7d

0x07

0x7f

0x6f

此次设计中两位一体数码管采用74LS374锁存器锁存,电路详见附录。

2.1.3其它元器件介绍

1、LED流水灯

流水灯中用8只LED发光二极管练成一排,作为流水灯。

二极管长引脚为正极短引脚为负极,也可用万用表测量。

发光二极管如图所示。

图4LED发光二极管

2、74LS138、74LS373芯片

图574LS138引脚及真值表

注:

1表示高电平,0表示低电平,×

表示任意【C为高位,A为低位】

OE

LE

D

Q

×

不变

高阻态

图674LS373引脚及功能表

74LS373的三种工作方式:

跟随(OE=0,LE=1,输出跟随输入)

锁存(OE=0,LE从高变为低负跳变时,锁存D0~D7)

高阻(OE=1,Q0~Q7输出为高阻,相当于断开)

另外,此次设计中还用的排阻、色环电阻、电容、三极管等元件,在此不再做详细介绍。

2.2仿真电路连接与实物焊接

2.2.1protues仿真电路

在protues中连接各模块电路,注意各元器件的接法,各模块连接电路图如下:

图7液晶显示及流水灯模块

图8数码管及按键模块

其它模块的连接在此不再展示,详见附录。

2.2.2电路板焊接

1、焊接准备

根据电路原理图,焊接元器件。

先读出色环电阻的阻值,判断电容引脚的正负极,或用万用表测试。

检测各器件是否正常。

准备好电烙铁、焊锡、松香等必备物品。

2、焊接

给电烙铁加热,达到温度后按电路板上元件从低到高的顺序进行焊接,在焊接时要细心、仔细,在正确的位置焊上正确的元件,防止出现错误。

3、检测焊接电路

完成后检查是否有漏焊、连锡等问题。

在我们组用了一上午焊接电路,检查时发现LCD液晶显示不能显示、一个发光二极管不亮,经检测是器件损坏,经更换后故障解除。

焊接实物图如下:

图9焊接电路图

第3章软件设计

3.1程序整体思路

从电路着手编写程序,希望一个程序能把各模块连接起来,而不是用多个程序进行加载。

并且打开电源后能够重复进入各模块,而不是每次都需要复位。

所以可以先分开写各模块程序,然后连接起来。

可用while语句查询各标志位实现开电源后能够重复进入各模块。

程序的流程及各标志位含义如下:

图10程序流程图

表3各标志位含义

s

总标志位,1开,0关

b1

1写时计数器菜单

s1

每次进入主菜单时写主菜单

b2

更新计数值时重新显示

s2

刚通电或关闭时写关闭菜单

c

LCD模块总标志位

a

流水灯总标志位,1进入0退出

c0

1时写LCD菜单

a1

流水灯左循环标志位

c1

LCD显示姓名

a2

流水灯右循环标志位

c2

LCD显示学号

a3

流水灯暂停标志位

c3

LCD显示日期

b

计数器总标志位,1进入0退出

3.2程序编程实现

(1)流水灯函数程序(执行该模块的同时,LCD上显示流水灯菜单,详见附录):

voidledmod(){

writemenu(LEDmenu);

//写菜单

for(i=0;

i<

3;

i++)//先闪烁几下后全亮

{P2=0x55;

delay(150);

P2=0xaa;

}

P2=0;

while

(1){

if(a1==1){

for(i=0;

8;

i++)//往左流

{

if(a==0)break;

//a=0,跳出LED模块,下同

if(a2==1){a1=0;

break;

P2=led[i];

delay(200);

while(a3==1)if(a==0)break;

}//a3=1,执行while循环,相当于暂停

}

if(a2==1){

i++)//往右流

{

if(a1==1){a2=0;

P2=led[7-i];

}if(a==0)break;

}}

(2)计数器函数程序(执行该模块的同时,LCD上显示计数器菜单,详见附录):

voidcoutermod(){

if(b1==1){b1=0;

//进入计数器后,写菜单并让数码管显示0,流水灯熄灭

writemenu(counter);

P0=0x3f;

P2=0xff;

if(b2==1){b2=0;

//按下按键数据改变时,数码管重新显示

p25=1;

p26=0;

p27=0;

P0=table[count/10];

p25=p26=p27=0;

P0=table[count%10];

(3)LCD液晶显示模块程序(执行该模块的同时,LCD上显示其菜单,详见附录):

voidLCDmod(){

if(c0==1){c0=0;

writemenu(lcdmenu);

}//写LCD菜单

if(c1==1){c1=0;

//

wcmd(0x80+0x40);

for(j=0;

j<

16;

j++)wdat(name[j]);

if(c2==1){c2=0;

j++)wdat(num[j]);

if(c3==1){c3=0;

j++)wdat(date[j]);

(4)写各菜单函数(用于写各个模块的菜单):

voidwritemenu(unsignedcharp[])

{wcmd(0x01);

j++)

wdat(p[j]);

wcmd(0x80+0x40);

for(;

32;

(5)主函数

voidmain()

TCON=0x55;

//01010101,TR1=TR0=IT1=IT0=1

TMOD=0x66;

//01100110,两个都为计数方式2

TH0=TL0=0xff;

TH1=TL1=0xff;

IE=0x8f;

LCD_init();

writemenu(OFF);

P0=0;

if(s){//s=1,开始;

s=0,关闭。

if(s1){s1=0;

writemenu(mainmenu);

if(a==1){ledmod();

if(b==1){coutermod();

if(c==1){LCDmod();

}

if(s==0){writemenu(OFF);

}}}}

(6)四个中断函数:

key0()interrupt1{delay(100);

if(a==0&

&

b==0&

c==0&

s){a=1;

return;

}//&

s,判断是否在主菜单中,下同

if(a==1)if(a1==0&

a3==0)a1=1;

//&

a3==0,暂停时不能通过中断改变循环方向

if(b==1){count++;

if(count==100)count=0;

b2=1;

if(c==1){if(c1==0){c1=1;

key1()interrupt3{delay(100);

if(b==0&

a==0&

s){b=b1=1;

}//b1=1,第一次进入计数器

if(a==1)if(a2==0&

a3==0)a2=1;

if(b==1){count--;

if(count<

0)count=0;

if(c==1){if(c2==0){c2=1;

key2()interrupt0{delay(100);

if(c==0&

s){c=1;

c0=1;

if(a==1&

(a1||a2)){a3=!

a3;

(a1||a2),防止刚进入流水灯时,按下暂停键暂停

if(b==1){count=0;

if(c==1){if(c3==0){c3=1;

}

key3()interrupt2{delay(100);

c==0){s=!

s;

}//在关闭或主菜单中按下key3开始或进入主菜单

if(a==1){a=0;

a1=a2=a3=0;

if(b==1){b=count=b2=0;

}

if(c==1){c=c1=c2=c3=0;

if(s)s1=1;

//s=1,在每次由各模块返回到主菜单或由关闭到主菜单时写主菜单

elses2=1;

//s=0,在刚通电或由主菜单关闭时写关闭菜单

此次编程和优化总共花费了十多个小时,最终达到自己预想的效果,其它如LCD驱动函数、定义变量等命令在此不再列出,详见附录中的源程序。

3.3程序的优缺点分析

优点:

(1)一个程序能把各模块连接起来,而不是用多个程序进行加载。

(2)打开电源后能够重复进入各模块,无需每次复位。

(3)每个模块都可以通过按键实现多种功能,功能丰富。

(4)可根据LCD提示操作,更加人性化。

(5)各模块单独为一个函数,使程序结构明朗。

缺点:

主要是标志位过于繁多,阅读困难,给程序的修改和优化带来麻烦。

所以程序还有待优化。

第4章仿真及实物效果展示

4.1关闭菜单与主菜单

关闭菜单与主菜单效果如下图所示:

图11仿真与实物的关闭菜单与主菜单

4.2流水灯模块

功能有左流、右流、清零、返回,部分功能展示如下:

图12流水灯模块仿真及实物部分效果

4.3计数器模块

功能有加计数、减计数、清零、返回,部分功能展示如下:

图13计数器模块部分效果

4.4LCD液晶显示模块

功能有显示姓名、学号、日期、返回,部分功能展示如下:

图14LCD模块部分效果

心得体会

参考文献

【1】林立,张俊亮编单片机原理及应用——基于Proteus和Keilc[M].北京:

电子工业出版社,2013.1

【2】谭浩强.C程序设计(第四版).北京:

清华大学出版社,2010.6

【3】周润景等.PROTEUS入门实用教程.北京:

机械工业出版社,2007.

【4】贾好来.MCS-51单片机原理及应用.北京:

附 录

1、源程序

#include<

reg51.h>

#defineucharunsignedchar

sbitRS=P1^6;

sbitRW=P1^7;

sbitp25=P2^5;

sbitp26=P2^6;

sbitp27=P2^7;

bits,s1,s2,a,a1,a2,a3,b,b1,b2,c,c0,c1,c2,c3;

charcount;

ucharLCD_Status,i,j;

ucharcodemainmenu[]="

Mainmenu:

1LED2C3LCD4OFF"

;

ucharcodeLEDmenu[]={'

'

'

N'

o'

w'

i'

s'

L'

E'

D'

'

:

1'

0x7f,'

2'

0x7e,'

3'

p'

/'

4'

R'

};

ucharcodecounter[]="

Nowiscounter:

1:

+2:

-3:

0'

4:

R"

ucharcodelcdmenu[]="

NowisLCD:

1name2num3date4R"

ucharcodename[]="

XuGuoQi"

ucharcodenum[]="

B12050923"

ucharcodedate[]="

2014/12/18"

ucharcodeOFF[]="

OFFPresskey4Start"

ucharcodeled[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff,0x7e,0x3c,0x18,0x00};

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

voiddelay(unsignedintcount)

{unsignedchari;

while(count--)

i<

120;

i++);

/*************************LCD相关驱动函数*****************************/

unsignedcharBusy_Check()//检查忙函数

{RS=0;

RW=1;

//RS=0,控制寄存器,RW=1,读

p25=0;

p26=1;

delay

(1);

LCD_Status=P0;

p25=1;

returnLCD_Status;

voidwcmd(unsignedcharcmd)//写命令函数,RS=0;

RW=0

{while((Busy_Check()&

0x80)==0x80);

RS=0;

RW=0;

P0=cmd;

voidwdat(unsignedchardat)//写数据函数,RS=1;

while((Busy_Check()&

0x80)==0x80);

RS=1;

P0=dat;

p27=1;

//每次写数据后熄灭LED数码管

P2=0xff;

//每次写数据后熄灭LED流水灯

voidLCD_init()//初始化函数

{wcmd(0x38);

//38H=00111000,使用8位,用5×

7的字型,2行

//改为0x3C=00111100,就用5×

10字型

wcmd(0x01);

//01H=00000001,清屏【命令1】

wcmd(0x06);

//06H=00000110,字符不动,光标自动右移一格【命令3】

wcmd(0x0c);

//0eH=00001110,开显示,无光标,字符不闪烁【命令4】

/***************************写各菜单函数******************************/

w

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

当前位置:首页 > IT计算机 > 计算机软件及应用

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

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