当前位置:文档之家› 单片机第6章程序设计

单片机第6章程序设计

单片机原理及应用

授课人:曾孟佳

第6章程序设计第6章单片机程序设计

◆ 6.1 机器语言、汇编语言与高级程

序设计语言

◆ 6.2 汇编语言基本程序设计

◆ 6.3 汇编语言高级程序设计

程序设计语言

程序设计概述—设计语言

最早,人们只能用机器语言(二进制)编写程序;

为了方便记忆,人们开始用助记符形式的汇编语

言编写程序,称为低级语言。然后再用汇编系统

将其翻译成机器语言,该过程称为汇编;

为了用更接近人的语言编写程序,程序设计师们

发明了高级语言,如:BASIC、FORTRAN、

PASCAL、C、JAVA等,然后再用编译系统将

其翻译成机器语言,该过程称为编译;

由低级或高级语言构成的程序称为源程序;

由机器语言构成的程序称作目标程序。

源程序目标程序

低级语言机器语言

汇编

高级语言机器语言

编译

程序设计概述—设计语言

高级程序设计语言

第6章程序设计

6.2 汇编语言基本程序设计

◆顺序程序设计

◆分支程序设计

◆循环程序设计

◆子程序及其调用

◆查表程序设计

◆散转程序设计

第6章程序设计6.2 汇编语言基本程序设计

顺序程序设计

顺序程序是指程序中的指令执行按照指令的

顺序程序——

位置的顺序来执行的程序。机器执行这类程

序时,只需按照指令的先后顺序依次执行,

中间不会有任何分支。故顺序程序又被称为

无分支程序。顺序程序是构成复杂程序的基

础。

结构特点——按指令的先后顺序依次执行。

例1 两个无符号双字节数相加。

设被加数存放于内部RAM 的40H (高位字节), 41H (低位字节), 加数存放于50H (高位字节), 51H (低位字节), 和数存入40H 和41H 单元中。

START: CLR C

MOV R0, #41H

MOV R1, #51H

AD1: MOV A, @R0

ADD A,@R1 MOV @R0, A

DEC R0 DEC R1 MOV A, @R0

ADDC A, @R1 MOV @R0, A RET

; 将Cy 清零 ; 将被加数地址送数据指针R0 ; 将加数地址送数据指针R1 ; 被加数低字节的内容送入A ; 两个低字节相加

; 低字节的和存入被加数低字节中 ; 指向被加数高位字节 ; 指向加数高位字节

; 被加数高位字节送入A ; 两个高位字节带Cy 相加 ; 高位字节的和送被加数高位字节

; 子程序调用返回

例2 拼字程序(将不同单元的内容切取有用部分,压缩拼装到一个单元):设外部RAM中的1100H和1101H单元中存放着8位二进制数,取出两个单元中的低半字节合并成一个字节后,存到外部RAM中的1102H单元中去。

ORG 0000H

MOV DPTR, #1100H

MOVX A, @DPTR

ANL A, #0FH SWAP A

MOV R1, A

INC DPTR

MOVX A, @DPTR ANL A, #0FH

ORL A, R1

INC DPTR

MOVX @DPTR, A SJMP $;取第1个半字节;移至高4位

;取第2个字节;取第2个半字节;拼字

;存放结果

例3将内部RAM 的20H 单元中的8位无符号二进制数转换为三位BCD 码,并将结果存放在FIRST(百位)和SECOND(十位、个位)两单元中。

分析可将被转换数除以100,得百位数;余数再除以10得十位数;最后余数即为个位数。

;取数

;除数100→B ;除100;百位BCD

;除数10→B ;除10

;十位数送高位

;A 为(十位、个位)BCD ;存十位、个位数

FIRST DATA 22H SECOND DATA 21H ORG 1000H HBCD :

MOV A ,20H MOV B ,#64H DIV AB

MOV FIRST ,A MOV A ,B MOV B ,#0AH DIV AB SWAP A ORL A ,B

MOV SECOND ,A SJMP $

END

分支程序是指程序的执行在某些地方没有按照指

令的位置的顺序,而是跳过一些指令去执行其他

的指令的程序。

分支程序——

特点—— 程序中含有转移指令

分为无条件分支程序和条件分支程序

结构形式有两种:单分支结构和多分支结构

例1 设内部RAM 30H ,31H 单元中存放两个无符号数,试比较它们的大小。将较小的数存在30H 单元,较大的数放在31H 单元中。

;0→CY

;做减法比较两数;若(30H )小,则转移;交换两数

ORG

1000H START :CLR

C

MOV A ,30H SUBB A ,31H

JC NEXT

MOV A ,30H XCH A ,31H MOV

30H ,A NEXT :NOP

SJMP $

END

第6章程序设计

6.2 汇编语言基本程序设计

分支程序设计

例2设变量x 以补码的形式放在片内RAM 30H 单元,函数y 与x 有如下关系式。

试编制程序,根据x 的大小求出y 并放回原单元。

??

?

??<+=>=050,20#0,

x x x H x x y 分析:取出变量后先作取值范围的判断,对符号的判断可用位操作类指令,也可用逻辑运算类指令实现,此处用逻辑运算指令。

MOV A, 30H JZ NEXT ANL A, #80H JZ ED

MOV A, #05H ADD A, 30H MOV 30H, A SJMP ED

NEXT: MOV 30H, #20H ED: SJMP $

;判断是否为零;判断符号位

循环程序设计

循环程序——从头到尾多次、连续、重复执行的程序。特点——利用转移指令反复运行需要多次重复的程序段。

循环程序的组成:

1. 初始化部分(设定循环次数等)。

2. 循环体(重复执行的部分,用于完成实际操作)

3. 循环控制(不断修改和判别循环变量,直至结束)。

4. 循环结束处理。

循环程序设计

循环控制部分

开始初始化部分

处理部分

修改控制变量循环结束?

结束部分结束

N

Y 先处理后判断

循环控制部分

开始

初始化部分

修改控制变量条件成立?

处理部分

结束部分结束

N Y

先判断后处理

循环体

第6章程序设计6.2 汇编语言基本程序设计

循环程序设计

例1 已知内存单元有16个二进制无符号数,分别存放在30H~3FH中试求它们的累加和,并将其和数存放在R4、R5中。

编程说明:存放16个

二进制无

符号数的

首地址为

30H,此

循环程序

的循环次

数为16次,和数放在

R4、R5中。

开始

R0←30H, R2←10H

R4←0, R5←0

R5←(R5)+(R0)

R4←(R4)+C Y

R0←R0+1

R2←R2-1

R2=0?

结束

N

Y

START:MOV R0,#30H

MOV R2,#10H

MOV R4,#00H

MOV R5,#00H

LOOP: MOV A , R5

ADD A , @R0

MOV R5 , A

MOV A , #00H

ADDC A , R4

MOV R4 , A

INC R0

DJNZ R2 , LOOP

END

;数据起始地址

;循环次数设置

;求和

;求和结果放R5

;进位结果放R4

第6章程序设计

例2 已知内部RAM 的BLOCK 单元开始有一无符号数据块,块长在LEN 单元。请编写求出数据块中各数累加和并存入SUM 单元的程序。

6.2 汇编语言基本程序设计

循环程序设计

①先判断后处理ORG 0200H

LEN DATA 20H

SUM DATA 21H

BLOCK DATA 22H

CLR A

MOV R2, LEN

MOV R1, #BLOCK INC R2

SJMP CHECK

LOOP: ADD A, @R1INC R1

CHECK: DJNZ R2, LOOP MOV SUM ,A

SJMP $

END

;A 清零;块长送至R2;块起始地址至R1;(R2)←块长+1;(A)←(A)+(R1)

;修改数据指针R1;未完转LOOP ;存累加和②先处理后判断ORG 0200H LEN DATA 20H SUM DATA 21H BLOCK DATA 22H CLR A MOV R2, LEN

MOV R1, #BLOCK NEXT: ADD A ,@R1 INC R1DJNZ R2,NEXT MOV SUM ,A

SJMP $END ;A 清零;块长送至R2;块起始地址送R1;(A)←(A)+(R1);修改数据指针R1;未完转NEXT ;存累加和

第6章程序设计6.2 汇编语言基本程序设计

循环程序设计——指定单元清零

在应用系统程序设计时, 有时经常需要将存储器中各部分地址单元作为工作单元, 存放程序执行的中间值或执行结果, 因此要将使用的工作单元首先清零中。

例3:设有50个工作单元, 其首

址为外部存储器8000H单元, 则

其工作单元清零程序如下:

CLEAR: CLR A

MOV DPTR, #8000H

MOV R2, 50

CLEAR1: MOVX @DPTR, A INC DPTR

DJNZ R2, CLEAR1

RET ;工作单元首址送指针;设置循环次数

;修改指针

;控制循环

改变工作单元首址和循环次数就可以达到对任意单元清零的目的

第6章程序设计

6.2 汇编语言基本程序设计

循环程序设计——延时时间的设定

源程序指令周期

DELAY :MOV R3,#(X )H

DEL2:MOV R4,#(Y )H DEL1:NOP NOP DJNZ R4,DEL1DJNZ R3,DEL2

RET

假设晶振频率fosc 为12MHZ ,则T 机器=12T 时钟=12?1/fosc=1us 延时时间的简化计算结果:(1+1+2) ?Y ?X 若想延时50ms ,只需修改计数初始值,即(1+1+2) ?125?100us=50ms

[][]2T 机器2T 机器1T 机器1T 机器2T 机器

2T 机器内循环

循环

对于需延时更长的时间,可采用更多重的循环,如秒延时,可用三重循环。

注意:内外层循环不

能交叉。

第6章程序设计

6.2 汇编语言基本程序设计

循环程序设计——延时时间的设定

DELAY: MOV R2, #10 DEL3:MOV R3,#200DEL2:MOV R4,#125DEL1:NOP

NOP

DJNZ R4,DEL1DJNZ R3,DEL2DJNZ R2, DEL3RET

1S 延时程序

子程序设计

?在实际问题中,常常会遇到在一个程序中多次子程序——

用到相同的运算或操作,若每遇到这些运算或操

作,都从头编起,将使程序繁琐、浪费内存。因

此在实际中,经常把这种多次使用的程序段,按

一定结构编好,存放在存储器中,当需要时,可

以调用这些独立的程序段。通常将这种可以被调

用的程序段称为子程序。

主要内容:

1. 主程序与子程序的关系

2. 子程序嵌套

3. 子程序的调用与返回

CAM编程的基本实现过程

CAM编程的基本实现过程 数控(简称NC)编程技术包含了数控加工与编程、金属加工工艺、CAD/CAM软件操作等多方面的知识与经验,其主要任务是计算加工走刀中的刀位点(简称CL点)。根据数控加工的类型,数控编程可分为数控铣加工编程、数控车加工编程、数控电加工编程等,而数控铣加工编程又可分为2.5轴铣加工编程、3轴铣加工编程和多轴(如4轴、5轴)铣加工编程等。3轴铣加工是最常用的一种加工类型,而3轴铣加工编程是目前应用最广泛的数控编程技术。 提示:本书中所提及的数控加工和编程,如无特别注明,均指2.5轴铣数控加工和编程或3轴铣数控加工和编程。 数控编程经历了手工编程、APT语言编程和交互式图形编程三个阶段。交互式图形编程就是通常所说的CAM软件编程。由于CAM软件自动编程具有速度快、精度高、直观性好、使用简便、便于检查和修改等优点,已成为目前国内外数控加工普遍采用的数控编程方法。因此,在无特别说明的情况下,数控编程一般是指交互式图形编程。交互式图形编程的实现是以CAD技术为前提的。数控编程的核心是刀位点计算,对于复杂的产品,其数控加工刀位点的人工计算十分困难,而CAD技术的发展为解决这一问题提供了有力的工具。利用CAD技术生成的产品三维造型包含了数控编程所需要的完整的产品表面几何信息,而计算机软件可针对这些几何信息进行数控加工刀位的自动计算。因此,绝大多数的数控编程软件同时具备CAD 的功能,因此称为CAD/CAM一体化软件。 由于现有的CAD/CAM软件功能已相当成熟,因此使得数控编程的工作大大简化,对编程人员的技术背景、创造力的要求也大大降低,为该项技术的普及创造了有利的条件。事实上,在许多企业从事数控编程的工程师往往仅有中专甚至高中的学历。 目前市场上流行的CAD/CAM软件均具备了较好的交互式图形编程功能,其操作过程大同小异,编程能力差别不大。不管采用哪一种CAD/CAM软件,NC编程的基本过程及内容可由图1-1表示。 .1 获得CAD模型 CAD模型是NC编程的前提和基础,任何CAM的程序编制必须有CAD模型为加工对象进行编程。获得CAD模型的方法通常有以下3种: (1)打开CAD文件。如果某一文件是已经使用MasterCAM进行造型完毕的,或是已经做过编程的文件,那么重新打开该文件,即可获得所需的CAD模型。 (2)直接造型。MasterCAM软件本身就是一个CAD/CAM软件,具有很强的造型功能,可以进行曲面和实体的造型。对于一些不是很复杂的工件,可以在编程前直接造型。 (3)数据转换。当模型文件是使用其他的CAD软件进行造型时,首先要将其转换成MasterCAM专用的文件格式(MC9文件)。通过MasterCAM的数据转换功能,MasterCAM可以读取其他CAD软件所做的造型。MasterCAM提供了常用CAD软件的数据接

单片机课程设计报告

《单片机原理及接口技术》课程设计题目:简易计算器设计 级:电子1547 名:苏丹丹、李静、齐倩 号:05号、17号、11号

导教师:张老师 间:2013年12月 西安航空学院电气学院

目录 一、选题的背景和意义-------------------1 1.1选题的背景-------------------------------------1 1.2选题的意义-------------------------------------1 二、总体设计-------------------------------1 2.1设计任务---------------------------------------1 2.2方案选择---------------------------------------1 三、硬件设计-------------------------------2 3.1 元器件名称--------------------------------------------------------2 3.2 计算器按键介绍--------------------------------------------------2 3.3硬件系统框图、单元电路--------------------------3 四、软件设计-------------------------------3 4.1 软件调试步骤-----------------------------------------------------3 4.2软件设计流程图---------------------------------------------------4 五、结束语------------------------------------5 六、参考文献--------------------------------5 七、附录---------------------------------------6

STC12C5A60S2单片机课程设计报告

一、课程设计基本情况介绍 1.1课程设计的基本目的与任务 本课程设计旨在驾驭本专业学生理论指导实践能力以及电子产品工程设计与开发能力。本实践课所要达到的主要目的是: 1、通过本次课程设计,是对学生综合能力的检,提高学生综合运用专业知识,强化单片机 应用系统设计与防震能力。 2、本次课程设计是在生产实习所完成的“单片机核心板+电子钟模块+MP3模块+RFID模块+无线传输模块+GPS模块+脉搏传感模块”的基础上设计该硬件系统的工作程序。 1.2课程设计的基本内容 1、在生产实习设计单片机硬件系统的基础上,设计相应的应用软件系统。 2、在LCD1602上显示学号程序设计。 3、基于DS1302的实时时钟软件设计。 4、基于DS18B20的温度测量软件设计。 5、基于TL1838A的红外遥控解码软件设计。 6、设计应用软件系统框图和流程图,完成所设计软件的调试。 1.3课程设计的教学要求 1、通过资料查阅及学习了解单片机应用系统的软件设计方法及单片机编程、软硬件联机调 试技巧。 2、独立设计并编写下列应用程序: (1)LCD1602学号显示程序; (2)DS1302实时时钟程序; (3)DS18B20温度测量程序; (4)TL1838A红外遥控解码程序; 3、独立完成所设计程序与硬件系统的联机仿真。 二、整机系统框图(硬件、软件) 该设计方案是以STC12C5A60S2单片机为核心,采用LCD液晶屏幕显示模块、实时时钟模块、温度测量模块、红外遥控解码等模块所构建的系统,能在LCD1602液晶屏上显示当前的日期(年、月、日)、时间(时、分、秒)数据、当前环境温度值和红外遥控解码值。用户可通过遥控器或单片机核心板上的按键来进行日期和时间的设置。本系统设计大部分功能由软件来实现,电路简单明了,系统稳定性也得到大大提高。 1、总体硬件设计框架图: 2、总体软件设计框架图 /////// 三、整机硬件电路原理图(见99SE图) 1、核心板电路原理图 2、蜂鸣器驱动电路 3、按键电路 4、单片机复位电路 5、LCD1602液晶显示电路 6、电子钟模块接口电路 四、软件系统设计思想 //////////// 五、系统软件资源分配表(调试程序、工作程序) ////////////// 六、显示学号的调试程序流程图、程序源代码

简易信号发生器单片机课程设计报告

课程设计(论文)任务书 电气学院电力系统及其自动化专业12(1 )班 一、课程设计(论文)题目:简易信号发生器设计 二、课程设计(论文)工作自 2015年1 月12 日起至2015 年 1月16 日止。 三、课程设计(论文) 地点:电气学院机房 10-303 四、课程设计(论文)内容要求: 1.课程设计的目的 (1)综合运用单片机原理及应用相关课程的理论知识和实际应用知识,进行单片机应用系统电路及程序设计,从而使这些知识得到进一步的巩固,加深和发展;(2)熟悉和掌握单片机控制系统的设计方法,汇编语言程序设计及proteus 软件的使用; (3)通过查阅图书资料、以及书写课程设计报告可提高综合应用设计能力,培养独立分析问题和解决问题的能力。 2.课程设计的内容及任务 (1)可产生频率可调的正弦波(64个点)、方波、锯齿波或三角波。 (2)显示出仿真波形。 (3)通过按键选择输出波形的种类。 (4)在此基础上使输出波形的幅值可控。

3.课程设计说明书编写要求 (1)设计说明书用A4纸统一规格,论述清晰,字迹端正,应用资料应说明出处。(2)说明书内容应包括(装订次序):题目、目录、正文、设计总结、参考文献等。应阐述整个设计内容,要重点突出,图文并茂,文字通畅。 (3)报告内容应包括方案分析;方案对比;整体设计论述;硬件设计(电路接线,元器件说明,硬件资源分配);软件设计(软件流程,编程思想,程序注释,) 调试结果;收获与体会;附录(设计代码放在附录部分,必须加上合理的注释)(4) 学生签名: 2015年1月16 日 课程设计(论文)评审意见 (1)总体方案的选择是否正确;正确()、较正确()、基本正确()(2)程序仿真能满足基本要求;满足()、较满足()、基本满足()(3)设计功能是否完善;完善()、较完善()、基本完善()(4)元器件选择是否合理;合理()、较合理()、基本合理()(5)动手实践能力;强()、较强()、一般()(6)学习态度;好()、良好()、一般()(7)基础知识掌握程度;好()、良好()、一般()(8)回答问题是否正确;正确()、较正确()、基本正确()、不正确() (9)程序代码是否具有创新性;全部()、部分()、无() (10)书写整洁、条理清楚、格式规范;规范()、较规范()、一般()总评成绩优()、良()、中()、及格()、不及格() 评阅人:

AVR单片机Atmega48程序设计报告——比赛计时计分器

一、设计目的 本设计是基于ATMEGA48单片机的比赛计时计分器,利用8路7段LED数码管作为显示器件,采用3乘3矩阵式键盘作为输入,主要用于各种体育比赛记录分数,在此设计中共接入了2个四位一体7段LED数码管显示器,第一个显示器为一个倒数计时,第二个显示器为两队得分。 本设计中的倒数计时器时间为40分钟,可以进行开始计时、暂停计时的操作,分别通过S3_1、S3_2按钮实现,并通过蜂鸣器表示是否操作成功,时间通过1个四位一体7段LED 数码管显示器显示,前两位为分钟数,后两位为秒数。 本设计中可以对两队得分进行加1分、加2分、加3分操作,分别通过S1_1、S1_2、S1_3、S2_1、S2_2、S2_3按钮实现,并通过蜂鸣器的不同工作方式表示是否操作成功与所加的分值。得分通过1个四位一体7段LED数码管显示器显示,每队得分显示两位数,显示范围为0~99分。 本设计可以进行清零操作,清零后倒计时恢复40分钟,得分均为0,通过S3_3按钮实现,并通过蜂鸣器表示是否操作成功。 二、设计思路 本设计中由AVR核心板、数码管、蜂鸣器、3乘3矩阵键盘四部分组成。电路中PORT_B 端口连接数码管,显示八位,完成倒计时与记录每队得分,PORT_C与3乘3矩阵键盘相连,由按键控制完成初始化、开始与暂停计时以及加分的功能,PORT_D与蜂鸣器端口相连,根据所加得分的不同,开始与暂停计时,初始化,蜂鸣器有不同的应答方式。 本设计中的程序主要分为两个部分,即暂停计时时的显示与开始计时时的显示。暂停计时时与开始计时时都可以对每队加分,初始化。 三、设计电路图 图一接口模块电路

图二蜂鸣器电路 图三 8路7段LED数码管电路

运动控制-M法T法测速单片机程序设计

M法、T法测速单片机程序设计 摘要 本设计为M法、T法测速的单片机程序设计。使用STC89C52单片机作为控制器,使用该单片机的外部中断和定时器对编码器的输出的脉冲进行采样来计算出电机的转速。可以使用按键输入来调整M法、T法测速法中Z、Tc和Tt等参数以及测速方法的选择,以此来增强本设计的适应性。参数选择结果和电机转速计算结果均显示在LCD1602上。 关键字:STC89C52,M法、T法测速,LCD1602,电机转速 Ⅰ

Abstract This design as m, t-law velocity measurement of single-chip computer programming. Using STC89C52 single-chip computer as the controller, using the microcontroller's external interrupts and timers for encoder output pulse is sampled to calculate the speed of the motor. Can be adjusted using touchtone m, t law Velocimetry parameters such as z, Tt and Tc, as well as in speed measurement method of choice, as a way to enhance the adaptability of this design. Parameter selection and calculation of motor speed results are available on LCD1602. Keywords:STC89C52,M、T method, the LCD1602, Motor speed Ⅱ

单片机程序的设计

单片机程序的设计 程序设计是单片机开发最重要的工作,程序设计就是利用单片机的指令系统,根据应用系统(即目标产品)的要求编写单片机的应用程序,其实我们前面已经开始这样做过了,这一课我们不是讲如何来设计具体的程序,而是教您设计单片机程序的基本方法。不过在讲解之前还是有必要先了解一下单片机的程序设计语言。一.程序设计语言这里的语言与我们通常理解的语言是有区别的,它指的是为开发单片机而设计的程序语言,如果您没有学过程序设计可能不太明白,我给大家简单解释一下,您知道微软的VB,VC吗?VB,VC就是为某些工程应用而设计的计算机程序语言,通俗地讲,它是一种设计工具,只不过这种工具是用来设计计算机程序的。要想设计单片机的程序当然也要有这样一种工具(说设计语言更确切些) 单片机的设计语言基本上有三类: 1.完全面向机器的机器语言机器语言就是能被单片机直接识别和执行的语言,计算机能识别什么?以前我们讲过--是数字"0"或"1",所以机器语言就是用一连串的"0"或"1"来表示的数字。比如:MOV A,40H;用机器语言来表示就是11100101 0100000,很显然,用机器语言来编写单片机的程序不太方便,也不好记忆,我们必须想办法用更好的语言来编写单片机的程序,于是就有了专门为单片机开发而设计的语言: 2.汇编语言汇编语言也叫符号化语言,它使用助记符来代替二进制的"0"和"1",比如:刚才的MOV A,40H就是汇编语言指令,显然用汇编语言写成的程序比机器语言好学也好记,所以单片机的指令普遍采用汇编指令来编写,用汇编语言写成的程序我们就叫它源程序或源代码。可是计算机不能识别和执行用汇编语言写成的程序啊?怎么办?当然有办法,我们可以通过"翻译"把源代码译成机器语言,这个过程就叫做汇编,汇编工作现在都是由计算机借助汇编程序自动完成的,不过在以前,都是靠手工来做的。 值得注意的是,汇编语言也是面向机器的,它仍是一种低级语言。每一类计算机都有它自己的汇编语言,比如:51系列有它的汇编语言,PIC系列也有

单片机课程设计报告书模板

. .. . .. .. 西南科技大学 2011级微机原理与接口技术 课程设计报告 课题名称微机原理与接口技术 姓名 学号 院、系、部制造科学与工程学院 专业 指导教师 2014年月日

目录 一、绪言 (1) 二、系统设计 (1) 2.1系统整体流程图 (1) 2.2日历时钟的控制方案论证 (1) 2.3单片机的选择方案论证 (2) 2.4键盘选择方案论证 (2) 2.5显示模块的选择方案论证 (2) 2.6模块的选择方案论证 (2) 三、硬件电路设计 (2) 3.1日历时钟的控制电路图 (2) 3.2行列式键盘的设计 (3) 3.3数码管显示电路的设计 (3) 3.4蜂鸣器驱动电路的设计 (4)

3.5主要元器件选择 (4) 四、程序流程图 (5) 五、c语言程序设计 (5) 六、日历时钟的控制器仿真 (19) 6.1K e i l调试 (19) 6.2P r o t e u s调试 (19) 七、结束语 (20) 八、参考文献 (21) 1、绪言 近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月异更新。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。电子时钟是现代社会中的主要计时工具之一,广泛应用于手机,电脑,汽车等社会生活需要的各个方面,及对时间有要求的场合。本设计采用AT89C51单片机作为主要核心部件,附以上电复位电路,时钟电路及按键调时电路组成。数字钟已成为人们日常生活中:必不可少的必需品,广泛用于个人家庭以及车站、码头、剧场、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。由于数字集成电路技术的发展和采用了先进的石英技术,使数字钟具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。

利用单片机AT89C52采用程序设计方法产生锯齿波

1 引言 本系统利用单片机AT89C52采用程序设计方法产生锯齿波、三角波、正弦波、方波四种波形,再通过D/A转换器DAC0832将数字信号转换成模拟信号,滤波放大,最终由示波器显示出来,能产生10Hz—10kHz的波形。通过键盘来控制四种波形的类型选择、拨码开关控制频率的变化,并通过液晶屏1602显示其各自的类型以及数值,系统大致包括信号发生部分、数/模转换部分以及液晶显示部分三部分,其中尤其对数/模转换部分和波形产生和变化部分进行详细论述。 2设计方案 2.1系统硬件设计概述 经过考虑,我们确定方案如下:利用AT89C52单片机采用程序设计方法产生锯齿波、三角波、正弦波、方波四种波形,再通过D/A转换器DAC0832将数字信号转换成模拟信号,滤波放大,最终由示波器显示出来,通过键盘来控制四种波形的类型选择、频率变化,最终输出显示其各自的类型以及数值。 2.2、设计要求 1)、利用单片机采用软件设计方法产生四种波形 2)、四种波形可通过键盘选择 3)、波形频率可调

4)、需显示波形的种类及其频率 2.1.2方案设计与论证 1.2.1 信号发生电路方案论证 方案一:通过单片机控制D/A,输出四种波形。此方案输出的波形不够稳定,抗干扰能力弱,不易调节。但此方案电路简单、成本低。 方案二:使用传统的锁相频率合成方法。通过芯片IC145152,压控振荡器搭接的锁相环电路输出稳定性极好的正弦波,再利用过零比较器转换成方波,积分电路转换成三角波。此方案,电路复杂,干扰因素多,不易实现。 方案三:利用MAX038芯片组成的电路输出波形。MAX038是精密高频波形产生电路,能够产生准确的锯齿波、三角波、方波和正弦波四种周期性波形。但此方案成本高,程序复杂度高。 以上三种方案综合考虑,选择方案一。 1.2.2 单片机的选择论证 方案一:AT89C52单片机是一种高性能8位单片微型计算机。它把构成计算机的中央处理器CPU、存储器、寄存器、I/O接口制作在一块集成电路芯片中,从而构成较为完整的计算机、而且其价格便宜。 方案二:C8051F005单片机是完全集成的混合信号系统级芯片,具有与8051兼容的微控制器内核,与MCS-51指令集完全兼容。除了具有

单片机程序设计方法总结.doc

单片机程序设计方法总结 程序设计是单片机开发最重要的工作程序设计就是利用单片机的指令系统根据应用系统即目标产品的要求编写单片机的应用程序其实我们前面已经开始这样做过了这一课我们不是讲如何来设计具体的程序而是教您设计单片机程序的基本方法不过在讲解之前还是有必要先了解一下单片机的程序设计语言这里的语言与我们通常理解的语言是有区别的它指的是为开发单片机而设计的程序语言如果 您没有学过程序设计可能不太明白我给大家简单解释一下您知道微软的VB VC 吗VB VC 就是为 某些工程应用而设计的计算机程序语言通俗地讲它是一种设计工具只不过这种工具是用来设计计 算机程序的要想设计单片机的程序当然也要有这样一种工具说设计语言更确切些单片机的设计 语言基本上有三类: 1 .完全面向机器的机器语言 机器语言就是能被单片机直接识别和执行的语言计算机能识别什么以前我们讲过--是数字0 或1 所以机器语言就是用一连串的0 或1 来表示的数字比如MOV A 40H 用机器语言来表示就是 11100101 0100000 很显然用机器语言来编写单片机的程序不太方便也不好记忆我们必须想办法 用更好的语言来编写单片机的程序于是就有了专门为单片机开发而设计的语言 2. 汇编语言 汇编语言也叫符号化语言它使用助记符来代替二进制的0 和1 比如刚才的MOV A40H 就是汇编语言 指令显然用汇编语言写成的程序比机器语言好学也好记所以单片机的指令普遍采用汇编指令来编写 用汇编语言写成的程序我们就叫它源程序或源代码可是计算机不能识别和执行用汇编语言写成的程 序啊怎么办当然有办法我们可以通过翻译把源代码译成机器语言这个过程就叫做汇编,汇编工作现在 都是由计算机借助汇编程序自动完成的不过在很早以前它是靠手工来做的. 值得注意的是:汇编语言也是面向机器的,它仍是一种低级语言每一类计算机都有它自己的汇 编语言比如51 系列有它的汇编语言;PIC 系列也有它的汇编语言微机也有它自己的汇编语言它 们的指令系统是各不相同的也就是说不同的单片机有不同的指令系统它们之间是不通用的,这就

编写程序的步骤 教学设计

编写程序的步骤教学设计 【研究的问题】 在中小学信息技术教学中,程序设计一直是师生倍感头疼的内容。程序设计难教难学,源于计算机语言本身高度的抽象性和严密的逻辑性。虽然,Visual Basic语言较之其它语言要易学好懂一点,但它仍需要必要的抽象思维能力和数学知识作为支撑。如何“蹲下身来让大部分学生能够得着“ ,让学生学得轻松、有效,是我们在本学期一直应关注的问题。 【设计依据】 教材简析: 《编写程序的步骤》位于省编教材的选修部分第一单元《走进程序设计》的第二节。在初中信息技术教学中,程序设计部分始终是教师觉得难教,学生觉得难学的部分,而这一节中的“算法与算法描述“更是这一单元的重中之重。学好这一节,能为整个VB的学习奠定一个良好的基础。 本课是程序设计的第一课时(第1节《程序设计与计算机软件》,我们让学生自学了解,没有占用课时。),起始课的好坏将直接影响整个单元的后继教学。例如一部优秀的电影一般都有一个精彩的开头,一开始就抓住观众的心,使他们有动机、有兴趣往下观赏。 学情分析: 初二的学生虽具备了一定的计算机使用经验,但大多数是与软件的使用和网络应用有关,程序设计对他们是崭新的、具有挑战性的知识。而且这个时期的学生正处于感性思维向理性思维过渡的时期,很多时候仍需要感性思维的支撑。因此在教学中应强调程序设计与生活的关系,注重启蒙和兴趣的培养,并以趣味性的练习、富有引导性的教学语言、明白流畅的教学思路调动学生的情感,在晦涩的程序设计和学生之间架起一座桥梁。 【教学目标】 知识与技能 1、了解利用计算机解决问题的基本过程,认识算法的地位和作用。 2、初步掌握使用自然语言或流程图对算法进行描述。 过程与方法 1、通过实例让学生体会程序设计的基本过程与方法,理解算法思想,会用自然语言或流程图表达一些具体问题的算法。 2、通过对现实问题的分析与解决,让学生认识到生活中到处是程序,而程序解决的往往就是

单片机程序设计报告

单片机系统 课程设计 题目名称:基于89C52的智能交通灯设计 专业班级:测控技术与仪器1304班 学生姓名:田留阳 学号:201323030411 指导教师:郭广灵

单片机系统课程设计任务书

目录 1系统概述 (1) 1.1 课程设计目的 (1) 1.2 设计内容 (1) 1.3 实现目标 (1) 2 方案论证 (1) 2.1 电源提供方案 (2) 2.2 显示界面方案 (2) 3 硬件设计 (3) 3.1系统的原理方框图 (3) 3.2 主电路 (3) 3.3 I/O分配 (6) 3.4I/O接线图 (10) 3.5 元器件选型 (10) 4 软件设计 (11) 4.1 软件设计流程 (12) 4.2梯形图 (13) 4.3 交通灯定时器模块 (14) 5系统调试 (14) 5.1 软件调试 (14) 5.2 硬件调试 (15) 设计心得 (19) 参考文献 (20) 附件一 (21) 附件二 (22) 附件三 (23)

1 系统概述 1.1 课程设计的目的 (1)加强对单片机和汇编语言的认识,充分掌握和理解设计各部分的工作原理、设计过程、选择芯片器件、模块化编程等多项知识。 (2)用单片机模拟实现具体应用,使个人设计能够真正使用。 (3)把理论知识与实践相结合,充分发挥个人能力,并在实践中锻炼。 (4)提高利用已学知识分析和解决问题的能力。 (5)提高实践动手能力。 1.2 设计内容 本系统采用单片机AT89S52来设计交通灯控制器,实现了能根据实际车流量通过AT89S52芯片的P1口设置红、绿灯燃亮时间的功能;红绿灯循环点亮,倒计时剩5秒时黄灯闪烁警示。本系统实用性强、操作简单、扩展功能强。 1.3 实现的目标 通过数码管显示实现各个路口车辆通过或者等待的时间,同时控制按键可以实现对紧急事件的处理。从而从一定程度上解决交通拥挤现象。 2 方案论证 本设计以单片机为核心,以LED数码管作为倒计时指示,根据设计的要求我们考虑了各功能模块的几种设计方案,以求最佳方案,实现实时显示系统各种状态,系统还增设了根据交通拥挤情况可分别设置主干道和次干道的通行时间,以提高效率,缓减交通拥挤。

单片机-分支程序设计教案

一、复习上次课内容 1、什么是标识符? 答:标识符是程序员选择的名字,用来标识常量、变量、过程、段名等。 2、什么是伪指令? 答:注释性的,没有对应的机器码,不令计算机做任何操作,不产生目标程序,不影响程序的执行。。 二、讲授新课 4.3分支程序设计 在很多实际问题中,都需要根据不同的情况进行不同的处理。这种思想体现在程序设计中,就是根据不同条件而转到不同的程序段去执行, 所示。 这就构成了分支程序。分支程序的结构有两种,如图4.2 图4.2(a)结构使用条件转移指令来实现分支,当给出的条件成立时,执行程序段A,否则执行程序段B。 图4.2 (b) 结构使用散转指令JMP来实现多分支转移,它首先将分支程序按序号的值来实现分支转移。 分支程序的特点是改变程序的执行顺序,跳过一些指令,去执行另外一些指令。应注意:对每一个分支都要单独编写一段程序,每一分支的开始地址赋给一个标号。

在编写分支程序时,关键是如何判断分支的条件。在MCS-51系列单片机中可以直接用来判断分支条件的指令并不多,只有累加器为零(或不为零)、比较条件转移指令CJNE 等,MCS-51单片机还提供了位条件转移指令,如JC ,JB 等。把这些指令结合在一起使用,就可以完成各种各样的条件判断。 【例4-5】设补码X 放在内部RAM30H 单元中,函数Y 与X 有如下的关系 式: 试编写程序,根据X 的值求出Y ,并放回原单元。 解 取出X 后先做取值范围的判断,用累加器A 状态转移指令判断X 是否为0,用位状态转移指令判断X 是大于0还是小于0。程序流程图如图4.3所示。 程序如下: MOV A ,30H JZ ZER0 JNB ACC.7,PLUS

单片机课程设计报告

文华学院 单片机原理及应用 课程设计报告 姓名: 学号: 学部(系): 专业年级: 指导老师: 2016年12月5日

目录 一标题 (1) 二设计内容,设计要求 (1) 三设计思路 (1) 四工作原理 (2) 五硬件设计 (3) 六软件设计(含流程图) (5) 七调试 (9) 八改进意见 (10) 九收获及体会 (10) 十源程序(含注释) (11)

一、标题 简易计时器——LED 数码管显示接口技术应用 二、设计内容,设计要求 1、目的 a.通过简易计时器的制作,熟悉LED 数码管与单片机的接口方式; b.定时/计数器、中断技术的综合应用; c.学会简易键盘的使用。 2、明确要完成的任务 a.利用按键构成键盘实现秒表的启动、停止与复位, b.利用LED 数码管显示时间。 c.进行简单的串行通信。 3、用单片机实现任务 a.如何运用单片机实现计时; b.如何显示时间; c.如何利用按键实施对秒表的控制。 d.定时器T0 或Tl 的定时时间作为时钟计时的基准 e.启动与停止定时器工作实现计时。 f.先用两个数码管动态显示时间,时间范围为0-60s g.用三个独立式按键实现秒表的启动、停止和复位功能。 h.A机发送,B机接收 三、设计思路 1、硬件设计思路 a.采用P0 口输出并联控制两个数码管的8 个段选控制端 b.用P2.0、P2.1分别控制两个LED 数码管的位选控制端 c.动态显示电路接法,LED 采用共阳极数码

d.三个按键采用独立式键盘接法, e.两个按键连接到外部中断INT0 、INT1 的输人引脚P3.2和P3.3 f.S4按键接到T1的外部脉冲输入引脚P3.5,以中断方式实现键盘输入状态的扫描 g.其中S2为启动按钮,S3为停止按钮,S4 清零按钮。 h.K1为复位键 2、程序设计思路 a.根据设计的总体要求划分出各功能程序模块,分别确定主程序、子程序及中断服务程序结构 b.对各程序模块占用的单片机资源进行统一调配 c.对各模块间的逻辑关系进行细化,优化程序结构 d.设计出各模块程序结构流程图 e.最后依据流程图编制具体程序 f.将整个程序划分为主程序、键盘扫描程序、秒计时程序三大模块 g.其中主程序除完成初始化外,主要由动态显示程序构成 h.秒计时程序由定时器0中断服务子程序构成 i.键盘扫描程序也由各中断服务子程序来实现 四、工作原理 1、计时表 原理图

基于51单片机秒表的程序设计[1]

基于51单片机秒表的程序设计 1.设计目的: (1)利用单片机定时器中断和定时器计数方式实现秒、分定时。 (2)通过LED显示程序的调整,熟悉8155与8051,8155与LED的接口技术,熟悉LED动态显示的控制过程。 (3)通过键盘程序的调整,熟悉8155与矩阵式键盘的接口技术,熟悉键盘扫描原理。 (4)通过阅读和调试简易秒表整体程序,学会如何编制含LED动态显示、键盘扫描和定时器中断等多种功能的综合程序,初步体会大型程序的编制和调试技巧。 2.设计步骤与要求 (1)要求:以8位LED右边2位显示秒,左边6位显示0,实现秒表计时显示。以4×4矩阵键盘的KE0、KE1、KE2等3键分别实现启动、停止、清零等功能。 (2)方法:用单片机定时器T0中断方式,实现1秒定时;利用单片机定时器1方式3计数,实现60秒计数。用动态显示方式实现秒表计时显示,用键盘扫描方式取得KE0、KE1、KE2的键值,用键盘处理程序实现秒表的启动、停止、清零等功能。 (3)软件设计:软件整体设计思路是以键盘扫描和键盘处理作为主程序,LED动态显示作为子程序。二者间的联系是:主程序查询有无按键,无按键时,调用二次LED动态显示子程序(约延时8ms)后再回到按键查询状态,不断循环;有按键时,LED动态显示子程序作为按键防抖延时被连续调用二次(约延时16ms),待按键处理程序执行完后,再回到按键查询状态,同时兼顾了按键扫描取值的准确性和LED动态显示的稳定性。秒定时采用定时器T0中断方式进行,60秒计数由定时器1采用方式3完成,中断及计数的开启与关闭受控于按键处理程序。由上述设计思路可设计出软件流程图如图1.1所示。 (5)程序编制:编程时置KE0键为“启动”,置KE1键为“停止”,置KE2键为“清零”,因按键较少,在处理按键值时未采用散转指令“JMP”,而是采用条件转移指令“CJNE”,每条指令后紧跟着一条无条件跳转指令“AJMP”,转至相应的按键处理程序,如不是上述3个按键值则

程序设计的基本方法

程序设计的基本方法 一、题: 二、教学目标: ⑴理解算法的概念,了解描述算法的两种方法——自然语言和流程图,知道各自的优缺点。 ⑵初步掌握用流程图描述算法。 三、教学的重点和难点: ⑴算法的概念。 ⑵用流程图描述算法。 四、教学过程: 新导入 我们在日常生活中经常要处理一些事情,就拿邮寄一封信来说吧,大致可以将寄信的过程分为这样的几个步骤:写信、写信封、贴邮票、投入信箱等四个步骤。将信地投入到信箱后,我们就说寄信过程结束了。 那么在计算机中,它是如何来处理问题的呢?是否和我们日常处理事情的过程很类似呢? 回答是肯定的,例如要设计一个程序让计算机求1+1=?,那么我们就要先编写程序。在编写程序前需要先确定解决问题的思路和方法,并要正确地写出求解步骤,这就是算法。 新授

一、算法的概念 为了更好地理解算法,举几个例子说明: 例1 交换两个变量中的数据。 先请学生考虑解决这个问题的方法,然后请一个学生说一说自己想到的解决方法。如学生回答不出来,作适当提示:如果要将醋瓶中的醋和酒瓶中的酒互换应怎么做?学生会很容易地想到要借助于一只空瓶子。 分析题意:已知变量x和中分别存放了数据,现在要交换其中的数据。为了达到交换的目的,需要引进一个类似于空瓶子的中间变量。交换两变量中数据的具体算法如下: ①将x中的数据送给变量,即x→; ②将中的数据送给变量x,即→x; ③将中的数据送给变量,即→。 总结:在程序设计中,交换变量中的数据常用在排序算法中。例2 输入三个不相同的数,求出其中的最小数。 同样,先请学生思考,然后请学生说出他所想到的解决该问题的方法。 教师分析:先设置一个变量in,用于存放最小数。当输入a、b、三个不相同的数后,先将a与b进行比较,把小者送给变量in,再把与in进行比较,若<in,则将的数值送给

基于80C51单片机系统实验板的制作与程序设计报告

《单片机原理与接口技术》 课程设计报告 题目: 基于80C51单片机系统实验板的制作与程序设计专业:电子与信息工程技术 班级: 姓名: 指导教师: 2011 年 4 月

目录 第1节引言 (3) 第2节系统主要硬件电路设计 (5) 第3节系统软件设计 (10) 第4节结束语 (11) 参考文献 附录

基于80C51单片机系统实验板的制作与程序设计 第1节引言 单片微型计算机简称单片机,又称微控制器(MCU),它的出现是计算机发展史上的一个重要的里程碑,它以体积小、功能全、性价比高等诸多优点独具特色,在工业控制、尖端武器、通信设备、信息处理、家用电器等嵌入式应用领域中独占鳌头。本次课设采用的STC89C51单片机是51系列单片机的一种代表,目前51系列单片机是国内目前应用最广泛的一种单片机之一。单片机以其系统硬件构架完整、价格低廉、学生能动手等特点,成为工科学生硬件设计的基础课。 1.1本设计任务和主要内容 本设计以单片机STC89C51为控制核心,由八路LED模块、八路按钮模块、四位一体共阳数显模块、语音模块等部分组成。可实现花样流水灯、简易电子琴、外部中断控制、时间显示等功能。要求在将硬件电路准确无误地安装后进行软件调试,至少完成以下三个程序设计及调试任务 1 .1.1花样流水灯:程序循环输出到单片机P1口,控制LED灯从LED1向LED8依次亮,到全部亮然后LED 灯从LED1向LED8依次前进单个亮,类似跑马情形。 1.1.2.简易电子琴:向蜂鸣器发送一定频率的方波可以使蜂鸣器发出相应的音调,该实验使蜂鸣器发出类似"多来咪发梭拉西"的音调。 1.1.3数码管动态扫描数显:单片机P1端口用于数码管显示数值,P2端口部分用于选择4位数码管中的一位,从而实现一下现象:4位数码管从第一位到第四位由0到F依次循环显示 1.2基于80C51单片机系统实验板概述 本次课设所使用的单片机最小系统板包括以下器件:电源端子(DC +5V),可以USB供电,也可独立电源供电。通用异步串口,采用MAX232做电平转换。STC89C51单片机。各种颜色的LED发光二极管共9个,其中8个接于P1口做LED显示,还有一个做电源灯显示。四位一体共阳数码管可以实现时钟电路及动态扫描显示。还有其他电阻电容若干,系统板一个,大按键开关两个,用于中断控制和通信开关。利

第1讲 程序设计的一般步骤ok资料

第1讲C++语言入门 学习目标 1、了解计算机语言发展的3个阶段。 2、理解程序设计的一般步骤。 3、掌握什么是算法。 4、掌握对给定的问题进行算法描述。 5、学会编写简单的程序。 随着科技的发展和社会的进步,计算机已经走入寻常百姓家。人们可以使用同一台计算机做不同的事,我们可以看到其他机器或设备做不到这点。计算机之所以能执行不同的工作任务,是基于其硬件和软件协同工作的工作机制。 要使计算机按人们指定的步骤有效地工作,必须事先编制好一组让计算机执行的指令,这就是程序。随着计算机软件技术的发展,人们可以使用不同的计算机语言来编写程序。 一、计算机语言发展 要使计算机按照人的规定完成一系列的工作,首先要解决一个“语言”沟通问题:在人和计算机之间找到一种两者都能识别的特定的语言,使计算机具备理解并执行人们给出的各种指令的能力。这种特定的语言称为计算机语言,也叫程序设计语言,它是人和计算机沟通的桥梁。 随着计算机技术的迅速发展,程序设计语言经历了由低级向高级发展的多个阶段,程序设计方法也得到不断的发展和提高。 计算机语言按其发展程度可以划分为:机器语言、汇编语言和高级语言。 1、机器语言 计算机并不能理解和执行人们使用的自然语言。计算机能够直接识别的指令时由一连串的0和1组合起来的二进制编码,称为机器指令。每一条指令规定计算机要完成的某个操作。机器语言是计算机能够直接识别的指令的集合,它是最早出现的计算机语言。例如,下图所示的是某一种型号计算机的一组二进制编码机器指令,用来完成一个简单加法操作。 10110000 00001001 00000100 00001000 11110100 显然,用机器语言编写的程序“难学、难记、难写、难检查、难调试”,给使用者带来很大的不便。机器语言编写的程序另一个缺点是完全依赖于机器硬件,不同型号的机器语言指令不相同,程序的可移植性差。其优点是计算机能直接识别、执行效率高。 2 、汇编语言 20世纪50年代初,为了克服机器语言的缺点,人们对机器语言进行了改进,用一些容易记忆和辨别的有意义的符号代替机器指令。用这样一些符号代替机器指令所是产生的语言就称为汇编语言,也称为符号语言。用汇编语言来实现9+8运算的由关指令如下图:MOV AL,9 ADD AL,8

单片机课程设计报告80441144

(此文档为word格式,下载后您可任意编辑修改!) 沈阳工程学院 课程设计任务书 课程设计题目:多功能温度巡检仪程序设计 系别班级 学生姓名学号 指导教师吕勇军职称教授 课程设计进行地点:

任务下达时间:15年1月12日 起止日期:15年1月12日起——至15年1月23日止 系主任年月日批准1.设计主要内容及要求; 编写多功能温度巡检仪程序。 要求:1)多路温度测量和显示。 2)可以设置正常温度范围,越限报警。 2.对设计论文撰写内容、格式、字数的要求; (1).课程设计论文是体现和总结课程设计成果的载体,一般不应少于3000字。 (2).学生应撰写的内容为:中文摘要和关键词、目录、正文、参考文献等。课程设计论文的结构及各部分内容要求可参照《沈阳工程学院毕业设计(论文)撰写规范》执行。应做到文理通顺,内容正确完整,书写工整,装订整齐。 (3).论文要求打印,打印时按《沈阳工程学院毕业设计(论文)撰写规范》的要求进行打印。 (4). 课程设计论文装订顺序为:封面、任务书、成绩评审意见表、中文摘要和关键词、目录、正文、参考文献。 3.时间进度安排;

中文摘要 随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度测量就是一个典型的例子。温度测量系统广泛应用于社会生活的各个领域,如家电、汽车、材料、电力电子等。但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。 本设计以C8051F020芯片为核心,辅以必要的外围电路,设计了一个简易的多路温度巡检仪。在硬件方面,除了CPU外,系统采用DS18B20数字温度传感器测量温度,采用1602液晶显示屏显示当前温度。然后通过三个独立按键来设置一个正常温度的范围的最小值和最大值,当温度不在设置的正常温度范围内,用于报警的蜂鸣器就会发出响声。在软件反面,采用C语言设计,系统能够准确测量三路温度并且显示,并且具有调整温度范围和报警的功能。 此系统严格按照要求设计,最终达到预期的效果,能够测量和显示多路温度,并且可以设置正常的温度范围,超过范围具有报警功能。是一次

单片机程序设计编程规范

单片机程序设计编程规范 本规范适用于松翰科技 8-bit MCU部门汇编程序编写准则,同样适用于代理商及重要客户工程师编程规范参考。本规范的目的为统一编程风格,保证程序编写质量,提高程序的可移植性和维护性。 大部分的规范严格, 品质要求高的软件公司对员工编写代码的风格都有硬性规定, 例如缩排的使用,TAB 的长度,函数变量的命名方式。这些规定的明显好处是可以统一规范不同程序员所编制的代码,提升程序代码的可读性与可维护性,同时统一格式的编程风格也为code review提供方便。 目录 一、设计总则 二、排版风格 三、程序可读性及可维护性 四、注释 五、变量命名规则 六、常量命名规则 七、标号命名规则 八、文件命名规则及文件分割 九、标准程序模块 十、附录

一、设计总则 1.程序质量的评估 程序的优劣可以从两个方面进行评估,定量指标和定性指标。 定量指标包括: 1) 程序代码执行效率; 2) 程序占用资源多少。 定性指标包括: 1) 可调试性,即是否方便排除程序语法错误; 2) 可测试性,即是否方便验证程序功能的正确性; 3) 可维护性,即是否方便程序的修改和升级; 4) 可移植性; 5) 可读性。 2、程序架构 为了便于维护和移植,推荐使用层次化的软件设计方法。可把整个软件分为三层:应用层、界面层和底层驱动层。各层之间的关系如下图所示。 层次化设计说明: 1) 底层驱动层主要包含直接和硬件相关的驱动程序,如数码管显示、按键、峰鸣器、继电器和电机控制等。底层的各个模块间要保持各自的独立性,不产生直接的数据交互,底层也不直接访问应用层,如果有需要,都要通过界面层进行数据交互。 2) 界面层主要提供数据交互,为应用层和底层驱动之间以及底层驱动层各模块之间提供数据的交互。 3) 应用层主要完成具体功能的实现,它要通过界面层控制底层驱动层各模块来完成所需功能,而不能越过界面层直接访问底层驱动层。所有的用户接口要在应用层来实现。 4) 一个好的架构必须将底层硬件包装起来,为应用程序提供一组丰富的函数操作(buffer or parameter),例如在中断的处理中,应用程序不需要资料中断的堆栈如何保护不需要知道地址操作, 只需要读取中断产生的旗标动作。

相关主题
文本预览
相关文档 最新文档