单片机课程设计指导书.docx

上传人:b****4 文档编号:11950805 上传时间:2023-04-16 格式:DOCX 页数:65 大小:770.20KB
下载 相关 举报
单片机课程设计指导书.docx_第1页
第1页 / 共65页
单片机课程设计指导书.docx_第2页
第2页 / 共65页
单片机课程设计指导书.docx_第3页
第3页 / 共65页
单片机课程设计指导书.docx_第4页
第4页 / 共65页
单片机课程设计指导书.docx_第5页
第5页 / 共65页
点击查看更多>>
下载资源
资源描述

单片机课程设计指导书.docx

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

单片机课程设计指导书.docx

单片机课程设计指导书

 

微机原理及应用课程设计

指导书

AT89C2051单片机时钟控制器制作

 

1、概述………………………………………………………………………………………2

2、AT89C2051单片机简介…………………………………………………………………2

3、电子时钟功能描述………………………………………………………………………4

4、电子时钟电路板元件布局图……………………………………………………………5

5、电子时钟电路原理图……………………………………………………………………6

6、所用元件列表……………………………………………………………………………7

7、软件开发环境KeilC51介绍…………………………………………………………8

8、软件主要部分框图……………………………………………………………………17

9、器件编程简介…………………………………………………………………………20

10、附录:

参考程序……………………………………………………………………23

 

一、概述

微机接口技术是机电专业的一门重要专业课程,通过该课程的学习,学生已经初步掌握了单片机、微型计算机的基本工作原理以及接口技术,初步掌握了常用接口硬件的特点及使用方法,能够读懂简单的接口硬件原理图及相关的控制程序,能够根据要求设计一些较为简单的接口控制线路。

但是微机接口技术是一门实践性很强的课程,既有软件又有硬件,软件与硬件必须同时兼顾,仅有理论学习还是远远不够的。

微机接口技术课程设计正是针对这一状况而设立,通过微机接口课程设计的训练,使学生了解单片机系统的开发过程以及接口的设计原则和方法,巩固课程阶段的理论知识,进一步加强学生在接口技术方面的实践技能和动手能力的培养。

该课程设计中,选用的是AT89C2051高性能小型单片机,AT89C2051内含有FlashROM存储器,所以可反复使用。

用AT89C2051开发电子制作,安全性高,制作简单,调试方便,功能多样,容易调动起学生的兴趣,开发学生动手动脑的积极性。

学生从设计目标的描述入手,完成硬件原理图设计、电路板设计、电子元器件的装配焊接、软件设计调试以及器件编程等全部过程。

通过该阶段的学习,学生对单片机系统的开发进行全面的了解,为将来走向工作岗位打下坚实的基础。

二、AT89C2051单片机简介

    AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。

该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集相兼容,但仅引出了15个I/O口线,对应于P1和P3口(缺P3.6),是一种20引脚的MCU。

由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C2051是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

1.主要特性

·与MCS-51兼容

·2K字节可编程闪烁存储器,寿命:

1000写/擦循环,数据保留时间:

10年

·全静态工作:

0Hz-24Hz

·128*8位内部RAM

·15条可编程I/O线

·两个16位定时器/计数器

·5个中断源

·可编程串行通道

·低功耗的闲置和掉电模式

·片内比较器

·片内振荡器和时钟电路

2.管脚说明:

VCC:

供电电压。

GND:

接地。

P1口:

P1口是一个内部提供上拉电阻的8位双向I/O口。

P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

P1.0和P1.1作为内部比较器的输入端,没有内部上拉电阻。

P3口:

P3口管脚是7个带内部上拉电阻的双向I/O口(P3.6作为片内比较器的输出,没有引出),当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。

作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

P3口部分引脚还作为AT89C2051的一些特殊功能口,如下所示:

管脚第二功能

P3.0RXD(串行输入口)

P3.1TXD(串行输出口)

P3.2INT0(外部中断0)

P3.3INT1(外部中断1)

P3.4T0(记时器0外部输入)

P3.5T1(记时器1外部输入)

AT89C2051的各口线输出缓冲器都具有20mA的拉电流能力。

RST:

复位输入。

当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

  XTAL1:

反向振荡放大器的输入及内部时钟工作电路的输入。

  XTAL2:

来自反向振荡器的输出。

三、ATM89C2051单片机时钟描述

ATM89C2051单片机的时钟采用内部定时器定时,具有四位LED显示,三个操作按钮,一个蜂鸣器或扬声器(电路图见第四节),学生可以根据需要编程。

1.参考设计中硬件的定义

计时方式:

采用AT89C2051内部的定时器T0,使用中断方式。

产生百分秒、秒、分、小时机时,同时具有定闹功能。

显示方式:

4位LED采用共阳动态显示,可以根据需要显示[时-分]、[分-秒]、[秒-百分秒],分别对应显示模式dispMod=0、1、2。

可12-24小时显示切换。

按键定义:

3个键,分别命名为左键、中间、右键

左键:

实现工作状态接换

工作状态依次为:

显示状态→时设定-分设定→秒设定→闹钟设定→显示状态

由变量Workmode记忆状态

中键:

在显示状态下定义为:

显示模式字DispMode加1

在设定状态下定义为:

被设定变量加1

在闹钟设定时定义为:

定闹小时值加1,循环变化

右键:

在显示状态下定义为:

显示模式12-24小时切换

在设定状态下定义为:

被设定变量减1

在闹钟设定时定义为:

定闹分钟值加1,循环变化

2.参考程序控制变量定义

显示模式控制字Dispmode

显示模式Dispmode

取值

表述

辅助变量取值

0

时间显示/设定

闹钟显示/设定

左边两位显示小时,右边显示分钟

ALARMST=0

左边两位显示定闹小时值,右边显示定闹分钟值

ALARMST=1

1

左边两位显示分钟,右边显示秒

2

左边两位显示秒,右边显示百分秒

工作方式控制字Workmode

工作方式Workmode

取值

表述

对应的显示模式

Dispmode

辅助变量取值

RUNSET

ALARMST

0

时间显示,分隔小数点闪动

0、1、2

0

0

1

小时设定:

左2位LED闪动

0

1

0

2

分钟设定:

右2位LED闪动

0

1

0

3

秒设定:

左2位LED闪动

右2位LED灭

2

1

0

4

显示/设定定闹时分,左2位LED为小时,右2位LED为分钟

0

1

1

3.变量见附录的程序

四、ATM89C2051单片机时钟电路板元件布局图

五、ATM89C2051单片机时钟电路原理图

六、所用元件清单

序号

名称

代号

型号

数量

备注

1

单片机

IC2

AT89C2051

1

2

电阻

R1-R8

R9-R12

R13

R14

220Ω

2k

10k

8

4

1

1

 

(可变)

3

电容

C1

C2

C3-C4

C5

C6

220u/25v

10u/16v

33p

47u

33u

1

1

2

1

电解

电解

瓷片

电解(可变)

独石(可选)

4

三极管

T1-T4

9012

4

PNP

5

按钮

Key1/2/3

3

6

显示器

DP

0.56”

1

4位动显共阳

7

喇叭/蜂鸣器

SP

1

(可变)

8

晶振

XT

12MHz

1

9

整流管

D1

1A/25V

1

(可变)

10

三端稳压器

VD

7805

1

11

插座

PI

φ3.5

1

12

集成电路插座

DIP20

1

13

单排插孔

SIP40

12线*2

用于LED

14

电路板

定制

1

15

支座

标准件

4套

注:

1、发声装置可以采用喇叭或蜂鸣器。

2、R14和C5在电路板上占同一位置,如果采用喇叭,该位置装C5,采用蜂鸣器则装R14。

3、整流管D1在有的电路板上为整流桥,有的为整流管,根据具体情况选用。

4、有的电路板上C6没有安排。

七、软件开发环境KeilC51使用介绍

KeilC51V6.xx(包括V6.02V6.10V6.12V6.14V6.20V6.20C等)是目前世界上最好的51单片机的汇编和C语言的开发工具。

支持汇编,C语言以及混合编程。

同时具备功能强大的软件仿真和硬件仿真(用mon51协议)。

下面简单介绍它的应用。

运行KeiluVision2,出现如下界面。

1)击菜单project,选择newproject,新建一个工程:

2)然后选择你要保存的路径,输入工程文件的名字,比如保存到keil目录里,工程文件的名字为test。

如下图所示,然后点击保存。

3)这时会弹出一个对话框,要求你选择单片机的型号,你可以根据你使用的单片机来选择,keilc51几乎支持所有的51核的单片机,这里以Atmel的AT89c52来说明。

如图所示,选择89c52之后,右边一栏是对这个单片机的基本的说明,然后点击确定。

 

4)这时要新建一个源程序文件,建立一个汇编或C文件,如果你已经有源程序文件,可以忽略这一步。

点击菜单File->New:

5)输入一个简单的程序,如下图所示:

  

6)选择菜单File_>SAVE:

  

7)选择你要保存的路径,在文件名里输入文件名,注意一定要输入扩展名,如果是c程序文件,扩展名为.c,如果是汇编文件,扩展名为ASM,如果是ini文件,扩展名为.ini,其他文件类型,比如注解说明文件,可以保存为.txt的扩展名。

那么我们这里是要存储一个c源程序文件,所以输入.c扩展名,保存为test.c的名字,(也可以保存为其他名字),点击保存。

  

8)点击Target1前面的+号,展开里面的内容sourceGroup1:

---->

9)用右键点击SoureceGroup1(注意用鼠标的右键,而不是左键),将弹出一个菜单,选择AddFilestoGuoup'SourceGroup1'.

 10)选择刚才的文件test.c,

文件类型选择CSourcefile(*.c).因为我们的是C程序文件,所以选择该类型,如果是汇编文件,就选择AsmSourcefile.如果是目标文件,选择Objectfile,如果是库文件,选择Libraryfile.最后点击Add.点击Add之后,窗口不会消失,(如果要添加多个文件,可以不断添加),添加完毕此时再点击Close关闭该窗口.

11)这时在sourcegroup1里就有test.c文件,如图:

12)接下来要进行一些设置,用鼠标右键(注意用右键)点击左边的Target1,会出现一个菜单.

   

选择OptionsforTarget'Target1',会出现一个选择卡:

  

  Xtal(Mhz):

是设置你的单片机的工作的频率,默认是24.0MHZ,如果你的单片机的晶振用的是11.0592Mhz,那么在框里输入11.0592(单位是Mhz,所以带小数点).

  UseOn-chipROM(0x0-0x1fff):

这个选项是使用片上的FlashRom,我们知道At89c52有8k的flashRom.取决于你的应用系统,你的单片机的EA接高电平的话,请选中这个选项,如果你的单片机的EA接低电平,表示使用外部Rom,那么不要选中该选项.我们在这里选中它

  Off-chipCodememory:

表示你在片外接的Rom的开始地址和大小,如果你没有外接程序存储器,那么不要填任何数据.我们在这里假设使用一个片外的Rom,地址从0x8000开始(不要填成8000,如果是8000,是10进制的数,一般填16进制的数),Size为外接Rom的大小.假设接了一块0x1000字节的rom.最多可以外接3块Rom,如果你还用了别的地址,那么就添上.

13)下面要对Output栏进行设置:

这一栏有很多的选项:

  SelectFolderforObjects:

点击这个按钮可以选择编译之后的目标文件存储在哪个目录里,如果不设置的话,就是在你的工程文件的目录里.

  NameofExecutable:

是设置生成的目标文件的名字,缺省是跟你的工程的名字是一样的.

目标文件可以生成库或者obj,hex的格式.

  CreateExecutable:

是生成OMF以及HEX文件:

一般是选中DebugInformation,选中BrowseInformation.这两个选项一般要选中,这样才有详细的调试所需要的信息,比如你要做c语言程序的调试,如果不选的话,调试时你将无法看到高级语言写的程序.

  CreateHexFile:

这个选项一般是要选中的.很多网友在bbs上问到,他编译之后没有生成Hex文件,这是因为这个选项没有被选中的原因.要生成Hex文件,一定要选中该选项,如上图所示.还有人问到如何生成OMF的文件,事实上Keil在每次编译之后都生成了OMF文件,那个跟你的工程文件名一样的,但是没有带扩展名的文件就是OMF格式的文件.例如我们这个工程的名字是test.uv2,将会生成一个OMF文件test(不带扩展名).默认是不选中的,所以要自己做设置.

  CreateLibrary:

选中时将生成lib库文件.根据你的需要是否要生成库文件,一般的应用是不生成库文件的.

  AfterMake:

有几个设置:

  Beepwhencomplete:

编译完成之后发出咚的声音.

  StartDebugging:

马上启动调试(软件仿真或硬件仿真).根据你的需要做设置,一般是不选中.

  RunUserProgram#1,RunUserProgram#2:

这个选项可以设置编译完之后运行别的应用程序,比如有些用户自己编写的烧写芯片的程序(编译完便执行将hex文件写入芯片),或调用外部的仿真程序.根据自己的需要设置.

14)完成上述设置以后,就可以进行编译调试了。

打开主菜单的project选项,选择Buildtarget条目即可。

程序编译完成后,可以进行联机调试或软件仿真,因篇幅关系从略,有兴趣的同学可以参考徐爱钧的《单片机高级语言C51Windows环境编程与应用》或KeilC51编译、调试软件使用指南。

 

八、软件主要部分框图

1.主程序框图

2.LED动态显示子程序框图

 

说明:

本子程序实现由DIPSIDX(0,1,2,3)作为位号,显示模式Dispmode和时钟/定闹指示变量Alarmst确定送显数据的LED显示,掩码变量LED_MASK_L和LED_MASK_R分别控制左边2位和右边2位LED的闪动。

LED_CNT取与DIPSIDX相应的数值(0f7h,0fbh,0fdh,0feh)

 

3.T0中断定时子程序框图

 

九、器件编程简介

在程序编译好之后,生成IntelHex格式的目标文件,将目标文件烧写到单片机系统的程序存储器中,单片机就可以工作了。

单片机的烧写有很多的工具可以选用。

这里仅以ATMEL单片机80C51编程为例介绍geniusSP+编程器的使用方法。

将编程器电缆连接到计算机的串行口,接通电源,运行编程器操作程序,然后按如下步骤操作:

1)选择器件

●点击工具条的“选择”(第5个)按钮。

弹出选择器件对话框。

●在“器件类型”区选择“MPU”无线电按钮。

●在“生产厂冢”区选择“ATMEL”。

●在“器件型号”区选择“AT89C51”。

图8.1选择AETMELMPUAT89C51

●点击“确定”按钮,关闭选择对话框,在编程环境窗口中可以看见刚才选择的结果。

2)插放器件:

AT89C51的插放方式是按正常方式插放。

故在选择器件对话框关闭时,不会弹出插放方式显示对话框。

如果想了解插放方式,可以点击工具条的“插放”(第8个)按钮,打开插放方式对话框。

将AT89C51器件按要求插入万用插座并锁紧。

3)加载文件:

点击工具条“装载”(第1个)按钮,弹出打开文件对话框。

找到欲打开的文件。

这里作为举例选择当前目录下Subpr.hex文件名。

双击该文件或选择该文件后点击“打开”按钮。

此时打开文件对话框关闭,弹出文件类型对话框。

选择HEX类型,点击确定,关闭文件类型对话框。

可见数据窗口自动打开,并以该文件内容的填充。

在编程环境窗口显示相应的文件全路径名。

在数据窗口的状态栏数据来源区显示文件全路径名。

图8.2打开文件对话框

图8.3文件类型选择对话框

4)器件读写操作:

对于器件的各种操作都是在打开对话框的情况下进行的。

点击工具条的“读写”(第6个)按钮。

弹出MPU的读写对话框(根据所选器件不同,将会弹出不同的对话框)。

●查空:

点击对话框的“查空”按钮,显示查空正在进行。

查空结束后将显示查空结果。

●擦除:

对于像AT89C51这样的器件,如果器件不空时需要先行擦除,才能进行编程,而有些EEPROM之类的器件如能28C64等,不需进行擦除操作。

点击“擦除”按钮,完成擦除操作。

如有必要,可在擦除后再进行查空。

●编程:

点击“编程”按钮。

显示“编程”正在进行,请等待,编程结束后将显示“编程操作已完成”。

●比较:

编程操作完成后,一般都应进行数据比较。

“点击”比较按钮,开始比较操作。

●加密:

如果比较无误,需要的话,可进行加密操作。

在“加密方式”区选择好加密方式。

这里选择方式3然后点击“加密”按钮。

完成加密操作。

为了稳妥,可再进行一次比较或读入操作,如果读出的数据与文件数据完全不符合说明书加密成功。

图8.4AT89C51所用到的读写对话框

如果是经常性重复以上操作过程,可以使用顺序操作。

在顺序操作区内选择擦除、查空、编程、比较、加密。

然后插入器件。

点击“开始”按钮,即可顺利完成上述操作。

顺序操作区

加密操作区

 

图8.4顺序操作区及加密操作区

十、附录参考源程序清单:

1.汇编语言源程序

;------------------变量定义------------------------

Alarm_MEQU35H;闹钟分设定单元

Alarm_HEQU34H;闹钟时设定单元

HsecEQU33H;百分秒存储单元

SecEQU32H;秒存储单元

MinEQU31H;分存储单元

HourEQU30H;时存储单元

TH0ValEQU?

;T0定时器定时时间常数,工作方式0,计算定时时间

TL0ValEQU?

ALAR_TIMEQU40H;BCD数字40

RKEYEQUP3.5;中键按在P3.5上

MKEYEQUP3.4;左键按在P3.4上

LKEYEQUP3.7;右键按在P3.7上

DispidxEQU21H;当前LED序号,取值0,1,2,3,代表从左到右的4位LED

Dispidx_0EQU8H;(bit)Dispidx的最低位,用以判别LED0,2/LED1,3

Dispidx_1EQU9H;(bit)Dispidx的bit1,用以判别LED0,1/LED2,3

Dispidx_2EQU0AH;(bit)Dispidx的bit2,用以判别INC指令后,Dispidx=4?

LED_CNTEQU22H;Dispidx的辅助变量,LED位控单元取值F7H,FBH,FDH,FEH

DispModeEQU23H;显示方式,内容取值0,1,2,对应[时分]、[分秒]、[秒-百分]

WorkModeEQU24H;工作模式存储单元,0、1、2、3、4

RunSetEQU00H;(bit)"设置工作"状态指示.

AlarmStEQU01H;(bit)"设置闹铃时分"状态指示。

T12_24EQU02H;(bit)12/24时制控制,0:

12小时显示,1:

24小时显示

AlarFlgEQU03h;(bit)闹铃定时时间到标志,AlarFlg=1,蜂鸣器叫

LedflashEQU04h;(bit)由T0中断产生的闪动信号位,高0.6秒,低0.4秒

LKEY_FLGEQU05h;(bit)左键被有效按下的标志

MKEY_FLGEQU06h;(bit)中键被有效按下的标志

RKEY_FLGEQU07h;(bit)右键被有效按下的标志

LED_MASK_LEQU25H;左2位LED段码掩码字节,取值00H/FFH/7FH,用于引起闪动

LED_MASK_REQU26H;右2位LED段码掩码字节,取值00H/FFH/7FH,用于引起闪动

LEDML_7EQU2fH;(bit)此位为LED_MASK_L的bit7

;--------------源程序清单---------------

ORG0000H

AJMPMAIN

ORG000BH;T0中断入口

AJMPINT_T0;T0中断处理程序

ORG30H;主程序起始地址

MAIN:

MOVSP,#40H;初始化堆栈底地址

MOVHsec,#0;时间单元初值设置

MOVSec,#0

MOVMin,#00H

MOVHour,#12H

MOVDispidx,#0;显示序号为0,指向最左面LED

MOVLED_CNT,#11110111B;点亮Dispidx指向的最左边的LED

MOVDispMode,#0;显示模式设为0

MOVWorkMode,#0;工作模式设为0(正常跑表)

CLRRunSet;清设置标志

CLRAlarmSt;清定闹标志

SETBT12_24;设置24小时显示标志

CLRAlarFlg;清定闹时间到标志

CLRLKEY_FLG;清左键有效按下标志

CLRMKEY_FLG;清中键有效按下标志

CLRRKEY_FLG;清右键有效按下标志

MOVAlarm_H,#24H;定闹初值小时值;因始终最大位23:

59

MOVAlarm_M,#00H;故初值24:

00将不引起定闹

MOVLED_MASK_L,#0H;左两位LED掩码为0,允许送显

MOVLED_MASK_R,#0H;右两位LED掩码为0,允许送显

MOVTMOD,#01H;T0工作方式1

MOVTH0,#TH0Val;T

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

当前位置:首页 > 经管营销 > 经济市场

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

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