东北石油大学凌阳单片机课程设计驱动数码管

合集下载

基于51单片机的自动温度控制报警系统-东北石油大学实习总结报告

基于51单片机的自动温度控制报警系统-东北石油大学实习总结报告

1 2
1 2
PORT
1 2 3
GND EN P12
P10 P11 EN P00 P01 P02 P03 P04 P05 P06 P07 PVCC2 GND
GND PVCC2
PVCC1 GND
P10 P11 P12 P00 P01 P02 P03 P04 P05 P06 P07 P13 P14 P15
I/O RST
DS1302
B
VCC
BEEP
8 BAT 7 P22 6 P23 5 P24
SW-PB4
P32 K1
DS
SW-PB4
DS18B20
SW-PB4
P33 K2
SW-PB4
SW-PB4
P34 K3
SW-PB4
SW-PB4
P35 K4
SW-PB4
P37 GND
BQ1 8550
BR1
BU1
4K7
BEEP
具有线路简单,体积小的特点。因此用它来组成一个测温系统,具有线路
5
简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。 DS18B20 产品的特点
(a)、只要求一个端口即可实现通信。 (b)、在 DS18B20 中的每个器件上都有独一无二的序列号。 (c)、实际应用中不需要外部任何元器件即可实现测温。 (d)、测量温度范围在-55。C 到+125。C 之间。 (e)、数字温度计的分辨率用户可以从 9 位到 12 位选择。 (f)、内部有温度上、下限告警设置。 (6)12864 液晶
MAX232
GND
V+ VVCC
2 6 16
VCC
SC3 104
R1 OUT R2 OUT T1 OUT T2 OUT

凌阳单片机课程设计指导

凌阳单片机课程设计指导

凌阳单片机课程设计指导一、课程目标知识目标:1. 理解凌阳单片机的基本组成、工作原理及功能特点;2. 学会使用凌阳单片机的开发环境,掌握其编程语言;3. 掌握凌阳单片机在嵌入式系统中的应用。

技能目标:1. 能够独立设计简单的基于凌阳单片机的嵌入式系统;2. 能够编写、调试凌阳单片机的程序,实现基本功能;3. 能够运用所学知识解决实际问题,提高创新实践能力。

情感态度价值观目标:1. 培养学生对单片机技术的兴趣和爱好,激发学习热情;2. 培养学生的团队协作精神,提高沟通与交流能力;3. 增强学生的自信心,培养勇于克服困难、不断进取的品质。

课程性质:本课程为实践性较强的课程,以学生动手实践为主,结合理论讲解,培养学生对单片机技术的应用能力。

学生特点:学生具备一定的电子技术基础和编程能力,对单片机有一定了解,但实际操作经验不足。

教学要求:教师需结合学生特点,以实例教学为主,注重理论与实践相结合,引导学生主动参与,提高学生的动手实践能力。

教学过程中,关注学生的学习进度,及时调整教学策略,确保课程目标的达成。

通过本课程的学习,使学生能够将所学知识应用于实际项目中,提高学生的综合素质。

二、教学内容根据课程目标,教学内容分为以下三个部分:1. 凌阳单片机基础知识- 章节一:单片机概述- 单片机的定义、分类及发展历程- 凌阳单片机的特点及应用领域- 章节二:凌阳单片机硬件结构- 内部结构、外部接口及功能模块- 存储器、时钟、定时器等硬件资源2. 凌阳单片机编程与开发- 章节三:编程语言与开发环境- 语法规则、编程技巧- 开发工具的使用及配置- 章节四:程序设计与调试- 基本指令、程序结构- 调试方法及技巧3. 凌阳单片机应用实践- 章节五:典型应用案例分析- 常见模块的接口与编程- 实际项目中的应用案例- 章节六:创新设计与实践- 学生自主创新设计项目- 动手实践,实现功能要求教学进度安排:1. 基础知识部分(4课时)2. 编程与开发部分(6课时)3. 应用实践部分(6课时)教学内容确保科学性和系统性,结合教材章节,循序渐进地组织教学,使学生在掌握理论知识的基础上,提高实践能力。

东北石油大学单片机课程设计自动打铃控制器解析

东北石油大学单片机课程设计自动打铃控制器解析

第1章绪论本设计是根据我们所学习的单片机课程,按照大纲要求对我们进行的一次课程检验,是进行单片机课程训练的必要任务,也对我们掌握单片机应用有很大的帮助。

掌握单片机技术是一门不可或缺的技术,对我们将来的工作以及生活和学习都有很密切的联系。

近年来,随着电子技术和微机计算机的迅速发展,单片机的档次不断提高,其应用领域也在不断的扩大,已在工业控制、尖端科学、智能仪器仪表、日用家电、汽车电子系统、办公自动化设备、个人信息终端及通信产品中得到了广泛的应用,成为现代电子系统中最重要的智能化的核心部件。

当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未有的速度被单片机智能控制系统所取代。

单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。

目前,一个学习与应用单片机的高潮正在工厂、学校及企事业单位大规模地兴起。

而本文是用AT89C51单片机设计的一个自动打铃系统。

第2章总体设计思想2.1 基本原理利用单片机的基本原理和功能,控制自动打铃控制器,掌握单片机的最小电路和单片机最常见的外围扩展电路,利用C语言编程并结合单片机开发板上的功能设计实现一个综合程序“单片机多功能打铃器控制器”,完成常见外围组件的驱动。

2.2 设计框图图2.1 硬件电路设计设定51单片机工作在定时器工作方式1,每100ms产生一次中断,利用软件将基准100ms单元进行累加,当定时器产生10次中断就产生1S信号,这时秒单元加1。

同理,对分单元时单元和上下午单元计数,从而产生秒,分,时,上下午的值,通过五位七段显示器进行显示。

本系统采用四个按键,1键为功能键,另外三个做控制键。

按一下1键进入时间设置,接着按2键选择需要调整的位,按3键进行加数,按4键进行减数,按两下1键调整结束时钟继续走动。

当时钟时间与设置时间一致时,驱动电路动作进行打铃,按时间点不同打铃规则不同,此时按2键强制灭铃。

单片机实训报告_数码管

单片机实训报告_数码管

一、实训背景随着科技的不断发展,单片机在各个领域的应用越来越广泛。

数码管作为单片机系统中的一种重要显示设备,其设计与应用在单片机应用中具有举足轻重的地位。

为了提高学生的动手实践能力和理论联系实际的能力,本次实训以数码管为核心,通过设计一个基于单片机的数码管应用系统,使学生深入了解单片机原理、硬件设计以及编程技术。

二、实训目标1. 掌握单片机最小系统搭建方法;2. 熟悉数码管的工作原理和驱动方式;3. 学会使用C语言编写单片机程序;4. 能够将理论知识应用于实际项目中,提高实践能力。

三、实训内容1. 硬件设计(1)单片机选型:选用AT89C51单片机作为核心控制芯片。

(2)数码管选型:选用共阴极7段数码管,具有4位数码管显示功能。

(3)驱动电路设计:采用译码器74HC4511实现数码管显示,通过单片机控制译码器输出,实现数码管显示。

(4)电源电路设计:采用稳压电路为单片机和数码管提供稳定的电源。

2. 软件设计(1)初始化程序:设置单片机的工作模式、定时器、串口等。

(2)显示程序:编写数码管显示程序,实现数字的实时显示。

(3)定时器程序:利用定时器实现数字的递增显示。

(4)按键程序:编写按键扫描程序,实现按键功能。

四、实训过程1. 搭建单片机最小系统首先,搭建单片机最小系统,包括晶振、复位电路、电源电路等。

通过连接AT89C51单片机、晶振、电阻、电容等元器件,实现单片机的基本功能。

2. 编写程序(1)初始化程序:设置单片机的工作模式、定时器、串口等。

(2)显示程序:编写数码管显示程序,实现数字的实时显示。

(3)定时器程序:利用定时器实现数字的递增显示。

(4)按键程序:编写按键扫描程序,实现按键功能。

3. 系统调试在搭建好硬件电路和编写好程序后,通过串口调试工具(如串口调试助手)进行程序下载和调试。

观察数码管显示效果,确保程序正常运行。

4. 功能测试对数码管显示系统进行功能测试,包括数字显示、定时器功能、按键功能等。

东北石油大学-单片机课程设计-8位竞赛抢答器

东北石油大学-单片机课程设计-8位竞赛抢答器

目录第1章绪论 (2)1.1 设计目的 (2)1.2 设计原理 (2)1.3 设计方案 (2)第2章系统结构及主要元器件 (2)2.1 系统结构 (2)2.2 主要元器件 (2)第3章硬件设计 (4)3.1 时钟及复位电路 (4)3.2 选手抢答电路 (4)3.3 显示电路 (5)3.4 开始、复位及蜂鸣器电路 (5)3.5 硬件总图 (6)第4章软件设计 (7)4.1 程序设计总流程 (7)4.2 中断服务子程序流程 (8)4.3 蜂鸣器报警程序流程 (8)第5章系统仿真及调试 (9)5.1 利用Keil软件进行程序调试 (9)5.2 利用Proteus进行系统仿真 (9)结论 (11)参考文献 (12)附录 (13)第1章绪论1.1 设计目的抢答器作为一种工具,已广泛应用于各种竞赛场合。

但抢答器的使用频率较低,且有的要么制作复杂,要么可靠性低。

作为一个普通企业,每年使用的次数极少,往往因长期存放使抢答器的电子器件损坏,再购置的麻烦和及时性就会影响活动的开展,故一个好的抢答器应具有价格低廉,体积较小,易于操作等特点。

为满足上述要求设计了本抢答器。

1.2 设计原理通过键盘改变抢答的时间,原理与闹钟时间的设定相同,将定时时间的变量置为全局变量后,通过键盘扫描程序使每按下一次按键,时间加1(超过30时置0)。

同时单片机不断进行按键扫描,当参赛选手的按键按下时,用于产生时钟信号的定时计数器停止计数,同时将选手编号(按键号)和抢答时间分别显示在LED上。

1.3 设计方案抢答器可同时供8名选手比赛。

设置一个抢答控制开关S,开关由主持人控制。

抢答器具有锁存与显示功能并能定时抢答,一次抢答的时间由主持人设定。

当主持人启动“开始”键后,定时器进行减计时,同时扬声器响一下,时间为0.5s左右。

参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。

精选东北石油大学单片机实习报告

精选东北石油大学单片机实习报告

精选东北石油大学单片机实习报告精选东北石油大学单片机实习报告东北石油大学单片机实习报告一、实习目的与要求1、掌握微处理器、微型机和单片机的基本概念2、了解微机系统的组成3、弄清单片机的内部结构和工作原理4、了解单片机的分类和发展趋势5、了解单片机的应用6、学会用汇编语言和C语言编写单片机程序二、单片机开发板原理及各部分功能说明1、51单片机图1单片机电路 CPU:由运算和控制逻辑组成,同时包括中断系统和部分外部特殊功能寄存器; RAM:用以存放读写的数据,如运算的中间结果、最终结果以及欲显示的数据;ROM:用以存放程序、一些原始数据和表格;I/O口:四个8位并行I/O口,既可用作输入,也可用作输出;T/C:两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式;五个中断源的中断控制系统;2、led电路图2led电路采用共阳解法当单片机中给低电平时电量led通过led的电流大约为百欧级。

3、数码管电路图3数码管电路同样采用共阳接法,P1和P0口分别控制段和位。

4、按键电路图4按键电路独立按键共四个由P32到P35控制。

矩阵键盘按键有2个管脚,一个管脚接一个IO口,自定义MCU的IO口其中一个为输入、另一个为输出,在对输出进行翻转后读P3口状态,即输出为0时读一次状态输出为1时读一次状态,如果按键没有按下则两次状态相同且为初始状态,如果按键按下则状态改变。

先进行列判断,然后进行行判断。

5、晶振电路MC230P图5晶振电路单片机系统里都有晶振,在单片机系统里晶振作用非常大,全程叫晶体振荡器,他结合单片机内部电路产生单片机所需的时钟频率,单片机晶振提供的时钟频率越高,那么单片机运行速度就越快,单片接的一切指令的执行都是建立在单片机晶振提供的时钟频率。

单片机晶振的作用是为系统提供基本的时钟信号。

三、硬件调试与软件开发1、电路板故障这类故障往往由于设计和加工制板过程中工艺性错误所造成的。

主要包括错线、开路、短路。

实验四--单片机驱动数码管显示

实验四--单片机驱动数码管显示

实验四单片机驱动数码管显示一实验目的1 学习单片机驱动数码管动态显示的电路设计和编程方法二实验原理1、单片机系统中常用的显示器有:发光二极管LED(Light Emitting Diode)显示器、液晶LCD(Liquid Crystal Display)显示器、CRT显示器等。

LED、LCD显示器有两种显示结构:段显示和点阵显示。

七段数码管显示为了显示数字或字符,必须对数字或字符进行编码。

七段数码管加上一个小数点,共计8段。

因此为LED显示器提供的编码正好是一个字节。

字母一般用米字型。

编码表:0x3f 0x06 0x5b 0x4f 0x66 0x6d0 1 2 3 4 50x7d 0x07 0x7f 0x6f 0x77 0x7c6 7 8 9 A B0x39 0x5e 0x79 0x71 0x00C D E F 无显示七段数码管对应八位由低到高:a,b,c,d,e,f,g,dp例:数码管显示2则要点亮a,b,g,e,d段,对应的八位是01011011数码管动态显示方式是将所有显示位的段选择线并联在一起,有统一的I/O资源来控制。

各个数码管公共端也有I/O资源来控制,分时的选通各个数码管进行动态显示。

每个瞬间只能选通一个数码管,人眼的暂留时间为,每个数码管的选通时间必须在以内,通常选择15ms~20ms。

电路图见实验附图。

三实验内容理解动态显示电路图,参考驱动程序,单片机P0口作段码输出控制,P1口作位码控制,使单片机驱动6个7段数码管输出实验当天年、月、日六位数字。

四、实验步骤(1)单片机最小应用系统1的P0口接段码口a~h,P1口接位码口S1~S6。

(2)在KEIL软件下编写程序并调试,完成实验内容要求。

(3)下载程序,通过实验箱验证设计电路和编写的程序是否达到实验要求。

下载程序,通过实验箱验证设计电路和编写的程序是否达到实验要求。

五参考程序与电路汇编语言参考程序:ORG 0000HLJMP STARTORG 0030HSTART: MOV R0,#30HMOV R1,#40HMOV 30H,#1MOV 31H,#2MOV 32H,#1MOV 33H,#1MOV 34H,#2MOV 35H,#0START1: MOV DPTR,#TABMOV R3,#6LOOP: MOV A,@R0MOVC A,@A+DPTRMOV @R1,AINC R0INC R1DJNZ R3,LOOPMOV R3,#6MOV R1,#40HMOV A,#20HLOOP1: MOV P1,@R1MOV P2,AACALL DELAYMOV P2,#00HRR AINC R1DJNZ R3,LOOP1LJMP START1TAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,58H,5EH,7BH,71H,00H,40H DELAY: MOV R4,#100LOOP2: DJNZ R4,LOOP2RETENDC语言参考程序:#include <reg51.h>#include <intrins.h>unsigned char code table[]={0x3f,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};unsigned char date[]={1,2,1,1,2,0};void delay(){unsigned char j;for(j=0;j<=100;j++);}void main(){unsigned char i,a;while(1){a=0x40;for(i=0;i<6;i++){P1=table[date[i]];a=_cror_(a,1);P2=a;delay();P2=0x00;}}}数码管动态显示电路图(位选信号为高电平,段选信号为高电平):。

单片机驱动数码管设计详解(用74HC595实现)

单片机驱动数码管设计详解(用74HC595实现)

单⽚机驱动数码管设计详解(⽤74HC595实现)简单设计了⼀个单⽚机驱动数码管的电路,该设计中只使⽤了4位数码管,占⽤了单⽚机3个IO⼝,如果驱动芯⽚全⽤满可以驱动8位数码管。

仅供初学者分享学习。

1. 数码管显⽰设计本设计使⽤了⼀个4位的数码管,为共阳型,为了节省单⽚机的IO⼝,使⽤了两⽚74HC595作为数码管的驱动芯⽚,共占⽤3个IO⼝。

74HC595部分电路图如下:与单⽚机相连接的三个脚分别为:HC_DAT,HC_RCK,HC_CLK。

两⽚595采⽤级联⽅式,即U2的第9脚接到U3的第14引脚。

2. 74HC595简介74HC595是8位的移位寄存器,串⼊并出,并具有锁存功能,被⼴泛的⽤于数码管、点阵的驱动电路中。

其管脚介绍如下:15:数据输出A-接数码管数据A段;1:数据输出B-接数码管数据B段;2:数据输出C-接数码管数据C段;3:数据输出D-接数码管数据D段;4:数据输出E-接数码管数据E段;5:数据输出F-接数码管数据F段;6:数据输出G-接数码管数据G段;7:数据输出H-接数码管数据H段;16:电源正脚-接电源正;8:电源负脚-接电源负;14:数据输⼊脚-接单⽚机管脚;12:数据锁存时钟-接单⽚机管脚;11:数据输⼊时钟-接单⽚机管脚;13:使能输出脚-低电平有效,接低电平;10:数据清零-不清零,接⾼电平;9:数据级联输出-接下⼀⽚595的数据输⼊脚;74HC595的真值表如下:知道了74HC595的引脚定义和真值表,那该如何编程呢?下⾯重点来了,通过时序图来编程。

看重点!!!3. 74HC595时序图我是重点!我是重点!我是重点!通过时序可以看出:1. SCK是上升沿的时候要把数据写⼊;2. RCK是上升沿的时候数据才能锁存显⽰;3. 有数据操作的过程中RESET必须是⾼电平;4. EN必须是低电平,595才能⼯作;知道了以上4点就可以写程序了。

其中3、4条是硬件连接上的事情(也可以⽤单⽚机的IO⼝来连接,这样的话可以随时控制74HC595的⼯作与否情况)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录第1章研究背景及设计目的要求 (1)1.1 研究背景 (1)1.2 设计目的要求 (1)第2章设计的方案及基本原理 (2)2.1设计方案 (2)2.2基本原理 (2)第3章程序设计 (5)3.1主程序流程图 (5)3.2程序代码 (5)第4章调试结果及分析 (6)4.1调试运行及结果 (6)4.2调试结果分析 (7)第5章心得与体会 (8)参考文献 (9)附录 (10)第1章研究背景及设计目的要求1.1 研究背景随着电子科技的逐步发展,单片机领域发展逐步趋向集成化,微型化,本设计利用凌阳单片机控制6个LED数码管的显示,完成本课程设计需要熟悉凌阳单片机的工作原理,了解该款16位单片机的内部结构如图1-1所示,以及它功能上的特性:体积小、集成度高、可靠性好且易于扩展。

µ’nSP™家族把各功能部件模块化地集成在一个芯片里,内部采用总线结构,因而减了各功能部件之间的连线,提高了其可靠性和抗干扰能力。

T0图1-1 凌阳单片机内部结构图数码管是一种半导体发光器件,其基本单元是发光二极管。

数码管分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元,按能显示多少个“8”可分为1位、2位、4位等数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。

其驱动方式具体原理将在后续介绍。

1.2 设计目的要求1.熟悉SPCE061A控制LED数码管显示的方法。

2.进一步熟悉µ’nSP™汇编语言和C语言程序设计。

3.最终实现设计效果由六个LED数码管移位循环显示0~9,即:“012345”,“123456”,“234567”,……,“890123”,“901234”……。

第2章 设计的方案及基本原理2.1设计方案运用 Windows 系统和 µ’nSP ™ IDE 仿真环境的 PC 机一台以及61板一套、LED 键盘模组一套、10 针排线两根来控制LED ,通过程序的设置使LED 显示程序中的数字,即显示“0”“1”“2”“3”“4”“5”“6”“7”“8”“9”。

2.2基本原理数码管由7个发光二极管组成,行成一个日字形,它们可以共阴极,也可以共阳极.通过解码电路得到的数码接通相应的发光二极而形成相应的字,这就是它的工作原理基本的半导体数码管是由7个条状的发光二极管(LED )按图2-1(a )所示排列而成的,可实现数字“0~9”及少量字符的显示。

另外为了显示小数点,增加了1个点状的发光二极管,因此数码管就由8个LED 组成,我们分别把这些发光二极管命名为“a ,b ,c ,d ,e ,f ,g ,dp ”,排列顺序如下图2-1。

图2-1 管脚排列及内部结构LED 显示器中每个发光二极管要通过5mA —20mA 电流才能达到正常亮度,如图2-2LED 原理图。

SPCE061A 的输入电流可达到12mA ,输出可达5mA ,实际上不用驱动电路即可达到正常亮度,为了可靠性设计可采用晶体管构成驱动电路。

这样,由于视觉暂留现象,我们看到的便是6只显示器同时在显示。

+ (a)管脚排列 (c)共阴极(一)(b)共阳极图2-2 LED 原理图 当需要某一位数码管显示数字时,只需要先选中这位数码管的位信号,再给显示数字的段码。

比如当在第一个数码管上显示一个“6” 时,如图 2-3,先选中第一位数码管的位信号(实验箱上标号是“1”),即先给和“1”相连接的 I/O 口送1;再把段码设置为0x007d ,即在 a 、c 、d 、e 、f 、g 各段引出的端口检测到高电平,就可以显示一个“6”出来。

图2-3 数码管显示“6” 要实现每个数码管分别显示不同数字的效果,例如,要显示“123456”,则需要不断地快速刷新数码管的显示状态,即先使第一个数码管显示数字“1”,其他数码管熄灭,然后熄灭第一个数码管,第二个数码管显示数字“2”,以此类推。

其中晶体管共集电极接法由图2-4给出。

这样,利用人眼的视觉残留效应,就产生了“123456”同时显示出来的效果。

图2-4晶体管共集电极接法 ab c defgdpA数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划“a,b,c,d,e,f,g,dp”的同名端连在一起,如图2-5所示连接方法。

另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。

通在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。

图2-5 SPCE061A和6位LED显示电路模块的连接按照上面数码管的显示原理,当要在第四个数码管上显示一个“E”时,先要通过IOB12端口给“4”端口送一个1,选中第四个数码管;由图4-1可以看出,显示“E”时,需要a、d、e、f、g段被点亮,所以给IOA0、IOA3、IOA4、IOA5、IOA6端口各送一个1,则在a、d、e、f、g端口各能检测到一个高电平,就可以点亮a、d、e、f、g段,显示一个“E”。

第3章程序设计3.1主程序流程图程序运行具体过程,开始时单片机进行初始化,将属性寄存器,方向寄存器数据寄存器清零,并设置系统时钟自身开始计数。

当初始计数小于等于99循环递归自身过程,当DIG>99时计数器开始自加时,以此控制位置变量POS使其在自累加的时候控制数码管显示位数,小于6时循环累加到达6即清零重新开始计数这样完成了数码管位数的显示控制。

图3-1主程序流程图。

图3-1 主流程图3.2程序代码主程序代码如附录所示第4章调试结果及分析4.1调试运行及结果打开凌阳单片机运行环境,将预存写好的程序输入到编辑栏内,打开单片机主电源,避免冷启动使单片机出现漂移,经检查无误后进行运行主程序,同时观察程序运行状况避免死循环导致死机现象。

调试结果如图4-1使数码管显示“123456”和图4-2是数码管显示“012345”所示。

图4-1数码管显示“123456”图4-2数码管显示“012345”4.2 调试结果分析程序运行过程中出现了诸多情况,在确定主程序正确无误的情况下,出现报错,可能是在输入程序时忘记了注释和主程序的区分,误将主程序作为注释,致使程序运行丢失了必要语句从而发生机械中断。

在运行程序过程中,出现了LED 显示不规则数码的现象,原因是未将LED所有管脚与I/O口进行短接,漏接了若干个管脚造成输出与程序设计上的不匹配。

当程序准确无误时发现显示数码过程中LED数码管始终闪烁不定,原因是在设计过程中单片机驱动LED频率过低造成人眼能观察到他的刷新过程,类似细节问题应该在编辑程序的时候给予足够的重视。

如果要测试定时中断频率,只要在中断中对这个测试口取反,即可通过示波器观测中断频率;要测试主程序运行周期,只要把取反指令放在主程序循环圈中,即可;要测试一次复杂计算(或其它动作)需要消耗多少时间,我们只需在计算之前把测试口变为高电平,等到计算结束后立即把输出口恢复到低电平,这段高电平的时间长度,即为计算消耗时间;两个动作之间的延时时间,我们也可以按照上一条方法一样,在两个动作发生前把测试口分别取一次反。

第5章心得与体会通过这次的课程设计作品的制作让我对单片机的理论有了更加深入的了解,同时在具体的制作过程中我们发现现在书本上的知识与实际的应用存在着不小的差距,书本上的知识很多都是理想化后的结论,忽略了很多实际的因素,或者涉及的不全面,可在实际的应用时这些是不能被忽略的,我们不得不考虑这方的问题,这让我们无法根据书上的理论就轻易得到预想中的结果,有时结果甚至很差别很大。

通过这次实践使我更深刻的体会到了理论联系实际的重要性,我们在今后的学习工作中会更加的注重实际,避免只会纸上谈兵。

首先,学习单片机要有一定的基础:电子技术方面要有数字电路和模拟电路等方面的理论基础,特别是数字电路;编程语言要求汇编语言或C语言。

要想成为单片机高手,建议首先学习汇编语言,尽管汇编语言属于低级语言,编程效率低,但是较C语言具有目标代码简短,占用内存少,执行速度快等优点,更重要的是能使我们尽快熟悉单片机的内部结构,并能对其进行精确的控制。

为期一个星期的课程设计已经结束,在这一星期的学习、设计、搜索资料过程中我感触颇深。

使我对抽象的理论有了具体的认识。

通过这次课程设计,我掌握了常用元件的识别和测试;熟悉了常用的仪器仪表;了解了电路的连接、测试方法;以及如何提高电路的性能等等。

这个课程设计课我还不是很熟悉,第一次做难免会感到陌生,而且对很多基本的东西都不是很清楚,在一定程度上影响了我们的课程设计的质量,希望能在以后的时间里认真学习好这些基础的东西。

我对这个课程设计课有着深刻的体会:要想做好这个课程设计,就必须认认真真地去做,不要怕麻烦,遇到不懂的问题就要主动去问同学或者老师。

参考文献[1]胡宴如.模拟电子技术[M].北京高等教育出版社,2000.3.[2]彭介华.电子技术课程设计指导[M].北京高等教育出版社,1997.[3]罗亚非.凌阳16位单片机应用基础[M].北京航空航天大学出版社,2005.[4]邱关源.电路[M].北京高等教育出版社,2006.5.[5]阎石.数字电子技术基础[M].北京高等教育出版社,2006.5.[6]参考网址单片机的控制系统课程设计10附 录主程序如下所示: .include hardware.inc .define LED_SEG 0x00ff.define LED_DIG 0x3f00 .ram.var Pos,Dig,TimerCnt .data DigCode:.dw 0x3F,0x06,0x5B,0x4F,0x66 .dw 0x6D,0x7D,0x07,0x7F,0x6F .code.public LedDispDig LedDispDig: push r1,r2 to [sp] r1=1[P_Watchdog_Clear]=r1 r1=[P_IOB_Dir] [P_IOB_Dir]=r1 r1=[P_IOB_Attrib] r1|=LED_DIG+LED_SEG [P_IOB_Attrib]=r1 r1=0x0080 r2=[Pos] L_SetIOBHigh: r1=r1 LSL 1 r2-=1jnz L_SetIOBHigh [P_IOB_Data]=r1 r1=[Dig] r2=DigCoder2+=r1 r1=[r2]r2=[P_IOB_Buffer] r2|=r1[P_IOB_Data]=r2 pop r1,r2 from [sp]retf .public _main r1=0 L_MainLoop:r2=1000 L_TimerLoop: [Dig]=r1 r3=1 [Pos]=r3L_DigLoop:call LedDispDig r3=[Dig]r3+=1cmp r3,9jna L_DigNext r3=0L_DigNext:[Dig]=r3 r3=[Pos] r3+=1 [Pos]=r3 cmp r3,6 jna L_DigLoop r2-=1jnz L_TimerLoop r1+=1cmp r1,9 jna L_MainLoop r1=0jmp L_MainLoop retf。

相关文档
最新文档