《单片机课程设计》报告格式20xx_10481

《单片机原理及应用课程设计》报告

——X X X X X X设计

    业:                       

    级:                          

    名:                          

    号:                       

  20131 

1.课程设计目的

1.1巩固和加深对单片机原理和接口技术知识的理解;

1.2培养根据课题需要选学参考书籍、查阅手册和文献资料的能力;

1.3学会方案论证的比较方法,拓宽知识,初步掌握工程设计的基本方法;

1.4掌握常用仪器、仪表的正确使用方法,学会软、硬件的设计和调试方法;

1.5能按课程设计的要求编写课程设计报告,能正确反映设计和实验成果,能用计算机绘制电路图和流程图。

2.课程设计要求

2.1 XXXXXXXXXXXXXXXX

2.2 XXXXXXXXXXXXXXXX

?????

3.硬件设计

3.1 设计思想?????

3.2主要元器件介绍?????

3.3 原理图及功能电路介绍?????

?????

4.软件设计

4.1 设计思想?????

4.2软件流程图?????

4.3 源程序?????

?????

5. 调试运行

5.1 XXXXXXXXXXXXXXXX

5.2 XXXXXXXXXXXXXXXX

?????

6.设计心得体会

参考书目

[1] 肖金球. 单片机原理与接口技术.[M].北京:清华大学出版社,2004.12

[2]………………………………………………………………………..

?????

参考题目

题目1  智能电子钟(LCD显示)

设计要求:

以AT89C51单片机为核心,制作一个LCD显示的智能电子钟:

(1) 计时:秒、分、时、天、周、月、年。

(2) 闰年自动判别。

(3) 五路定时输出,可任意关断(最大可到16路)。

(4) 时间、月、日交替显示。

(5) 自定任意时刻自动开/关屏。

(6) 计时精度:误差≤1秒/月(具有微调设置)。

题目2  电子时钟(LCD显示)

设计要求

以AT89C51单片机为核心的时钟,在LCD显示器上显示当前的时间:

使用字符型LCD显示器显示当前时间。

显示格式为“时时:分分:秒秒”。

用4个功能键操作来设置当前时间。功能键K1~K4功能如下。

l  K1—进入设置现在的时间。

l  K2—设置小时。

l  K3—设置分钟。

l  K4—确认完成设置。

程序执行后工作指示灯LED闪动,表示程序开始执行,LCD显示“00:00:00”,然后开始计时。

题目3  秒表

设计要求

用AT89C51设计一个2位的LED数码显示作为“秒表”:显示时间为00—99秒,每秒自动加1,另设计一个“开始”键和一个“复位”键。

题目4  定时闹钟

设计要求

使用AT89C51单片机结合字符型LCD显示器设计一个简易的定时闹钟LCD时钟,若LCD选择有背光显示的模块,在夜晚或黑暗的场合中也可使用。

定时闹钟的基本功能如下:

显示格式为“时时:分分”。

由LED闪动来做秒计数表示。

一旦时间到则发出声响,同时继电器启动,可以扩充控制家电开启和关闭。

程序执行后工作指示灯LED闪动,表示程序开始执行,LCD显示“00:00”,按下操作键K1~K4动作如下:

(1) K1—设置现在的时间。

(2) K2—显示闹钟设置的时间。

(3) K3—设置闹铃的时间。

(4) K4—闹铃ON/OFF的状态设置,设置为ON时连续三次发出“哗”的一声,设置为OFF发出“哗”的一声。

设置当前时间或闹铃时间如下。

(1) K1—时调整。

(2) K2—分调整。

(3) K3—设置完成。

(4) K4—闹铃时间到时,发出一阵声响,按下本键可以停止声响。

本项目的难点在于4个按键每个都具有两个功能,以最终实现菜单化的输入功能。

题目5  基于数字温度传感器的数字温度计

设计要求

利用数字温度传感器DS18B20与单片机结合来测量温度。利用数字温度传感器DS18B20测量温度信号,计算后在LED数码管上显示相应的温度值。其温度测量范围为?55℃~125℃,精确到0.5℃。数字温度计所测量的温度采用数字显示,控制器使用单片机AT89C51,测温传感器使用DS18B20,用3位共阳极LED数码管以串口传送数据,实现温度显示。

题目6  十字路口交通灯控制

设计要求

设计一个十字路口交通灯控制器。用单片机控制LED灯模拟指示。模拟东西方向的十字路口交通信号控制情况。东西向通行时间为80s,南北向通行时间为60s,缓冲时间为3s。

工作原理

本项目为典型的LED显示和中断定时电路。利用定时器T0产生每10ms一次的中断,每100次中断为1s。对两个方向分别显示红、绿、黄灯,已经相应的剩余时间即可。值得注意的是,需要意识到,A方向红灯时间=B方向绿灯时间+黄灯缓冲时间这一常识。

推荐本项目使用MAX7219芯片。

题目7  数字电压表设计

设计要求

以单片机为核心,设计一个数字电压表。采用中断方式,对2路0~5V的模拟电压进行循环采集,采集的数据送LED显示,并存入内存。超过界限时指示灯闪烁。

工作原理

本题目本质上是以单片机为控制器,ADC0809为ADC器件的AD转换电路,设计要求的电压显示,是对ADC采集所得信号的进一步处理。

为得到可读的电压值,需根据ADC的原理,对采集所得的信号进行计算,并显示在LED上。本项目中ADC0809的参考电压为+5V,根据定义,采集所得的二进制信号addata所指代的电压值为:

而若将其显示到小数点后两位,不考虑小数点的存在(将其乘以100),其计算的数值为:

 

将小数点显示在第二位数码管上,即为实际的电压。

本示例程序将1.25 V和2.5 V作为两路输入的报警值,反映在二进制数字上,分别为0x40和0x80。当AD结果超过这一数值时,将会出现二极管闪烁和蜂鸣器发声。

题目8  节日彩灯控制器的设计

设计要求

以单片机为核心,设计一个节日彩灯控制器:

l  P1.2—开始,按此键则灯开始流动(由上而下)。

l  P1.3—停止,按此键则停止流动,所有灯为暗。

l  P1.4—上,按此键则灯由上向下流动。

l  P1.5—下,按此键则灯由下向上流动。

实验原理

  本题目本质上是由按键控制功能的流水灯,LED工作的方式通过键盘的扫描实现。其中的LED采取共阳极接法,通过依次向连接LED的I/O口送出低电平,可实现题目要求的功能。

题目9  单片机双机之间的串行通信设计

设计要求

两片单片机利用串行口进行串行通信:串行通信的波特率可从键盘进行设定,可选的波特率为1200、2400、4800和9600bit/s。串行口工作方式为方式1的全双工串行通信。

实验原理

两个单片机之间进行通讯波特率的设定,最终归结到对定时计数器T1计数初值TH1、TL1进行设定。故本题目本质上是通过键盘扫描得到设定的波特率,从而载入相应的T1计数初值TH1、TL1实现的。示例程序中将0xaa从主机传输到从机,并显示在从机的数码管上实现串口通讯的验证。

如串口通讯线路过长,可考虑采用MAX232进行电平转换,以延长传输距离。值得注意的是,为了减少计算载入初值时的误差,本项目最好采用11.0592MHz的晶振。

 

第二篇:单片机课程设计报告格式洗衣机

电气工程学院

一、课程设计任务书            

1.设计内容

1)以89C51单片机为核心器件组成控制器,采用定时中断实现精确时间定时;用A/D转换对水温进行检测。

2)利用提供的单元模块构成硬件系统。

2.设计要求要求:

1)基本功能:

使用6位LED显示器,4位用来显示时间;显示格式为“分分秒秒”;2位显示温度值,4个键组成键盘,可设置洗衣机整个工作过程中各段时间,热加热温度设定。按键启动、停止等。

键盘:功能键、移位键、加1键、启动/停止键。

2)扩展功能:

增加定时启动功能。

3. 课程设计报告要求                            

1)自行设计系统硬件结构,硬件图纸要求B5图纸打印;图纸符合电气规范、美观。

2)编写系统程序,要求程序书写规范,功能完全;

3)书写报告,3千字左右,报告按照设计过程来进行撰写,文后需要附系统硬件原理图一份。

4)课程设计总结(可包括课程设计过程中的收获、体会及对该课程设计的意见、建议等)。

5)参考图书及文献清单。

3、参考资料

[1]李广弟,朱月秀,王秀山编著.单片机基础. 北京:北京航空航天大学出版社,2001

[2] 何立民编著.MCS-51系列单片机应用系统设计系统配置与接口技术.北京:北京航空航天大学出版社,1999

[3] 蔡美琴等编著.MCS-51 单片机系统及应用.北京:高等教育出版社.1992

4.设计进度(20##614627

5.设计地点

新实验楼 308、313

二、评语及成绩

成绩:

指导教师:


单片机课程设计报告

班    级:  自0856          

姓    名:    郜辉     

学    号:     24    

指导教师:    唐耀武     

撰写日期:     20##-7-6    


目  录

第一章 课程设计内容与要求分析......................... 1

1.1课程设计内容................................... 1

1.2课程设计要求分析............................... 1

1.2.1系统单元电路组成.......................... 1

        1. 2. 2 加热器的工作原理 …… ……………………………….1

              1 .2 .3 显示接口的设计……………………………………1

       1. 2. 4 键盘接口的设计…………………………………... 2

       1. 2. 5 74LS16的简介……………………………………..3

       1. 2. 6 74LS39的简介……………………………………..4

       1. 2. 7 ADC0809的工作原理……………………………....5

第二章 控制系统程序设计............................. …6

     2. 1 加热器程序的程图…………………………………………20

    2.2加热器程序清单..................................................................20

单片机原理及应用课程设计总结......................... 21

参考文献............................................. 22

附录................................................. 23


第一章 课程设计内容与要求分析

1.1课程设计内容

以89C51单片机为核心器件组成控制器,采用定时中断实现精确时钟定时;用A/D转换对水温进行检测。

利用提供的单元模块构成硬件系统。

1.2课程设计要求分析

基本功能:

使用6位LED显示器,4位用来显示时间;显示格式为“时时分分”;秒用LED指示;2位显示温度值,4个键组成键盘,可设置热水器启动和停止时间,加热温度设定。随时按键启动、停止等。

键盘:功能键、移位键、加1键、启动/停止键。

扩展功能:

增加多时段启动/停止功

1.2.1加热器的工作原理

  加热器开始工作进行程序初始化,等待按键如果有按键按下判断是否是启动键,如果是内部标志位取反进行启动。利用A/D转换来控制温度是否达到预定值。

否则是功能键进行设定。如果没有按键,是否有定时启动和时间对比是否到时,时间到即开始启动。

1.2.2系统单元电路组成

8031单片机是Intel公司生产的MCS-51系列单片机中的一种,除无片内ROM外,其余特性与MCS-51单片机基本一样。8031单片机都采用40引脚的直插封装(DIP方式),在单片机的40条引脚中有2条专用于主电源的引脚,2条外接晶体的引脚,4条控制或与其它电源复用的引脚,32条输入/输出(I/O)引脚。8031单片机的引脚除了电源、复位、时钟接入,用户I/O口外,其余管脚是为实现系统扩展而设置的。这些引脚构成8031单片机片外三总线结构,即:

    ①地址总线(AB):地址总线宽为16位,因此,其外部存储器直接寻址为64K字节,16位地址总线由P0口经地址锁存器提供8位地址(A0至A7);P2口直接提供8位地址(A8至A15)。

    ②数据总线(DB):数据总线宽度为8位,由P0提供。

③控制总线(CB):由P3口的第二功能状态和4根独立控制线RESET、EA、ALE、PSEN组成。

1. 2 .3显示接口电路的设计

键盘和显示电路是人机交互的重要手段。控制键是用户干预系统运行的唯一接口,也是用户比较关心的问题。为了实现控制器对时间与温度的设定及显示功能,串行显示电路采用串入并出芯片74LS164驱动4位数码管实现时间与温度的静态显示。

该电路只使用80C51的3个端口,配接4片串入并出移位寄存器74LS164与1片三端可调稳压器LM317T。其中74LS164的引脚Q0~Q7为8位并行输出端;引脚A、B为串行输入端;引脚CL K为时钟脉冲输入端,在CLK脉冲的上升沿作用下实现移位,在CLK=0、清除端MR=1时,74LS164保持原来数据状态;MR=0时,74LS164输出清零,其显示电路如图:

74ls164其工作过程如下:80C51的串行口设定在方式0移位寄存器状态下,串行数据由P3.0发送,移位时钟由P3.1送出。在移位时钟的作用下,串行口发送缓冲器的数据一位一位地移入74LS164中。4片74LS164串级扩展为4个8位并行输出口,分别连接到4个LED显示器的段选端作静态显示。需要指出的是,由于74LS164无并行输出控制端,因而在串行输入过程中,其输出端的状态会不断变化,造成不应显示的字段仍有较暗的亮度,影响了显示的效果。以往的做法是在74LS164的输出端加接4片锁存器或三态门,使移位寄存器串行输入数据时其输出端的变化不反映到LED上,待串行输入结束后再打开锁存器或三态门,将稳定的显示数据送给LED。

本设计电路的独特之处在于仅采用了1片三端可调稳压器LM317T,317T的3、2脚分别是电压输入、输出端,317T的1脚是电压调整端,脚2输出电压随脚1电压而变化。脚1与接地电阻之间并一个NPN三极管,它的基极受P1.7口线控制,串行输入时P1.7口线为高电平,三极管饱和导通使317T的脚1约为0.3 V,脚2输出电压随之下降到1.5 V,不足以使共阳极LED发光,故此时串行输入的影响不会反映到LED上;串行输入结束后,使P1.7口线为低电平,三极管截止,脚2输出电压因脚1电压增高便上升到2.0V使LED正常发光。因此,1片三端可调稳压器LM317T起到了4片锁存器的作用使LED显示不会闪烁。本电路的另一优点是通过可调电位器P1可在线调整脚2的输出电压,使LED的显示亮度均匀可调,而且省掉了大量的LED限流电阻。

1. 2. 4 键盘电路设计

四键模式:功能键(P1.0)、移位键(P1.1)、加1键(P1.2)、启动键(P1.3)在定时设定时,是定时功能取消键。启动键按一下启动,再按一下停止。键盘电路跟显示电路一样采用扫描方式,并利用动态显示时的数码管驱动位置信号来判断相应按键的状态单片机的P3.3~P3.5口输出的BCD码经译码器译码后,相应的Y口呈低电平,而AT89C205 1的P3.7口平时为高电平(由于有上拉电阻),只有当某一按键按下时,P3.7才被下拉为低,这时,单片机将利用程序查询P3.7是否为低,如果P3.7为低电平,则读回单片机P3.3~.P3.5口的值(从缓冲区读取),并判断是那个按键按下.然后调用相应的处理程序进行处理

1.2.5  74LS164简介

ls164为8位移位寄存器,其主要电特性的典型值如下:

 54/74164  185mW     54/74LS164 80mW
当清除端(CLEAR)为低电平时,输出端(QA-QH)均为低电平。 串行数据输入端(A,B)可控制数据。当 A、B任意一个为 低电平,则禁止新数据输入,在时钟端(CLOCK)脉冲上升沿作用下Q0 为低电平。当A、B 有一个为高电平,则另一个就允许输入数据,并在CLOCK 上升沿作用下决定Q0 的状态.

164为8位移位寄存器, 门控(赋能/禁止)串行输入,并行输出; 全为缓冲的时钟和串行输入; 异步清除其主要电特性的典型值如下: 型号 fm pn 54/74164 36mhz 185mw 54/74ls16436 mhz 80mw 当清除端(clear)为低电平时,输出端(qa-qh)均为低电平. 串行数据输入端(a,b)可控制数据.当a,b任意一个为低电平,则禁止新数据输入,在时钟端(clock)脉冲上升沿作用下q0为低电平.当a,b有一个为高电平,则另一个就允许输入数据,并在clock上升沿作用下决定q0的状态. 引出端符号 clock 时钟输入端 clear 同步清除输入端(低电平有效) a,b 串行数据输入端 qa-qh 输出端 逻辑及封装图 双列直插封装 极限值 电源电压7v 输入电压为5.5v 工作环境温度 54164 -55~125℃ 74164… -0~70℃ 储存温度-65℃~150℃ 真值表 h-高电平 l-低电平 x-任意电平 ↑-低到高电平跳变 qa0,qb0,qh0 -规定的稳态条件建立前的电平 qan,qgn -时钟最近的↑前的电平 时序图为推荐工作条件: 54/74164 最小 额定 最大 单位 54 4.5 5 5.5 电源电压vcc74 4.75 5 5.25 v 输入高电平电压vih2 v 输入低电平电压vil 0.8 v 输出高电平电流ioh -400 ua 输出低电平电流iol 8 ma 时钟频率fcp0 25 mhz 脉冲宽度tw clock,clear 20 ns 建立时间tset 25 ns 保持时间th5 ns 静态特性(ta为工作环境温度范围) '164 参 数 测 试 条 件【1】最小 最大 单位 vik输入嵌位电压 vcc=最小,vik=-12ma -1.5 v voh输出高电平电压 vcc=最小vih =2v vil=0.8v, ioh=-400 a 2.4 v vol输出低电平电压 vcc=最小,vih=2v, vil=0.8v,iol=8ma 0.4 v ii最大输入电压时输入电流 vcc=最大 vi=5.5v 1 ma iih输入高电平电流 vcc=最大,vih=2.4v 40 a iil输入低电平电流 vcc=最大,vil=0.4v -1.6 ma 54 -10 -27.5 ios输出短路电流 vcc=最大 74 -9 -27.5 ma icc电源电流 vcc=最大,a和b接地,clock接2.4v,clear瞬间接地后接4.5v 54 ma [1]: 测试条件中的"最小"和"最大"用推荐工作条件中的相应值. 动态特性(ta=25℃) '164 参 数[2]测 试 条 件 最小 最大 单位 fmax 25 mhz tplh 27 ns tphl clock→任一q32 ns tphl clear 任一q→vcc =5v,cl=15pf,rl=800ω 36 ns [2]: fmax 最大时钟频率.tplh输出由低电平到高电平传输延迟时间 tphl输出由高电平到低电平传输延迟时间

1. 2. 6 74LS393的简介

74ls393 lsttl型双四位二进制计数器 推荐工作条件 电 性 能:(除特别说明外,均为全温度范围) 74ⅱ 54 参数值 参数值 符号 参数名称 测试条件 最小 典型 最大 最小 典型 最大 单位vik 输入钳位电压 vcc=最小 ii=-18ma -1.5 -1.5 v voh 输出高电平电压 vcc=最小 vil=最大vih=2v ioh=最大2.7 2.5 3.4 v vol 输出低电平电压 vcc=最小 vil=最大vih=2v iol=最大 0.5 0.25 0.4 v vcc=最大 vi=7v 清除clr 0.1 0.1 ii 输入电流 (最大输入电压时) vcc=最大vi=5.5v a输入 0.2 0.2 ma清除clr 20 20 iih 输入高电平电流 vcc=最大 vi=2.7v a输入 100 100 μa清除clr -0.4 -0.4 iil 输入低电平电流 vcc=最大 vi=0.4v a输入 -1.6 -1.6 maios 输出短路电流 vcc=最大 vo=0v-20 -100 -20 -100 maicc 电源电流 vcc=最大 (注) 26 15 26 ma注:测icc时,所有输出开路,二个清除输入先瞬时接4.5v再接地,所有其它输入端接地. 所有典型值均在vcc=5.0v, ta=25℃下测量得出.

1. 2. 7  ADC0809的简介与工作原理

ADC0809是一种逐次比较式8路模拟输入,8位数字量数字输入量输出的A/D转换器。

1.ADC0809引脚功能

ADC0809共有28脚,采用双列直插式封装。其主要功能如下:

(1)    IN0-IN7是八路模拟信号输入端。

(2)    D0-D7是八位数字量输出端。

(3)    A,B,C与ALE控制八路模拟通道的切换,A,B,C分别与3根地址线或数据线相连,3位编码对应8个通道地址口。C,B,A=000-111分别对应IN0-IN7通道的地址。

这里要强调的是:ADC0809虽然有八路模拟通道可以同时输入八路模拟信号,但每个瞬间只能转换一路,各路之间的切换由软件改变C,B,A引脚上的代码来实现。

入端,CLK为时钟输入端。

(5)Vr(+)和VR(+)为参考电压输入端。

2. ADC0809结构及转换原理

   ADC0809是采用逐次比较的方法完成A/D转换的,由单一的+5v电源供电。片内带有锁存功能的八路选一的模拟开关,由C,B,A引脚的编码来决定所选通道。0809完成一次转换需要100us左右,输出三态锁存缓冲器,直接连到8031的数据总线上。通过适当的外接电路,0809可对0-5v的模拟信号进行转换。

3.ADC0809与8031单片机的接口

 由于ADC0809片内无时钟,可利用8031提供的地址锁存允许信号ALE经D触发器2分频后获得,ALE引脚的频率是8031单片机时钟频率的1/6。由于ADC0809具有输出三态锁存器,其8位数据引脚可直接与数据总线相连。地址引脚C,A,B分别与地址总线的低3位A2,A1,A0相连,以选通IN0-IN7中的一个通路。


第二章 热水器的程序设计

 2.1 热水器程序流程图

                     

2.2 热水器程序清单

;四键模式:功能键(P1.0)、移位键(P1.1)、加1键(P1.2)、启动键(P1.3)在定时设定时,是定时功能取消键。    启动键按一下启动,再按一下停止。

;A/D转换地址:0000H

;指示灯输出地址:5000H

ORG 0000H

AJMP MAIN

ORG 000BH

AJMP T00K

ORG 0030H

MAIN:MOV SP,#60H

STRT:MOV P1,#0FFH

MOV DPTR,#4000H

MOV A,#0FFH

MOVX @DPTR,A

MOV 30H,#1       ;显示缓冲单元

MOV 31H,#2

MOV 32H,#3

MOV 33H,#4

MOV 35H,#0     ;按键功能计数

MOV 50H,#00H   ; 启动时间1设定

MOV 51H,#00H   ;

MOV 52H,#00H   ; 关闭时间1设定

MOV 53H,#00H   ;

MOV 54H,#60H   ; 温度设定 默认温度60度

MOV 3CH,#0      ;分起始值

MOV 3DH,#0      ;时起始值

CLR 00H          ;定时启动标志

CLR 02H          ;定时启动标志

CLR 05H          ;按键标志

CLR 01H          ;人为启动标志

MOV TMOD,#01H

MOV TH0,#3CH

MOV TL0,#0B0H

MOV 40H,#10   ;中断次数

MOV 44H,#0   ;交替显示标志

CLR F0       ;闪烁标志

SETB TR0

SETB ET0

SETB EA

MOV 41H,3CH   ;41H 是分

MOV 42H,3DH   ;42H 是时

MOV 43H,#00H   ;43H是秒

MOV R0,#3CH

ACALL BCDF   ;bcd码分解,把3ch,3dh分解送显示缓冲区

ACALL DISP

NOP

HH:ACALL KSMAO   ;查按键

JZ HH

ACALL T10MS

ACALL KSMAO

JZ HH

AJMP KEY       ;转健处理程序

;用34H存闪烁的数

  ;用35H记录功能号

  ;用36H记录闪烁单元

  ;用37H记录闪烁起始单元

  ;用38H记录被设定单元地址

KEY:MOV A,P1  ;KEY   ###########

JB ACC.0,HK   ;不是功能键

SETB 05H       ;置按键标志

INC 35H

KE10:MOV A,35H

DEC A

RL A              ;乘2

MOV DPTR,#K20

JMP @A+DPTR     ;功能散转

NOP

K20:AJMP K111   ;时间设定

AJMP K112       ;启动定时设定

AJMP K113       ;关闭时间设定

AJMP K114       ;温度设定

HK:JB ACC.3,HH   ;也不是启动键,转回

HK1:ACALL KSMAO

JNZ HK1

LJMP QD           ;转人工启动

NOP  ;K12K12K12K12K12K1

K12:ACALL KSMAO  ;K12 功能键按下后,再判其他键

JZ K12

NOP

ACALL T10MS

ACALL KSMAO

JZ K12

NOP

MOV A,P1

JB ACC.0,KES1

CLR F0

K15:MOV R1,36H ;功能键,保存最后一位闪的内容

MOV A,34H

MOV @R1,A         ;保存设定值

MOV R0,38H

ACALL HBCD        ;合并bcd码

INC 35H

MOV A,35H

CJNE A,#05H,KE10

MOV 35H,#0

CLR F0

CLR 05H

MOV 41H,3CH

MOV 42H,3DH

MOV R0,#41H         ;设定完成

ACALL BCDF

ACALL DISP

KS11:ACALL KSMAO

JNZ KS11

LJMP HH

KES1:JB ACC.1,KES2

MOV R1,36H        ;********移位键

MOV A,34H

MOV @R1,A   ;恢复现场

INC 36H     ;移位闪烁

MOV A,36H

CJNE A,#34H,K62

MOV 36H,37H       ;恢复闪烁起始单元

K62:MOV R1,36H

MOV 34H,@R1

K63:LCALL KSMAO    ;判松键

JNZ K63

AJMP K12

KES2:JB ACC.2,KES3 ;------加1键

INC 34H

ANL 34H,#0FH

MOV A,35H

CJNE A,#4,KS2S

SJMP KS23        ;温度设定不大于99

KS2S:MOV A,36H

CJNE A,#30H,KS21

MOV A,34H           ;30H的内容不大于2

CJNE A,#3,KS2A

MOV 34H,#0

SJMP KS2A

KS21:MOV A,36H

CJNE A,#31H,KS22

MOV A,34H

CJNE A,#4,KS2A   ;31H的内容不大于3

MOV 34H,#0

SJMP KS2A

KS22:MOV A,36H

CJNE A,#32H,KS23

MOV A,34H

CJNE A,#6,KS2A   ;32H的内容不大于5

MOV 34H,#0

SJMP KS2A

KS23:MOV A,34H

CJNE A,#10,KS2A  ;33H的内容不大于9

MOV 34H,#0

KS2A:ACALL KSMAO

JNZ KS2A

AJMP K12

KES3:NOP      ;定时启动取消键

MOV A,35H

CJNE A,#2,KS32

CLR 00H         ;取消定时标志

MOV A,38H

MOV R0,A

MOV @R0,#0

INC R0

MOV @R0,#0

MOV 30H,#0

MOV 31H,#0

MOV 32H,#0

MOV 33H,#0

MOV 34H,#0

ACALL DISP

KS32:ACALL KSMAO

JNZ KS32

KES4:AJMP K12

;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

K111:CLR F0      ;停止闪烁

MOV 30H,#01H     ;时间设定设定

MOV 31H,#01H     ;4个数码管显示1111  2秒钟

MOV 32H,#01H

MOV 33H,#01H

ACALL DISP

MOV R7,#250

LOP1:ACALL T10MS

DJNZ R7,LOP1    ;延时2秒

MOV 38H,#3CH

MOV R0,#3CH

ACALL BCDF

MOV 36H,#30H

MOV 37H,#30H

MOV 34H,30H

ACALL DISP

SETB F0   ;开始闪烁

KZ11:ACALL KSMAO  ;判松键

JNZ KZ11

AJMP K12

K112:CLR F0    ;定时启动时间设定

MOV 30H,#2     ; 4个数码管显示2222  2秒钟

MOV 31H,#2

MOV 32H,#2

MOV 33H,#2

ACALL DISP

MOV R7,#250

LOP2:ACALL T10MS

DJNZ R7,LOP2        ;延时2秒

MOV 38H,#50H

MOV R0,#50H

ACALL BCDF

MOV 36H,#30H

MOV 37H,#30H

MOV 34H,30H

ACALL DISP

SETB F0

SETB 00H           ;置定时启动标志

KZ21:ACALL KSMAO

JNZ KZ21

AJMP K12

K113:CLR F0   ;关闭时间设定设定

MOV 30H,#3

MOV 31H,#3    ; 4个数码管显示3333  2秒钟

MOV 32H,#3

MOV 33H,#3

ACALL DISP

MOV R7,#250

LP2:ACALL T10MS

DJNZ R7,LP2      ;延时2秒

MOV 38H,#52H

MOV R0,#52H

ACALL BCDF

MOV 36H,#30H

MOV 37H,#30H

MOV 34H,30H

ACALL DISP

SETB F0

KZ31:ACALL KSMAO

JNZ KZ31

AJMP K12

K114:CLR F0   ;温度设定   温度设定小于99

MOV 30H,#4

MOV 31H,#4    ; 4个数码管显示4444  2秒钟

MOV 32H,#4

MOV 33H,#4

ACALL DISP

MOV R7,#250

LP23:ACALL T10MS

DJNZ R7,LP23      ;延时2秒

MOV 38H,#54H

MOV R0,#54H

ACALL BCDF

MOV 30H,#10   ;灭码

MOV 31H,#10

MOV 36H,#32H

MOV 37H,#32H

MOV 34H,32H

ACALL DISP

SETB F0

KZ41:ACALL KSMAO

JNZ KZ41

AJMP K12

T00K:PUSH ACC     ;T0中断子程序

PUSH PSW

PUSH 00H

PUSH 01H

MOV TH0,#3CH         ;定时中断

MOV TL0,#0B0H

DJNZ 40H,RETUN

MOV 40H,#10

JB 05H,SANS   ;05H是按键状态

;INC 43H        ;秒加1

;MOV A,43H

;CJNE A,#60,T10

;MOV 43H,#0       ;时间处理

MOV A,41H

ADD A,#1

DA A

MOV 41H,A

CJNE A,#60H,T10

MOV 41H,#0

MOV A,42H

ADD A,#1

DA A

MOV 42H,A

CJNE A,#24H,T10

MOV 42H,#0     ;42H是时,41H是分,43H是秒

T10:JNB 01H,T11           ;不是手动方式

AJMP RETUN

T11:JNB 00H,T12      ; 不是定时方式

MOV A,50H

CJNE A,41H,T20      ;比较分

MOV A,51H

CJNE A,42H,T20      ;比较时

SETB 02H

MOV DPTR,#4000H     ;启动

MOV A,#0FEH

MOVX @DPTR,A

NOP

ACALL ADBJ      ;调A/D比较程序

NOP

T20:JNB 02H,T12

MOV A,52H     ;是否到停止时间

CJNE A,41H,T22

MOV A,53H

CJNE A,42H,T22

CLR 02H

MOV DPTR,#4000H

MOV A,#0FFH

MOVX @DPTR,A        ;停

SJMP T12

T22: ACALL ADBJ      ;调A/D比较程序 显示温度

SJMP T13

T12:MOV R0,#41H       ;显示时间

ACALL BCDF

T13:ACALL DISP

SJMP RETUN

SANS:JNB F0,RETUN        ;F0=1闪烁   是按键状态

MOV A,44H

CPL A

MOV 44H,A

JZ SAN1

MOV R0,36H

MOV @R0,#10

SJMP SAN2

SAN1:MOV R0,36H

MOV @R0,34H

SAN2:ACALL DISP

RETUN:POP 01H

POP 00H

POP PSW

POP ACC

RETI

T10MS:MOV R2,#2      ;10MS延时

SS2:MOV R3,#200

SS1:NOP

NOP

NOP

DJNZ R3,SS1

DJNZ R2,SS2

RET

DISP:MOV SCON,#00H           ;显示子程序

MOV R0,#30H

MOV R2,#4

DISP2:MOV A,@R0

MOV DPTR,#DDB1

MOVC A,@A+DPTR          ;取断码

MOV SBUF,A

DISP1:JNB TI,DISP1

CLR TI

INC R0

DJNZ R2,DISP2

RET

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

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

ADBJ:MOV DPTR,#0000H

MOV A,#00H  ;选择0通道

MOVX @DPTR,A

MOV R7,#200

ADC1:DJNZ R7,ADC1   ;延时等AD结果

MOV DPTR,#0000H

MOVX A,@DPTR         ;结果在A中

NOP

ACALL BCD     ;结果在31H,32H,33H中

MOV A,31H

JNZ AD1   ;百位不为0

MOV A,32H

SWAP A

ORL A,33H

CJNE A,#90H,AD2    ;和90度比较

AD2:JNC AD1

CJNE A,54H,AD3     ;和设定温度比较

AD3:JNC AD1

MOV DPTR,#4000H   ;温度低,加热

MOV A,#0FEH

MOVX @DPTR,A

SJMP AD4

AD1: MOV DPTR,#4000H   ;温度高,关闭加热

MOV A,#0FFH

MOVX @DPTR,A

AD4:RET

KSMAO:MOV A,P1

CPL A

ANL A,#0FH

RET

BCDF:MOV A,@R0  ;把3ch,3dh分解送显示缓冲区

ANL A,#0FH

MOV 33H,A

MOV A,@R0

SWAP A

ANL A,#0FH

MOV 32H,A

INC R0

MOV A,@R0

ANL A,#0FH

MOV 31H,A

MOV A,@R0

SWAP A

ANL A,#0FH

MOV 30H,A

RET

HBCD:MOV A,32H   ;回存设定值

SWAP A

ORL A,33H

MOV @R0,A

INC R0

MOV A,30H

SWAP A

ORL A,31H

MOV @R0,A

RET

BCD:NOP

MOV B,#100

DIV AB

MOV 31H,A

MOV A,B

MOV B,#10

DIV AB

MOV 32H,A

MOV 33H,B

MOV 30H,#10

RET

QD:NOP      ;人工启动

SETB 01H    ;

MOV DPTR,#4000H

MOV A,#0FEH

MOVX @DPTR,A   ;启动

QD3:ACALL ADBJ     ;调a/D比较

ACALL DISP

MOV R7,#100

QD5:ACALL T10MS  ;延时2秒

DJNZ R7,QD5

ACALL KSMAO    ;调键扫描

JZ QD3

ACALL T10MS

ACALL KSMAO

JZ QD3

MOV A,P1

JB ACC.3,QD3      ;判断是否按下启动键

NOP

ACALL T10MS

QD4:ACALL KSMAO

JNZ QD4

MOV DPTR,#4000H

MOV A,#0FFH

MOVX @DPTR,A       ;关闭

CLR 01H      ;人工启动标志清零

LJMP HH

单片机课程设计原理及总结

课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域, 在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。

回顾起此次单片机课程设计,我仍感慨颇多,的确,从选题到定稿,从理论到实践,在接近四星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说不懂一些元器件的使用方法,对单片机汇编语言掌握得不好……通过这次课程设计之后,一定把以前所学过的知识重新温故。

这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在唐耀武老师的辛勤指导下,终于游逆而解。同时,在唐耀武老师那里我学得到很多实用的知识,在次我表示感谢!同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!

                                                       郜辉

                                               2010.07.05

参考资料

[1]李广弟,朱月秀,王秀山编著.单片机基础. 北京:北京航空航天大学出版社,2001

[2] 何立民编著.MCS-51系列单片机应用系统设计系统配置与接口技术.北京:北京航空航天大学出版社,1999

[3] 蔡美琴等编著.MCS-51 单片机系统及应用.北京:高等教育出版社.1992


附图1  键盘显示部分

附图2  A/D D/A部


相关推荐