单片机课程设计

发布 2022-10-04 22:44:28 阅读 3580

题目院别 专业班级。

设计人。学号。

指导教师。成绩。

一、 设计要求。

在单片机的智能仪器仪表,数据采集以及实时控制系统中,被控制对象往往是一些连续变化的模拟量,例如温度、压力、形变、位移、流量等。这些非电的模拟量必须通过传感器转换成模拟量,再转换成数字量后,才能输入到计算机加工处理。有时还要求处理结果转换成模拟量以实现对被控对象的控制并要求通过键盘置数、显示、打印等。

二、 系统原理总体框图。

图1 系统总体结构框图。

系统工作原理:

主机at89c51借助于程序可启动a/d转换器(tlc549)进行转换工作,通过ds18b20对系统周围温度进行检测,对采样的数据进行修正(或不修正),将结果存入24c02(256*8)中,同时可将此数据送显示缓冲区,经led显示,并送d/a转换器输出,经标准打印机的接口(db25)记录实测结果。

三、 系统硬件设计。

1)显示键盘电路:由a和b组成。

a显示电路:p0口、p2口低4位和4位共阳极led显示器,4只9015三极管构成。

b键盘电路:p2口低4位与p1口高3位组成4*3矩阵结构形式的12个键组成,其中10个数字键,2个功能键。

显示电路工作原理:

p0口送七段码字形,根据电路图中d0对应七段码中a段,d6对应七段码中g段及共阳极“0”电平点亮的原则,得符合本电路的共阳极七段码见表1。

表一七段码字形表

图2 键盘显示电路。

位选择由p 2~p2.3经9015后分别对应千位、百位、十位、个位,根据共阳极原理,位选信号经9015驱动后从vcc送入显示阳极,因此得位选择码,千位对应位选码为0eh,百位对应位选码为0dh,十位对应位选码为0bh,个位对应位选码为07h,由千位到个位分别送出千位字形,千位位选0eh,百位字形,百位位选0dh,十位字形,十位位选0bh,个位字形,个位位选07h,即由千位到个位逐位显示,由于人眼的惰性,我们观察到四位同时显示。

键盘电路:在键盘扫描电路中,p2.0、p2.

1、p2.2、p2.3用作控制键盘扫描的行线,是输出口,p1.

5、p1.6、p1.7用作控制键的列线,是输入口。

其扫描过程为,p2.0~p2.3四线中先送p2.

3线为0,其余位送全1(07h),读p1口。若由键按下,则p1.5~p1.

7中必有一线为0,再分别送0bh、0dh、0eh和读p1口值,达到扫描键盘的作用。闭合键的键值的确定是根据该键所在的行、列值确定。

如图2显示键盘电路图所示。

2)ds18b20,,24c02电路

选用精度高,廉价的数字温度传感器bs18b20作为测量系统的环境温度,又选用24c02串行e2prom来记录a/d转换器的转换结果及环境温度变化值。系统中由ds18b20与p1口低三位构成高精度数字传感器接口电路,ds18b20最小分辨率可达0.06250c,具有线性度高等特点。

24c02(256 x 8)与p1.2低3位实现外扩e2prom功能。具体电路见图3。

图3 单片机与ds18bc02接口电路。

3)a/d、d/a转换器电路 a/d、d/a转换器电路见图4.由p1口低3位和串行a/d转换器tlc549实现8位a/d转换器功能,当在tlc549的cs端加上低电平后a/d转换器被启动,此时在clk上必须送入移位脉冲,将sda上的转换结果经过c进位送入累加器a中。

dac0832由8位数据输入寄存器,8位dac寄存器和8位d/a转换器三部分组成。它是电流输出型的,即将输入的数字量转换成模拟电流量输出。iout1和iout2的和是常数,他们的值随dac寄存器的内容呈线性变化。

但是,在单片机的应用系统中,往往需要电压信号输出,为此将电流在经过运算放大器lm2904,即可得到转换电压输出。本系统采用单缓冲方式连接,p0口送8位数据,p3.6作为选通信号。

图4 a/d、d/a转换器电路。

4)并行输出打印电路和串行输出rs-232电路。

单片机应用系统中经常选用打印机来记录系统中数据等,本系统选用标准并口打印口输出,用p0口输出并行数据,p3.7作为打印口的选通信号,当at89c51向打印口输出选通信号strobe时,数据就输出到打印机,并启动打印机的机械装置进行打印工作,当打印时,其状态输出线busy呈高电平,空闲时送出低电平,p2.4引脚连到打印口busy信号,供cpu查询用。

如图8 串行输出rs-232,并行输出标准打印口电路图5所示。

图5并行输出打印电路和串行输出rs-232电路。

8位a/d、d/a转换系统总体逻辑图见图6

图 6-40 8位a/d、d/a转换系统总体逻辑图。

四、 系统软件设计。

系统软件设计采用模块化结构,整个程序由主程序,显示键盘扫描,测温e2prom存取a/d,d/a转换,rs-232通信,打印口等程序模块组成。

在at89c51单片机系统中由于cpu内部含有4kb的快擦写可编程只读存储器可作为监控程序使用单元,系统外扩24c02 e2prom作为存取随机采集数据的存储单元。

系统试用地址单元分配如下:

1) 显示缓冲区设在片内ram的61h、62h、63h、64h单元中。

2) 键盘扫描**设在片内ram的40h、41h、42h、43h单元中。

3) 键值**设在片内ram的44h-4fh中。

由于键盘较少,安排命令键有困难,我们采用数字**与命令执行键(#),退出命令执行键(*)组合而成。具体方法是:取低二位数值作为命令键不同的键值,再按下#后程序转入命令键处理,完成(63h)x 16+(62h)操作得到各命令键,并作出如下定义:

1)12h对应a/d,d/a转换功能;21h对应打印功能。

2)31h对应串行通信功能;41h对应测温功能。

表2 键盘值对应的8位**。

1)主程序图6-41是主程序的流程图所示。

图6-41主程序的流程图。

主程序。org 0000h

ajmp main

org 0023h

org 0100h

main:mov 40h,#07h ;键行扫描码赋予40h—43h

mov 41h,#0bh

mov 42h,#0dh

mov 43h,#0eh

mov 44h,#4eh ;键值码赋予44h—4fh

mov 45h,#27h

mov 46h,#47h

mov 47h,#87h

mov 48h,#2bh

mov 49h,#4bh

mov 4ah,#8bh

mov 4bh,#2dh

mov 4ch,#4dh

mov 4dh,#8dh

mov 4eh,#2eh

mov 4fh, #8eh

mov 60h,#00h

main0:mov sp,#68h ;设置sp指针。

mov r0,#61h

ml0: mov a,#00h ;显示缓冲区清零。

mov @r0,a

inc r0

cjne r0,#65h,ml0

ml1: mov r0,#64h

mov r3,#00h

ml2: acall display ;调用显示子程序。

acall key1调用键盘扫描子程序。

cjne a,#0bh,ml6 ;不是命令执行键转数字键处理。

mov a,63h ;是,进行命令键处理。

swap a形成命令字。

anl a,#0f0h

mov b,a

mov a,62h

add a,b

cjne a,#12h,ml3 ;不是a/d、d/a命令转到ml3

ajmp adc ;执行a/d、d/a子程序。

ml3: cjne a,#21h,ml4 ;不是打印命令转到ml4

ml4: cjne a,#31h,ml5 ;不是串口命令转到ml5

ml5: cjne a,#41h,ml6 ;不是测温命令转到数字键出理。

ajmp b20 ;执行测温子程序。

ml6: ajmp ml2是数字键b,转显示程序。

2)键盘显示功能程序。

(1)本程序段使用显示缓冲区为内部ram中的64h(千位h(百位h(十位h(个位)。

程序流程框图见图6-42。

图6-42 显示程序流程图。

显示子程序:

display:mov dptr,#numtab取七段码首地址。

setb c

mov r7,#0feh位选择置处置(从千位开始)

mov r0,#64h显示缓冲区首地址送r0

mov r4,#04h设循环次数(4位)

show :mov a,@r0取显示缓冲区要显示的数值。

movc a,@a+dptr查七段表,取七段码。

mov p0,a送字形码到p0口。

mov a,r7送数位到p2口。

mov p2,a

delay :mov r5,#0ffh延时。

delay1 :djnz r5,delay1

dec r0

mov a,r7修改显示值。

rlc amov r7,a

djnz r4,show

retnumtab :db 0c0h,0f9h,0a4h,0b0h,99h ;七段码字形表。

db 92h,82h,0f8h,80h,90h

db 88h,83h,0c6h,0a1h,86h

db 8eh,8ch

2) 键盘扫描子程序键盘扫描子程序有两方面功能:

1判别键盘上的键是否按下方法是让扫描口p2.3~p2.0输出全“0”,然后读p1.

7~p1.5端的状态。若p1.

7~p1.5为全1。(键盘上列线为高电平),则没有键按下,若p1.

7~p1.5不为全0,则有键按下,但是为了排除由于键盘上键的抖动而产生的误判,可以在判到有键按下后经软件延时一段时间后再判键盘状态,若仍有键按下则才认为有键按下,否则就认为是键抖动。

2判别闭合键的键号方法是对键盘的行线依次扫描,扫描口p2.3~p2.0依次送出如表3所示的值。

表3相应地顺次读p1.7~p1.5端状态,若p1.

7~p1.5为全1,则表示行线为0的这行上没有键按下,否则就确认这一行上有键按下。放下键的键号等于p1.

7~p1.5端读得的值取反加上p2.3~p2.

0端送行扫描码,形成键**。例如p2.3~p2.

0输出为0111,扩展成8位07h,读入p1.7~p1.5的值为110,扩展成8位码为11011111b,与扫描码相加为20h+07h=27h,得该键码为27h,查表得按下键的值为1。

键扫描子程序的流程框图如图9所示,其中延时时间采用调用显示子程序,其优点是进入键扫描子程序后,显示器一直是亮的。

图6-43键盘扫描子程序流程图。

键盘扫描子程序:

key1: acall ks1

jnz lk1

ni: mov r6,#06h

ys: acall display

djnz r6,ys

ajmp key1

lk1: mov r6,#

ys1: acall display

djnz r6,ys1

acall ks1

jnz lk2

ajmp ni

lk2: mov r0 ,#40h

lk3: mov p1,#0ffh

mov a, @r0

mov p2,a

mov r6,#0ffh

lk4: djnz r6,lk4

mov a,p1

cpl ajz next

add a,@r0

mov 60h,a

mov r1,#44h

单片机课程设计

可变程序控制器是集微机技术 自动化技术 通讯技术于一体的通用工业控制装置。它可靠性强 性能 比高 使用方便,已在工业控制的各个领域里得到了极为广泛的应用,成为实现工业自动化的一种强有力的工具 1 plc的定义有许多种。国际电工委员会 iec 对plc的定义是 可编程控制器是一种数字运算操作的电子系统...

单片机课程设计

目录。内容提要2 关键词2引言3 一 硬件电路设计3 一 电路板原理3 二 电路元器件3 二 软件设计3 一 秒钟设计方案3 二 时钟设计方案4 结语7单片机时钟设计。内容摘要 一 在实验板上用动态扫描显示00 59秒钟,具体要求如下 一 6m晶振 二 l9 l10显示00 59十进制数并循环,间隔...

单片机课程设计

1 选题背景。1.1 家庭智能防盗报警系统设计的背景及目的。随着经济的发展,人们对防盗 防劫 防火保安设备的需求量大大增加。针对偷盗 抢劫 火灾 煤气泄漏等事故进行检测和报警的系统,其需求也越来越高。家居智能是以家为平台,兼备建筑 自动化,智能化于一体的高效 舒适 安全 便利的家居环境。自动化的家居...