在转速计/速度计项目的第二部分中,我们将添加键盘和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。