单片机课程设计报告Word文档格式.docx
- 文档编号:16096690
- 上传时间:2022-11-19
- 格式:DOCX
- 页数:16
- 大小:75.01KB
单片机课程设计报告Word文档格式.docx
《单片机课程设计报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《单片机课程设计报告Word文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
度
安
排
起止日期
工作内容
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
DJNZBIT_COUNT,SEND_LOOP
CLRDAT
RET
接收子程序
RECEIVE:
SETBDAT
RECEIVE_LOOP:
MOVA,DATA_IN
MOVDATA_IN,A
MOVC,DAT
MOVDATA_IN.0,C
DJNZBIT_COUNT,RECEIVE_LOOP
BCD码调整子程序
BCD:
;
BCD码调整子程序
MOVB,#64H
DIVAB
MOVBAI,A;
保存百位
MOVA,B
MOVB,#0AH
MOVSHI,A;
保存十位
MOVGEWEI,B;
保存个位
RET
显示子程序
DISP:
CLRCS;
显示子程序
MOVDATA_OUT,#10000010B
CALLSEND
MOVDATA_OUT,BAI
MOVDATA_OUT,#10000001B
MOVDATA_OUT,SHI
MOVDATA_OUT,#10000000B
MOVDATA_OUT,GEWEI
SETBCS
长延时子程序
LONG_DELAY:
MOVTIMER,#80
DELAY_LOOP:
DJNZTIMER,DELAY_LOOP
短延时子程序
SHORT_DELAY:
MOVTIMER,#6
SHORT_LP:
DJNZTIMER,SHORT_LP
RET
启动延时子程序
START_DELAY:
MOVTIMER1,#255
START_DELAY1:
DJNZTIMER1,START_DELAY1
DJNZTIMER,START_DELAY
END
2.50000计数程序:
#include<
reg51.h>
intrins.h>
#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++)
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
data_out=data_out<
<
1;
voidwrite7279(uchara,ucharb)//写入到HD7279
send_byte(a);
//发送字节
send_byte(b);
voidbcd()//数码bcd转换函数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 报告