单片机大作业
单片机作业

姓名:滕建国班级:2010045201 学号:201004520105 一、九题目:设(70H)=60H,(60H)=20H.P1口为输入口,当输入状态为B7H,执行下面程序。
Mov R0,#70H MOV A,@R0 MOV R1,A MOV B,@R1 MOV P1,#0FFH MOV @R0,P1试分析(70H)﹑(B)﹑(R1)﹑(R0)的内容是什么。
答案:(70H)=0 (B)=20H (R1)=60H (R0)=0十题:试分析下列程序的功能。
CLR AMOV R2,AMOV R7,#4 LOOP:CLR CMOV A,R0RLC AMOV R0,AMOV A,R1 RLC AMOV R1,A MOV A,R2 RLC AMOV R2,A DJNZ R7,LOOP答案:把R0 R1 R4的内容代进位左移4位。
姓名:滕建国班级:2010045201 学号:201004520105 二﹑十二的题目:分析以下程序段,何时转向LABEL1?何时转向LABEL2?MOV A,R0CPL AJZ LABEL1INC AJZ LABEL2答案:(P0=0 时转向LABEL1 (P0+1=0时转向LABEL2 十三的题目:有4个变量U﹑V﹑W﹑X分别从P1.0~P1.3输入阅读如下程序,写出逻辑表达式并画出逻辑电路图。
MOV P1,#0FFH MOV C,P1.0 ANL C,P1.1 CPL C MOV ACC.0.C MOV C,P1.2 ORL C,ACC.0 MOV F,C题目:逻辑表达式:P(1.0) *P(1.1)+[P(1.2)+P(1.3)]姓名:滕建国班级:2010045201 学号:201004520105 三﹑十四的题目:若(R1)=30H, (A)=40H,(30H)=60H,(40H)=08H.试分析执行下列程序段后上述各单元内容的变化。
MOV A,@R1MOV @R1,40HMOV 40H,AMOV R1,#7F答案:A=60H R1=08H (40H)=60H R1=7FH十九的题目:若CY=1,P1=10100011,P3=01101100B.试指出执行下列程序段后,CY﹑P1口及P3口内容的变化情况。
单片机应用技术形考作业4

江苏开放大学形成性考核作业学号姓名课程代码110049课程名称单片机应用技术评阅教师第 4 次任务共 4 次任务江苏开放大学单片机应用技术课程第4次形考作业—单片机大作业作业说明:第4次形考作业是单片机大作业报告,对应第11单元的学习内容。
是对整个单片机课程学习的检验。
完成日期评语得分评阅时间评阅教师【单片机大作业要求】学习第11单元,阅读单片机大作业内容与指导,根据给出的5个课题,任意选择1个课题,学习对应的课题课件,根据指导完成实践环节:使用Proteus软件和Keil软件完成上机仿真调试运行。
参考大作业报告案例,完成单片机大作业报告。
直接截图PPT或讲义上的图和程序不算完成,抄袭截图或PS姓名不得分。
(纸上完成内容要求手写签名,软件完成内容要求电子签名)单片机大作业报告1.写出所选课题名称和设计内容(只能在5个课题中选择1个)。
(20分)【作答结果】所选课题名称:工作指示灯设计内容:设计一个亮1s,灭1s的工作指示灯。
用定时/计数器构成LED灯控制器,在P1.0脚输出周期为2s的方波,即实现LED灯循环亮1s,灭1s。
2.在纸上画出所选课题的原理图并手写签名,拍照上传。
(30分)【作答结果】3.写出源程序。
可截图Keil中源程序(有电子签名)。
也可以将源程序写在纸上并手写签名,拍照上传。
(20分)【作答结果】4.根据原理图,用Proteus制作电路图,图上又有电子签名,全屏截图上传。
(15分)【作答结果】5.Proteus仿真调试结果截图,电子签名与4相同。
(15分)。
【作答结果】。
单片机大作业题目1-30

须知:1. 大作业的所有题目都应在PROTEUS 7.5(注意:只能使用7.5版本)仿真环境下运行通过。
2. 要求:(1)在keil IDE(μvision3)中完成应用程序设计、并编译;(2)在PROTEUS 7.5下的ISIS Professional中完成电路设计、调试与仿真通过。
题目1 智能电子钟(LCD显示)设计要求:以AT89C51单片机为核心,制作一个LCD显示的智能电子钟:(1) 计时:秒、分、时、天、周、月、年。
(2) 闰年自动判别。
(3) 时间、月、日交替显示。
(4) 自定任意时刻自动开/关屏。
(5) 计时精度:误差≤1秒/月(具有微调设置)。
题目2 电子时钟(LCD显示)设计要求以AT89C51单片机为核心的时钟,在LCD显示器上显示当前的时间:●使用字符型LCD显示器显示当前时间。
●显示格式为“时时:分分:秒秒”。
●用4个功能键操作来设置当前时间,4个功能键接在P1.0~P1.3引脚上。
功能键K1~K4功能如下。
●K1—进入设置现在的时间。
●K2—设置小时。
●K3—设置分钟。
●K4—确认完成设置。
程序执行后工作指示灯LED闪动,表示程序开始执行,LCD显示“00:00:00”,然后开始计时。
题目3 秒表设计要求应用AT89C51的定时器设计一个2位的LED数码显示作为“秒表”:显示时间为00~99s,每秒自动加1,设计一个“开始”键,按下“开始”键秒表开始计时。
设计一个“复位”键,按下“复位”键后,秒表从0开始计时。
题目4 定时闹钟设计要求使用AT89C51单片机结合字符型LCD显示器设计一个简易的定时闹钟LCD时钟。
定时闹钟的基本功能如下:●显示格式为“时时:分分”。
●由LED闪动来做秒计数表示。
●一旦时间到则发出声响,同时继电器启动,可以扩充控制家电的开启和关闭。
程序执行后工作指示灯LED闪动,表示程序开始执行,LCD显示“00:00”,按下操作键K1~K4动作如下:(1) K1—设置现在的时间。
单片机大型作业

❖ 设计内容可任选一项 ❖ 完成形式及要求:提交论文,要求完成系统
的整体设计,画出流程图以及硬件图,完成 相应软件发编写。
题目:多功能秒表
❖ 设计要求:
1. 设计用单片机实现秒表功能,要有六位LED时 间显示;
2. 四个开关输入信号控制计时、暂停、累加计时 和清0功能。
3. 设计流程图及硬件图。 4. 完成相应的软件的编写。
2. 用软件延时来控制发音时间的长 短,控制节拍。
3. 把乐谱中的音符和相应的节拍变 换为定时常数和延时常数,作为 数据表格存放在存储器中。
题目:电子琴演奏
❖ 设计要求: 1. 使用4×4矩阵式键盘设计出16个音符,随意弹 奏。 2. 用功能键转换成歌曲演奏。
题目:液晶显示温度控制器
❖ 设计要求: 由温度传感器对温度进行采样和转换成数字信号 送入单片机,信息通过LCD显示; 通过按钮开关设定报警温度上、下限; 实时温度超过设定的上、下限值,由LCD显示, 并发出报警声。
题目:智能抢答器
❖ 设计要求:
1. 1-6号选手中按下按钮者,LED数码管显示其选 手号码(后按下无效),且计时开始,2秒停止 计时。
2. 由裁判掌握,若回答正确,该选手对应黄灯亮, 否则红灯亮。
题目:有时间显示的定时交通灯模拟控制
❖ 设计要求: ❖ 在南北向与东西向交错的路口上ห้องสมุดไป่ตู้各设置红、黄、
绿三种信号灯,现设定: 1. 南北方向通车时绿灯亮25s,然后黄灯亮警告5s
后红灯亮30s,如此循环; 2. 东西向则是先红灯30s,然后绿灯亮25s后黄灯亮
5s,如此循环;
题目:电子琴演奏
❖ 演奏原理
1. 通过控制单片机定时器的定时时 间产生不同频率的音频脉冲,经 放大后驱动蜂鸣器发出不同音节 的声音。
单片机大作业

单片机大作业物流卓1.LED闪烁实例LED闪烁实例中使用51单片机控制8个LED间隔亮灭,形成闪烁效果,在实例中51单片机通过一个延时程序控制P1端口轮流输出高电平和低电平,驱动发光二极管的发光和熄灭。
程序代码使用两个嵌套的for循环语句来控制延时,当到达延时之后使P1输出电平翻转。
下图为电路设计图以下为控制代码2.流水数字流水数字是一个51单片机使用I/O引脚驱动8段数码管,数码管轮流显示“0”~”F”数字或者字符。
单位8段共阳数码管的公共端连接到VCC上,数码管的8位数据引脚则连接到P1的八个引脚上,使用1K欧姆的电阻限流,51单片机通过P1引脚将对应字符的字形编码送出供数码管显示。
下图为电路设计图以下为程序代码3.多位数字显示本实例使用51单片机驱动6位数码管显示”123456”6位数字,51单片机用P1给6个8段数码管提供字形编码,而用P2.0~P2.5共6个引脚通过PNP三极管来选通对应的数码管显示。
在控制程序中,为了精确的控制延时时间的时间以便造成“扫描”效果,使用Delayms 和Delayus两个函数来控制精确延时。
下图为电路设计图以下为程序代码4.轮流加热显示系统轮流加热显示系统是一个用51单片机控制3个继电器轮流接通,给3个设备加热5s并且使用一位数码管来显示当前加热设备的编号。
51单片机用P2端口通过ULU2803驱动3个工作电压为5V的继电器,用P1口驱动一个数码管用于显示当前接通的继电器的编号。
下图为电路设计图以下为程序代码5.定时报警实例本实例是让51单片机没隔10min控制蜂鸣器报警,51单片机使用P2.7引脚通过一个NPN三极管驱动蜂鸣器,当P2. 7输出高电平时三极管导通,蜂鸣器发声。
51单片机使用P2. 7通过三极管控制蜂鸣器,当输出高电平时三极管导通蜂鸣器发声,使用Delayms函数来进行毫秒级延时,使用Delayus函数来进行微秒级延时,当10min延时到达,蜂鸣器打开100ms下图为电路设计图以下为程序代码6.计算机键盘实例本实例用51单片机的I/O引脚扩展一个4 x4的行列扫描键盘,16个键使用0~F编码用一个数码管将按下键的对应编码显示出来,并且有声音提示。
大工15春《单片机原理及应用》大作业题目及要求5篇

大工15春《单片机原理及应用》大作业题目及要求5篇第一篇:大工15春《单片机原理及应用》大作业题目及要求2015年9月份《单片机原理及应用》大作业具体要求:题目一:单片机电子时钟设计准则:设计一个基于51单片机或STM单片机的电子时钟,并且能够实现时分秒的显示和调节撰写要求:(1)首先介绍课题背景,并进行需求分析及可行性分析,包括软硬件功能分配、核心器件的选型等;(2)对系统硬件进行设计,包括硬件功能模块划分、电路原理图设计等;(3)对系统软件进行设计,选用汇编语言或C语言编写程序,给出软件开发流程;(4)总结:需要说明的问题以及设计的心得体会。
题目二:基于单片机的音频播放器设计准则:设计一个基于51单片机或STM单片机的音频播放器。
撰写要求:(1)首先介绍课题背景,并进行需求分析及可行性分析,包括软硬件功能分配、核心器件的选型等;(2)对系统硬件进行设计,包括硬件功能模块划分、电路原理图设计等;(3)对系统软件进行设计,选用汇编语言或C语言编写程序,给出软件开发流程;(4)总结:需要说明的问题以及设计的心得体会。
题目三:基于单片机的温度采集系统设计准则:设计一个基于51单片机或STM单片机的温度采集系统,测量的温度分辨率为0.5℃。
撰写要求:(1)首先介绍课题背景,包括温度采集系统的发展、应用情况等,并进行需求分析及可行性分析,包括软硬件功能分配、核心器件的选型等;(2)对系统硬件进行设计,包括硬件功能模块划分、电路原理图设计等;(3)对系统软件进行设计,选用汇编语言或C语言编写程序,给出软件开发流程;(4)总结:需要说明的问题以及设计的心得体会。
题目四:交通灯控制系统设计准则:设计一个基于51单片机或STM单片机的交通灯控制系统,实现十字路口交通信号灯的基本控制、显示功能。
撰写要求:(1)首先介绍课题背景,并进行需求分析及可行性分析,包括软硬件功能分配、核心器件的选型等;(2)对系统硬件进行设计,包括硬件功能模块划分、电路原理图设计等;(3)对系统软件进行设计,选用汇编语言或C语言编写程序,给出软件开发流程;(4)总结:需要说明的问题以及设计的心得体会。
单片机原理及应用课程大作业

单片机原理及应用课程大作业一、引言单片机(Microcontroller)是一种集成了微处理器核心、存储器和各种输入输出设备的微型计算机系统。
它具有体积小、功耗低、成本低等特点,广泛应用于各个领域,如家电、汽车电子、工业自动化等。
本文将详细介绍单片机的工作原理、应用场景以及一个实际的大作业案例。
二、单片机的工作原理单片机的工作原理主要包括以下几个方面:1. 微处理器核心:单片机内部集成了一个微处理器核心,通常采用的是RISC (Reduced Instruction Set Computer)架构,具有高效的指令执行能力。
2. 存储器:单片机内部包含了存储器单元,用于存储程序代码和数据。
通常包括闪存(Flash)用于存储程序代码,以及静态随机存取存储器(SRAM)用于存储数据。
3. 输入输出设备:单片机通常具有多种输入输出接口,用于与外部设备进行数据交互。
常见的输入输出设备包括GPIO(General Purpose Input Output)、串口、SPI(Serial Peripheral Interface)、I2C(Inter-Integrated Circuit)等。
4. 时钟系统:单片机需要一个稳定的时钟信号来同步各个部件的工作。
通常采用晶体振荡器或者外部时钟源来提供时钟信号。
5. 中断系统:单片机具有中断系统,可以在特定的条件下中断当前的执行流程,转而处理其他紧急任务。
中断可以提高系统的实时性和响应能力。
三、单片机的应用场景单片机广泛应用于各个领域,下面列举几个常见的应用场景:1. 家电控制:单片机可以用于家电产品的控制,如空调、洗衣机、电视等。
通过单片机的控制,可以实现各种功能,提高产品的智能化水平。
2. 汽车电子:单片机在汽车电子领域也有广泛的应用,如车载音响、车身控制、发动机控制等。
单片机可以实现对汽车各个系统的精确控制,提高汽车的性能和安全性。
3. 工业自动化:单片机在工业自动化领域起到了至关重要的作用。
16位单片机大作业(1)

上海电力学院《16位单片机应用》大作业课程名称 16位单片机应用课程编号1院(系)电子与信息工程学院专业电子科学与技术任课教师杨芳班级 2013142 姓名 DANGDANG 学号 2013000题目:十六位单片机----密码锁一、设计目的及要求运用C语言,MC9S12XS128的知识,对实现密码锁进行软件和硬件的设计和调试,掌握如何使用CodeWarrior来整合各种驱动模块,例如本实验运用到的键盘中断、LCD、PWM以及小灯模块,将这些模块整合在一起再通过算法实现硬件上的运行,达到密码锁的功能。
密码锁主要功能:利用键盘中断、LCD、小灯、PWM模块,按下按键,在LCD可以显示对应值,并将其与预设密码进行比对。
若正确,则LCD显示right,小灯由暗变亮;否则,LCD显示wrong,小灯一直保持流水灯状态,直至输入的密码正确。
二、设计内容与实现过程本次用到了相对还是比较多的模块,主要有SCI串口通信模块,LED显示模块,LCD显示模块,Timer定时器模块和中断模块,主要采用了定时器和中断的方式去控制整个系统的工作,能在超级终端以及LCD上实时显示时分秒的数据,主要是在Timer的样例程序中对当中的一些驱动以及主函数中数据的定义进行一定量的修改,来保证控制功能的实现。
具体功能和实现过程如下:1、Main 函数(1)全局变量定义2、实验采用的模块①LCD 显示模块运行程序后,LCD上会显示“password: r/w: ”,在对应位置还会显示按下的键位对应的定义值。
②键盘中断模块按下键位后,键值存入valve,调用KBDef函数,将valve键值转为定义值,存入num数组中。
③小灯显示模块小灯为共阳极程序运行后,PORTB已在前面设置为输出,小灯会出现流水灯现象。
④PWM模块Period为PWM周期所占时钟周期数,duty为PWM占空比所占的PWM 周期数。
此处不断增加占空比,实现小灯由暗变亮的显示。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
大连理工大学本科设计报告(单片机原理综合设计)题目:课程名称:单片机实验学院(系):信通学院专业:通信工程班级:电通1202学号:*********学生姓名:***成绩:20 15 年 5 月8 日目录1.题目及内容 (2)2.设计思路 (2)2.1数码管显示 (2)2.2显示内容转换 (2)2.3闪烁报警 (2)2.4温度上下限的设置 (2)2.5中断程序 (2)3.相关资料 (3)4.电路图 (3)5.程序框图 (4)5.1中断程序流程图 (4)5.2主程序流程图 (6)6.源程序 (6)7.调试中所遇到的问题 (14)8.调试解决了的问题. (14)9.个人体会(总结) (14)一、题目及内容用汇编语言模拟电梯运动系统设计程序,要求有完成如下要求:利用zlg7290和pcf8563t以及A/D转换实现下述功能。
1.利用键盘改变显示内容(能读A/D转换值、读取时间),并且闪烁显示3秒,变成稳定显示。
2.键盘设定温度上限值和下限制,当温度达到上限值后,显示闪烁;同样,当温度达到下限值后,同样发出报警,并闪烁。
3.当时间设定值达到设定值后,同样发出报警,并闪烁。
4.时间闪烁与温度闪烁时间长短有区别。
二、设计思路1.数码管显示通过ZLG7290B的数码管显示,将数据转换成BCD码,然后通过字形码的对应关系显示,通过中断程序每秒读取一次数据。
2.显示内容转换通过开关控制显示的内容,SW1低是时间,在SW1时间的情况下,SW2高是年月日;SW1高是温度,在SW1温度情况下,SW2高显示温度上限,SW2低,SW3高显示温度下限3.闪烁报警当条件满足报警时,通过调用显示程序,通过控制闪烁控制字,控制数码管相应的位置闪烁。
时间报警闪烁一分钟,温度报警一直闪烁。
4.温度上下限的设置通过键值设置上下限,通过不同按键对应于上限和下限的设置,然后的键值通过一定计算赋给上下限的存储空间。
5.中断程序两个中断,其中中断0用于每秒显示,中断1用于键值的读取。
三、相关资料MCS-51单片机应用实验教程四、电路图五、程序框图图1 显示中断程序流程图六、源程序;**************************************************************** ;SW1低是时间,在SW1时间的情况下,SW2高是年月日;SW1高是温度,在SW1温度情况下,SW2高显示温度上限,SW2低,SW3高显示温度下限;****************************************************************SDA BIT P1.0 ;I^2C引脚信号SCL BIT P1.1RST BIT P1.7 ;7290复位SW BIT P1.2 ;年份显示SW2 BIT P1.3 ;温度,时间转换SW3 BIT P1.5 ;温度上限DQ BIT P1.4 ;温度控制TEMPER_L EQU 36HTEMPER_H EQU 35HTEMPER EQU 34HTEMPER_NUM EQU 60HTEMMAX EQU 61HTEMMIN EQU 62H WSLA_7290 EQU 70H ;7290口地址RSLA_7290 EQU 71HWSLA_8563 EQU 0A2H ;8563口地址RSLA_8563 EQU 0A3HADDR EQU 20H;数据缓冲区首地址DISDA EQU 40H;显示缓冲区DISCUNT EQU 08H ;显示缓冲区长度FLAG1 BIT 00H;**************************** ORG 8000HLJMP MAINORG 8003H ;INT0中断源LJMP INT_7290ORG 8013HLJMP INT_KEYORG 8100HMAIN: MOV SP,#70HCLRRST ;ZLG7290B复位LCALL DELAYSETB RST;****************************;设定PCF8563T的时间和命令参数;****************************MOV 10H,#00HMOV 11H,#1FHMOV 12H,#50HMOV 13H,#09HMOV 14H,#50HMOV 15H,#11HMOV 16H,#05HMOV 17H,#04HMOV 18H,#15HMOV 19H,#10HMOV 1AH,#00HMOV 1BH,#00HMOV 1CH,#00HMOV 1DH,#83H;**************************** MOV TEMMAX,#40H ;温度上限初值MOV TEMMIN,#00H ;温度下限初值MOV R7,#0EHMOV R0,#10HMOV R2,#00HMOV R3,#WSLA_8563LCALL WRNBYTSETB EASETB EX0SETB IT0SETB EX1SETB IT1SJMP $;****************************;显示中断服务子程序;****************************INT_7290:JB SW,WENDUMOV R7,#07HMOV R0,#20HMOV R2,#02HMOV R3,#WSLA_8563MOV R4,#RSLA_8563LCALL RDADDMOV A,21HCJNE A,19H,XIANSHIMOV 50H,#70H ;闪烁MOV 51H,#18HMOV R7,#02HMOV R0,#50HMOV R2,#07HMOV R3,#WSLA_7290LCALL WRNBYTMOV 53H,#00H ;设置闪烁频率MOV R7,#01HMOV R0,#53HMOV R2,#0CHMOV R3,#WSLA_7290LCALL WRNBYTXIANSHI:LCALL ADJUSTLCALL CHAIFENMOV R7,#08HMOV R2,#10HMOV R3,#WSLA_7290JB SW2,YEARSMOV R0,#38HSJMP DISPYEARS: MOV R0,#28HDISP: LCALL WRNBYTLJMP JIESHUWENDU: JB SW2,THJB SW3,TLMOV DISDA+7,#00HMOV DISDA+6,#00H MOV DISDA+5,#00HMOV DISDA+4,#00HMOV DISDA+3,#00H LCALL GET_TEMPERLCALL TEMPER_COVMOV A,TEMPERMOV B,#02HDIV ABMOV TEMPER,ALCALL BCD_CONTMOV R7,#DISCUNTMOV R0,#DISDAMOV R2,#10HMOV R3,#WSLA_7290LCALL WRNBYTLCALL DELAYCLR CMOV A,TEMPERANL A,#7FHSUBB A,TEMMAXJC NEXT11LCALL SHANSHUO1LJMP JIESHUNEXT11: CLR CMOV A,TEMPERANL A,#7FHSUBB A,TEMMINJNC JIESHULCALL SHANSHUO1LJMP JIESHUTH:MOV DISDA+7,#6EH ;最高位显示HMOV DISDA+6,#12HMOV A,TEMMAXLCALL BCD_CONTMOV R7,#DISCUNTMOV R0,#DISDAMOV R2,#10HMOV R3,#WSLA_7290LCALL WRNBYTLCALL DELAYLJMP JIESHUTL:MOV DISDA+7,#1CH ;最高位显示LMOV DISDA+6,#12HMOV A,TEMMINLCALL BCD_CONTMOV R7,#DISCUNTMOV R0,#DISDAMOV R2,#10HMOV R3,#WSLA_7290LCALL WRNBYTLCALL DELAYJIESHU: JNB P3.2,$ RETI;**************************** ****SHANSHUO1:MOV 50H,#70H ;闪烁MOV 51H,#07HMOV R7,#02HMOV R0,#50HMOV R2,#07HMOV R3,#WSLA_7290LCALL WRNBYTMOV 53H,#00H ;设置闪烁频率MOV R7,#01HMOV R0,#53HMOV R2,#0CHMOV R3,#WSLA_7290LCALL WRNBYTRETI;**************************** ***********************;键值控制温度上下限;**************************** ***********************INT_KEY:PUSH 00HPUSH 02HPUSH 03HPUSH 04HPUSH 07HPUSH ACCPUSH PSWLCALL DELAYLCALL RDKEYCJNE A,#0EH,XIAXIAN AKEY:JB P3.3 ,$LCALL RDKEYCLR CMOV 64H,ASUBB A,#0AHJNC AKEYMOV A,64HMOV B,#0AHMUL ABMOV R5,AAKEY1: JB P3.3,$ ;以查询方式等待下一次按键操作LCALL RDKEYCLR CMOV 64H,ASUBB A,#0AHJNC AKEY1MOV A,64HADD A,R5MOV TEMMAX,ALJMP DOWN XIAXIAN:CJNE A,#0FH,DOWN BKEY:JB P3.3 ,$LCALL RDKEYCLR CMOV 64H,ASUBB A,#0AHJNC BKEYMOV A,64HMOV B,#0AHMUL ABMOV R5,ABKEY1: JB P3.3,$ ;以查询方式等待下一次按键操作LCALL RDKEYCLR CMOV 64H,ASUBB A,#0AHJNC BKEY1MOV A,64HADD A,R5MOV TEMMIN,ALJMP DOWNDOWN: CLR IE1POP PSWPOP ACCPOP 07HPOP 04HPOP 03HPOP 02HPOP 00HRETI;*********************** RDKEY:MOV R0,#1FHMOV R7,#01HMOV R2,#01HMOV R3,#WSLA_7290MOV R4,#RSLA_7290LCALL RDADDMOV A,1FHDEC ARET;**************************** ************************ CHAIFEN:PUSH PSWPUSH ACCPUSH 03HPUSH 04HMOV A,20HLCALL CFMOV 38H,R3MOV 39H,R4MOV 3AH,#02HMOV A,21HLCALL CFMOV 3BH,R3MOV 3CH,R4MOV 3DH,#02HMOV A,22HLCALL CFMOV 3EH,R3MOV 3FH,R4MOV A,23HLCALL CFMOV A,R3ORL A,#01HMOV R3,AMOV 28H,R3MOV 29H,R4MOV A,25HLCALL CFMOV A,R3ORL A,#01HMOV R3,AMOV 2AH,R3MOV 2BH,R4MOV A,26HLCALL CFMOV A,R3ORL A,#01HMOV R3,AMOV 2CH,R3MOV 2DH,R4MOV 2EH,#0FCHMOV 2FH,#0DAHPOP 04HPOP 03HPOP ACCPOP PSWRET;**************************** ************************ ADJUST: PUSH ACCMOV A,20HANL A,#7FHMOV 20H,AMOV A,21HANL A,#7FHMOV 21H,AMOV A,22HANL A,#3FHMOV 22H,AMOV A,23HANL A,#3FHMOV 23H,AMOV A,24HANL A,#07HMOV 24H,AMOV A,25HANL A,#1FHMOV 25H,APOP ACCRET;############################ ###;温度采集;############################ ##GET_TEMPER:SETB DQBCD: LCALL INIT_1820JB FLAG1,S22LJMP BCDS22: LCALL DELAY1MOV A,#0CCHLCALL WRITE_1820MOV A,#44HLCALL WRITE_1820LCALL DELAYCBA: LCALL INIT_1820JB FLAG1,ABCLJMP CBAABC: LCALL DELAY1MOV A,#0CCHLCALL WRITE_1820MOV A,#0BEHLCALL WRITE_1820LCALL READ_18200RET;############################ ###WRITE_1820:MOV R2,#8CLR CWR1: CLR DQMOV R3,#6DJNZ R3,$RRC AMOV DQ,CMOV R3,#23DJNZ R3,$SETB DQNOPDJNZ R2,WR1SETB DQRET;############################ READ_18200:MOV R4,#2MOV R1,#36HRE00:MOV R2,#8RE01:CLR CSETB DQNOPCLR DQNOPNOPSETB DQMOV R3,#2DJNZ R3,$MOV C,DQMOV R3,#23DJNZ R3,$RRC ADJNZ R2,RE01MOV @R1,ADEC R1DJNZ R4,RE00RET;############################ TEMPER_COV:MOV A,#0F0HANL A,TEMPER_LSWAP AMOV TEMPER_NUM,AMOV A,TEMPER_LJNB ACC.3,TEMPER_COV1INC TEMPER_NUM;############################ TEMPER_COV1:MOV A,TEMPER_HANL A,#07HSWAP AADD A,TEMPER_NUMMOV TEMPER_NUM,AMOV TEMPER,TEMPER_NUMRET;############################ INIT_1820:SETB DQNOPCLR DQMOV R0,#80HTSR1: DJNZ R0,TSR1SETB DQMOV R0,#25HTSR2: DJNZ R0,TSR2JNB DQ,TSR3LJMP TSR4TSR3: SETB FLAG1LJMP TSR5TSR4: CLR FLAG1LJMP TSR7TSR5: MOV R0,#06BHTSR6: DJNZ R0,TSR6TSR7: SETB DQRET;############################ ;延时子程序;############################ DELAY1:MOV R7,#20HDJNZ R7,$RET;########################### DELAY: PUSH 00HPUSH 01HMOV R0,#00HLP: MOV R1,#00HDJNZ R1,$DJNZ R0,LPPOP 01HPOP 00HRET;************************** ;BCD转换;**************************BCD_CONT:PUSH 07HPUSH 06HPUSH 05HPUSH 02HMOV B,#64HDIV ABMOV R7,AMOV R2,BMOV A,R2MOV B,#0AHDIV ABMOV R6,AMOV R5,BMOV A,R7LCALL CFMOV DISDA+2,R3MOV A,R6LCALL CFMOV DISDA+1,R3MOV A,R5LCALL CFMOV DISDA+0,R3POP 02HPOP 05HPOP 06HPOP 07HRET;**************************** *CF: PUSH 02HPUSH DPHPUSH DPLMOV DPTR,#LEDSEGMOV R2,AANL A,#0FHMOVC A,@A+DPTRMOV R3,AMOV A,R2SWAP AANL A,#0FHMOVC A,@A+DPTRMOV R4,APOP DPLPOP DPHPOP 02HRET;**************************** LEDSEG: DB0FCH,60H,0DAH,0F2H,66H,0B 6H,0BEH,0E4HDB0FEH,0F6H,0EEH,3EH,9CH,7A H,9EH,8EH;**************************** ;IIC总线通讯子程序;**************************** WRNBYT: PUSH PSWPUSH ACCWRADD: MOV A,R3LCALL STALCALL WRBYTLCALL CACKJB F0,WRADDMOV A,R2LCALL WRBYTLCALL CACKJB F0,WRADDWRDA: MOV A,@R0LCALL WRBYTLCALL CACKJB F0,WRADDINC R0DJNZ R7,WRDALCALL STOPPOP ACCPOP PSWRET;**************************** STA: SETB SDASETB SCLNOPNOPNOPNOPNOPCLR SDANOPNOPNOPNOPNOPCLR SCLRET;**************************** WRBYT: PUSH 06HMOV R6,#08HWLP: RLC AMOV SDA,CSETB SCLNOPNOPNOPNOPNOPCLR SCLDJNZ R6,WLPPOP 06HRET;**************************** CACK: SETB SDASETB SCLCLR F0MOV C,SDAJNC CENDSETB F0CEND: CLR SCLRET;**************************** STOP: CLR SDASETB SCLNOPNOPNOPNOPNOPSETB SDANOPNOPNOPNOPNOPSETB SCLSETB SDARET;**************************** RDADD: PUSH PSWPUSH ACCRDADD1: LCALL STAMOV A,R3LCALL WRBYTLCALL CACKJB F0,RDADD1MOV A,R2LCALL WRBYTLCALL CACKJB F0,RDADD1LCALL STAMOV A,R4LCALL WRBYTLCALL CACKJB F0,RDADD1RDN: LCALL RDBYTMOV @R0,ADJNZ R7,ACKLCALL MNACKLCALL STOPPOP ACCPOP PSWRETACK: LCALL MACKINC R0SJMP RDN;**************************** RDBYT: PUSH 06HMOV R6,#08HRLP: SETB SDASETB SCL;**************************** NOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOP;*************************** MOV C,SDAMOV A,R2RLC AMOV R2,ACLR SCLDJNZ R6,RLPPOP 06HRET;**************************** MACK: CLR SDASETB SCLNOPNOPNOPNOPNOPCLR SCLSETB SDARET;**************************** MNACK: SETB SDASETB SCLNOPNOPNOPNOPNOPCLR SCLCLR SDARET;*************************** END七、调试中所遇到的问题1.温度DQ占用了中断P3.3导致无法使用两个中断2.P1口使用太多,无法连接步进电机3.键盘输入接触不好,导致温度上下限的输入不准确4.中断太长,有时会程序卡死5.显示时间温度报警不起作用6.没有时间设置模块八、调试解决了的问题a)将DQ连接到P1.4口,解放中断口来使用中断程序b)判断键盘输入值是否在指定范围内,如果不在继续按键c)将开关的功能改在按键实现九、个人体会(总结)经过这几周的单片机实验课程,进一步掌握了汇编语言的编写,虽然我们没有正式的上单片机的理论课,但是基于计算机原理的学习,我们还是能胜任单片机程序的编写工作,这次的综合设计丰富了我对汇编语言的一些经验,同时锻炼了自己的动手能力。