单片机课程设计完整版
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机课程设计
Document serial number【NL89WT-NY98YT-NC8CB-NNUUT-NUT108】
湖南工业大学
课程设计
资料袋
理学院(系、部) 2015~2016 学年第 1 学期
课程名称单片机系统课程设计指导教师职称
学生姓名管专业班级电子科学1 学号
题目出租车计费系统
成绩起止日期 2015 年 12月7日~ 2015 年 12
月 19 日
目录清单
湖南工业大学
课程设计任务书
理学院(系、部)电子科学专业班级
课程名称:单片机系统课程设计
设计题目:出租车计费系统
完成期限:自 2015 年12月7日至2015 年 12 月 19 日共 2 周
指导教师(签字):年月日系(教研室)主任(签字):年月日
附件三
(单片机
应用系统)
设计说明书
(题目)
出租车计费系统
起止日期: 2015 年 12 月 7 日至 2015 年 12 月 19日
学生姓名管
班级电子科学
学号
成绩
指导教师(签字)
电气与信息工程学院
2015年 12 月19 日
一、设计任务:
1.1 外部脉冲自动计数,自动显示。
1.1.1设计一个255计数器:0-255计数,计满后自动清0,重新计数
(在数码管中显示)。
1.1.2设计一个50000计数器:0-50000计数,计满后自动清0,重新计
数(在数码管中显示)。
1.2 设计一个出租车计费系统:
起步价为5元(2km以内),2km后,元/0.5km;要求每500m刷新计费一次,在8位数码管中,前3位显示数码管显示里程数,后3位数码管显示
价钱(角,元,十元)或者用lcd1602显示
二、设计原理及思路
1.设计一个255计数器:0-255计数,计满后自动清0,重新计数(在数码管中显示)。
这个用C语言比较简单。
首先我确定用的是外部中断0,1,外部中断0用来计数,来一个脉冲,计数器加1,直到加到255,然后清零。外部中断1用来暂停/开始计数,来一个外部脉冲,暂停计数,再来一个脉冲,开始计数。用138译码器数码管进行显示0到255,到了255,自动到0.
2.设计一个50000计数器:
0-50000计数,计满后自动清0,重新计数(在数码管中显示)。这个用C语言和255一样的原理,只要将255计数器中的字符类型,改为int型就可以了
用138译码器数码管进行显示0到50000,到了50000,自动到0.
3.设计一个出租车计费系统:
起步价为5元(2km以内),2km后,元/0.5km;要求每500m刷新计费一次,在8为数码管中,前3为显示数码管显示里程数,后3位数码管显示价钱(角,元,十元)用lcd1602显示器显示。
三、硬件电路图
计数器
Proteus电路图:
开发板图
计数器
Proteus电路图
开发板电路图
3.出租车计费器(用数码管显示)
(1).(小于2KM),第一个按键是开始功能,右边的开关是暂停/继续功能
开发板电路图
(2).(大于两千米时)proteus中电路如图所示
开发板电路显示
(3)用lcd1602显示
开发板电路图:
四.源程序
(C语言)
#include<>
unsigned char code sz[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};;;
delay(1);
lcd_write_data(show1[money%10]);
delay(1);
}
}
void lsd() interrupt 0
{
meter++;
if(meter<=4)
money=50;
else
money=50+8*(meter-4);
}
void lsd1() interrupt 2
{
unsigned char stop1;
stop++;
stop1=stop%2;
if(stop1)
EX0=0;
else
EX0=1;
}
五、心得体会
在本次课程设计中,重新巩固了单片机理论课时,加强了实践,增加了动手能力,感觉到的内容很多,知识点很杂、很繁琐。通过自己的努力也更进一步掌握了单片机的内容构造和工作原理,以及接外部电路的情况。当然光有理论知识那只是“纸上谈兵”,还需实际动手去实践。真正把所学的用到日常生活中,理论联系实际,做出实物模型。这次单片机课程设计,我们设计的是简易255计数器,50000计数器,出租车计费系统设计,通过这次课程设计我感觉到要想做成功,必须花时间多做准备,查阅大量资料,每个过程都很繁琐,都要认真地分析每一步每一个模块要实现大的功能,然后分步进行编写调试,最后整合成在一起。
在255计数器的过程中,主要是数码管的动态显示问题,参考了许多书目,其他数码管动态显示的例题,在错误中进步,直到实验的正确,其次就是中断问题,在这个实验中,加深了对中断的理解,以及中断的优先级;在5000的计数器中实验原理与255计数器差不多,主要是在255计数器中,使用的是char字符类型,而char最大只能显示255,所以在5000计数器中,将char字符类型改为int型。
在出租车计费系统中,首先的思想是用数码管的动态显示以及使用lcd1602液晶屏显示,数码管的显示原理和前面一样,而使用lcd显示的原理,一点都不懂,这需要自己观看视频教程以及书本,在经过多次的调试后,有很多地方是因为自己编程的不小心,浪费了许多时间,终于让自己的lcd显示了,我想要结果,但lcd1602只能显示字符,而不能显示汉字,这是唯一有遗憾的地方。
在这次课程设计中,经历了多次失败的洗礼,我明白在以后学习和实践中,我要努力掌握知识,多动手,多思考,以免在以后的学习工作中犯同样的错误。