摘
设计STM32F103ZE控制核心处理器实现矩阵键盘输入五方控制手柄信息输入中文LCD显示8位数码显示屏显示具电机速度测量双屏显示立体声音频等功完成题目中基求发挥求具出租车速度测量控制支持休眠节等鲜明特色
系统采STM32F103ZEEK开发板核心控制器完成简易出租车计价器项功求实现8位数码显示行车里程数(0000)实时显示金额数(0000)单程返分单程 键返 键设定行车里程键模拟次键行车里程加01公里暂停 键计价器暂停计价反复查询键计价器次显示总等时间里程数金额数基功外实现电机调速测速计算价格误差10时实现LCDLED双显示屏外利开发板优良语音播放功增加收银机语音播放特色
关键词:STM32F103ZE 出租车计价 LCD中文显示 LED数码显示 矩阵键盘
目 录
摘 i
第1章 前言 3
11研究背景 3
12研究目意义 4
第2章 整体设计方案 5
第3章 模块选型 7
31控制器模块选型 7
32键盘模块方案选择 7
33液晶模块方案选择 7
34存储模块方案选择 8
第4章 硬件电路设计 9
41液晶显示设计 9
42LED显示设计 10
43键盘输入设计 11
44存储模块接口电路设计 11
45速度控制测量接口电路设计 12
第5章 系统软件设计 14
51程序流程: 14
52键盘输入流程 15
53计价程序流程 15
54日历时钟程序流程 16
第6章 理分析计算 17
61出租车计价规: 17
62电机调速模块设计测速计算: 17
第7章 编写程序 18
71程序 18
72出租车计价程序(部分): 21
73计时部分程序: 22
第8章 测试 24
81显示系统测试 24
82电机转数测试 24
83分析 24
第9章 总结 25
参考文献 26
致 谢 27
第1章 前 言
11研究背景
嵌入式系统应中心计算机技术基础软硬件裁剪适应系统功性成体积功耗严格求专计算机系统般嵌入式微处理器外围硬件设备嵌入式操作系统户应程序等四部分组成实现设备控制监视理等功
嵌入式系统般指非PC系统包括硬件软件两部分硬件包括处理器/微处理器存储器外设器件I/O端口图形控制器等软件部分包括操作系统软件(OS)(求实时务操作)应程序编程时设计员两种软件组合起应程序控制着系统运作行操作系统控制着应程序编程硬件交互作
嵌入式系统核心嵌入式微处理器嵌入式微处理器般具备4特点:
1)实时务强支持力完成务较短中断响应时间部代码实时核心执行时间减少低限度
2)具功强存储区保护功嵌入式系统软件结构已模块化避免软件模块间出现错误交叉作需设计强存储区保护功时利软件诊断
3)扩展处理器结构迅速开展出满足应高性嵌入式微处理器
4)嵌入式微处理器必须功耗低尤便携式线移动计算通信设备中电池供电嵌入式
嵌入式计算机系统通型计算机系统相具特点:
1嵌入式系统通常面特定应嵌入式CPU通型嵌入式CPU工作特定户群设计系统中通常具低功耗体积集成度高等特点够通CPU中许板卡完成务集成芯片部利嵌入式系统设计趋型化移动力增强网络耦合越越紧密
2嵌入式系统先进计算机技术半导体技术电子技术行业具体应相结合产物点决定必然技术密集资金密集高度分散断创新知识集成系统
3嵌入式系统硬件软件必须高效率设计量体裁衣冗余力争样硅片面积实现更高性样具体应中处理器选择更具竞争力
4嵌入式系统具体应机结合起升级换代具体产品步进行嵌入式系统产品旦进入市场具较长生命周期
5提高执行速度系统性嵌入式系统中软件般固化存储器芯片单片机身中存贮磁盘等载体中
6嵌入式系统身具备举开发力设计完成户通常中程序功进行修改必须套开发工具环境进行开发
嵌入式硬件系统DSP处理器英文名称:Digital Signal ProcessorDSP处理器专门信号处理方面处理器系统结构指令算法方面进行特殊设计具高编译效率指令执行速度数字滤波FFT谱分析等种仪器DSP获规模应
12研究目意义
嵌入式技术应业方前景 嵌入式技术应计算机应技术新发展具广泛应领域发展前景业形势该专业毕业生适IT行业信息家电机电类产品中计算机应设计开发岗位业担嵌入式产品应系统设计开发工程师事嵌入式技术应项目设计开发产品维护技术服务等工作
第2章 整体设计方案
根方案求出租车计价器需方案部分进行设计:
图11整体框图
满足系统需情况首先确定系统实现功:
(1)8位数码显示器前4位数码实时显示行车里程数(0000)4位数码实时显示金额数(0000)
(2)单程返分单程 键返 键设定行车里程键模拟规定次键行车里程加01公里
(3)基求2计算价格
(4)暂停 键计价器暂停计价反复查询键计价器次显示总等时间里程数金额数清键记录数(里程等时间价格等)清0
(5)增加8位数码显示器前4位数码实时显示车速(0000)4位数码实时显示累计等时间(0000)
(6)制作模拟出租车车速装置光电传感器检测转盘转动车速转数成正转速通键盘预置
(7)述模拟装置转数计算行车里程作计价计价误差绝值10%
(8)增加等时间计价功规定总等时间车速<5公里时累积时间总等时间增加5分钟相里程数增加1公里进行计价
(9)增加起步价起步价里程公里价格预置功价格预置功求密码确认价格默认值基求致
第3章 模块选型
31控制器模块选型
方案:采传统8位51系列单片机作系统控制器P89C51RD2单片机款具ISPIAP功单片机片具64K字节Flash程序存储器1K字节数存储器316位定时计数器6中断1全双工串行口等资源部构造编程方面51系列单片机相简单容易掌握端口资源功相够丰富难满足设计需
方案二:采32位STM32F103ZE作计价器控制核心该控制芯片具ARM新CortexM3核优先级抢占中断控制器支持中断动嵌套硬件完成现场保护恢复中断嵌套时装备编程掉电监测器带电池供电数备份寄存器芯片进入低功耗模式通事件唤醒须执行中断子程序GPIO刷新速率设定检测PWM脉宽频率(硬件直接支持)SPI带硬件CRC校验高达18Mbs通讯速度特强处理器价格十块钱STM32特点非常利进行设计安装操作系统实现远程监控调整信息采集呼救开发成数字中心
综分析STM32F103ZE强功移植种操作系统控制器工作控制器模块选择方案二
32键盘模块方案选择
方案:块74LS138译码输出8路扫描信号3路扫描返回信号线接IO口输入(设计3*8键盘)种设计方案电路设计非常简单软件编写考虑软件抖等会较复杂占量CPU资源
方案二:系统采矩阵键盘键盘中键数量较时减少IO口占通常键排列成矩阵形式矩阵式键盘中条水线垂直线交叉处直接连通通键加连接样端口构成4*416键直接端口线键盘出倍线数越区越明显计价器求键盘资源较丰富正切合设计需
基两种方案较采方案二
33液晶模块方案选择
方案:LED显示设计采164驱动电路实现LED作液晶显示器该显示模块8位串行显示器直接SPI总线进行互联编程实现容易显示界面难满足求功扩展需
方案二:采QTM4001WQVGA触摸屏作液晶显示器WQVGA液晶显示模块400×240点阵汉字图形型液晶显示模块显示汉字图形容15x8行含7602简体中文字型支持48位68008080MPU接口提供中英文文字齐功建粗体字形行距设定度软件调节户建字库通续开发扩展功实现手写触摸操作
较两种方案第种设计求第二种增强功选择两种方案
34存储模块方案选择
鉴改计价器求存储容采开发板带FLASH存储器身数备份寄存器存储需扩展SD卡增加存储空间外FLASH身具加密功保证数资料安全性程序防反汇编破解功
综述选择32位STM32103FZE作出租车计价器控制核心扩展通矩阵键盘扩展LEDQTM4001WQVGA中文点阵液晶触摸显示屏实现汉字图形显示系统FLASH存储资源扩展单片机控制步进电机调速系统测速系统实现出租车服务价格计算
终方案确定:
功细分表
功模块
功描述
备注
STM32
总控芯片型号STM32F103ZET6容量高性微处理器
车速检测电路
采反射式光电传感器
光强检测电路
采普通光敏电阻搭建检测周围环境光强便实时调节LCD背光强度降低显示功耗
数码显示
采4组4位体数码分实时显示行车里程数金额数前车速累计等时间
液晶屏显示
采30寸分辨率400×240TFT液晶屏提供更具性化界面系统数码液晶屏两种显示方案间选择
功键
分单程返里程增加暂停查询清10数字键(输入密码)确定键取消键LCD背光
键太实际出租车计价器差距
蜂鸣器+LED状态指示
指示前状态包括正常情况种指示异常情况报警
存储设备
外接NAND FlashNOR Flash
第4章 硬件电路设计
根题目求系统设计思想系统包括图21示模块
图21 系统结构框图
41液晶显示设计
采TM4001WQVGA触摸屏作液晶显示器WQVGA液晶显示模块400×240点阵汉字图形型液晶显示模块显示汉字图形容15x8行含7602简体中文字型支持48位68008080MPU接口提供中英文文字齐功建粗体字形行距设定度软件调节户建字库通续开发扩展功实现手写触摸操作液晶IO口线实物连接图:
图22 QTM4001WQVGA液晶实物电路连接图
42LED显示设计
采164驱动电路实现LED作液晶显示器该显示模块8位串行显示器直接SPI总线进行互联编程实现容易显示界面难满足求功扩展需
图23LED数码显示
43键盘输入设计
系统中针出租车计价器键盘特殊需采矩阵键盘键盘中键数量较时减少IO口占通常键排列成矩阵形式矩阵式键盘中条水线垂直线交叉处直接连通通键加连接样端口构成4*416键直接端口线键盘出倍线数越区越明显计价器求键盘资源较丰富正切合设计需
图24键盘电路原理图
44存储模块接口电路设计
SD卡拥高记忆容量快速数传输率极移动灵活性安全性通9针接口界面专门驱动器相连接需额外电源保持记忆信息SPI模式机SPI总线直接卡进行访问
图SD卡LPC2138通讯接口电路连接图(SPI模式)
图25 NOR FLASH存储引线连接图
图26 NAND FLASH原理图
45速度控制测量接口电路设计
图示
图27 直流电机硬件连接图
图28检测接口原理图
第5章 系统软件设计
51程序流程:
图31程序流程图
52键盘输入流程
图3键盘输入流程 图33 中断处理流程
53计价程序流程
出租车计价程较麻烦计算程序流程图:
54日历时钟程序流程
图36 日历时钟部分程序流程
第6章 理分析计算
61出租车计价规:
根资料日常生活出租车收费调查:
出租车行驶里程:m
出租车服务金额:p
单程单价:s1
返程单价:s2
出租车起步价:8元
出租车起步距离:3公里
次载客累计等时间:wt
车速:s
单程务行驶距离M3公里时总价格:
p总价格p等计费+p距离计费+起步价
返程务行驶距离M3公里时总价格:
p总价格p等计费+p距离计费+起步价
单程返程务行驶距离M3公里时总价格:
p总价格p等计费+p距离计费
62电机调速模块设计测速计算:
求5转分应车速5公里时50转分钟应车速50公里时计算:
测速系统测转数n时出租车服务价格应:(注:实际程序中等时间予考虑果考虑需程序中加入虚线部分公式考虑实际意义实际程序中未考虑)
K
:返程务行驶距离M3公里时总价格:
p总价格 p总价格p等计费+p距离计费+起步价
p总价格p等计费+p距离计费+起步价
第7章 编写程序
71程序:
while (1)
{
CPU_IDLE()
if (CheckTimer(1))
{
StartTimer(1 10)
}
if ((TimeDisplay 1) || (fRefresh 1))
{
TimeDisplay 0
RTC_Updata(&g_calendar &g_time)
if (S_taxiCaseStatus)
{
Taxi_UpdataTaxiCase(&g_taxiCase &g_taxiValu &g_time 1)
}
DisplayCurTime(status)
printf(\n\rcase d wait d key d S_taxiCaseStatus S_waitStatus keyCode)
}
* 刷新屏幕 *
if (fRefresh 1)
{
fRefresh 0
switch (status)
{
case 0
DisplayCurTaxiInfo() * 显示旅客车信息 *
break
case 1
DisplayTaxiDriverInfo() * 显示出租车司机信息 *
break
default
DisplayTaxiValuation(keyCode) * 显示计价信息 *
break
}
}
keyCode GetKey()
if (keyCode > 0)
{
switch (keyCode)
{
case KEY_DOWN_USER
status ++
status (status DEMO_COUNT)
fRefresh 1 * 请求刷新LCD *
printf(\nKEY_DOWN_USER status d status)
break
case KEY_DOWN_JOY_LEFT
g_taxiCasetripType SingleTrip
status 0
fRefresh 1 * 请求刷新LCD *
printf(\nKEY_DOWN_JOY_LEFT)
break
case KEY_DOWN_JOY_RIGHT
g_taxiCasetripType RoundTrip
status 0
fRefresh 1 * 请求刷新LCD *
printf(\nKEY_DOWN_JOY_RIGHT)
break
case KEY_DOWN_JOY_UP
S_taxiCaseStatus 1
Taxi_InitTaxiCaseInfo(&g_taxiCase &g_calendar)
Taxi_StartTaxiCase(&g_taxiCase &g_time)
printf(\n\rcase d key d S_taxiCaseStatus keyCode)
status 0
fRefresh 1 * 请求刷新LCD *
break
case KEY_DOWN_JOY_DOWN
S_taxiCaseStatus 0
Taxi_EndTaxiCase(&g_taxiCase &g_time)
printf(\n\rcase d key d S_taxiCaseStatus keyCode)
status 0
fRefresh 1 * 请求刷新LCD *
break
case KEY_DOWN_JOY_OK
S_waitStatus ++
S_waitStatus (S_waitStatus 2)
printf(\nKEY_DOWN_JOY_OK wait d S_waitStatus)
break
default
break
}
}
72出租车计价程序(部分):
*************************************************************************
**
* @brief 更新车实例前计价信息
* @param P_caseInfo 车实体指针
* @param P_valu 计价规定信息实例指针
* @param P_time 前时间
* @param WiatFlag 代状态0等1等
* @retval None
*
void Taxi_UpdataTaxiCase(TaxiCaseInfo *P_caseInfo
const TaxiValuation *P_valu
const Time *P_time
uint8_t WaitFlag)
{
* 更新总时间 *
(P_caseInfo>totalTime)hour ((P_time>hour+24) (P_caseInfo>startTime)hour) 24
(P_caseInfo>totalTime)minute ((P_time>minute+60) (P_caseInfo>startTime)minute) 60
(P_caseInfo>totalTime)second ((P_time>second+60) (P_caseInfo>startTime)second) 60
* 果出等状态记录等时间 *
if (WaitFlag)
{
s_waitTimeCounter ++
(P_caseInfo>waitTime)hour s_waitTimeCounter 3600
(P_caseInfo>waitTime)minute (s_waitTimeCounter 3600) 60
(P_caseInfo>waitTime)second (s_waitTimeCounter 3600) 60
}
* 更新价格分考虑起步价单程返等时间长情况 *
if (P_caseInfo>mileage > P_valu>startMileage)
{
if (P_caseInfo>tripType SingleTrip)
{
P_caseInfo>price P_valu>startPrice +
(P_caseInfo>mileage P_valu>startMileage) * P_valu>singleTripPrice
* 处理等时间增加5分钟相里程数增加1公里计价 *
if ((s_waitTimeCounter60) > 5)
{
P_caseInfo>price + (s_waitTimeCounter(60*5)) * P_valu>singleTripPrice
}
}
else
{
P_caseInfo>price P_valu>startPrice +
(P_caseInfo>mileage P_valu>startMileage) * P_valu>roundTripPrice
* 处理等时间增加5分钟相里程数增加1公里计价 *
if ((s_waitTimeCounter60) > 5)
{
P_caseInfo>price + (s_waitTimeCounter(60*5)) * P_valu>roundTripPrice
}
}
}
else
{
P_caseInfo>price P_valu>startPrice
}
}
73计时部分程序:
*** @brief 更新日期时间
* @param P_Cale 日期结构体变量指针
* @param P_Time 时间结构体变量指针
* @retval None*
void RTC_Updata(Calendar *P_Cale Time *P_Time)
{
static uint8_t s_preHour 0
uint32_t counter
uint16_t temp
counter RTC_GetCounter()
P_Time>hour (counter 86400) 3600
P_Time>minute ((counter 86400) 3600) 60
P_Time>second ((counter 86400) 3600) 60
* 判断否新天开始 *
if ((s_preHour 23) && (P_Time>hour 0))
{
P_Cale>day ++
* 闰年二月做特殊处理 *
if ((P_Cale>month) 2 &&
(P_Cale>year4 0 && P_Cale>year100 0) || (P_Cale>year400 0))
temp con_dayTab[P_Cale>month1] + 1
else
temp con_dayTab[P_Cale>month1]
* 判断否新月开始 *
if (P_Cale>day > temp)
{
P_Cale>day 1
P_Cale>month ++
* 判断否新年开始 *
if (P_Cale>month > 12)
{
P_Cale>month 1
P_Cale>year ++
}
}
}
s_preHour P_Time>hour
}
第8章 测试
81显示系统测试
设计中日期时间利系统部实时时钟次开机时显示0键切换出租车价格参数信息驾驶员信息前实时价格实时送屏幕显示
LED显示屏16位数码前四位显示行车里程数(0000)单位公里4位数码实时显示金额增加8位数码前四位实时显示车速(0000)四位数码实时显示累积等时间(00:00)单位分:秒
测试容:键盘切换实现单程返程选择键实现行驶距离增加
暂停键计价器暂停计价
查询键次显示总等时间里程数金额数
清键清记录数(里程等时间价格等)
实现起步价起步价里程公里价格预置功
实现密码理
82电机转数测试
电机转数测试时候事先设定转速测试结果误差10
83分析
时间限制短时间难设计做善美譬显示屏幕容布局整面板设计等方更加美观容更加生动丰富
第9章 总 结
设计实现题目基功发挥功全部容时间硬件资源限制指标做非常完善设计出租车计价器实现功 :
8位数码显示器前4位数码实时显示行车里程数(0000)单位公里4位数码实时显示金额数(0000)单位元
出租车单程价格2元公里返价格15元公里单程返分单程 键返 键设定行车里程键模拟规定次键行车里程加01公里
起步公里数3公里价格8元实际运行3公里基求2计算价格
达目暂停 键计价器暂停计价反复查询键计价器次显示总等时间里程数金额数清键记录数(里程等时间价格等)清0
增加8位数码显示器前4位数码实时显示车速(0000)单位公里时4位数码实时显示累计等时间(0000)单位分:秒
制作模拟出租车车速装置求采单片机控制电机转盘转动光电传感器检测转盘转动车速转数成正转速通键盘预置
述模拟装置转数计算行车里程作计价计价误差绝值10%
增加等时间计价功规定总等时间车速<5公里时累积时间总等时间增加5分钟相里程数增加1公里进行计价
增加起步价起步价里程公里价格预置功价格预置功求密码确认价格默认值基求致
参考文献
l 周立功等 ARM嵌入式系统基础教程 北京航空航天学出版社
l 周立功等 ARM嵌入式Linux系统构建驱动开发实例 北京航空航天学出版社
l 雷思孝 凌阳16位单片机原理应 西安电子科技学出版社
l 谭浩强 C语音程序设计(第二版) 清华学出版社
致 谢
光阴似箭日月梭
三年时间漫长生旅途中短暂短短三年真诚青春纯真岁月美丽学生活……学力里提升感谢恩师:您赋予意义收获您带领走进知识殿堂丰富知识您全新角度发现美创造美欣赏美美眼睛发现世界美感悟生活美教会珍惜友谊时间您世界眼睛博胸怀予私关怀奉献
次毕业文设计中第次亲身尝试作缺乏社会实践验学生面困难学会利学知识理结合实践中进步掌握局域网安全问题策专业更深刻认识会加倍努力研究熟练基础掌握更新型技术提高开发水
篇文指导老师XX老师精心指导完成选题确定研究容研究程中凝聚老师辛勤汗水导师渊博知识活跃学术思想严谨求实治学态度丰富教学验敏锐科学前瞻性受益导师谆谆教诲精心指导永生难忘指导老师教导学时指导正确工作态度方法身组员感受真正科学工作者丝苟生受益匪浅徐艳老师表示诚挚敬意谢意
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档