单片机课程设计.docx
《单片机课程设计.docx》由会员分享,可在线阅读,更多相关《单片机课程设计.docx(19页珍藏版)》请在冰豆网上搜索。
![单片机课程设计.docx](https://file1.bdocx.com/fileroot1/2022-11/19/999d123f-de78-4bb7-b30c-c00e95e74ce1/999d123f-de78-4bb7-b30c-c00e95e74ce11.gif)
单片机课程设计
湖南工业大学
课程设计
资料袋
电气与信息工程学院(系、部)2011~2012学年第1学期
课程名称单片机应用系统指导教师周汝职称讲师
学生姓名何武专业班级自动化092学号09401700727
题目对外部脉冲计数及出租车计费系统的设计
成绩起止日期2011年12月19日~2011年12月30日
目录清单
序号
材料名称
资料数量
备注
1
课程设计任务书
2
课程设计说明书
3
课程设计图纸
张
4
5
6
湖南工业大学
课程设计任务书
2011—2012学年第1学期
学院(系、部)专业班级
课程名称:
单片机应用系统
设计题目:
对外部脉冲计数及出租车计费系统的设计
完成期限:
自2011年12月19日至2011年12月30日共2周
内
容
及
任
务
1.1外部脉冲自动计数,自动显示。
1.1.1设计一个255计数器:
0-255计数,计满后自动清0,重新计数(在数码管中显示)。
1.1.2设计一个50000计数器:
0-50000计数,计满后自动清0,重新计数(在数码管中显示)。
1.2设计一个出租车计费系统:
起步价为5元(2km以内),2km后,0.8元/0.5km;要求每500m刷新计费一次,在8位数码管中,前3位显示数码管显示里程数,后3位数码管显示价钱(角,元,十元,百元)
注:
要求首先采用PROTEUS完成单片机最小系统的硬件电路设计及仿真;程序仿真测试通过后,再下载到单片机实训板上执行。
进
度
安
排
起止日期
工作内容
2008.12.19
讲述设计内容及基本原理
2008.12.20-2008.12.28
进行系统的设计
2008.12.29-2008.12.30
进行系统的调试
主
要
参
考
资
料
[1]刘苗生、潘宗预.单片机测控系统设计.中国物质出版社,2006年
指导教师(签字):
年月日
系(教研室)主任(签字):
年月日
(单片机应用系统)
设计说明书
(题目)
对外部脉冲计数及出租车计费系统的设计
起止日期:
2011年12月19日至2011年12月30日
学生姓名
何武
班级
自动化092
学号
09401700727
成绩
指导教师(签字)
电气与信息工程学院(部)
年月日
单片机课程设计指导书
电气与信息工程学院实验室
一、设计任务:
1.1外部脉冲自动计数,自动显示。
1.1.1设计一个255计数器:
0-255计数,计满后自动清0,重新计数(在数码管中显示)。
1.1.2设计一个50000计数器:
0-50000计数,计满后自动清0,重新计数(在数码管中显示)。
1.2设计一个出租车计费系统:
起步价为5元(2km以内),2km后,0.8元/0.5km;要求每500m刷新计费一次,在8位数码管中,前3位显示数码管显示里程数,后3位数码管显示价钱(角,元,十元,百元)
注:
要求首先采用PROTEUS完成单片机最小系统的硬件电路设计及仿真;程序仿真测试通过后,再下载到单片机实训板上执行。
二、单片机最小系统硬件资源介绍:
※89S51单片机;
※6位共阳极数码管;
※段码驱动器74HC573,位选译码器74HC138;
※4路独立式按键;
※外部晶振电路;
※ISP下载接口(Insystemprogram,在系统编程);
※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单片机最小系统原理图
三、设计思路:
1、255计数:
255可用8位二进制数表示,故本设计可直接采用可以重装载的计数器T1模式二进行计数。
然后对TL1的内容进行相应的二进制---十进制转换:
首先TL1的内容除以64H,所的商就是十进制的百位,然后用余数除以0AH,所得的商就是十进制数的十位,余数即相应的十进制的个位。
接着将相应的十进制数进行译码,并在LED数码管上显示出来。
每来一个脉冲其显示的结果加一,直加至255然后T1重新开始计数。
图3255计数程序流程图
1、255计数:
255可用8位二进制数表示,故本设计可直接采用可以重装载的计数器T1模式二进行计数。
然后对TL1的内容进行相应的二进制---十进制转换:
首先TL1的内容除以64H,所的商就是十进制的百位,然后用余数除以0AH,所得的商就是十进制数的十位,余数即相应的十进制的个位。
接着将相应的十进制数进行译码,并在LED数码管上显示出来。
每来一个脉冲其显示的结果加一,直加至255然后T1重新开始计数。
1、000~255循环计数程序:
ORG0000H
AJMPSTART
ORG0030H
START:
MOVTMOD,#60H;计数器T1,工作方式2
MOVTH1,#00H;计数初值
MOVTL1,#00H
SETBTR1;开启计数器T1
MOVDPTR,#TABLE;查表首地址
MAIN:
MOVA,TL1;二-十进制转换
MOVB,#64H
DIVAB;取百位存于A,余数存于B
MOV30H,A;百位存于30H地址
MOVA,B;取余数继续转换
MOVB,#0AH
DIVAB;取十位存于A,个位存于B
MOV31H,A;取十位存于31H地址
MOV32H,B;取个位存于32H地址
LCALLDISPLAY;显示
JNBTF1,MAIN
CLRTF1;清除溢出标志(因为没有开中断,也可以不清除)
SJMPMAIN;循环执行
DISPLAY:
MOVR0,#00H;位选首值
MOVR1,#30H;段选值对应首地址
MOVR2,#03H;3位数码管,循环3次
LOOP1:
MOVP2,R0;循环取数
MOVA,@R1
MOVCA,@A+DPTR;查表取段码
MOVP1,A
LCALLDELAY;显示上延时
INCR0;改变位选取值
INCR1;改变段选对应地址取值
DJNZR2,LOOP1
RET
DELAY:
MOVR7,#64H;延时子程序
LOOP:
NOP
NOP
NOP
DJNZR7,LOOP
RET
TABLE:
DB3FH,06H,5BH,4FH,66H;数码管段码显示二进制数
DB6DH,7DH,07H,7FH,6FH
2、0~50000计数:
由于超出了255,而直接将TH1,TL1中的数取出来转换显得有些繁琐,于是采用中断,每中断一次将脉冲数存在Rn寄存器中,而每一个Rn中只存0~99,计到100就向高位进一,而本寄存器则清零。
2、0~50000循环计数程序:
ORG0000H
AJMPSTART
ORG001BH;中断入口地址
AJMPINTT1;转中断程序
ORG0030H
START:
MOVTMOD,#50H;计数器T1,工作方式1
MOVTH1,#0FFH;计数初值
MOVTL1,#0FFH
SETBTR1;开启计数器T1
SETBEA;开总中断
SETBET1;开T1中断允许
MOVDPTR,#TABLE;查表首地址
MOVR1,#00H
MOVR2,#00H
MOVR3,#00H
MOVR6,#02H
DD:
LCALLMAIN;等待中断处理,循环执行
SJMPDD
MAIN:
MOVA,R1;R1存0~99
MOVB,#0AH
DIVAB
MOV30H,A
MOV31H,B
MOVA,R2;R2存0~99,但表示0~9900
MOVB,#0AH
DIVAB
MOV32H,A
MOV33H,B
MOVA,R3;R3存0~5,但表示0~50000
MOVB,#0AH
DIVAB
MOV34H,A
MOV35H,B
LCALLDISPLAY;显示
RET
INTT1:
MOVTH1,#0FFH;继续赋初值
MOVTL1,#0FFH
INCR3
LOOPA:
CJNER1,#05H,LOOPB;最高位到5转移
DJNZR6,LOOPD
MOVR6,#02H;为能显示50000专门设置
MOVR1,#00H;显示了50000后返回0
SJMPLOOPD
LOOPB:
CJNER2,#64H,LOOPC;计到99转移
MOVR2,#00H;清零
INCR1;向高位进一
SJMPLOOPA;继续判断,以防出现显示遗漏
LOOPC:
CJNER3,#64H,LOOPD;计到99转移
MOVR3,#00H;清零
INCR2;向高位进一
SJMPLOOPB;继续判断,以防出现显示遗漏
LOOPD:
RETI;中断返回,加一后继续显示
DISPLAY:
MOVR5,#06H;显示子程序
MOVR4,#00H
MOVR0,#30H
L1:
MOVP2,R4;位选
MOVA,@R0
MOVCA,@A+DPTR
MOVP1,A;段选
LCALLDELAY
INCR4
INCR0
DJNZR5,L1
RET
DELAY:
MOVR7,#64H;延时子程序
LOOP:
NOP
NOP
NOP
DJNZR7,LOOP
RET
TABLE:
DB3FH,06H,5BH,4FH,66H;数码管显示段码二进制
DB6DH,7DH,07H,7FH,6FH
3、出租车计费程序:
LLEQU50;假设来一个脉冲表示车轮转的圈数与车轮周长的乘积
ORG0000H;即每个脉冲表示车子走的路程设为50m(为显示方便设大点)
AJMPSTART
ORG