单片机课程设计

发布 2022-10-05 00:52:28 阅读 2866

1引言随着社会的发展、科技的进步以及人们生活水平的逐步提高,各种方便于生活的自动控制系统开始进入了人们的生活,在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善,同时也标志了自动控制领域成为了数字化时代的一员。它实用性强,功能齐全,技术先进,使人们相信这是科技进步的成果。它更让人类懂得,数字时代的发展将改变人类的生活,将加快科学技术的发展。

2设计任务。

2.1 外部脉冲自动计数,自动显示。

2.1.1设计一个255计数器:0-255计数,计满后自动清0,重新计数(在数码管中显示)。

2.1.2设计一个50000计数器:0-50000计数,计满后自动清0,重新计数(在数码管中显示)。

2.2 设计一个出租车计费系统。

起步价为5元(2km以内),2km后,0.8元/0.5km;要求每500m刷新计费一次,在8位数码管中,前3位显示数码管显示里程数,后3位数码管显示价钱(角,元,十元,百元)

3单片机最小系统硬件资源介绍。

89s51单片机;

6位共阳极数码管;

段码驱动器74hc573,位选译码器74hc138;

4路独立式按键;

外部晶振电路;

isp**接口(in system program,在系统编程);

dc+5v电源试配器(选配);

isp**线(选配)。

单片机最小系统实训板硬件资源分布见图1元件布局图和图2电路原理图:其中p1为外部电源输入座(dc+5v),s8为电源最小系统的电源开关,e1和c3为电源滤波,去耦电容。d1为系统电源指示灯。

j2为isp**接口,s7系统复位按键。cry1,c1,c2为外部时针电路。ic1为89s51(dip-40),左上角为第一脚。

pre1,pre2。为上拉排阻(阻值4.7k—10k)。

j5,j9,j6,j10分别对应单片机的p0,p1,p2,p3口。便于二次开发。6路共阳极数码管动态显示电路,p0口通过74hc573(起驱动和隔离作用,让电流通过74ch573流入公共地),来控制数码管的8路段码,p20-p22通过74hc138译码器(使用其中的6路)控制数码管的公共端(中间还有三极管做驱动器)。

这样设计的理由:为了保证该单片机最小系统的二次开发的资源充足和合理性。如果单只做一个动态显示电路,可以省去74hc573,和74hc138。

图1 元件布局图。

图2 单片机最小系统原理图。

4设计思路。

计数:255可用8位二进制数表示,故本设计可直接采用可以重装载的计数器t1模式二进行计数。然后对tl1的内容进行相应的二进制---十进制转换:

首先tl1的内容除以64h,所的商就是十进制的百位,然后用余数除以0ah,所得的商就是十进制数的十位,余数即相应的十进制的个位。接着将相应的十进制数进行译码,并在led数码管上显示出来。每来一个脉冲其显示的结果加一,直加至255然后t1重新开始计数。

图3 255计数程序流程图。

5设计内容。

5.1 0-255计数器数码管显示。

图4 0-255计数显示。

5.2 0-255计数程序。

org 0000h

sjmp 0030h

org 0030h;主程序开始。

start:

mov tmod,#60h ;计数器初始化,选用定时器1,模式2,计数方式。

setb tr1 ;开启定时器1

lcall l1 ;转到读取tl1中得数并进行二到十转换。

lcall l2 ;转到显示程序进行显示。

sjmp start ;返回主程序。

l1: mov r0,#20h ;将20h地址送r0,用来存放百位。

mov a,tl1 ;取tl1中的数值,即脉冲数送a

mov b,#64h ;将100送到b

div ab将脉冲数除以100取出百位。

mov @r0,a ;存百位到20h

inc r0r0加1,即得存放十位的地址。

mov a,b ;将余下的十位个位送a

mov b,#0ah ;将10送b

div ab将十位个位除以10取出十位。

mov @r0,a ;存十位到21h

inc r0r0加1,即得个位地址。

mov @r0,b ;存个位到22h

ret显示子程序。

l2: mov r1,#00h ;数码管显示从最低位开始。

mov dptr,#tab ;将译码表首地址送dptr

l3: mov a,r1 ;将数码管选通信号送a

mov p2,a ;将a中的内容送p2口,控制数码管显示。

mov a,@r0

movc a,@a+dptr ;查表译码。

mov p0,a ;将字符码送p0口输出显示。

lcall dims ;调用延时子程序。

dec r0

inc r1

cjne r1,#03h,l3;循环显示控制,未显示完三位则循环,显示完则退出。

ret延时子程序。

dims:mov r2,#06h ;延时子程序。

dl :mov r3,#0ffh

dl1:djnz r3,dl1

djnz r2,dl

ret数码管译码表。

tab:db 0c0h,0f9h,0a4h,0b0h,99h

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

end5.3 0-50000计数器数码管显示。

图5 0-50000计数显示。

5.4 0-50000计数程序。

org 0000h

sjmp 0030h

org 0030h

main :mov 70h,#00h

mov 71h,#00h

mov 72h,#00h

mov 73h,#00h

mov 74h,#00h

mov tmod,#60h

mov tl1,#0ffh

mov th1,#0ffh

setb tr1

start:lcall l2

lcall l4

sjmp start

l2 :jbc tf1,l1 ;判定时器t1是否清零。

l3 :ret

l1 :inc 70h

mov r5,70h

cjne r5,#0ah,l3 ;十位。

mov 70h,#00h

inc 71h

mov r5,71h

cjne r5,#0ah,l3 ;百位。

mov 71h,#00h

inc 72h

mov r5,72h

cjne r5,#0ah,l3 ;千位。

mov 72h,#00h

inc 73h

mov r5,73h

cjne r5,#0ah,l3 ;万位。

mov 73h,#00h

inc 74h

mov r5,74h

cjne r5,#05h,l3

mov 74h,#00h

sjmp l3

l4 :mov r1,#00h ;数码管显示从最低位开始。

mov dptr,#tab ;将译码表首地址送dptr

mov r0,#70h

l5: mov a,r1 ;将数码管选通信号送a

mov p2,a ;将a中的内容送p2口,控制数码管显示。

mov a,@r0

movc a,@a+dptr ;查表译码。

mov p0,a ;将字符码送p0口输出显示。

lcall dims ;调用延时子程序。

inc r0

inc r1

cjne r1,#05h,l5;循环显示控制,未显示完六位则循环,显示完则退出。

ret延时子程序。

dims:mov r2,#06h ;延时子程序。

dl :mov r3,#0ffh

dl1:djnz r3,dl1

djnz r2,dl

ret数码管译码表。

tab:db 0c0h,0f9h,0a4h,0b0h,99h

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

end5.5 出租车计费显示数码管。

图6 出租车计费系统显示。

5.6 出租车计费系统程序。

org 0000h

sjmp 0030h

org 0030h

main :mov 70h,#00h

mov 71h,#00h

mov 72h,#00h;脉冲计数。

mov 73h,#00h;每500脉冲显示个位。

mov 74h,#00h;里程数十位。

mov 75h,#00h;里程数百位。

mov 76h,#00h;角。

mov 77h,#05h;元。

mov 78h,#00h;十元。

mov tmod,#60h

mov tl1,#0ffh

mov th1,#0ffh

setb tr1

start:lcall l1

lcall l9 ;转到显示程序进行显示。

sjmp start ;计数脉冲子程序。

l1 :jbc tf1,jishu;转到记数脉冲处。

l2 :ret

jishu:inc 70h计数延时,数据显示频率。

mov r5,70h

cjne r5,#01h,l2

mov 70h,#00h

inc 71h

mov r5,71h

cjne r5,#05h,l2

mov 71h,#00h

inc 72h

mov r5,72h

cjne r5,#0ah,l2 ;里程数个位。

mov 72h,#00h

inc 73h

mov r1,75h

cjne r1,#00h,l3 ;判断是否超过100公里。

mov r1,74h

cjne r1,#00h,l3 ;判断是否超过10公里。

mov r1,73h

cjne r1,#03h,l3 ;判断是否超过2公里。

l3 :jc l2

lcall money

mov r5,73h

cjne r5,#0ah,l2 ;里程数十位。

mov 73h,#00h

inc 74h

mov r5,74h

cjne r5,#0ah,l2 ;里程数百位。

mov 74h,#00h

inc 75h

mov r5,75h

cjne r5,#0ah,l2

mov 75h,#00h

sjmp l2计费开始。

money:clr c

mov r1,76h

mov r7,#08h

mov a,r7

addc a,r1

mov r6,a

jc l9l4 :mov a,r6

da amov r6,a

mov r1,77h

swap a

anl a,#0fh

add a,r1

mov 77h,a

mov r5,a

cjne r5,#0ah,l5

sjmp l8

l5 :mov a,r6

anl a,#0fh

mov 76h,a

l6 :ret元加1

l7 :inc 77h

mov a,77h

mov r5,a

cjne r5,#0ah,l4 ;十元加1

mov 77h,#00h

inc 78h

mov a,78h

cjne r5,#0ah,l6

mov 77h,#00h

sjmp l4

l8 :mov 77h,#00h

inc 78h

mov a,78h

cjne r5,#0ah,l6

mov 77h,#00h

sjmp l5

l9: mov r4,#00h ;数码管显示从最低位开始。

mov r0,#73h

l10: mov dptr,#tab1 ;将译码表首地址送dptr

mov a,r4 ;将数码管选通信号送a

mov p2,a ;将a中的内容送p2口,控制数码管显示。

mov a,@r0

cjne r4,#04h,l11

mov dptr,#tab2 ;将译码表首地址送dptr

l11 :movc a,@a+dptr ;查表译码。

mov p0,a ;将字符码送p0口输出显示。

lcall dims ;调用延时子程序。

inc r0

inc r4

cjne r4,#06h,l10;循环显示控制,未显示完六位则循环,显示完则退出。

ret延时子程序。

dims:mov r2,#06h ;延时3ms子程序。

dl :mov r3,#0ffh

dl1:djnz r3,dl1

djnz r2,dl

ret数码管译码表。

tab1:db 0c0h,0f9h,0a4h,0b0h,99h ;字符译码。

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

tab2:db 040h,079h,024h,030h,19h ;带小数点字符译码。

db 12h, 02h,078h, 00h,10h

end6 结束语。

通过单片机课程设计,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。创新,是要我们学会将理论很好地联系实际,并不断地去开动自己的大脑,从为人类造福的意愿出发,做自己力所能及的,别人却没想到的事。使之不断地战胜别人,超越前人。

同时,更重要的是,我在这一设计过程中,学会了坚持不懈,不轻易言弃。设计过程,也好比是我们人类成长的历程,常有一些不如意,也许这就是在对我们提出了挑战,勇敢过,也战胜了,胜利的钟声也就一定会为我们而敲响。

这个设计过程中,我遇到过许多次失败的考验,就比如,自己对实际生活中的交通秩序的不了解给整个设计带来的困扰,真想要就此罢休,然而,就在想要放弃的那一刻,我明白了,原来结果并不那么重要,我们更应该注重的是这一整个过程。于是,我坚持了下来。当然最终,这个设计很成功,主要体现在,这一整个系统,几乎没有参考任何书,程序由自己独立完成,与用8255来制作的交通灯控制系统相比,程序简单易读,结构清楚,最重要的是成本低。

在设计一个系统,除了达到所要求的性能指标以外,成本也是很重要的一个指标。成本的高低也决定了产品的适用性。

7 参考文献。

1] 李朝青。单片机原理及接**术(简明修订版).杭州:北京航空航天大学出版社,1998

2] 李广弟。单片机基础[m]北京:北京航空航天大学出版社,1994

3] 阎石。数字电子技术基础(第三版). 北京:高等教育出版社,1989

4] 廖常初。现场总线概述[j].电工技术,1999.

单片机课程设计

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

单片机课程设计

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

单片机课程设计

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