单片机课程设计报告-出租车计价器.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
标题电子设备控制系统开发报告一项目背景本研究旨在探索并实现一个电子设备控制系统的开发目标是在满足特定需求的情况下,通过简单的电路实现设备的操作控制二项目概述系统包括一个电源控制器一个亮度调节器和一个信号处理器三个主要部分电源控制器负责电源供应,亮度调节器用于调整设备的亮度,信号处理器则负责设备状态的监测和数据处理三项目任务本项目的主要任务是设计实现和优化这个电子设备控制系统我们将设计一个能够有效管理和控制设备的工作模式,同时保证设备的性能和稳定性

微机原理及单片机接口技术实验报告

学 院:

专业班级:

学生姓名:

学 号:

指导教师:

验目的及实验实现的功能:

流水灯实验

实验目的:

简单I/O引脚的输出

掌握软件延时编程方法

简单按键输入捕获判断

完成功能要求

开机是点亮12发光二极管,闪烁三下

按照顺时针循环依次点亮发光二极管

通过按键将发光二极管的显示改为顺逆时针方式

定时器或实时时钟实验

实验目的

数码管动态显示技术

定时器的应用

按键功能定义

完成功能要求

通过按键可以设定定时时间,启动定时器,定时时间到,让12个发光二极管闪烁,完成定时器功能。

实时时钟,可以设定当前时间,完成钟表功能(四位数码管分别显示分钟和秒)。

上述二个功能至少完成一种功能。

双机通信实验

实验目的

UART串行通信接口技术应用

完成功能要求

用两片核心板之间实现串行通信,将按键信息互发到对方数码管显示。

交通灯实验

实验目的

按键、数码管、发光二极管综合应用编程技术

数据存储于EEPROM的技术(也可以不使用)

定时中断技术

按键中断技术

完成功能要求

对每个路口(主干道、次干道)的绿灯时间,及黄灯时间的设定。

设定参数掉电后不丢失(如果不使用EEPROM,此功能可以不实现)。

紧急按键功能,当按下该键时,所有路口变成红灯,相当于交警指挥特殊车辆通过。再按该键,恢复正常显示。

系统硬件设计

硬件设计仿真图

系统软件设计

开始

开始

flag_all=1流水灯

flag_all=1

流水灯

flag_all=4flag_all

flag_all=4

flag_all=2

flag_all

flag_all=?

交通灯定时时钟

交通灯

定时时钟

flag_all=3

flag_all=3

双机通信

双机通信

系统流程图

(程序见附录)

实验过程中遇到的问题及解决方法

定时器0调试过程中:

建好工程后,操作太快,忘了将保存过的C文件添加到工程里面,提示无效module。

初始化函数init_0()声明时后面的‘;’忘记了,调试后出现了很多错误与警告,里面的变量及端口都提示重复定义。

数码管显示过程中:

函数编写好后调用提示:uncalledsegment,ignoredforoverplay.

原因:有函数未调用,可是我已经调用所有函数,后来检查一段时间后发现,count_down()被我写成了count_dowm().

FLAG标志位应用时,当FLAG=1时应该立即执行正常时钟程序clock(),可是当按键稍微晚些按时会出现:延时一段时间后才执行。

原因:num(uchar)定义于timer_0()中,主程序开始时就启动,并num++,开始

clock()并显示正确时间条件是:num=20,在按键按的晚时,num计数已超过20,必须等到超过定义的类型(uchar)然后重新从零记到20才能正确显示。

当FLAG=2时,应该在所有值均为0时进入dengss(),可每次都是直接进入。

原因:全局变量和局部变量使用了相同的符号。查过资料后知,当全局变量和局部变量使用了相同的符号时,起作用的是局部变量,全局变量被屏蔽掉。所以当在dengss()中出现fen_shiwei,fen_gewei,miao_shiwei,miao_gewei时直接做0处理,而灯闪烁的条件就是这个。当把display()中的变量名改变后,执行过clock()的数值被保存,在执行count_down()时接着原来的数据变化。

硬件仿真过程中:

数码管全暗,按键无反应

原因:电阻没有连接。

串口通信过程中出现的问题:

在写程序前翻看了些相关资料,有一种写法是直接P2=SBUF;结果这种在接收程序中可以,但在发送程序中不可以。开始一直找不到原因,用led灯测试时,每次都是灯全亮。后来逐次尝试才找到了问题所在,但什么造成的这个结果还是没找到。如果是因为端口专用寄存器P2和串口数据缓冲器SBUF间不可以直接传送数据,那接收程序中为什么可以呢??_?

解决方案:两寄存器中间找个中间变量。

原因找到了:原程序SBUF=clock_num[s];delay(5000);P2=SBUF;数据传送所需的时间是非常短的,而中间的延时5s所需的数据已经送走了,SBUF被重新初始化,所以出现了不正常的现象。

结论:有中间变量是最可靠的。

每次接收的数据都比发送的数据延迟一个节拍

源程序: clock_num=SBUF;

while(!RI); 等待传送完成

RI=0; 清零,等待接收

dis(); 显示函数

当修改成: clock_num=SBUF;

dis(); 显示函数

while(!RI); 等待传送完成

RI=0; 清零,等待接收

时,问题消失了。

上面的程序还有

文档评论(0)

偶遇 + 关注
实名认证
文档贡献者

个人介绍

1亿VIP精品文档

相关文档