您的当前位置:首页正文

微型计算机技术课程设计报告

来源:帮我找美食网


微型计算机技术课程设计报告

专 业: 通信工程 班 级: 姓 名:

学 号: 时 间: 2011-03-08~19

通信与电子工程学院

一、设计目的

为了进一步巩固学习的理论知识,增强学生对所学知识的实际应用能力和运用所学的知识解决实际问题的能力,开始为期两周的课程设计。通过设计使学生在巩固所学知识的基础之上具有初步的单片机系统设计与应用能力。

1、通过本设计,使学生综合运用《微型计算机技术》、《C语言程序设计》以及《数字电路》、《模拟电路》等课程的内容,为以后从事电子产品设计、软件编程、系统控制等工作奠定一定的基础。

2、学会使用KEIL C和PROTEUS等软件,用C语言或汇编语言编写一个较完整的实用程序,并仿真运行,保证设计的正确性。

3、了解单片机界面应用开发的全过程:分析需求、设计原理图、选用元器件、布线、编程、调试、撰写报告等。

二、设计内容

数字电压表:用A/D采样实现数字电压表,采用数码管或液晶显示电压值。

三.设计方案

1.方案选择

本系统主要包括四大模块:数据采集模块、控制模块、A/D转换模块、显示模块。绘制电路原理图与工作流程图,并进行调试,最终设计完成了该系统的硬件电路。(如下所示)

控 制 模 块 LED显示模块 A/D转换模块 外部电压

2.硬件选择

选择AT89S51作为单片机芯片,选用8段共阴极LED数码管实现电压显示,选用独立式按键作为程序的跳转与选择,利用ADC0809作为数模转换芯片,利用IN0将数据采集接口电路输入电压传入ADC0809数模转换组件,经转换后通过D0至D7与单片机P0口连接,把转换完的模拟信号以数字信号的信号的形式传给单片机,信号经过单片机处理从LED数码显示管显示。拨码开关连P3口,实现通道选择。

四.硬件设计

1.控制电路

单片机控制模块的作用是为控制各单元电路的运行并完成数据的换算或处理,主要由单片机、时钟电路、复位电路组成。

在本次课题设计中我们选择了89S51芯片,其具有功能强、体积小、成本低、功耗小等特点,它可单独地完成现代工业控制所要求的智能化控制功能,能在软件的控制下准确、迅速、高效地完成程序设计者事先规定的任务。

1.1复位电路

复位电路如图1所示,单片机系统常常有上电复位和操作复位两种。上电复位是指单片机上电瞬间,要在RST引脚上出现宽度大于10ms的正脉冲,才能使单片机进入复位状态。操作复位是指用户按下“复位”按钮使单片机进入复位状态。

图1

1.2晶振电路

晶振电路用于产生单片机工作所需的时钟信号,使用晶体震荡器时,c2,c3取值20~40PF,使用陶瓷震荡器时c2,c3取值30~50PF。在设计电路板时,晶振和电容应尽量靠近芯片,以减小分布电容,保证震荡器的稳定性。18引脚接XTAL1,19引脚接XTAL2,20引脚接地。

图2晶振电路图

2.A/D转换模块

使用ADC0809作为数模转换组件,它属于逐次逼近型A/D转换器。它是由一个8路的模拟开关、一个地址锁存译码器、一个A/D 转换器和一个三态输出锁存器组成。多路开关可选通8个仿真通道,允许8 路模拟量分时输入,共享A/D 转换器进行转换。A/D转换器是的特点是8位精度,属于并行口,如果输入的模拟量变化大快,必须在输入之前增加采样电路。

2.1 ADC0809引脚功能

IN0~IN7:8路模拟量输入。A、B、C:3位地址输入,3个地址输入端的不同组合选择八路模拟量输入。

ALE:地址锁存启动信号,在ALE的上升沿,将A、B、C上的信道地址锁存到内部的地址锁存器。

2627281234567910111216IN0IN1IN2IN3IN4IN5IN6IN7STARTEOCOUTPUT ENABLECLOCKVCCVREF(+)VREF(-)ADD AADD BADD CALE2 -1MSB2 -22 -32 -42 -52 -62 -72 -8LSBGND2524232221201918815141713 图3 引脚图

D0~D7:八位数据输出线,A/D转换结果由这8根线传送给单片机。

OE:允许输出信号。当OE=1时,即为高电平,允许输出锁存器输出数据。

START:启动信号输入端,START为正脉冲,其上升沿清除ADC0809的内部的各寄存器,

其下降沿启动A/D开始转换。

EOC:转换完成信号,当EOC上升为高电平时,表明内部A/D转换已完成。

2.2.ADC0809内部结构图

逐次逼近型A/D转换器ADC0809由八路模拟开关、地址锁存与译码器、比较器、D/A转换器、寄存器、控制电路和三态输出锁存器等组成。其内部结构如图4所示。

图4 ADC0809内部结构

3.显示模块设计 3.1 LED数码管构成

LED数码管显示器是由发光二极管显示字段的显示器件,也称为数码管。它由8个发光二极管构成,通过不同的组合可用来显示0-9、A-F及小数点“.”等字符。 数码管有共阴极和共阳极两种结构规格,如图(a)(b)所示。共阴极数码管的发光二极管阴极共地,当某发光二极管的阳极为高电平时,二极管点亮;共阳极数码管的发光二极管是阳极,并接高电平,对于需点亮的发光二极管将其阴极接低电平即可。

图(a)共阴极 图 (b)共阳极 图(C)字段显示

7段发光二极管,在加上1个小数点位,共计8段,因此提供给LED显示器的字形码正好一位元组。

数码管原理电路图(c)

4.总设计原理图

(见后附图5)

五.软件设计

1.系统程序的设计 1.1初始化程序

系统上电时,初始化程序将70H-77H内存单元清0,P2口置0。

1.2. 主程序

在刚上电时,系统默认为循环显示8个信道的电压值状态。当进行一次测量后将显示每一信道的A/D转换值,每个信道的数据显示时间为1s左右。主程序在调试用显示子程序和测试子程序之间循环主程序流程图见下图所示

开始 初始化 调用A/D转换子程序 调用显示转换子

1.3 A/D转换测量程序

逐次逼近型A/D转换既照顾了转换速度,有具有一定的精度,这里选用的是逐次逼近型的A/D转换芯片ADC0809。采用中断控制的方式实现,不浪费时间,效率较高。

开始 启动转换 中断请求 中断服务 读取数据 0809地址加1 小于0008H N 结束

A/D转换测量程序流程图

1.4 显示程序

对多位LED显示器的动态显示,通常都是采用动态扫描的方法进行显示,即逐个循环点亮各位显示器。这样虽然在任一时刻只有一位显示器被点亮,但是由于间隔时间较短,且人眼具有视觉残留效应,看起来与全部显示器持续点亮一样。

为了实现LED显示器的动态扫描,除了要给显示器提供的输入之外,还要对显示器加位选择控制,这就是通常所说的段控和位控。因此多位LED显示器接口电路需要有两个输出口,其中一个用于输出8位为控信号;另一个用于输出段控信号。

开始程序 读取判断单元 7BH 7AH 79H 78H 显示信道号 显示电压整数部分 显示电压十分位 显示电压百分位 返回

多位LED显示器的动态显示流程图

2.程序

后附程序清单

六.系统调试

1.仿真测试表明,系统性能良好,测量读数稳定易读、更新速度合理,但是,该系统也存在一定程度的不足,例如:

(1)输入电压易发生干扰不稳定,且驱动能力可能存在不足,需在被测信号的输入端加上一部分驱动电路,比如将量程转换电路改成带放大能力的自动量程转换电路,将幅值较小的信号经适当放大后再测量,可显著提高精度;

(2)若能将测量的电压值实时保存,使用时将更方便。 2.仿真图(后附图6)

七.总结

这次课程设计,我查阅了大量的数据,锻炼了我的动手能力,同时也学会去浏览海量信息的方法。其次,提高了我综合运用各种知识的能力,使我对《微型计算机技术》、《C语言程序设计》以及《数字电路》、《模拟电路》等课程有了更深入的理解。在这次课程设计中,首次接触了KEIL C和PROTEUS这两款软件,使我掌握了它们的操作方法。

通过这次课程设计,使我明白了要做好一个课程设计,必须对所设计的东西所涉及的领域有一定的了解,有一个清晰完整的思路,并在设计的过程中不断改进。还有一点就是不懂

的东西要及时向别人请教,可以借鉴别人的东西,但是借鉴过来一定要理解了。只有这样,才能从中学到知识。

八.参考文献

[1] 胡汉才.单片机原理及其接口技术[J].清华大学出版社.2010.5.

[2] 童诗白,华成英.模拟电子技术基础.高等教育出版.2006年5月第4版. [3] 阎石.数字电子技术基础.高等教育出版社.2006.5.

[4] 刘欣铭,张广斌.LED显示屏技术综述[J].黑龙江电力,2003, 25(4):294-296. [5] 阳进.基于单片机的LED显示屏的汉字显示[J].中国科技信息,2005,(12):112. [6] Mark Nelson着.潇湘工作室译.串行通信开发指南[M].中国水利水电出版社,2002. [7] 楼然苗.单片机课程设计与指导[M].北京航空航天大学出版社,2007.

[8] 韩润萍,陈小萍.点阵LED显示屏控制系统[J].微电脑信息,2003,19(10):50-51.

图5:

图6:

程序清单:

八路电压测量显示电路 ; ;************************;

;测量电压最大为5V,显示最大值为5.00V

;70H—77H存放采样值,78H—7BH存放显示数据,依次为个位、十位、百位、信道标志 ;************************************* * ;* 主程序和中断程序入口 * * ;************************************* ORG 0000H

LJMP START ORG 0003H RETI ORG 000BH RETI

ORG 0013H RETI

ORG 001BH RETI ORG 0023H RETI ORG 002BH RETI

;************************************* ;* 初始化程序中的各变量 * ;************************************* CLEARMEMIO: CLR A MOV P2,A MOV R0,#70H MOV R2,#0DH LOOPMEM: MOV @R0,A INC R0

DJNZ R2,LOOPMEM MOV 20H,#00H MOV A,#0FFH MOV P0,A MOV P1,A MOV P3,A RET

;************************************* ;* 主 程 序 * ;*************************************

START: LCALL CLEARMEMIO MAIN: LCALL TEST LCALL DISPLAY AJMP MAIN

;初始化 ;测量一次 ;显示数据一次

NOP ;PC值出错处理 NOP NOP LJMP START

;************************************* ;* 显 示 控 制 程 序 * ;************************************* DISPLAY: JB 00H,DISP11 ;

MOV R3,#08H ;8路信号循环显示控制 MOV R0,#70H ;显示数据初址70H~77H MOV 7BH,#00H ;显示信道路数初值

DISLOOP1: LCALL TUNBCD ;显示数据转为三位BCD码存入7AH、79H、78H(最大5.00v)

MOV R2,#0FFH ;每路显示时间控制 4MS*255 DISLOOP2: LCALL DISP ;调四位显示程序 LCALL KEYWORK1 ; DJNZ R2,DISLOOP2 ;

INC R0 ;显示下一路 INC 7BH ; DJNZ R3,DISLOOP1 RET ;

DISP11: MOV A,7BH ; SUBB A,#01H ; MOV 7BH,A ; ADD A,#70H ; MOV R0,A ;

DISLOOP11: LCALL TUNBCD ;显示数据转为三位BCD码存入7AH、79H、78H(最大5.00v)

MOV R2,#0FFH ;每路显示时间控制 4MS*25 DISLOOP22: LCALL DISP ;调四位显示程序 LCALL KEYWORK2 ; DJNZ R2,DISLOOP22

INC 7BH ;信道显示数加一 RET

;************************************* ;* 显示数据转为三位BCD码程序 * ;*************************************

;显示数据转为三位BCD码存入7AH、79H、78H(最大值5.00v) ;

TUNBCD: MOV A,@R0 ;255/51=5.00V运算 MOV B,#51 ; DIV AB ;

MOV 7AH,A ;个位数放入7AH

MOV A,B ;余数大于19H,F0为1,乘法溢出,结果加5 CLR F0

SUBB A,#1AH MOV F0,C

MOV A,#10 ; MUL AB ; MOV B,#51 ; DIV AB

JB F0,LOOP2 ; ADD A,#5

LOOP2: MOV 79H,A ;小数后第一位放入79H MOV A,B CLR F0

SUBB A,#1AH MOV F0,C

MOV A,#10 ; MUL AB ; MOV B,#51 ; DIV AB

JB F0,LOOP3 ; ADD A,#5

LOOP3: MOV 78H,A ;小数后第二位放入78H RET

;************************************* ;* 显示 程 序 *

;************************************* ;共阳显示子程序,显示内容在78H—7BH ;

DISP: MOV R1,#78H ;共阳显示子程序,显示内容在78H—7BH MOV R5,#0FEH ;数据在P1输出,列扫描在P3.0-P3.3 PLAY: MOV P1,#0FFH MOV A,R5 ANL P3,A MOV A,@R1

MOV DPTR,#TAB MOVC A,@A+DPTR MOV P1,A

JB P3.2,PLAY1 ;小数点处理

CLR P1.7 ;小数点显示(显示格式为XX.XX) PLAY1: LCALL DL1MS INC R1 MOV A,P3

JNB ACC.3,ENDOUT RL A MOV R5,A MOV P3,#0FFH AJMP PLAY

ENDOUT: MOV P3,#0FFH

MOV P1,#0FFH RET

TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH ;************************************* ;* 延时程序 *

;*************************************

DL10MS: MOV R6,#0D0H ;10MS延时子程序 DL1: MOV R7,#19H DL2: DJNZ R7,DL2 DJNZ R6,DL1 RET ;

DL1MS: MOV R4,#0FFH ;513+513=1MS LOOP11: DJNZ R4,LOOP11 MOV R4,#0FFH LOOP22: DJNZ R4,LOOP22 RET

;************************************* ;* 电压测量(A/D)子程序 *

;*************************************

; 一次测量数据8个,依次放入70H-77H单元中

TEST: CLR A ;模数转换子程序 MOV P2,A

MOV R0,#70H ;转换值存放首址 MOV R7,#08H ;转换8次控制 LCALL TESTART ;启动测试

WAIT: JB P3.7,MOVD ;等A/D转换结束信号 AJMP WAIT ;

TESTART: SETB P2.3 ;测试启动 NOP NOP

CLR P2.3 SETB P2.4 NOP NOP

CLR P2.4 NOP NOP NOP NOP RET ;

MOVD: SETB P2.5 ;取A/D转换数据 MOV A,P0 MOV @R0,A

CLR P2.5 INC R0

MOV A,P2 ;信道地址加1 INC A MOV P2,A

CJNE A,#08H,TESTEND ;等8路A/D转换结束 TESTEND: JC TESTCON

CLR A ;结束恢复埠 MOV P2,A MOV A,#0FFH MOV P0,A MOV P1,A MOV P3,A RET ;

TESTCON: LCALL TESTART LJMP WAIT

;************************************* ;* 按键检测子程序 * ;************************************* KEYWORK1: JNB P3.5,KEY1 KEYOUT: RET ;

KEY1: LCALL DISP ;延时消抖 JB P3.5,KEYOUT WAIT11: JNB P3.5,WAIT12 CPL 00H

MOV R2,#01H MOV R3,#01H RET

WAIT12: LCALL DISP ;键释放等待时显示用 AJMP WAIT11 ;

KEYWORK2: JNB P3.5,KEY1 JNB P3.6,KEY2 RET ;

KEY2: LCALL DISP ;延时消抖用 JB P3.6,KEYOUT WAIT22: JNB P3.6,WAIT21 INC 7BH MOV A,7BH

CJNE A,#08H,KEYOUT11 KEYOUT11: JC KEYOUT1 MOV 7BH,#00H KEYOUT1: RET

;

WAIT21: LCALL DISP ;键释放等待时显示用 AJMP WAIT22 ; END

教师评语: 教师: 日期: 设计过程30﹪ 课设报告40﹪

答辩30﹪ 总成绩

因篇幅问题不能全部显示,请点此查看更多更全内容

Top