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键盘显示, 实现多档数字电压表实验程序,完成多个点的电压采集。
版权声明:本文标题:单片机课程设计 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1706073056a500730.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论