发作品签到
专业版

#第八届立创电赛#桌面电子时钟

工程标签

972
0
0
0

简介

第一次使用立创的参加这样的活动,期待自己从独立原件到一个产品的成果。

简介:第一次使用立创的参加这样的活动,期待自己从独立原件到一个产品的成果。

开源协议

Public Domain

创建时间:2023-07-10 11:32:09更新时间:2023-08-07 03:11:27

描述

 

本次设计是基于嘉立创暑期EDA训练营为基础的设计,大部分资料感谢嘉立创和瑞莎公司的提供。

本次电子时钟采用R7FA2E1A72DFL作为电子时钟的主控芯片,八段四位0.56寸共阴极数码管用来显示时间显示日期、时间,温湿度信息;DHT11温湿度传感器进行环境温,无源蜂鸣器进行报警;采用四个独立按键进行时钟、日期、温湿度的切换设置;引出一路复位按键、串口电路、SWD下载电路,方便下载调试;当然瑞萨芯片集成了触摸引脚,引出一路触摸引脚出来用来作为触摸按钮使用(未测试使用成功,最终利用一个TTP223模块代替);由于是时钟,不可能通过USB一直供电,所以含有一块带电池,进行能量的存储,所以在此通过AO3401A+1N5819二极管组成电源切换电路,然后通过TP4056来给电池充电。

 

一、电路具体电路介绍如下:

1.1、外部供电电路

QGKSchOWsJLJRRjEUPT8lIJCyKuM50S5g2uIiGjI.png

1.2、程序下载调试接口电路(左侧是串口,右侧是SWD)

A3DZPYFEZlFvLFmpy23F1LSubZPoC61DZvh8CJKw.png

1.3、复位电路与BOOT电路(复位电路用于单片机重启复位,BOOT用于启动区域选择,选择不同的启动方式)

lHXsn3zyGN0FIWCSV392LEzg2NiPGTfOpzEZ3pOo.png

1.4、板载串口下载电路,此部分电路更加个人需求,选择性焊接,选择性使用。

dEdarRRbnfEffaONdPPtv49gYGfN6d1PHcIifRsJ.png

1.5、LED指示灯情况(方便调试,对于不熟悉瑞莎单片机系统的人来说,是一个从点灯开始的基础)

3FGcccoa2y9NLzyHum949NPnJlm43f3TehzHUIGz.png

1.6、按键切换电路(如果说LED是输出基础,那么按键的使用就是输入的基础)

2dxrTEfLXejB4NX8tadqmpNP8JpXw0tSmEcX9hIx.png

1.7、触摸触摸引脚的引出

SnXbZWuFURj4CLMCcP8XtGv84HCOvXThrljl3vAa.png

1.8、温湿度传感器(DHT11),单总线通信方式的引出

 

7tuHKZfQzVwDXKCdC8c9Ub3usf4IOlbWObgGXXIu.png

1.9、单片机最小系统(含退耦电容和时钟电路)

WBBQ7yitYIbfkdmArL455o0w59aK3KMevcT2RZIT.png

1.10、声音提示作用和数码管显示(友情提示,蜂鸣器两端的二极管是反向连结,画的时候不要画错了,焊接的时候更不要焊接反了)

2Q29j5oYhir9VV0eYwPvoYbV94uPbGIqjdKDFcxf.png

1.11、TP4056锂电池充电电路(其中LED2是正在充电指示灯,LED3是充电完成指示灯,FPC1是一个插座,Q2是AO3401负责外部电源和板载电源转换的MOS管)

5VIhENCIjmAdmvQz5vEAkVZGYMAxHxC8rS5wyNiR.png

 

二、软件介绍:

2.1、使用的软件

本次编程使用的是瑞莎公司提供的e2studio 4.4.3版本,其软件介绍链接如下所示,e² studio | Renesas,你也可以通过本连结进行下载安装,其安装流程,参照附件“携手e2studio玩转瑞萨RA【554234】携手e2studio玩转瑞萨RA(1)--瑞萨芯片之搭建FSP环境”。

2.2、程序设计思路

学习这款单片机,和其他单片机一样

2.2.1下载程序

首先你要学会下载程序,所以,你可以按照你的附件“(合集1-10)电子时钟制作(瑞萨RA)” 中的工程1、工程2、工程3,所介绍的方法从搭建工程、编译工程、下载工程、修改代码、再编译、再下载验证的流程(ps:特别是对于新手朋友来说,真的是不知道要修改多少次,编译多少次)先把程序运行起来。

2.2.2 开关量的输出

会下载程序后,接下来就是开关量的输出,在我的板子上,有两个LED可以进行学习测试,当然,你也可以按照你自己的设计思路去测试并设计,比如让某个灯亮、让某个灯熄灭等。

2.2.3 开关量的输入

会下载程序后,接下来就是开关量的输入,已经板载了4个按钮开关,你可以结合自己的设计逻辑,设计出按钮控制一个灯亮,控制一个灯灭,控制灯泡的闪烁频率。而我的PCB板子上的LED采用的是灌电流输入方式,(可以看到电路图中)也就是说了的LED的点亮是靠数字“0”点亮的,熄灭是靠数字"1"信号进行的。

2.2.4 Debug

对于程序员来说,难免会有很多思维漏洞,当遇到一些不知具体原因,程序跑飞等情况的时候,就可以利用在线Debug,插入断电,检测程序的运行情况,查看变量,查看内存的值。

当然瑞莎的R7FA2E1A72DFL芯片的e2studio 4.4.3这个软件,我也不知道为什么,只能在某些行插入断点,有些行,你是没法插入断点的。这个在keil中,似乎没有这个情况。

2.3 程序介绍

2.3.1 无缘蜂鸣器驱动(通过短时间内让其不断开关,模拟出声音的震动,ps:肖工的代码是有源蜂鸣器驱动代码,所以朋友们在应用的时候,首先确认你的蜂鸣器是有源的呢,还是无源的)

NyXoXbv8h1mxKVVUnu5H9eRZwL20n1ZXDECX2jWH.png

2.3.2 数码管驱动程序

对于数码管而言,无非也是4*8个了的组成的,led的控制,在2.2.2中已经讲了说了,这里也就是32个灯泡的控制,到底怎么点亮,怎么熄灭呢?在这里看下图

V46yIDnAvpnTMdZvnZnP7mFpb1qGaWztx5rrUK5a.png

在这个途中,我们发现8段(ABCDEFG,还有一个DP)数码管分别对应于8子的不同部分,也就是这个8个地方是8个led灯泡,点亮某个灯泡就等于点亮了某一段。那么应该怎么点亮呢?我们将8个led进行与单片机连结,发现在这里有两种连结方式,分别是共阴极和共阳极,这两种方式无非就是你采用“1”点亮,还是"1"熄灭,”0“熄灭,还是0"点亮"。在这里,我们采用的共阴极进行试验,如果是需要用阴极点亮显示3这个值,对应abcdg段点亮,ef和dp段不点亮。也就是我可以给接在abcdg段的led灯低电平,数字0信号点亮。给ef和dp段给数字1信号关闭这三段的显示。接下来看4位一体数码管内部结构,如下所示。

 

ZV7kladTfkgMBWb7QtMjb3lYsopcIZHCxgYange4.png

 

就可以知道,可以通过不同的段显示不同的内容,当我们想要第一位显示1时,只需要给12号引脚给数字0信号,9号给数字1信号(第二位不点亮),8号引脚给数字1信号(第三位不点亮),6号引脚给数字1信号(第4位不点亮),11号给给数字0信号,7号给给数字1信号,4号给给数字1信号,2号给给数字0信号,1号给给数字0信号,10号给给数字0信号,5号给给数字0信号,3号给给数字0信号。当然,按照这个方法,你还可以让第二位显示7,第三位显示6,第四位显示4,即你可以控制任意一端,任意一位进行显示你想要显示的任何内容。

由于我们单片机处理速度非常快,而我们的肉眼分别率非常低,所以在这里,我们将单片机熄灭的时候,肉眼根本看不清楚,就像我们的显示屏一样,有一个很高的刷新率。这就是动态显示。在本系统中,我们的动态显示周期是2ms。

如图,就是单片机驱动数码管显示0和1的段码。

gWf1lj8vcuY8MRlL9H9RiGA5bfmHfMuT7Fg9eAlK.png

如图,就是单片机驱动数码管的第几位显示某个数字,以及是否显示小数点的位码。

KvCLqR1bbmRy80vtHMAvOWqPpYwsDIh6Zk9tw1Yy.png

如图,就是单片机驱动数码管的显示H和P的代码。

T78iCZYvPfJFz483qxANJ7GREaqXLrkVuzCKY2Po.png

当然,回到开始,数码管的控制,始终是属于开关量的控制,具体在这里是采用宏定义实现的控制。如下图所示,每个开关量的控制都写成了宏的形式,方便理解与书写。

1azdD3LU4P3FnWPG5WY3g6xyFZz9DgfO872Pjkz5.png

 

2.3.3 定时器的代码

上面我们介绍了数码管需要不断的刷新,如果将这段刷新内容放入主函数中,并非不可以,但是,由于我的设计中,主函数,主要是判断一些标志位和按键的扫描,所以,在这里,通常的做法是,利用定时器,固定刷新频率。

在这里我们采用的是内部系统时钟,经过倍频后主频达到了48Mhz

PsDAvY4m3OEZkred30sfVlI6T6zX86v8zOz7JaLv.png

更具这个48Hz计算出定时器2ms,为96000,通过e2studio设置定时器属性。

gwYsN0YrZZGYJNuC66AiJXvr94cUmellwUbOU2TY.png

设置完成之后,一定要点击同步到工程,然后再代码实现过程中,编写该定时器的回调函数,回调函数的编写如下。

YmtyAEz7c2Kj5RosUjRHx0D1aCxdQF4WbnkrAGCO.png

可以看到该数码管中顶一个变量smg_mode数码管的显示模式,就是我们在不同情况下显示的内容。分为了0正常显示,1修改年,2修改月,3修改⼩时,4修改分钟,5保存修改数据,6温度 7湿度 8修改闹钟小时   9修改闹钟分钟。

2.3.4 按键扫描

由于我们要做一个可以进行设置和切换的时钟,最为成本低的形式就是按键形式。所以也有按键扫描程序。

pkcOfjkvEZhAPtCytvRSO1QJSWFzlfn66Se5XFM7.png

该部分程序,不支持多个按键同时按下。

按键程序是放于主函数中,主函数的扫描周期设定为10ms,也即是10ms读取一次按键的值,是否有按键杯按下了呢?有的话,就更改标志位,在主函数或者是定时器中断回调函数中处理按键的标志位。这种方式,10ms处理一个按键,太快了,这里,我采用的方法是进行累加。如下图所示

kbe2g0AYuwCz9OmwBEc2poHz2S3yMGX8qGXSmbdG.png

累加到了2.5s,即认为到时间了。其他按键情况和这个相似,在这里不再赘述,强调一点就是,程序中处理了最大值最小值的问题,即年的调整支持2000~2099年,月份的调整支持的是1~12月的调整,时间的调整0~24小时,分钟的调整支持的是0~59分钟。(ps:在写这个文稿的时候,才想起,应该是第月份和日期的调整,这两天在外学习,被搞蒙了!!!!)

在这里四个按键从左往右的功能分别是:时间的调整,时间加,时间减,rtc闹钟时间的加减。

2.3.5 rtc和rtc闹钟

这里采用的是单片机内部的rtc资源,还有待测试其准确度,如果准确不不高,就配置为使用外部晶振,效果应该要号一些吧。下图为定义rtc变量,值得提的是 .min_match = 1, .hour_match = 1,参数表示,rtc闹钟匹匹配当前闹钟的分钟和小时,当小时和分钟同时满足时,进行闹铃。

 

vtwqA04JYZOmCPU3z2ktsaL3COxVPqnmd59AdzVj.png

2.3.6 温湿度传感器

在这里使用的是温湿度传感器是DHT11,通过单片机等微处理器简单的电路连接就能够实时的采集本地湿度和温度。DHT11 与单片机之间能采用简单的单总线进行通信,仅仅需要一个I/O 口。传感器内部湿度和温度数据 40Bit 的数据一次性传给单片机,数据采用校验和方式进行校验,有效的保证数据传输的准确性。

不得不说的话,我下次坚决不做单总线加内部时钟的实验了,DHT11在我印象中使用并不复杂,跟着时序写,跟着复制就是了,可是,这次就是在这里浪费了我很多时间,最开始是直接利用肖工的代码,发现可以正常读取,就接着调试触摸去了,然后我的触摸又不知道为啥用不起,,本能问后面会提到,我就一直寻找触摸的问题,然后反复观察,发现是DHT11经过几次数据采集后,会进行卡死在主函数中,只留下了小数点的闪烁,分析得出,程序还是在运行,只是串口问题,串口一直不能打印,我又以为是串口问题,可是,发现,串口程序就是那样的啊,真奇怪。又观察发现,小数点闪烁意外,分钟数也不走!!!!定时器刷新也坏了???啊啊啊啊啊,后面,这找,那该我的Jlinl-debug也调试了,程序可以运行啊,这个Jlink-debug过一会儿又要自动断开,可是是我Jlink-debug是盗版问题。终于有一次,他没断开的i情况下,程序一处停留在了DHT11读取数据状态一行,我就按照思路改了一下,后面程序确实也不死了,但是这个准确度就相差很大,左思右想,经过2天时间,又想到了一个方法,就是现在的这个方法,如下图

cMgJ8JzqgEufGCYjpFZ7JVlxQT6KHGKJ1ueQ1cRE.png

将传统的延时1us给注释掉了,传统的重复次数100,改为10000的等待。

这一段代码也是我和肖工代码不同之处。如果朋友复刻的时候,请注意一下。

2.3.7 主函数逻辑

EMBTcidYE9wXgPhSGTLtb9mVwEmTsf9ed8bsryqm.png

上图是,初始化串口(调试必要组件,我每次都是最先初始化这个接口),基本控件的测试,初始化并启用定时器。

MPL4Zg1PqWgPuxRItwruKqWTvPNNtr1aX14H31IN.png

上图是,开启rtc,并进行响应变量的定义和初始值的获取。

U9EvK82WdpTkDZgTI5zJqj4ukgAITSBzPVxm2dhf.png

上图是,主循环,标志位的处理。

三、实物验证

 

UKxLbnRKYpHkd963hRuHBLoWvDrZKlaedzBStJmU.png

YZWqaZwN12kZKuavVjXtxLp5qgOBnfCefPalknLu.png

 

XcyaIbdDkJb7IOn88AkB9x2YfQctQMtOb4kMOUpO.png

QA2xIz7l3TeOi3IRej8OzAgfKzSf9jKF17si94K3.png

四、总结:

4.1、问题

4.1.1 R7FA2E1A72DFL的触摸功能

本次设计中,原计划采用的是R7FA2E1A72DFL芯片的触摸控制功能,但是按照肖工的教程实验,进行失败了,如下所述,

fGO9qaBRC1xpDgOgsmUGot6ye0Ci56pYvbhkcR5W.png

配置电容触摸的时候,有一处警告,英语不太好的我认为是,实际电容的大小超过了100pf,我最开始认为是我的电容焊接错了,我把触摸电路中的电容换了20pf,22pf,30pf都出现了这样的错误,也不知道出现这个错误啥意思啊?也怀疑过我的PCB版画错了,但是,我看了一下相应的教程,和PCB就是那样画的啊。我也就只有点击下面继续调试的按扭,点继续配置之后,

DdvehaSYPx8jIv8KmhZG1VTOUFYelBeXvuLj0C3r.png

触摸PCB板子的时候也没啥变化。这...就很尴尬。

所以在本次活动中,也就临时外加了TTP223的触摸模块代替触摸按键。如果朋友们知道为什么会有以上问题,也麻烦给我留个言,感谢。

41.2 DHT11总结

DHT11遇到的问题已经谈单过了,在这里也再次告诉自己,以后程序设计的过程中,一定要预留出口,不能在那里傻傻的,一直等待电平的变化,另外,除非成本有特别的要求,最好也不要用内部时钟。

4.2、个人总结

对于这次设计,首先要谈的,要总结的,还是要感谢,其次的要说一句,为了参加这次比赛,专门将我用了9年半的电脑给丢弃了,买了一台新电脑。好了,废话不说了。

嘉立创公司以及瑞莎公司,嘉立创公司,早在17年就注册了该公司的账号,以前也在那里打板打样过,也在里面查过资料。对于我而言,今年5月份才开始用嘉立创标准版画电路,然后,发现标准版不太有些功能不支持,才开始切换到专业版,对于本次比赛不要使用专业版,而且还要使用专业版在线服务,这也是我第一次使用这个版本,这个版本功能还是很强大的,不出意外,我应该会放弃AD的使用,转而使用立创EDA了,这个版本不光可以画电路板,画外壳,还可以画面板,真的不得不感叹,真强大!!!Altium Designer能比吗?比不了!!

其次的画,就是电路的收获吧,应用了AO3401A+1N5819二极管组成电源切换电路,然后通过TP4056来给电池充电,而且是应用成功了,我平常画PCB板子的机会也不多,我想,从原件到产品,都因该有这部分电路的存在,所以以后的,我的设计中,会经常用到这两块电路的设计。

最后的话,就是画电路原理图,之前还是有些地方画错了,可能是因为画错了,导致自己最终手里面的PCB板子还是经过飞线了的!!但是现在版本的PCB版已经完成更新了,所以如果朋友复刻的话,请注意程序设计处,应进行适当的调整,也可以直接留言,我看到了,就会回复你。

相对肖工的代码而言呢?我的电子电子产品做了一些优化,具体表现如下:

  1. 增加了设置第几月份、第几号的代码,一个月总的天数是更具设置的年月进行优化调整的,是计算了闰年、平年、月大、月小的情况的。
  2. 增加了时间小时和分钟中间秒闪烁的知识功能。
  3. 优化了,DHT11总线读取时间的程序,不会出现卡死的情况。
  4. 优化了,按键扫描时间的控制。
  5. 禁止了,触摸连续切换情况。
  6. 增加了,闹钟设置的时间,并将闹钟时间,进行存储与flash中,下次上电,该闹钟时间不变化。
  7. 增加了,蜂鸣器报警闹钟声音的功能。
  8. 增加了,设置好闹钟之后,进行短鸣叫一声,起到的提示作用。
  9. 增加了,当闹钟响时,默认响铃,40s。也可以通过触摸按键,立即停止闹钟的响提示。
  10. 禁止了,触摸按钮,连续变化的情况。

另外,再说一下此次设计的弊端,

  1. 本次设计中,采用的是4位一体数码管,显示的内容信息内容还是少了些,如果升级第二代,可以使用LCD屏和OLED屏,引脚数更少,显示内容更多。
  2. 本次设计中,闹钟支持一个闹钟的设置,不支持第二个闹钟的设置,改为oled屏后,我想应该可以多增加可灵活设置的几个闹钟事件。
  3. 由于是外部RTC,时钟精确度还存在着误差。

 

最后,再次感谢立创和瑞萨公司的赞助。

 

附:效果视频链接:https://b23.tv/IZPGHMt

 

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

附件

序号文件名称下载次数
1
(合集1-10)电子时钟制作(瑞萨RA).pdf
24
2
携手e2studio玩转瑞萨RA【554234】携手e2studio玩转瑞萨RA(1)--瑞萨芯片之搭建FSP环境.pdf
11
3
SCH_桌面电子时钟-原理图.pdf
4
4
4seg_clocker.rar
13
克隆工程
添加到专辑
0
0
分享
侵权投诉

工程成员

评论

全部评论(1)
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航