单片机课程设计指导书

2022-11-02

第一篇:单片机课程设计指导书

单片机课程设计指导书(4学分)

单片机应用

课程设计指导书

中原工学院信息商务学院信息工程系

2014年5月

课程名称:单片机应用课程设计 适用对象:自动化,电气,测控,机自 学分:4学分

先修课程:电子技术,单片机应用与接口技术

一、课程设计目的:

大学本科学生动手能力的培养和提高是大学本科教育的一个重要内容。如何让学生在学好基础知识的同时,迅速掌握应用技术,实验与课程设计环节起着非常重要的作用。本课程设计的目的,是让电子信息类(自动化,电气,测控)及相关专业学生通过课程设计,首先建立起单片机应用系统的概念,根据实际的系统设计要求,掌握初步的单片机系统设计方法,从硬件系统和软件系统设计两个方面得到实际的提高,为今后的毕业设计和就业打下良好的基础。

二、课程设计基本要求

1、全体学生集中,介绍和说明本次综合课程设计的目的、实施方法和要完成的任务内容;

2、组织学生购买或印刷本次综合课程设计相关参考资料;

3、介绍51单片机相关知识,给出单片机最小系统,引导学生进行扩展设计和应用;

4、以具体任务为主线和示例,并以一边讲解一边实践操作的方式,引导学生学习和掌握单片机高级开发语言C51和单片机仿真软件PROTEUS的基本使用方法。以PROTEUS仿真建立虚拟硬件运行为主,要求学生完成规定的公共学习项目。

5、安排学生根据自己的兴趣和意愿进行选题,并据此分好各个选题组。在学生培训的同时,指导学生开始设计自己所选题目的原理图和印制板图。

6、运用51系列单片机,根据设计要求用Protel绘制系统电路图;

7、编制系统程序流程图、根据系统程序流程图编制C语言程序;

8、运用仿真软件proteus进行运行调试;

9、焊接制作电路板,硬件焊接3-4人一组;

10、硬件电路调试;

11、认真编写课程设计报告,课程设计报告的书写格式见附录。

三、课程设计题目安排:

设计题目一:DS18B20数字温度计

【题目描述及要求】

设计一个基于单片机的DS18B20数字温度计。课程设计要求:

1. 9V供电;

2. 温度采集采用DS18B20; 3. 4位LED显示; 4. 4个按键;

5. 设计温度控制器原理图,学习用PROTEL画出该原理图,并用proteus进行

仿真;设计和绘制软件流程图,用C语言进行程序编写;焊接硬件电路,进行调试。

设计题目二:基于单片机的工业产品自动计数器

【题目描述及要求】

掌握光电传感器的使用方法;掌握利用单片机制作一种简单工业生产线计数

系统。设计要求:

1、数码管可以显示产品个数(0-99),自由设定产品报警个数(比如 产品数目是8的个数时,发出报警(蜂鸣器响)。

2、独立设计电路,应包括单片机小系统、红外光电开关、数码管显示部分。

8),当

四、时间安排计划:

时间安排:共计4周

1、 硬件原理图、PCB检查时间:第一周周四/第三周周四;

2、proteus仿真结果检查时间:第二周周四/第四周周三;

3、设计报告上交时间:第四周周五;

4、检查地点:1228

5、报告上交地点:信息工程系办公室3423;

五、评分标准

1.设计方案新颖,有独到之处,且可实现性强; 2.逻辑严密,分析透彻,计算到位。

3.实验过程中认真投入,对老师提问的问题能够流利回答。 4.最后验证效果良好。

5.设计论文编写完整、条理分明、排版工整、符合格式要求。

课程设计应由学生本人独立完成,严禁抄袭(对自己的设计不熟悉,读不懂设计中的关键功能部分,对设计的结构不清楚,对设计的功能不了解等),一经验收教师认定其抄袭行为,成绩即为不及格。

附录 课程设计报告书写格式要求

为了培养学生严谨的工作态度,锻炼学生编写文档的能力,要求实验报告包括下面主要部分:

1、目录

2、课程设计功能描述

3、课程设计分析设计

4、绘制硬件电路图(用Protel软件)并对硬件电路进行说明;

5、绘制软件流程图(用VISIO软件)并对软件流程进行说明;

6、程序的源代码清单;

7、上机调试运行结果及分析;

8、课程设计经验教训总结,设计心得体会;

9、参考文献;

注意:

1、课程设计报告不得少于30页。

2、课程设计报告封面应该按照下面的要求。

第二篇:单片机课程设计课程设计目录

目录

摘要............................... 1

Abstract .......................... 2

一、实验目的........................ 3

二、设计要求与内容 .................... 3

2.1设计要求 .......................... 3

2.2设计内容 .......................... 3

三、设计及原理 .................... 4

3.1 总体方案设计 ......................... 4

3.1.1 设计思路 .................... 4

3.1.2 总电路框图 ....................... 4

3.2 各模块设计方案及原理说明 .................. 5

3.2.1 抢答显示模块 .................... 5

3.2.2 倒计时电路 ....................... 7

3.2.3硬件模块方案..................... 8

3.2.4计分器的电路设计..................... 8

3.2.5抢答器的电路设计................... 10

四、软件设计.......................11

4.1 程序流程 ........................11

五、电路仿真............... 错误!未定义书签。

5.1 抢答电路 ................ 错误!未定义书签。

5.2 倒计时电路 .................... 错误!未定义书签。

六、收获、体会和建议............... 错误!未定义书签。

附录............................. 19

第三篇:单片机课程论文设计-电子钟课程设计

单片机课程论文设计 ——电子钟

一 课程设计的主要内容 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/AD

1、P0.2/AD2端口分别用导线连接到“独立式键盘”区域中的SP

3、SP

2、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/RD393837363534333221222324252627281011121314151617S-0S-1S-2S-3S-4S-5S-6S-7C230pFXTAL2R210kR310kR410kR110k9RSTC310uF293031PSENALEEARP1987654321RESPACK-80123456712345678P1.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

2 流程图

秒寄存器

分寄存器

時寄存器 图

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

四 系统调试

系统由AT89C

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

五 心得体会

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

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

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

六 参考文献:

[1].潘新民,王燕芳编著.微型计算机控制技术[M].北京:电子工业出版社,2003 [2].何立民.单片机应用技术选编(1)[M].北京:北京航空航天大学出版社,1995,6 [3].刘国荣,梁景凯.计算机控制技术与应用[M] .北京:机械工业出版社,1999,5 [4].齐维毅,丁言镁,齐振国.单片机原理及应用设计实验[M] .沈阳:辽宁大学出版社,2006,5 [5].李华.MCS-51系列单片机实用接口技术[M].北京:北京航空航天大学出版社,1993,8 [6].潘新民,王燕芳编著.单片微型计算机实用系统设计[M].北京:人民邮电出版社,1992

第四篇:单片机课程设计

---------

机电汽车工程学院

同组成员:(机091-1) 姓名(学号):

第五篇:单片机课程设计

中北大学单片机原理及接口技术课程设计说明书

1 绪论

电子钟已成为人们日常生活中必不可少的物品,广泛用于个人、家庭以及车站、影院、办公室等公共场所,给人们的生活、学习、工作带来了极大的方便。随着电子技术的发展,人们已不再满足于钟表原先最简单的报时,希望出现一些新的功能,诸如日历的显示、闹钟的非接触式止闹、秒表功能、重要日期倒计时显示等,以带来更大的方便,而所有这些,又都是以数字化的电子时钟为基础的。因此,研究数字电子钟及其扩展应用,有着非常现实的意义和实用价值。

单片机是指将微处理器、一定容量的RAM和ROM以及I/O口、定时器等电路集成在一块芯片上的完整计算机系统。89C51单片机是一种低功耗、高性能的,它采用CMOS工艺和高密度非易失性存储器(NURAM)技术,其输出引脚和指令系统都与MCS-51兼容;片内的Flash ROM允许在系统内改编程序或用常规的NURAM编程器来编程。因此,89C51是一种功能强、灵活性高,而且价格合理的单片机,可以方便的利用AT89C51定时器和6位7段数码管,设计一个电子时钟。显示格式位 “XX XX XX”,从左向右分别是:时、分、秒。 1.1 设计目的

利用MCS-51芯片及相关芯片设计数字钟。 1.2 设计内容 1)硬件设计

设计数字钟的电路原理图,用PROTEUS绘制硬件电路。制作实物。 2)软件设计

(1)时、分、秒的设置及显示; (2)画出程序框图; (3)调试与分析。用PROTEUS仿真。

第 1 页

共1 页 中北大学单片机原理及接口技术课程设计说明书

2 硬件设计

2.1 设计的总体思路

硬件系统主要由单片机最小应用系统、LED数码管显示模块、晶振模块、按键模块等组成。在使用单片机的过程中必定会使用单片机的最小系统,由于我购买的单片机内部没有晶振,所以设计了外接的晶振模块。鉴于本次课程设计要求制作数字钟,所以使用了六位7段数码管来显示“XX XX XX”,从左向右分别是:时、分、秒。除了能上电复位,还设计了用三个按键实现时、分、秒的调制,使用方便灵活。 2.2 单片机最小系统

对51系列单片机来说,单片机+晶振电路+复位电路,便组成了一个最小系统。见图2.1。

图2.1 2.3 晶振模块

在AT89C51芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1(19脚),输出端为引脚XTAL2(18脚)。而在芯片内部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器。时钟电路产生的振荡脉冲经过触发器进行二分频之后,才成为单片机的时钟脉冲信号。见图2.2。

第 2 页

共2 页 中北大学单片机原理及接口技术课程设计说明书

图2.2 2.4 按键模块

用三个按键实现对时分秒的设置,其中一个按键实现对时分秒的控制,接P1.4口,另外两个按键接单片机的P1.5和P1.6口实现加一和减一的功能。 2.5 LED数码管显示模块

本次课程设计由于要显示时、分、秒,所以采用广泛使用的数码管动态显示接口。动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是哪个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。

将数码管的位选信号接P2口的六个位,段选信号接P0口的八个位。再通过Keil软件以及51C语言编程实现数字钟的功能。本系统利用6位LED数码管显示时间,共阴极结构,当要显示某个数字时只要将数字所对应的引脚送入低电平。 2.6 硬件连接图

通过对设计电路的各个模块的分析,可以用PROTEUS绘制硬件电路。如图2.3所示。

第 3 页

共3 页 中北大学单片机原理及接口技术课程设计说明书

图2.3 2.7制作实物

(见附录A)

第 4 页

共4 页 中北大学单片机原理及接口技术课程设计说明书

3 软件设计

单片机最主要的功能是通过程序来实现各种功能,有了硬件的描述,再加上软件的编程,通过不断的调试与修改程序就能实现本次课程设计的目的。 3.1 程序流程图

系统总的流程图,见图3.1。

图3.1 3.2 调试与分析

由于在焊接实物之前,我大量查阅了资料,弄明白了此次课程设计任务的基本原理,对原理有了基本的认识后,就开始了焊接工作。虽然焊接花费了我大量的时间,但是在焊好以后上电时,所有的数码管都亮,说明焊接连线没有短路情况。

硬件连接好以后就是软件编程,但是编写程序中遇到了挺多问题,比如:编写程序是没有消除抖动。在同学的帮助下,使得数码管能正常实现数字钟的功能。 3.3 源程序

(见附录B)

第 5 页

共5 页 中北大学单片机原理及接口技术课程设计说明书

4 心得与结论

本次课程设计以AT89C51为核心部件,实现时间的设置功能。通过六位7段数码管显示可方便地校对时间,利用Keil软件编程完成时钟的功能。

通过实物的焊接以及软件的仿真和编写程序基本完成了数字电子钟的功能,尽量做到了硬件电路简单稳定,减小电磁干扰和其它环境干扰,充分发挥了软件编程的优点,减小了因器件精度不够引起的误差。由于时间有限和本身知识水平的局限,我认为此次设计还有需要改进和提高的地方,例如选用更高精度的元器件,硬件电路更加精确稳定等。

第 6 页

共6 页 中北大学单片机原理及接口技术课程设计说明书

参考文献

[1] 杨文龙.单片机原理及应用[M].西安电子科技大学出版社,1993. [2] 李朝青.单片机原理及接口技术[M].北京航空航天大学出版社,2003. [3] 胡汉才.单片机原理及系统设计[M].清华大学出版社,2003. [4] 杨忠煌,黄博俊,李文昌.单芯片8051实务与应用[M].中国水利水电出版社,2001. [5] 王守中,51单片机开发入门与典型实例[M].人民邮电出版社. [6] 黄文梅.系统分析与仿真:MATLAB语言及应用[M].国防科技大学出版社,1999. [7] 阎石.数字电子技术(第五版)[M].北京高等教育出版社,2006. [8] 蔡明文,冯先成.单片机课程设计[M].华中科技大学出版社,2007. [9] 陈明萤.8051单片机课程设计实训材料[M].清华大学出版社,2004. [10] 李可为.数字钟电路及应用[M].电子工业出版社,1996. [11] 夏继强,沈德金.单片机实验与实践教程

(二)[M]北航出版社,2001. [12] 张红润,蓝清华.单片机应用技术教程[M]清华大学出版社,1997. [13] 周立功.单片机实验与实践[M]北京航空航天大学出版社,2004. [14] 何立民.单片机应用文集

(一)[M].北京航空航天大学出版社,1991. [15] 方大千,鲍俏伟.使用电子控制电路[M].国防科技出版社,2003. [16] 曾繁泰.EDA工程概论[M].清华大学出版社,2002. [17] 谭会生,张昌凡.EDA技术及应用[M].西安电子科技大学出版社,2004. [18] 李强.键盘接口程序计数[J].电子设计出版社,2003. [19] 肖来胜.单片机技术实用教程[M].华中科技大学出版社,2004. [20] 杨晓川.Portel设计指导教程[M].清华大学出版社,2003.

第 7 页

共7 页 中北大学单片机原理及接口技术课程设计说明书

致谢

首先,很感谢学院给我们电气工程及其自动化专业的学生一次把理论加深的机会,使得我们更好的理解《单片机原理及接口技术》这门课程,通过实物的焊接以及软件仿真使得自己的动手能力有了一定的提高;其次,虽然这次课程设计是每个人制作一个实物,但是大家一起讨论,分析,最终调试成功,使大家的思维更加开阔;最后,感谢余老师的研究生给予我们焊接工具的支持。

第 8 页

共8 页

中北大学单片机原理及接口技术课程设计说明书

附录A

制作的实物照片

第 9 页

共9 页 中北大学单片机原理及接口技术课程设计说明书

附录B

源程序清单 #include #define uint unsigned int #define uchar unsigned char uint hhh,mmm,sss; uint status; //函数声明

void delayMS(uint t) ; void keyprocess(unsigned char key); void display(); void timer0(); main() //主函数 { ucharsegcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//0,1,2,3,4,5,6,7,8,9 uchar dispbit[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};//数码管位选码 buffer[]={0,0,0,0,0,0,0,0}; bit keyrel; uchar buf; uchar keyin; keyrel=1; buf=0xff; TMOD=0x01; //T0工作在方式1,16位计数器 TH0=(65536-1000)/256;// 定时器0设置延时1ms中断初始值 TL0=(65536-1000)%256; TR0=1; IE=0x82; //开定时器0中断

第 10 页

共10 页 中北大学单片机原理及接口技术课程设计说明书

status=0; //延时函数

void delayMS(uint t) // 晶振频率12MHZ { uint i;

while(t--)

for(i=0;i<125;i++); } while(1) //键扫描程序

{ keyin=P1&0xf0; if(keyin!=0xf0) {

delayMS(10);

if(keyin!=0xf0)

{

if(keyrel==1)

{

keyrel=0;

buf = keyin;

}

else

{ keyrel=1; keyprocess(buf); //

buf = 0xff; } } else

用来暂时存放键值

调用按键处理函数

第 11 页共11 页 //buf

中北大学单片机原理及接口技术课程设计说明书

{

keyrel=1; keyprocess(buf); buf=0xff; } display(); } } //按键处理函数

void keyprocess(unsigned char key) //键值处理,正常计时,设置时分秒 { switch (key) { case 0xe0:status++; //按下设置键 if (status>=4) status = 0;

break; case 0xd0:switch(status) //按下加1键,3种模式下加1

{

case 0x01:if(hhh<24) hhh++;

else hhh=0; break; case 0x02:if(mmm<60) mmm++;

else mmm=0; break; case 0x03:if(sss<60) sec++;

else sss=0; break; } break; case 0xb0:switch(status) //按下减1键 { case 0x01:if(hhh>0) hhh--;

else hour=23; break;

第 12 页

共12 页 中北大学单片机原理及接口技术课程设计说明书

case 0x02:if(mmm>0) mmm--;

else min=59; break;

case 0x03:if(sss>0) sss--;

else sss=59; break;

} break; default:break; } } //数码管显示函数 void display() { uchar i;

//正常计时显示

{

buffer[0]=hhh/10; // 显示时的十位

buffer[1]=hhh%10 // 显示时的个位

buffer[2]=mmm/10; // 显示分的十位

buffer[3]=mmm%10; // 显示分的个位

buffer[4]=sss/10; // 显示秒的十位

buffer[5]=sss%10; // 显示秒的个位

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

{

P0=segcode[buffer[i]];

P2=dispbit[i];

delayMS(1); //防止数码管显示的时候闪动

P2=0xff; //

P0=0xff;

}

第 13 页共13 页

中北大学单片机原理及接口技术课程设计说明书

} } //定时器0中断函数

void timer0() interrupt 1 using 2 { static uint count; TH0=(65536-1000)/256; // 定时器0设置初始值1ms中断初始值 TL0=(65536-1000)%256; TR0=1; count++; //正常计时

if(count>=1000) // 定时 1S 到,以下为时钟的正常走钟逻辑 { count=0; sss++; if(sss>60) { sss=0; mmm++; if(mmm>60) { mmm=0; hhh++; if(hhh>24) { hhh=0; }

} } }

}

第 14 页共14 页

上一篇:大气污染综合治理方案下一篇:单亲家庭健康教育问卷

本站热搜