雷竞技注册
项目

在转速表和速度表上增加一个LCD和键盘

2017年9月18日,经过尼克。戴维斯

在转速计/速度计项目的第二部分中,我们将添加键盘和LCD以更轻松地进行用户交互。

在转速计/速度计项目的第二部分中,我们将添加键盘和LCD以更轻松地进行用户交互。

在这个项目中,我们正在使用C8051微控制器开发套件,一个光电传感器,一个变速直流电机,一个5英寸直径的透明光盘,和简单工作室IDE制作我们自己的转速表。

本文是由两部分组成的系列文章的第2部分。在继续之前请阅读第一部分:

虽然第一部分测量旋转盘的角度和线性速度,并经由UART将测量的数据发送到终端窗口,第2部分在八个段LCD屏幕上显示相同的测量数据。并且,因为并非所有测量的数据可以同时显示在LCD屏幕上,所以将使用键盘来选择要显示的数据。

液晶显示器

正如在这个项目的第一部分中提到的C8051F930DK使用开发工具包。但是,对于这第二部分,我添加了一个LCD开发板—完整开发套件(包括微控制器和LCD开发板)的制造商零件号是CP2400DK.

图1。Silicon Labs CP2400DK开发套件(C8051单片机和LCD显示)。图片礼貌Digi-key.

LCD设备本身的制造商部件号(图2)是vim - 878 - dp - rc - lv。并且,虽然该设备被广告为14段显示器,其在包括小数点和撇号时是准确的,但是该设备成为16段LCD显示器。此外,由于该显示器具有八位数字,因此设备总共具有128个段。128段液晶驱动器,硅实验室已经与此液晶显示器配合,是CP2400(图3)。

图2。LCD屏幕为八位数字中的每一个具有16个段(总共128个段)。图片礼貌Digi-key.

图3。128 -段LCD驱动程序。图片来源:硅实验室(第1和22页)。

键盘

键盘(图4)我选择了这个项目,仅仅因为它的成本低,是由Adafruit Industries产品编号419)。由于其三个连接列和四个连接行,此键盘类型称为3×4矩阵键盘,总共七个连接(参见图5)。

图4。键盘。图片礼貌Digi-key.

图5。键盘引脚。

零件清单:

项目# 描述/来源 成本(每个) 其他信息
1 C2400DK开发工具包 148.75美元 用户指南
快速入门指南
C8051F930数据表
注意:原理图位于用户的第25-31页上
指南。
2 面包板 8.98美元 或同等学历
3. 跳线设备 5.28美元 或同等学历
4. 透明亚克力有机玻璃盘 7.99美元 或同等学历
5. 光学传感器 3.62美元 或同等学历
6. 直流电机 6.55美元 该项目中使用的电机被重新播放
打印机拆除。但是,这个电机都会成为
一个等价的马达。
7. 键盘419 3.95美元 数据表
8. 电阻:100欧姆 0.10美元 或同等学历
9. 电阻:3.3k-ohms 0.10美元 或同等学历
10. 电阻:20k-ohms(数量:4) 0.10美元 或同等学历

制作连接/原理图

这个项目的第一部分使用微控制器的端口1引脚2 (P1.2)作为光开关的输入(更具体地说,来自开关的光电晶体管的集电极)。但是,由于第2部分将P1.2用于SPI接口,微控制器已重新配置,使得光开关现在连接到端口1引脚4(P1.4)。

并谈到SPI接口,下面图6显示了通过简单的Studio的硬件配置GUI配置它是如何配置的。

图6。SPI接口配置。

选择电阻的值

虽然选择r的选择过程1和R.2第一部分,电阻器r3.通过R6.这一切都是新的项目。所有四个电阻都具有相同的值(虽然这不是必需的)并服务于相同的功能:它们都是下拉电阻。这里可以实现各种电阻值,但电阻较低的电阻导致较高的电流消耗,并且具有较低的抗噪性抗扰度导致非常高的电阻。我决定使用四个20kΩ电阻;下拉电阻对于下拉电阻相当高,这使得能够降低功耗是优先级的应用。

键盘连接

因为只有四种类型的测量数据将显示在LCD屏幕上(REV/S, RPM, FT/S,和MPH),我选择使键盘连接的方式,将简化固件:我使用按钮“1”,“4”,“7”,和“*”;这只需要使用一列和四行。例如,如果我使用按钮“1”到“4”,我就必须使用两列两行来确定哪个按钮被按下,这将需要额外的固件。

图7。连接图。点击放大。

配置微控制器开发工具包

如前一篇文章所述,在为微控制器开发套件供电之前,请务必按如下方式配置:

跳线:

  • J11: VBAT到WALL_PWR
  • 纺纱,:
    • VDD到VIO
    • p0.5到TXD.
  • J17:vbat_pin到vbat

开关:

  • SW4:设置为“2个细胞”
  • 电源开关(SW5)到“OFF”位置

电缆:

  • 将带状电缆调试适配器连接到J9
  • 将USB调试适配器连接到PC
  • 连接PC和P3之间的USB串口线
  • 将提供的AC/DC电源适配器连接到P2

固件

在编写固件时,我充分利用了Silicon Lab的示例LCD项目(CP240x_LCD_Example),这使我的固件编写任务变得容易得多,特别是在示例项目包含了所有必要的LCD库文件之后。一般来说,当手头的固件任务很复杂时,我总是尝试使用其他人的固件,至少作为一个跳板。

除了配置SPI接口并将微控制器的端口(从P1.2到P1.4重新分配为光学开关连接外,剩余的所有固件创建都在确定按下哪个键盘按钮,然后显示所需的测量数据。由于我连接了键盘的时尚,这个固件任务相当简单。默认情况下(即,ON电源),显示每秒的转数。

由于LCD屏幕限制为8位,当显示测量数据时,我将值舍入到最接近的整数。

液晶固件代码片段:

if(keypad_number_1 == 1){sprintf(display_string,“%0.0f rev / s”,(float)soundryVerage);}如果(keypad_number_4 == 1){sprintf(display_string,“%0.0f rpm”,(float)soundryVerage * 60);}如果(keypad_number_7 == 1){sprintf(display_string,“%0.0f ft / s”,(float)teachersecond);}如果(keypad_number_star == 1){sprintf(display_string,“%0.0f mph”,(float)mph);lcd_outstring(display_string);

键盘固件片段:

// ----------------------------------------------------------------------------------- // Keypad Routine // ---------------------------------------------------------------------------- if(Row_1 == 1) // P2.0 { Keypad_Number_1 = 1; Keypad_Number_4 = 0; Keypad_Number_7 = 0; Keypad_Number_star = 0; } else if(Row_2 == 1) // P2.1 { Keypad_Number_1 = 0; Keypad_Number_4 = 1; Keypad_Number_7 = 0; Keypad_Number_star = 0; } else if(Row_3 == 1) // P2.2 { Keypad_Number_1 = 0; Keypad_Number_4 = 0; Keypad_Number_7 = 1; Keypad_Number_star = 0; } else if(Row_4 == 1) // P2.3 { Keypad_Number_1 = 0; Keypad_Number_4 = 0; Keypad_Number_7 = 0; Keypad_Number_star = 1; }

metton_switch-lcd.zip.zip.zip.

构建和加载代码…系统测试

下载后,构建和加载代码后,确保您的终端窗口配置如下:

  • 波特率设置为230400
  • 数据:8位
  • 奇偶校验:无
  • 停止:1位

现在可以测试系统了!打开单片机开发板,缓慢地将电压升高到直流电机,并监控终端窗口。终端窗口的测量数据将与LCD屏幕上显示的数据相匹配。请不要忘记按下以下按钮获取相关的测量数据:

  • “1”=牧师/ S
  • “4”= rpm
  • “7”=英尺/秒
  • “*”=英里每小时

下一个步骤

由于该项目利用开发板,下一步是将所有部件和件集成到单个定制的PCB上,旋转圆盘,直流电机和光开关。此外,对于实际应用程序,我将考虑使用多线LCD屏幕,以允许同时显示所有测量数据,从而消除键盘。或者,我会保留现有的LCD,消除键盘,并在单个数据流上定居,可能是FT / S或RPM。但当然,这种数据流决定将依赖于最终应用程序。

快乐的建筑!!

为自己提供这个项目!BOM。