单片机课程设计说明书

2024-06-14

单片机课程设计说明书(通用6篇)

篇1:单片机课程设计说明书

目录

引言 „„„„„„„„„„„„„„„„„„„„„„„„„

第1章 设计目的及意义„„„„„„„„„„„„„„„„„

第2章 设计内容及要求„„„„„„„„„„„„„„„„„

2.1 设备与器材„„„„„„„„„„„„„„„„„„„ 2.3 设计过程„„„„„„„„„„„„„„„„„„„„

第3章 设计感想„„„„„„„„„„„„„„„„„„„„

第4章 参考文献„„„„„„„„„„„„„„„„„„„„

附录

程序编码„„„„„„„„„„„„„„„„„„„„„„„

引言

LED显示屏是利用发光二极管点阵模式或像素单元组成的平面式显示屏幕,广泛应用于学校,银行,商店等公共场所的信息发布和广告宣传

生活中可以看到各式各样的广告流水灯,有单一颜色的几个灯按固定的次序点亮,有多个不同颜色的灯构成某一图案依次点亮的,也有多排广告灯按多种组合好的次序循环点亮的等。我们设计的广告流水灯,就是这些广告灯中的类型,我们虽然学习了单片机的一些基础知识,做过一些小设计,但是没有系统的总结,通过此次的课程设计,使自己的经验得到了理论上的升华。

为了实现用单片机对广告灯实行控制,我们先进行编程,画出接线图,流程图和写出指令再运行程序,然后根据实际情况对程序进行调试和完善。

第1章 设计目的及意义

1.1 设计是对《电工学》和《单片机原理与应用系统设计》课程理论知识的理解和应用,培养动手能力和解决实际问题的经验; 1..2 通过实验提高对单片机的认识;

1.3 通过实验提高电路焊接,合理布局,电路检查的能力; 1.4 进一步熟悉和掌握单片机的结构及工作原理; 1.5 提高软件调试的能力;

1.6 掌握AT89S5单片机系统中各个管脚的作用;

1.7 通过系统的设计过程,提高分析问题,解决问题的能力; 1.8 培养团队意识和协同合作能力;

第2章 设计内容及要求

2.1 设备与器材

AT89S51简介

AT89S51是一个低功耗,高性能8位单片机,片内含4k Bytes的可反复擦写1000次的只读程序存储器,器件采用高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash储存单元,AT89S51在众多嵌入式控制应用系统中得到广泛应用。管脚说明

VCC:电源电压输入端。

GND:电源地。

P0口:P0口为一个8位级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

PDIP封装的AT89S51管脚图

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地

址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口除了作为普通I/O口,还有第二功能:

P3.0 RXD(串行输入口)

P3.1 TXD(串行输出口)

P3.2 /INT0(外部中断0)

P3.3 /INT1(外部中断1)

P3.4 T0(T0定时器的外部计数输入)

P3.5 T1(T1定时器的外部计数输入)

P3.6 /WR(外部数据存储器的写选通)

P3.7 /RD(外部数据存储器的读选通)

P3口同时为闪烁编程和编程校验接收一些控制信号 发光二极管

发光二极管简称为LED。由镓(Ga)与砷(AS)、磷(P)的化合物制成的二极管,当电子与空穴复合时能辐射出可见光,因而可以用来制成发光二极管。在电路及仪器中作为指示灯,或者组成文字或数字显示。磷砷化镓二极管发红光,磷化镓二极管发绿光,碳化硅二极

管发黄光

发光二极管是半导体二极管的一种,可以把电能转化成光能;常简写为LED。发光二极管与普通二极管一样是由一个PN结组成,也具有单向导电性。当给发光二极管加上正向电压后,从P区注入到N区的空穴和由N区注入到P区的电子,在PN结附近数微米内分别与N区的电子和P区的空穴复合,产生自发辐射的荧光。不同的半导体材料中电子和空穴所处的能量状态不同。当电子和空穴复合时释放出的能量多少不同,释放出的能量越多,则发出的光的波长越短。常用的是发红光、绿光或黄光的二极管。

发光二极管的核心部分是由P型半导体和N型半导体组成的晶片,在P型半导体和N型半导体之间有一个过渡层,称为PN结。在某些半导体材料的PN结中,注入的少数载流子与多数载流子复合时会把多余的能量以光的形式释放出来,从而把电能直接转换为光能。PN结加反向电压,少数载流子难以注入,故不发光。这种利用注入式电致发光原理制作的二极管叫发光二极管,通称LED。当它处于正向工作状态时(即两端加上正向电压),电流从LED阳极流向阴极时,半导体晶体就发出从紫外到红外不同颜色的光线,光的强弱与电流有关。

2.2 设计要求

本设计使用AT89C51芯片作为控制芯片,利用P0、P1、P2、P3口

连接共4*8个发光二极管,各个端口电平的高低控制32个灯的亮或灭,以达到各种各样的显示效果。开始时所有灯全暗,通过烧录软件时开始跑马灯,并要求有多种亮暗组合

2.3设计过程 2.31设计效果图 2.32设计电路原理图

将32个发光二极管组成4*8的矩形图形,分别接到P0、P1、P2、P3引脚上。发光二极管有两个引脚,较长的表示正极,较短的表示负极。32个发光二极管共阳极连接。具体连接见电路原理图

2.33 按照电路原理图焊接实际电路图

焊接注意事项:

1.芯片与底座都是有方向的,焊接时,要严格按照PCB板上的缺口所指的方向,使芯片,底座与PCB三者的缺口都对应。2.焊接时,要使焊点周围都有锡,将其牢牢焊住,防止虚焊。3.在焊接圆形的极性电容器时(一般电容值都是比较大的),其电容器的引脚是分长短的,以长脚对应“+”号所在的孔。

4.芯片在安装前最好先两边的针脚稍稍弯曲,使其有利于插入底座对应的插口中。.取电阻时,找到所需电阻后,拿剪刀剪下所需数目电阻,并写上电阻,以便查找。

6.装完同一种规格后再装另一种规格,尽量使电阻器的高低一致。

焊完后将露在印制电路板表面多余引脚齐根剪去。

7.焊接集成电路时,先检查所用型号,引脚位置是否符合要求。焊接时先焊边沿对脚的二只引脚,以使其定位,然后再从左到右自上而下逐个焊接。

8.对引脚过长的电器元件(如电容器,电阻等),焊接完后,要将其剪短。

9.焊接后用放大镜查看焊点,检查是否有虚焊以及短路的情况的发生。

10.当有连线接入时,要注意不要使连线深入过长,以至于将其旋在电线的橡胶皮上,出现断路的情况。

12.当电路连接完后,最好用清洗剂对电路的表面进行清洗,以防电路板表面附着的铁屑使电路短路。

13.当最后组转时,应将连线扎起,以防线路混乱交叉。14.焊接上锡时,锡不宜过多,当焊点焊锡锥形时,即为最好

2.33 编写程序 见附图

2.4 最终效果图 见附图

第3章 设计感想

通过此次课程设计使我的理论与实际得到结合,摆脱了单纯的理论知识学习,通过试验加深了我对课本知识的理解,运用所学知识进行简单的程序设计。了解了在单片机系统中扩展简单I/O接口的方

法,外部中断技术的基本使用方法,掌握了中断处理程序的编程方法。在设计过程中,不断调试和修改程序,提高了对单片机的应用能力,分析和解决问题的能力。此次课程设计锻炼了我综合运用所学的专业基础知识,解决实际问题的能力,这次设计让我积累了很多经验。能够顺利如期完成此次课程设计,有赖于小组成员的积极协同配合,在合作中提高了我们的合作意识和协同合作能力。尽管设计过程中困难很多,不断的修改调试,但是最终达到了预期的目的

第4章 参考文献

【1】 欧伟明等﹒单片机原理与应用系统设计.北京:电子工业出版社,2009

篇2:单片机课程设计说明书

专业班级:

11级自动化<3>班

名: 欧阳明长 李徐军

陈龙

指导教师:

设计时间:

2013--12--17

物理与电气工程学院

2013年12月17日

摘要

电子钟在生活中应用非常广泛,而一种简单方便的数字电子钟则更能受到人们的欢迎。所以设计一个简易数字电子钟很有必要。本电子钟采用STC公司的AT89S52单片机为核心,使用12MHz 晶振与单片机AT89S52 相连接,通过软件编程的方法实现以24小时为一个周期,同时8位7段LED数码管(两个四位一体数码管)显示小时、分钟和秒的要求,并在计时过程中具有定时功能,当时间到达提前定好的时间进行蜂鸣报时。该电子钟设有四个按键S12、S13、S14和S15键,进行相应的操作就可实现小时调整、分钟调整和启停功能。具有时间显示、整点报时、校正等功能。走时准确、显示直观、运行稳定等优点。

关键词 电子钟;AT89S52;硬件设计;软件设计

目录 设计课题任务、功能要求说明及方案介绍……………………………………3 1.1 设计课题任务………………………………………………………………3 1.2 功能要求说明………………………………………………………………3 1.3 设计总体方案介绍及原理说明……………………………………………3 2 设计课题硬件系统的设计………………………………………………………3 2.1 设计课题硬件系统各模块功能简要介绍…………………………………4 3 设计课题软件系统的设计………………………………………………………4 3.1 设计课题软件系统各模块功能简要介绍…………………………………4 3.2 设计课题软件系统程序流程框图…………………………………………4 4 设计结论、仿真结果、误差分析………………………………………………7 4.1 设计课题的设计结论及使用说明…………………………………………4 4.2 设计课题的误差分析………………………………………………………7 4.3 设计体会……………………………………………………………………7 参考文献 ……………………………………………………………………………7 附 录 ……………………………………………………………………………8 1 设计课题任务、功能要求说明及方案介绍

1.1 设计课题任务

设计一个具有特定功能的电子钟。具有启停、时间显示、报时等功能。并有时间设定,时间调整功能。

1.2 功能要求说明

设计一个具有特定功能的电子钟。电子钟上电从12时0分0秒开始运行,按下启停键进入时钟运行状态;再按启停键暂停运行,并且再次按下时能够在原来的时间上继续计时;运行到整点是能够自动响铃,通过外部按键可以进行实践的调整,并且在运行时相应的LED灯等同步亮灭。

1.3 设计课题总体方案介绍及工作原理说明

本电子钟主要由单片机、4*4独立键盘、显示接口电路和电源电路构成,设 计课题的总体方案如图1.1所示:

图1.1 总体设计方案图

本电子钟的所有的程序、参数均存放在AT89S52的内部RAM中。键盘采用动态扫描方式。利用单片机定时器产生定时效果通过编程形成数字钟效果,再利用数码管动态扫描显示单片机内部处理的数据,同时通过端口读入当前外部控制状态来改变程序的不同状态,实现不同功能。设计课题硬件系统的设计 2.1 设计课题硬件系统各模块功能简要介绍

本设计的硬件系统主要采用以下基本模块来实现,单片机最小系统模块,输入模块、输出模块、电源模块。

(1)单片机最小系统模块:包括8位微控制器AT89S52;电源复位电路;晶振电路。本模块AT89S52系统控制核心,单片机系统复位由电源上电完成。

(2)输入模块:本模块共用到了4个按键(S12、S13、S14、S15),分别完成时间的调整、启停。1个电源开关(具有复位功能)。

(3)输出模块:本次设计显示为8位,采用两个四位一体数码管(共阳极)8个PNP三极管驱动,并且还有蜂鸣器模块。(4)电源模块:USB供电及下载器。

设计课题软件系统的设计

3.1 设计课题软件系统个模块功能简要介绍

本设计的软件系统主要采用以下基本模块来实现,主程序、中断服务程序、键盘输入程序模块、数码管及其驱动模块和延时模块。

主程序:主要是用于对输入信号的处理、输出信号的控制和对各个功能程序模块的控制。

中断服务程序:主要是用于电子钟的1S延时。键盘输入程序模块:主要是用于完成特定时间调整。

数码管及其驱动模块:主要是用于驱动数码管及利用数码管显示时间。延时模块:短延时用于数据的动态显示,按键的判断。

3.2 设计课题软件系统程序流程框图

系统程序采用汇编语言按模块化方式进行设计,然后通过Keil软件开发平台将程序转变成可烧写文件。

主循环程序框图如3.1所示;判断进位程序如3.2所示; 计时一秒中断程序如3.3所示; 启停中断框图如3.4所示; 延时子程序框图如3.5所示; 图3.1 主循环程序 5

图3.2 判断进位子程序

图3.3 计时一秒中断

图3.4 启停中断程序

图3.5 延时子程序 设计结论、运行结果、误差分析

4.1 设计课题的设计结论及使用说明

本设计为基于单片机的电子钟的设计。刚开始,我们很多地方理不清头绪,无从下手,只能从平时的实验中得到一些方法,但通过认真研究设计课题,找书上网查资料,确定基本设计方案,对所用芯片功能进行查找、调试,设计中有四个按键,其中S12为分钟加1调整,S13为小时加1调整,S14为外部响铃按键,S15为启停按键,另外当整点时间到时,蜂鸣器报警。这样的结果与设计基本相符,基本上完成了设计任务。

4.2 设计课题的误差分析

该电子钟在运行中存在一定的误差,误差产生有三种原因,首先是采用的计时利用中断来实现。而当电子钟运行时间1秒时,又得去执行中断程序,这个过程需要几个机器周期。第二,硬件系统有一定的影响。第三,设计用到12MHz晶振,计算是满20次为一秒钟,实际会慢很多。

4.3 设计体会

本次课程设计,让我们三人受益匪浅,认识到了自己的许多缺点和不足,使我深深的感受到了理论联系实际的必要性及其重要性。

参考文献

[1] 李全利.单片机原理与接口技术[M].高等教育出版社.2009.1.[2] 刘文秀.单片机应用系统仿真的研究[J].现代电子技术.2005, 第286 期.[3] 胡学海.单片机原理及应用系统设计[M],北京:电子工业出版社,2005.[4] 李广第.单片机基础[M],北京航空航天大学出版社,2006.7.附录

程序代码为:

ORG 0000H LJMP START ORG 0003H LJMP INTT0 ORG 0013H LJMP INTT1 ORG 000BH LJMP INTT ORG 0100H START:SETB EA SETB ET0 SETB IT0 SETB EX0 SETB IT0 SETB EX1 SETB IT1 MOV R7,#16 MOV TMOD,#01H MOV TH0,#15536/256 MOV TL0,#15536 MOD 256 MOV R0,#12 MOV R1,#0 MOV R2,#0 MOV R6,0FEH CLR TR0 L1:

LCALL PANDUAN;*****************

;记秒

MOV A,R2

MOV B,#10

DIV AB

MOV P2,#0FDH

LCALL XIANSHI

LCALL DELAY

MOV A,B

MOV P2,#0FEH

LCALL XIANSHI

LCALL DELAY;***************

;调分

JB P3.0,L40 L41:JB P3.0,L42 LJMP L41 L42:INC R1

;计分

L40: MOV A,R1

MOV B,#10

DIV AB

MOV P2,#0EFH

LCALL XIANSHI

LCALL DELAY

MOV A,B

MOV P2,#0F7H

LCALL XIANSHI

LCALL DELAY

MOV P2,#0FBH

MOV P0,#0BFH

LCALL DELAY;******************

;调时

JB P3.1,L45 L47:JB P3.1,L46 LJMP L47 L46:INC R0

;计时

L45: MOV A,R0

MOV B,#10

DIV AB

MOV P2,#07FH

LCALL XIANSHI

LCALL DELAY

MOV A,B

MOV P2,#0BFH

LCALL XIANSHI

LCALL DELAY

MOV P2,#0DFH

MOV P0,#0BFH

LCALL DELAY

;*************************;判断5分钟闹铃

CJNE R1,#5,L51

CLR P3.5

MOV P1,R6

MOV A,R6

RL A

MOV R6,A

LJMP L52 L51:CJNE R1,#6,L52

SETB P3.5 L52: LJMP L1

;***************;执行1秒钟

INTT:DJNZ R7,L33

MOV R7,#16

INC R2

MOV P1,R6

MOV A,R6

RL A

MOV R6,A L33:RETI;*********************

;外部中断

INTT0:CPL P3.5

MOV P1,#0

RETI;***********************

;启停功能

INTT1:MOV P1,#0

LCALL DELAY

JB P3.3,L97

CPL TR0

L97: RETI;**********************

;显示子程序

XIANSHI:MOV DPTR,#TAB

MOVC A,@A+DPTR

MOV P0,A

RET

;**********************

;延时子程序

DELAY:MOV R3,#20

DEL1:MOV R4,#50

DEL2:DJNZ R4,DEL2

DJNZ R3,DEL1

RET

;*******************

;判断进位子程序

PANDUAN:

CJNE R2,#60,L31

MOV R2,#0

INC R1

L31:CJNE R1,#60,L32

MOV R1,#0

INC R0

L32:CJNE R0,#24,L35

MOV R0,#0

L35:RET

;********************

TAB:DB 0C0H,0F9H,0A4H,0B0H,99H

DB 92H,82H,0F8H,80H,90H

篇3:单片机课程设计实践教学

为了巩固和加深学生对基本概念及基本原理的理解与掌握, 并进一步培养和提高学生分析问题和解决问题的能力, 因此, 在理论教学过程中完成相关的实验课程。但是, 单片机实验环节中往往都是学生被动的学习, 实验的内容也都是固定好的, 不利于培养学生自主创新能力。因此, 有必要在理论和实验教学的基础上开设单片机课程设计实践环节, 它是单片机教学实践中的一个重要环节。

当今世界, 随着电子信息技术的迅速发展, 要求学生在掌握所学的理论知识的同时, 自主的应用这些所学的专业知识, 在日后的就业中体现出创新意识, 成为社会有用之才, 而单片机课程设计实践教学环节就有利于培养学生这种自主创新的能力。

1 课程设计的对象和内容

单片机课程设计是为了让学生更好的学习和掌握对51系列单片机的学习, 其核心知识围绕着“单片机原理”理论教程, 为了让学生更好的掌握对所学知识的综合应用, 通过本次设计培养学生工程实践能力和自我创新能力。课程设计一般安排在第5学期, 学生通过前序课程的学习, 掌握了电子技术、计算机技术的相关实践知识, 才能开展本次设计。主要是针对学校在校大三的学生, 培养他们对所学知识的一个系统的、综合的应用, 又为大四毕业设计打下基础。

在我校以往的单片机教学过程中, 实践环节只是通过实验课程来体现, 这样并不能是学生灵活运用所学知识, 而单片机课程设计的开设通过学生自主选题、分工协作完成和答辩三个环节, 培养了学生独立思考解决问题的能力和团队意识, 大大提高了学生的学习热情。另一个方面, 实验课程缺乏一种系统的设计锻炼, 而在理论教学环节完成后安排课程设计实践环节, 十分有助于学生对所学的知识有一个系统的学习。

2 课程设计的教学过程

2.1 自主选题

在单片机课程理论教学中, 最大的特点就是学生层次良莠不齐, 因此在课程设计中应更加注重因材施教。为了满足不同层次学生的学习要求, 在课程设计过程中依据学生的能力设计难度不同的题目供学生进行选择, 满足不同口味的学生要求, 给学生更多的自主权, 激发了学生的学习兴趣。

本次设计中精心准备了三个层次的题目, 按照由易到难的顺序, 满足不同学生的口味要求。第一类是基础性的题目, 要求学生在对所学知识基本掌握的情况下就能实现一个功能简单的设计, 这个层次的题目对学生的要求不高, 满足底子薄弱的学生的学习要求, 此类题目见表1中所示。

二是中等难度的题目, 满足一般口味的学生, 要求学生在设计过程中能按设计要求顺利完成, 这个层次要求学生具有一定的的动手实践能力和处理问题能力, 并且涉及其它领域的知识, 要求学生具有较广的知识面, 此类题目见表2中所示。

三是拔高性的题目, 要求学生在比较短的时间内, 能够独立完成一些实际应用中的题目, 这种题目工作量较大, 既要求学生具有较广的知识面, 综合利用所学知识, 又要在设计过程中有有自己的想法, 有创新点, 此类题目见表3中所示。

2.2 分工协作

在知识爆炸的而今天, 一个人不可能完成所有的工作, 因此, 应在学生在校期间就培养学生分工合作的能力。在每个小组选完题目后, 在本次课程设计中每三个人划分为一组, 第一个人进行硬件连接和电路板绘制, 第二个人完成软件编程和调试, 最后一个人进行方案论证、资料汇总整理, 准备答辩。

2.2.1 硬件连接和电路图绘制

本次课程设计中采用Z Y 1 5 M C U 1 2 B D型综合单片机实验箱作为硬件电路。学生根据课堂上的实验内容, 小组讨论, 提出设计方案, 进行硬件电路连接。

教师根据学生电路连接情况, 给学生讲解电路连接的相关知识点, 并指导学生利用Protell99se软件进行电路板的绘制。大学的教育应当培养学生所学即所用, 如果学生不知道一个软件做什么用, 学习效果一定不会很好, 因此, 在课程设计过程中, 对照实物给学生绘制电路原理图, 针对学生绘图中出现的不同问题进行答疑是教学, 取得了良好的效果。

2.2.2 软件编程及调试

在硬件电路连接完成后, 由软件编程部分的学生对程序进行调试, 本次课程设计的实验箱内置仿真器的软件开发平台是使用Keil C51集成软件, Keil C51可以编写汇编语言源程序和C语言程序, 学生根据自身优势, 进行编程和调试。

2.2.3 方案论证、资料汇总及设计报告攥写

学生能针对课程设计中提出的要求, 写出可行性报告和拟采用的方法, 对资料的搜集可在网上或者图书馆进行查阅, 在根据同组人软件编程的代码和硬件绘制的图纸进行设计报告的攥写, 准备答辩。这个过程培养了学生的写作能力, 为今后毕业论文攥写和毕业后走上工作岗位上攥写个人工作报告打下了基础。

在这次单片机课程设计中让学生进行把一项任务进行分工, 让学生根据自己的特长和喜好进行分工协作, 即保证了个人的优势得以充分发挥, 又培养了学生的团队精神。

2.3 答辩及成绩考核

在课程设计的最后一个下午, 邀请学院的领导和学校单片机的教师参加答辩, 通过学生自述、老师提问、学生提问的方式来完成, 这个过程更有利月学生对单片机理论知识的学习和掌握, 也充分调动了学生的学习积极性。

3 结语

单片机课程设计教学实践教学环节注重培养学生的动手实践能力和独立思考问题、解决问题的能力, 为日后毕业设计打下了良好的基础。对于工科类的学生, 除了要掌握所学的理论知识外, 更需要具有较强的动手实践能力, 因此, 在理论教学过程中通过课程设计教学环节, 通过选题、分组和答辩的方式, 培养学生自主创新能力、分工协作能力和言语表达能力。

摘要:为了更好的学习和应用单片机理论知识, 在教学过程中开设了单片机课程设计环节, 并通过选题、分组、答辩的形式, 开发学生内在潜力, 培养学生创新精神和动手能力。

关键词:单片机,课程设计,实践教学

参考文献

[1]何立民.单片机高级教程——应用与设计[M].北京航天航空大学出版社, 2007, 1.

[2]李刚民.单片机原理及实用技术[M].高等教育出版社, 2008, 12.

篇4:单片机课程设计实验项目设计

【摘 要】针对单片机课程设计这门课程传统实验方式的不足之处,设计了一种新的实验项目;围绕“单片机系统设计方法”这一主线,从计算器系统电路的构成、仿真图的绘制、程序的编写、印制电路板的设计等方面对新项目的实施做了详细分析。

【关键词】单片机课程设计 计算器系统 实验课

【中图分类号】G 【文献标识码】A

【文章编号】0450-9889(2016)01C-0163-03

单片机课程设计作为单片机原理课程的延伸,是一门以学生动手实践为主的实验课。本课程在传统的教学中一般会以单片机实验箱作为操作的平台。教师设计一个综合的实验项目,学生在实验箱上完成线路的连接程序的调试运行等操作,之后学生完成设计报告。单片机实验箱内模块众多、接线杂乱,与实际应用不符,不利于学生理解和掌握单片机控制系统的设计过程及调试方法。因此在单片机课程设计中有必要引入一种新的实验形式。该实验项目作为单片机课程设计的一个综合实验内容,既要做到有别于单片机原理课程的验证性实验,又要做到理论联系实际,具有一定的实用价值,还要能够体现单片机系统开发的流程,激发学生的学习兴趣,增强学生的动手能力。

鉴于此,开发了一个“计算器的设计”项目作为单片机课程设计的教学内容。本项目的要求如下:设计一个简易计算器,能实现8位数之内的加减乘除运算,并要求学生按照单片机控制系统的开发流程,完成电路的仿真、程序的编写、电路图绘制、PCB板制作、焊接调试等工作。

一、计算器项目总体设计

为了实现计算器的功能,本系统应由单片机、输入模块、显示模块、声光提示模块和电源模块几部分构成,其组成框图如图1所示。

(一)控制器的选择

本项目中选取STC90C58RD+单片机作为控制器。STC90C58RD+与AT89C51完全兼容,可直接替换。前者具备高达1280Btye的SRAM,32K字节flash存储器,29K字节EEPROM,更高的可靠性及更低的功耗,使得它被越来越多的单片机开发者选用。

(二)显示模块的设计

单片机系统的输出显示部分,可以选用液晶屏或者数码管。液晶屏价格相对较贵,驱动程序编写较复杂,而数码管具有价格低廉、驱动电路简单、控制程序容易编写等特点。而且本设计要求完成8位数范围内的计算,因此使用8位数码管作为显示器件。

(三)输入模块的设计

按键作为单片机系统人机交互的输入部分,有独立式按键和行列式按键之分。独立式按键占用单片机的IO口资源较多,不选用。本计算器项目中,需要输入0-9的数字键以及代表各种运算操作的按键,需要按键数量多,因此选用行列式键盘。行列式键盘通过对行线和列线的电平状态的组合来判断哪个键被按下,可以用较少的IO口得到较多的按键。在本设计中采用4×4的行列式按键。

(四)声光提示模块的设计

本设计中需要在按键按下时发出“嘀”提示音,而且在运算结果溢出的时候发出声光提示。溢出选用最常用的蜂鸣器和发光二极管作为声光提示模块。

二、计算器项目的仿真

在电路实际制作之前的仿真是单片机系统开发过程中一个非常重要的环节,通过仿真能够验证设计方案是否可行。本设计是一个单片机系统,既有电路的仿真又有程序的仿真,因此选用Proteus软件进行系统仿真。

仿真软件Proteus是英国Lab Center Electronics公司研制的EDA软件。它不但和普通仿真软件一样能够仿真模拟电路,最大的特色是能够仿真单片机及外围器件,能进行代码调试。

学生熟练掌握本软件的使用,对完成单片机项目的设计开发有较大的促进作用。

(一)仿真电路设计

1.单片机最小系统仿真电路设计

单片机的最小系统指单片机工作的、由最少的电路构成的系统,包括晶振电路和复位电路。晶振X1和两个瓷片电容C1、C2构成了单片机的时钟电路。手动复位按键、电解电容C3和电阻R2构成单片机的上电复位和手动复位电路。

2.显示模块仿真电路设计

数码管的驱动由断码驱动和位选端驱动构成。单片机的P0口用于输出数码管的段码。由于P0口是标准的双向IO口,内部没有上拉电阻,因此P0口连了一个1K的排阻RP1。P2口的8个引脚用于控制8个数码管的位选端,分别经过Q2-Q9这8个三极管驱动8位数码管。

3.输入模块仿真电路设计

单片机的P1口连接一个4×4的行列式键盘。P1口的低4位作为行列式键盘的4条列线,高4位作为行列式键盘的4条行线。

4.声光提示模块仿真电路设计

声光提示电路由一个发光二极管和一个蜂鸣器构成。蜂鸣器由NPN型三极管Q1驱动。当系统上电时P3.6引脚为高电平,三极管截止,蜂鸣器不会误动作。当需要蜂鸣器发出声音时置P3.6引脚为低电平即可。发光二极管有P3.3引脚控制,低电平有效。

综上各个模块,此计算器系统完整的仿真电路如图2所示:

(二)计算器程序设计

计算器项目的控制程序在Keil C软件中完成。Keil 是一款针对51单片机内核的集成编译环境,具有很高的编译效率。

1.程序设计思路

本程序主要完成3方面的任务:扫描数码管、扫描按键、处理按键;因此编制了两个独立的函数Display( )和KeyBoard( )完成扫描数码管和扫描按键的功能。为了在按下不同的键值的时候完成不同的功能,使用了switch语句,这样程序的结构会比较清晰。

在主程序里面定义了以下几个变量:

unsigned char Key,InputCnt,LastOpt。

unsigned long Result,InputData。

变量Key用于暂存当前按下去的键值。

变量InputCnt用于存放输入数字的个数,当输入数字超过8个时就不能接收这个数字,并报警提示;

变量LastOpt用于存放前一次输入的运算类型。因为按下加、减、乘、除中某种运算的时候,计算器做的并不是当前的这种运算类型,而是前一次按下的运算类型。

变量Result用于存放运算的结果。由于计算器可以进行连续的多次运算,Result的值是会在每次运算之后改变的。

变量InputData用于保存输入的操作数,并作按下某种运算的按键后与Result的值进行相应的运算,把结果保存到Result里面。

2.主程序设计

程序的流程图如图3所示。

系统上电后首先进行系统初始化,对各个变量赋初值。然后调用按键函数,判断是否有键按下。若无按键按下则扫描数码管,接下来再次扫描按键。

若有按键按下,则会出现3种情况。第一种情况,按下的为数字键“0-9”,而且输入数字的位数InputCnt小于8的话,就把按下去的键值接收到变量InputData里面,更新一次显示缓冲区,让数码管显示输入的数字。如果InputCnt大于等于8,说明输入数字的位数已经达到最大不能再输入了,并发出报警提示;第二种情况,按下的键为“加、减、乘、除、等于”键,则根据LastOpt的取值把变量Result和InputData的值进行运算,并把结果存放到Result里面。同时更新一次显示缓冲区,让数码管显示运算的结果;第三种情况,按下的键为清零键“C”,则给各个变量重新赋初值,显示缓冲区清零,准备开始下一次计算。

3.子程序分析

在程序中调用了几个子函数,这几个子函数的逻辑关系如图4所示。

函数原型: void FillDispBuf(ulong a)

函数功能: 把ulong a这个数处理后存入显示缓冲区。若a没有超过8位十进制数的范围则把它拆分后直接存入显示缓冲区即全局数组DispBuf[8];若a超过这个范围则需要在数码管显示“Error”,因此需要把这几个字形的段码存入DispBuf[8]。

函数原型: uchar KeyBoard(void)

函数功能: 读取4×4行列式键盘的键值。若有按键按下则返回0- 15之间的某个键值,若无按键按下则返回21。

函数原型: void Display(void)

函数功能: 扫描8位数码管。全局数组uchar DispBuf[8]为显示缓冲区。本函数把数组DispBuf[8]里面的8个元素的数值在8个数码管上显示出来。

函数原型: void DelayMs(uint j)

函数功能: 延时N毫秒,参数 j 表示需要延时的时间为j毫秒。

在实验的过程中,只要把几个子函数的代码及相应功能告诉学生,学生就能在此基础上进行顶层代码的编写调试。如果学生时间充裕,也可自己编写以上几个子函数的代码。

三、计算器实物的制作及调试

本项目的设计内容在仿真软件中验证通过之后,就是实物电路的制作。电路图原理图和PCB图的设计在PROTEL99SE中完成。

本设计所需元件清单如表1所示。实验室为每个学生准备一套对应的元器件。

为了更好的让学生掌握单片机系统开发的流程,后续的实验有3种方式可以进行,每个学生可根据自己的实际情况选择。

A:学生可根据原理图和元件清单中的元器件,在万用板上自己焊接这个电路。直到电路调试成功,并下载程序运行。

B:学生可根据电路原理图绘制PCB电路板,并在实验中完成电路板的转印、腐蚀、钻孔等操作,然后焊接元器件并调试运行。

C:实验室通过专业的电路板工厂把“计算器项目”的PCB板加工出来。并且把此电路板及配套的元器件分发给学生焊接调试。统一生产出来的电路板及元器件套件如图5所示。

最终学生都能制作出一个调试成功的实物计算器。

通过对单片机课程设计新实验项目的实施,改变了本课程的教学组织形式,激发了学生的兴趣,增强了学生的动手能力。学生在完成“计算器设计”项目的过程中掌握了单片机系统的设计方法以及调试技巧。实践表明这样的方式收到了良好的效果,具有较大推广价值。

【参考文献】

[1]代芬,王卫星,邓小玲,等.单片机综合实验开发板设计[J].实验室研究与探索2010,29(8)

[2]林祥果.高职单片机课程设计与教学实践[J].宁波职业技术学院学报,2014,18(01)

[3]潘谈.基于STC89C58芯片的小型GPS船舶航迹仪的设计[J].船舶科学技术,20=14,36(12)

[4]袁芳,江伟,陈冬等.篮球比赛场地计时计分系统的设计[J].实验室研究与探索,2014,33(11)

[5]王海燕,杨艳华.Proteus和Keil软件在单片机实验教学中的应用[J].实验室研究与探索,201,31(5)

[6]包建华,张兴奎,丁启胜.模块化单片机实验系统的研制[J].电气电子教学学报,2010,32(6)

篇5:单片机课程设计撰写说明

1.摘要部门撰写说明

摘要部分主要是对整个设计(论文)内容的提炼,相当于一篇文章的中心思想,要让读者看了你的摘要后就能很快的获取你的设计(论文)的主体内容。常用的格式应该是:首先简单介绍一下所做课题的背景,然后介绍设计(论文)的主要工作,比如“设计(论文)对„„的硬件进行了设计,包括„„的设计,然后设计了系统的软件流程和程序源代码„„„,最后为了验证所设计的„„正确性,在proteus环境下建立了 „„的仿真模型,仿真结果表明本设计多设计的是正确的”

2.设计(论文)总体架构说明

整个设计(论文)的总体架构主要分为前言部分(或者设计任务及要求部分)、整体方案设计、硬件电路设计、软件设计、系统仿真及调试、设计总结等。前言部分是对所做课题的情况做一个简要的介绍(包括课题的意义、研究现状等),整体方案设计主要是根据设计任务书要求进行方案论证并确定设计方案,要给出整体方案框图并说明其工作原理。硬件电路设计应包括:单片机最小系统设计(时钟电路设计、电源电路设计、键盘显示电路设计、RAM/ROM扩展等)、A/D、D/A、放大电路、传感器信号处理电路等设计(没有此部分的电路无需设计)。软件设计主要包括软件流程图和程序源代码设计,要给出程序流程图(主程序流程图和各子程序图)和程序源代码。系统仿真及调试主要包括仿真软件(系统)的简介、仿真模型的建立、仿真模型的运行及仿真结果与分析。

3.设计(论文)格式

篇6:单片机课程设计说明书

一 课程设计的主要内容 1 设计思想 1.1硬件设计思想 1.1.1电路设计思想

电路原理图见图1,由动态数码显示组成时、分、秒的显示。把“单片机系统”区域中的P1.0-P1.7端口用8芯排线连接到“动态数码显示”区域中的A-H端口上;把“单片机系统:区域中的P3.0-P3.7端口用8芯排线连接到“动态数码显示”区域中S-S8端口上;“单片机系统”区域中的P0.0/AD0、P0.1/AD1、P0.2/AD2端口分别用导线连接到“独立式键盘”区域中的SP3、SP2、SP1端口上。

1.1.2键盘设计思想

键盘是微机的主要设备,按键的读取容易引起错误动作。可采用软件去抖动的方法处理,软件的触点在闭合和断开的时候会产生抖动,这时触点的逻辑电平是不稳定的,如不采取妥善处理的话,将引起按键命令错误或重复执行,在这里采用软件延时的方法来避开抖动,延时时间20ms.1.2软件设计思想

本系统的主程序主要完成时间显示和修改时间的功能。而时间单元进位,时间设定时,调定时间设定时等功能全部在中断服务程序中完成。

1.2.1数据与代码转换

由前述可知,从P2口输出位选码,从P0口输出段选码,LED就会显示出数字来。但P0口的输出的数据是要BCD码,各存储单元存储的是二进制数,也就是和要显示出的字符表达的含义是不一致的。可见,将要显示的存储单元的数据直接送到P0口去驱动LED数码管显示是不能正确表达的,必须在系统内部将要显示的数据经过BCD码行转换后,将各个单元数据的段选代码送入P0口,给CD4511译码后去驱动数码管显示。具体转换过程如下:

我们先将要显示的数据装入累加器A中,再将A中的数据转换成高低两位 的BCD码,再放回A中,然后将A中的值输出。如:有一个单元存储了45这样一位数,则需转换成四位的BCD码:(0100)(0101)然后放入A中。A中BCD码,高位四位代表¡4¡低四位代表¡5¡同时送给两个译码器中,译码后¡ 45¡ 字就在两个LED中显示出来。

1.2.2计时功能的实现与中断服务程序

时间的运行依靠定时中断子程序对时钟单元数值进位调整来实现的。计数器T0打开后,进入计时,满100毫秒后,重装定时。中断一次,满一秒后秒进位,满60秒后即为1分钟,分钟单元进位,60分到了后,时单元进位。得到时、分、秒存储单元的值,并经译码后,通过扫描程序送LED中显示出来,实现时钟计时功能。累加是用指令INC来实现的。进入中断服务程序以后,执行PUSH PSW和PUSH A将程序状态寄存器PSW的内容和累加器A中的数据保存起来,这便是所谓的¡ 保护现场¡.以保护现场和恢复现场时存取关键数据的存储区叫做堆栈。在软件的控制之下,堆栈可在片内RAM中的任一区间设定,而堆栈的数据存取与一般的RAM存取又有区别,对它的操作,要遵循¡ 后进先出¡ 的原则。

1.2.3时间控制功能与比较指令

系统的另一功能就是实现对执行设备的定时开关控制,其主要控制思想是这样的:先将执行设备开启的时间和关闭时间置入RAM某一单元,在计时主程序当中执行几条比较指令,如果当前计时时间与执行设备的设定开启时间相等,就执行一条CLR指令,将对应的那路P3置为高电位,开启;如果当前计时时间与执行设备设定的关闭时间相等,就执行SETB对应的P3置低电位,二极管截止。实现此控制功能用到的比较指令为CJNE A,#direct,rel,其转移条件是累加器A中的值与立即数不等则转移。

二 课程设计的目的

实现的功能:

①开机时,电子钟从12:00:00开始自动计时。②设置按键,能对时、分、秒进行调整。

三设计方案的论证

3.1电路原理与电路图 3.1.1电路原理

电路原理图见图1,由动态数码显示管组成时、分、秒的显示。P0口的8条数据线P0.0至P0.7分别与两个CD4511译码的ABCD口相接,P2口的P2.0至P2.2分别通过电阻R10至R13与VT1至VT3的基极相连接。这样通过P0口送出一个存储单元的高位、低位BCD显示代码,通过P2口送出扫描选通代码轮流点亮LED1至LED6,就会将要显示的数据在数码管中显示出来。从P0口输出的代码是BCD码,从P2口输出的就是位选码。这是扫描显示原理。

电路原理图

C130pFU1X119CRYSTAL18XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD*********617S-0S-1S-2S-3S-4S-5S-6S-7C230pFXTAL2R210kR310kR410kR110k9RSTC310uF293031PSENALEEARP1987654321RESPACK-***78P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C51时分秒S-7S-6S-5S-4S-3S-2S-1S-001234567

图 1 电路原理图

3.2 流程图与算法描述 3.2.1流程图

3.3软件设计

SECOND

EQU 30H;MINITE EQU 31H;HOUR

EQU 32H;HOURK

BIT P0.2 MINITEK BIT P0.1 SECONDK BIT P0.0 DISPBUF EQU 40H DISPBIT EQU 48H 流程图

秒寄存器

分寄存器

時寄存器 图

T2SCNTA

EQU 49H

T2SCNTB EQU 4AH TEMP

ORG 00H;

程序执行开始EQU 4BH 地址

LJMP

START;

执行

ORG

0BH;T0

LJMP

INT_T0;

;主程序

START: MOV

SECOND,#00H;

得单元

MOV

MINITE,#00H

MOV

HOUR,#12

MOV

DISPBIT,#00H

MOV

T2SCNTA,#00H

MOV

T2SCNTB,#00H

MOV

TEMP,#0FEH

LCALL

DISP;

子程序

MOV

TMOD,#01H

MOV

TH0,#(65536-2000)/ 256;

MOV

TL0,#(65536-2000)/ 256

SETB

TR0;

SETB

ET0;

SETB

EA;

WT:

跳转到标号START

中断程序入口

跳至IN-T0执行

清0存放秒分时值

在2KB范围内长调用 显示2毫秒

允许TO中断

开启T0定时器

总中断开放

按键扫描子程序及校时调整

JB

SECONDK, NK1;SECONDK为1(sp1建按下)时跳到

LCALL

DELY10MS

JB

SECONDK,NK1

INC

SECOND;

对计数器加1

MOV

A,SECOND

CJNE

A,#60, NS60;沒到60秒返回,到60秒清0;判断计数器是否满59

MOV

SECOND,#00H NS60:

LCALL

DISP

JNB

SECONDK,$;

NK1: JB

MINITEK,NK2;

LCALL

DELY10MS

JB

MINITEK,NK2;

INC

MINITE

MOV

A,MINITE

CJNE

A,#60, NM60

MOV

MINITE,#00H NM60:

LCALL DISP

JNB

MINITEK, $;

NK2:

JB

HOURK,NK3

LCALL

DELY10MS

JB

HOURK,NK3

INC

HOUR

MOV

A, HOUR

CJNE

A, #24,NH24

MOV

HOUR,#00H

不满60秒就循环执行 分控制键按下时跳转

分控制键按下时跳转

不满60分就循环执行

NH24:

LCALL

DIS

JNB

HOURK,$;

不满24小时就循环执行

NK3 LJMP

WT DELY10MS:;

延时1毫秒的子程序

MOV D1:

MOV

;显示子程序

DISP:

;

地址

MOV

ADD

DEC

MOV

MOV

MOV

DIV

MOV

DEC

MOV

MOV

DEC

MOV

MOV

DEC

MOV R6, #10 R7, #248 DJNZ

R7, $ DJNZ

R6, D1 RET

A, #DISPBUF;

A, #8 A R1, A A, HOUR;

B, #10;

AB @R1, A;

R1 A, B @R1, A R1;A, #10 @R1, A R1 A, MINITE;

将得出的时间存入40H(DISPBUF)之后的将temp中的十六进制数转换成10进制 時送A

10进制/10=10进制 累加器送内部RAM单元

分送A

MOV B, #10

DIV

AB;

十進制調整

MOV @R1, A

DEC

R1

MOV

A, B

MOV

@R1, A

DEC

R1

MOV

A, #10

MOV

@R1,A

DEC

R1

MOV

A, SECOND;

MOV

B, #10

DIV

AB;

MOV @R1, A

DEC

R1

MOV A, B

MOV @R1, A

DEC

R1

RET INT_T0:;T0

MOV TH0,#(65536-2000)/ 256;

MOV TL0,#(65536-2000)/ 256

MOV A, #0FFH

MOV P3, A

MOV A, #DISPBUF

ADD

A, DISPBIT;

MOV R0, A

MOV A, @R0;

MOV DPTR, #TABLE;

MOVC A,@A+DPTR;

秒送A

十进制调整 TIME子程序 2毫秒 地址加,并将时间的各位送到p1 取显示数据到A 取段码表地址

查显示数据对应段码

中断服务子程序,即计时

MOV

P1, A;

分十位送P1口显示

MOV

A, DISPBIT

MOV

DPTR, #TAB;

表地址送数据指针

MOVC A,@A+DPTR

MOV

P3, A

INC

DISPBIT

MOV A, DISPBIT

CJNE A, #08H, KNA

MOV

DISPBIT, #00H KNA:

INC

T2SCNTA;

MOV A, T2SCNTA

CJNE

A, #100, DONE

MOV T2SCNTA, #00H

INC T2SCNTB

MOV A, T2SCNTB

CJNE A, #05H, DONE

MOV T2SCNTB,#00H

INC

SECOND;秒加一

MOV A, SECOND;

CJNE A, #60, NEXT;

MOV SECOND, #00H;

INC

MINITE;分加1

MOV A, MINITE;

CJNE A, #60, NEXT;

MOV

MINITE, #00H;

INC

HOUR;

時加1

MOV A, HOUR

CJNE A, #24, NEXT;

MOV

HOUR, #00H

时间的增加与进位 到60秒了吗? 到60秒清0 到60分了吗? 到60分清0 到24小時了吗?

NEXT:

LCALL

DISP DONE:

RETI TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,40H TAB:

DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07F

四 系统调试

系统由AT89C51、SEG数码管、按键、电容、晶振、电阻等部分构成,能实现时间的调整、时间校对、定时时间的设定,输出等功能。系统的功能选择由按键‘时’、‘分’、‘秒’、完成。开机时,显示12:00:00的时间开始计时;按键P0.0/AD0控制“秒”的调整,每按一次加1秒;P0.1/AD1控制“分”的调整,每按一次加1分;P0.2/AD2控制“时”的调整,每按一次加1个小时;系统的主程序主要完成时间显示和定时输出判断功能。而时间单元进位,时间设定时,调定时间设定时等功能全部在中断服务程序中完成。该电子钟的精确度在仿真软件中效果良好。

五 心得体会

计算机控制技术是一门很综合的课程。任何一个计算机系统都是一个复杂的整体,学习计算机控制技术是要涉及到整体的每一部分。讨论某一部分原理时又要涉及到其它部分的工作原理。这样一来,不仅不能在短时间内较深入理解计算机的工作原理,而且也很难孤立地理解某一部分的工作原理。所以,在循序渐进的课堂教学过程中,我总是处于“学会了一些新知识,弄清了一些原来保留的问题,又出现了一些新问题”的循环中,直到课程结束时,才把保留的问题基本搞清楚。

学习该门课程知识时,其思维方法也和其它课程不同,该课程偏重于工程思维,灵活知识运用,具体地说,在了解了计算机编程后,剩下的是如何将它们用于实际系统中,其创造性劳动在于如何用计算机的有关技术和厂家提供的各种芯片,设计实用的电路和系统,再配上相应的应用程序,完成各种实际应用项目。

这次课程设计较为综合,主要的困难来自对程序的编写和校对,功夫不负有心人,经过我的虚心求学和查找资料,最终对实验的原理有了较清晰的认识。但是仍然存在很多的不足,今后需要加强的地方还是很多,所以在今后的求学路上我会更加努力。望老师批评改正。

六 参考文献:

上一篇:小学生课外双语阅读书目下一篇:沙发厂木工管理制度