admin 管理员组

文章数量: 1184232


2024年1月24日发(作者:fck编辑器)

单片机课程设计

一、目的和意义

本课程设计是在学完单片机原理及课程之后综合利用所学单片机知识完成一个单片机应用系统设计并在实验室实现。该课程设计的主要任务是通过解决一、两个实际问题,巩固和加深“单片机原理与应用”课程中所学的理论知识和实验能力,基本掌握单片机应用电路的一般设计方法,提高电子电路的设计和实验能力,加深对单片机软硬知识的理解,获得初步的应用经验,为以后从事生产和科研工作打下一定的基础。

二、选题要求

在现有的开发装置上掌握相关硬件,正确地进行连线在计算机上编写汇编程序、调试、下载、配合外部电路进行系统功能测试,设计并实现参考选题中要求设计的系统。要求按设计要求制订方案,直至正确地实现系统功能;写出课程设计报告;理解设计方案后再自己动手设计程序,并正确联线、构成硬件电路,通过独立调试实现设计方案。

三、任务及要求

(一)课题要求

1.数字电压表的设计

技术要求:利用51单片机,ADC0809转换芯片,键盘显示系统,设计一个测量模拟电压的数字电压表,可以显示3位有效数字,通过汇编语言设计。

工作要求:画出设计原理图,编写出软件,并调试出各种功能

2.温度检测系统的设计

技术要求:利用51单片机,DS18B20芯片,键盘显示系统,设计温度检测系统,通过键盘控制,实现数字温度的采集,用汇编语言设计。

工作要求:画出设计原理图,编写出软件,并调试出各种功能。

(二)设计报告要求

要求设计报告按以下条目顺序编写:

1. 封面

2. 内容提要

3. 正文

概述所作题目的意义、本人所做的工作及系统的主要功能;

硬件电路设计及描述;

软件设计流程及描述;

源程序代码(要有注释)。

4. 课程设计体会

5. 参考文献

四、进程安排

1.介绍课程设计的教学内容,指导学生根据兴趣选题。

2.原理设计

3.原理设计及软件设计

4.课程设计报告要求及示例介绍,原理设计

5.硬件调试,软件设计及调试

6.验收答辩

五、考核方法与成绩评定

1、考核方法

(1)理论设计方案,演示所设计的系统,总成绩50%;

(2)设计报告,占总成绩20%;

(3)回答教师所提出的问题,占总成绩20%;

(4)考勤情况,占总成绩10%;

2.有下列情况之一者,要酌情减分:

(1)设计报告有抄袭行为或有意给别人抄袭。

(2)损坏或丢失实验室的物品,包括元器件、仪器设备和工具。

(3)迟交总结报告。

3、成绩评定

优、良、中、及格和不及格。

六、教材及主要参考资料

单片机原理与应用 李建忠 编著 西安电子科技大学出版社 2007年

单片机实验与实践教程 周立功 编著 北京航空航天大学出版社 2006年

实验1 数字电压表的设计

【设计目的】

2熟悉A/D转换的工作原理及IC器件ZLG7290的使用,学习使用并行模/数转换芯片ADC0809进行电压信号的采集和数据处理,了解单片机实现数据采集的方法。

【实验设备及器件】

IBM PC 机 一台

DP-51PROC单片机综合仿真实验仪 一台

【设计内容】

利用51单片机,ADC0809转换芯片,键盘显示系统,设计一个测量模拟电压的数字电压表,可以显示3位有效数字,通过汇编语言设计。

【设计要求】

理解掌握ADC0809的A/D转换原理和并行A/D转换器接口的编程方法。

2掌握IC总线读写外设数据的操作方法。

学会使用ADC0809并行模/数转换器实现信号采集的方案设计。

【设计步骤】

1.使用导线连接D5区的SCL、SDA到A2区的P16、P17(SCL~P16、SDA~P17),连接D5区的RST_L、INT_KEY到A2区的P10、INT0(RST_L~P10、INT_KEY~INT0),短接D5区的JP1跳线。

2.将ADC0809 PARK模块(选配件)插入PARK2区。

3.将D2区1KΩ电位器和10KΩ电位器的左端金属孔通过导线连接到该区的GND金属孔,而右端金属孔通过导线连接到该区的Vcc金属孔.

4.将D2区1KΩ电位器的中间金属孔连接到A7区的P2_IO2金属孔, 而D2区10KΩ电位器的中间金属孔连接到A7区的P2_IO1金属孔.

5.将A7区的P2_IO3 ~~P2_IO5分别连接到A2区的A2~~A0.

6.将A7区的P2_CS连接到A2区的A15.

7.运行编写好的软件程序,观察转换的结果与数字万用表测量的结果相比较是否正确。

8.改变1KΩ电位器或10KΩ电位器的旋钮位置,用数字万用表测量中间金属孔的电压,再次运行程序至断点处,观察转换的结果是否正确.

29.把模拟IC软件包“VIIC_C51.C”文件加入到Keil C51的项目中,程序源文件的开头包含“VIIC_C51.H”头文件。修改VIIC_C51.C文件中的sbit SDA=P1^7;和 sbit

SCL=P1^6;。

图1 ZLG7290原理图

【设计工作要求】

画出设计原理图,编写出软件,并调试出各种功能。

【设计参考程序】

1.7290显示程序

SDA BIT P1.7 ;I2C总线定义

SCL BIT P1.6

RST BIT P1.0

KEY_INT BIT P3.2

MTD EQU 40H ;发送数据缓冲器

MRD EQU 49H ;接收数据缓冲区

;定义器件地址

ZLG7290 EQU 70H ;ZLG7290的器件地址

ACK BIT 10H ;应答标志位

SLA DATA 50H ;器件的从地址

SUBA DATA 51H ;器件的子地址

NUMBYTE DATA 52H ;读/写的字节数变量

ORG 0000H

LJMP MAIN

ORG 0100H

;-------主程序如下:

MAIN:

MOV SP,#70H

CLR RST

LCALL DELAY

SETB RST

LCALL DELAY

MAIN1: MOV R4,#68H

MOV R7,#09H

MOV R2,#00H

CLR RST

LCALL DELAY

SETB RST

LOOP: MOV SLA,#ZLG7290 ;指定器件地址

MOV SUBA,#07H ;指定子地址

MOV NUMBYTE,#02H ;发送2字节数据

LCALL IWRNBYTE ;调用写2字节数据程序

LCALL DELAY

POP ACC

DEC R4

DJNZ R7,LOOP

SJMP MAIN1

START: SETB SDA

NOP

SETB SCL ;起始条件建立时间大于4.7us

ACALL WAIT

CLR SDA

ACALL WAIT

CLR SCL ;钳住总线,准备发数据

NOP

RET

;结束总线子程序

STOP: CLR SDA

NOP

SETB SCL ;发送结束条件的时钟信号

ACALL WAIT

SETB SDA ;结束总线

ACALL WAIT

RET

;检查应答位子程序

;返回值,ACK=1时表示有应答

CACK: SETB SDA

ACALL WAIT

SETB SCL

CLR ACK

ACALL WAIT

MOV C,SDA

JC CEND

SETB ACK ;判断应答位

CEND: NOP

CLR SCL

NOP

RET

;发送字节子程序

;字节数据放入ACC

;每发送一字节要调用一次CACK子程序,取应答位

WRBYTE: MOV R0,#08H

WLP: RLC A ;取数据位

JC WR1

SJMP WR0 ;判断数据位

WR1: SETB SDA ;发送1

NOP

SETB SCL

ACALL WAIT

CLR SCL

SJMP WLP1

WR0: CLR SDA ;发送0

NOP

SETB SCL

ACALL WAIT

CLR SCL

WLP1: DJNZ R0,WLP

NOP

RET

;读取字节子程序

;读出的值在ACC

;每取一字节要发送一个应答/非应答信号

;向器件指定子地址写N字节数据

;入口参数: 器件从地址SLA、器件子地址SUBA 、发送数据缓冲区MTD、发送字节数NUMBYTE

; 占用: A 、R0 、R1 、R3 、CY

IWRNBYTE: MOV A,NUMBYTE

MOV R3,A

LCALL START ;起动总线

MOV A,SLA

LCALL WRBYTE ;发送器件从地址

LCALL CACK

JNB ACK,RETWRN ;无应答则退出

MOV A,SUBA ;指定子地址

LCALL WRBYTE

LCALL CACK

MOV A,r4

LCALL WRBYTE ;开始写入数据

LCALL CACK

JNB ACK,IWRNBYTE

MOV A, R2

MOV DPTR,#DISWORD

MOVC A,@A+DPTR

INC R2

LCALL WRBYTE

LCALL CACK

RETWRN: LCALL STOP

RET

DELAY:

MOV R5,#50H

DELAY1: MOV R6,#0FFH

DJNZ R6,$

DJNZ R5,DELAY1

RET

WAIT: MOV R1,#08H

DJNZ R1, $

RET

DISWORD: db 00h,01h,02h,03h,04h,05h,06h,07h

db 08h,09h,0ah,0bh,0ch,0dh,0eh,0fh

END

2.A/D采样程序

ORG 0000H

LJMP MAIN

ORG 0100H

MAIN: MOV SP,#70H

MOV R1,#30H ;置数据区首地址,用于存放A/D转换结果

MOV DPTR,#7FF8H ;ADC0809的入口地址,且指向通道0

MOV R7,#02H ;置通道数

LOOP: MOVX @DPTR,A ;启动A/D转换

MOV R6,#20H ;软件延时,等待转换结束

DELAY: NOP

NOP

NOP

DJNZ R6,DELAY

MOVX A,@DPTR ;读取转换结果

MOV @R1,A ;转存

INC DPTR ;指向下一个通道

INC R1 ;修改数据区指针

DJNZ R7,LOOP ;INT0,INT1两个通道是否全采样完

LJMP MAIN

END

【实验思考题】

设计一个单总线工作方式下,基于7290键盘显示, 实现多档数字电压表实验程序,完成多个点的电压采集。


本文标签: 设计 单片机 系统 要求 数据