单片机课程设计报告.docx
- 文档编号:3186936
- 上传时间:2022-11-19
- 格式:DOCX
- 页数:16
- 大小:75.01KB
单片机课程设计报告.docx
《单片机课程设计报告.docx》由会员分享,可在线阅读,更多相关《单片机课程设计报告.docx(16页珍藏版)》请在冰豆网上搜索。
单片机课程设计报告
湖南工业大学
课程设计任务书
2013—2014学年第一学期
电气与信息工程学院(系、部)自动化专业1102班级
课程名称:
单片机应用系统
设计题目:
出租车计费系统
完成期限:
自2013年11月11日至2013年11月22日共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位数码管中,前四位显示数码管显示里程数,后四位数码管显示价钱(角,元,十元,百元)
进
度
安
排
起止日期
工作内容
201311.11-2013.11.12
讲述设计内容及基本原理
2013.11.13-2013.11.18
进行系统的设计
2013.11.19-2013.11.22
进行系统的调试
主
要
参
考
资
料
[1]肖申平主审.单片机原理与应用系统设计.电子工业出版社,2013.
指导教师(签字):
年月日
系(教研室)主任(签字):
年月日
(单片机应用系统)
设计说明书
(题目)
出租车计费系统
起止日期:
2013年11月11日至2013年11月22日
学生姓名
班级
自动化1102班
学号
成绩
指导教师(签字)
电气与信息工程学院(部)
2013年11月21日
一、设计思路:
1、255计数:
255可用8位二进制数表示,故本设计可直接采用可以重装载的计数器T0模式二进行计数。
然后对TL1的内容进行相应的二进制---十进制转换:
首先TL1的内容除以64H,所的商就是十进制的百位,然后用余数除以0AH,所得的商就是十进制数的十位,余数即相应的十进制的个位。
接着将相应的十进制数进行译码,并在LED数码管上显示出来。
每来一个脉冲其显示的结果加一,直加至255然后T1重新开始计数。
2、50000计数:
可用16位二进制数表示,故本设计可采用可以重装载的计数器T0模式二进行计数。
然后进行二进制---十进制转换:
将counter除以100000的商是万位数字,然后用余数除以1000,所得的商就是千位数字,再将余数除以100,所得的商是百位数字,然后将余数除以10的商是十位数字,剩下的余数是个位数字。
最后将十进制数进行译码,并在LED数码管上显示出来。
每来一个脉冲其显示的结果加一,从0加至50000然后重新计数。
3、出租车计费系统:
出租车计费系统可以在50000计数器的基础上设计,我们采用6位数码管显示,前三位数码管显示里程数,单位分别是十公里、公里、0.1公里;后三位数码管显示累计钱数,单位分别为十元、元、角。
设计mile=counter*5并且在公里数码管设置显示小数点表示0.5km刷新一次。
当mile小于等于2km(即起步)时,钱数等于5元,而当mile大于2km时,里程数减去2km再乘以0.8,表示每加500米,钱数乘以0.8元,所得结果加上5元即累计钱数。
最后将十进制数进行译码,并在6个LED数码管上显示出来。
每来一个脉冲,其公里显示的结果加0.5,钱数显示的结果如果在2km以内都是5元,以外加0.8元。
255计数程序流程图
二、程序调试:
1.255计数程序:
BIT_COUNTDATA07FH
TIMERDATA07EH
TIMER1DATA07DH
SHIWEI_DATADATA07CH
BAIDATA07BH
SHIDATA07AH
GEWEIDATA079H
DATA_INDATA020H
DATA_OUTDATA021H
KEYBITP1.3;7279的KEY连接于P1.3
CLKBITP1.6;7279的CLK连接于P1.6
DATBITP1.7;7279的DATA连接于P1.7
CSBITP2.7;7279的CS连接于P2.7
ORG000H
JMPSTART
ORG100H
START:
MOVSP,#2FH;定义堆栈
MOVP1,#11011011B;I/O口初始化
MOVTIMER,#50
CALLSTART_DELAY;7279上电复位后要延时25ms
MOVDATA_OUT,#10100100B;发复位指令
CALLSEND
SETBCS;复位CS为高电平
MOVTMOD,#05H;定时器T0初始化(计数)
SETBTR0;启动T0
MAIN:
MOVA,TL0
CALLBCD;数据BCD转换
CALLDISP;数码管显示
JMPMAIN
;*******************************************
;发送子程序
;*******************************************
SEND:
MOVBIT_COUNT,#8
CLRCS
CALLLONG_DELAY
SEND_LOOP:
MOVC,DATA_OUT.7
MOVDAT,C
SETBCLK
MOVA,DATA_OUT
RLA
MOVDATA_OUT,A
CALLSHORT_DELAY
CLRCLK
CALLSHORT_DELAY
DJNZBIT_COUNT,SEND_LOOP
CLRDAT
RET
;*******************************************
;接收子程序
;*******************************************
RECEIVE:
MOVBIT_COUNT,#8
SETBDAT
CALLLONG_DELAY
RECEIVE_LOOP:
SETBCLK
CALLSHORT_DELAY
MOVA,DATA_IN
RLA
MOVDATA_IN,A
MOVC,DAT
MOVDATA_IN.0,C
CLRCLK
CALLSHORT_DELAY
DJNZBIT_COUNT,RECEIVE_LOOP
CLRDAT
RET
;*******************************************
;BCD码调整子程序
;*******************************************
BCD:
;BCD码调整子程序
MOVB,#64H
DIVAB
MOVBAI,A;保存百位
MOVA,B
MOVB,#0AH
DIVAB
MOVSHI,A;保存十位
MOVGEWEI,B;保存个位
RET
;*******************************************
;显示子程序
;*******************************************
DISP:
CLRCS;显示子程序
MOVDATA_OUT,#10000010B
CALLSEND
MOVDATA_OUT,BAI
CALLSEND
MOVDATA_OUT,#10000001B
CALLSEND
MOVDATA_OUT,SHI
CALLSEND
MOVDATA_OUT,#10000000B
CALLSEND
MOVDATA_OUT,GEWEI
CALLSEND
SETBCS
RET
;*******************************************
;长延时子程序
;*******************************************
LONG_DELAY:
MOVTIMER,#80
DELAY_LOOP:
DJNZTIMER,DELAY_LOOP
RET
;*******************************************
;短延时子程序
;*******************************************
SHORT_DELAY:
MOVTIMER,#6
SHORT_LP:
DJNZTIMER,SHORT_LP
RET
;*******************************************
;启动延时子程序
;*******************************************
START_DELAY:
MOVTIMER1,#255
START_DELAY1:
DJNZTIMER1,START_DELAY1
DJNZTIMER,START_DELAY
RET
END
2.50000计数程序:
#include
#include
#defineuintunsignedint
#defineucharunsignedchar
#defineCMD00x80
#defineCMD_RESET0xa4
sbitKEY=P1^3;//key连接于p1.3
sbitCLK=P1^6;//clk连接于p1.6
sbitDAT=P1^7;//dat连接于p1.7
sbitCS=P2^7;//cs连接于p2.7
uchardata_out,Wan,Qian,Bai,Shi,Ge;
uintCounter;//定义变量
voidlong_delay()//长延时函数
{
uchara;
for(a=0;a<=48;a++)
{
_nop_();;空指令
}
}
voidshort_delay()//短延时函数
{
ucharb;
for(b=0;b<=8;b++)
{
_nop_();
}
}
voidsend_byte(uchardata_out)//发送函数
{
uchari;
CS=0;
long_delay();//长延时子程序
for(i=0;i<8;i++)
{
if(data_out&0x80)
DAT=1;
else
DAT=0;
CLK=1;//置CLK为高电平
short_delay();
CLK=0;//拉低CLK
short_delay();
data_out=data_out<<1;
}
DAT=0;
}
voidwrite7279(uchara,ucharb)//写入到HD7279
{
send_byte(a);//发送字节
send_byte(b);
}
voidbcd()//数码bcd转换函数
{
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 报告