12864lcd显示计算器键盘按键 
时间: 2023-05-14 14:01:42 浏览: 62
12864液晶显示屏是一种常见的显示设备,广泛应用于各种电子设备中。在计算器中,12864液晶显示屏常用于显示数字和文字,同时也用于显示计算结果和各种信息。
而计算器的键盘按键则是通过矩阵键盘进行设计的。12864液晶显示屏会与矩阵键盘进行电路连接,当用户按下某个按键时,这个信号会通过连接传输给计算器的处理器,进而在12864液晶显示屏上显示相应数字或文字。不同的按键代表不同的功能,例如数字键可输入数字,运算符键可执行基本运算,功能键则可进行不同的计算器设置等等。
通过设计合理的按键布局和12864液晶显示屏的字符显示,计算器可以轻松地实现各种计算功能,并且用户可以直观地看到输入和计算的过程和结果。当然,在设计过程中需要考虑到计算器的实用性和易用性,以便使用者能够快速、方便地进行各种计算操作。
相关问题
158-12864lcd显示计算器键盘按键实验
158-12864液晶显示计算器是一款基于单片机控制的计算器,它采用了12864液晶屏,可以显示数字、符号和操作结果,具有高精度、可靠性和便携性等特点。本次实验旨在研究158-12864液晶显示计算器的键盘按键功能。
实验过程中,我们首先需要对计算器的各个按键进行了解和了解其作用。然后将计算器电路连接到电脑上,并利用串口通讯对计算器进行数据的接收、发送和处理。在接收到按键的信号后,我们需要对该信号进行判断,判断按下的是哪个按键,并将数字、符号或命令发送给计算器进行处理。计算器将计算结果显示在液晶屏上,供使用者查看。
通过实验,我们可以充分了解到计算器的工作原理和键盘按键的作用,熟练掌握计算器的使用方法和操作技巧,为日常生活和工作提供便利。此外,该实验还有助于培养学生的创新能力和实践能力,提高学生对计算机硬件的了解和掌握程度。
stm32f103zet6矩阵键盘加LCD12864计算器实验
对于 STM32F103ZET6 微控制器,你可以使用矩阵键盘和 LCD12864 来实现一个简单的计算器实验。下面是一个示例代码,演示如何实现该实验:
```c
#include "stm32f10x.h"
#include "LCD12864.h"
#define ROWS 4
#define COLS 4
unsigned char key_Map[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
void MatrixKey_Init(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC, ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
// 行引脚为输入,列引脚为输出
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
// 设置行引脚(PA8~PA11)
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11;
GPIO_Init(GPIOA, &GPIO_InitStructure);
// 设置列引脚(PB12~PB15)
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOB, &GPIO_InitStructure);
}
void LCD_Position(unsigned int X, unsigned int Y)
{
int Pos;
if (X == 1)
X = 0x80;
else if (X == 2)
X = 0x90;
else if (X == 3)
X = 0x88;
else if (X == 4)
X = 0x98;
Pos = X + Y;
lcdPosition = Pos;
write_cmd(Pos);
}
void DisplayNumber(unsigned int X, unsigned int Y, unsigned long number, unsigned int length)
{
unsigned char array[length + 1];
unsigned char i;
array[length] = 0;
for (i = length; i > 0; i--)
{
array[i - 1] = number % 10 + '0';
number /= 10;
}
for (i = length; i >= 0; i--)
{
if (array[i] == '0')
{
array[i] = ' ';
}
else
{
break;
}
}
LCD_Position(X, Y);
LCD_displaychar(X, Y, array);
}
void Delay(__IO uint32_t nCount)
{
for(; nCount != 0; nCount--);
}
unsigned char MatrixKey_GetKey(void)
{
unsigned char row, col;
for (col = 0; col < COLS; col++)
{
GPIO_ResetBits(GPIOB, GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15);
GPIO_SetBits(GPIOB, GPIO_Pin_12 << col);
for (row = 0; row < ROWS; row++)
{
if (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_8 << row) == Bit_RESET)
{
while (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_8 << row) == Bit_RESET)
Delay(1000); // 消除抖动
return key_Map[row][col];
}
}
}
return 0xFF; // 无按键按下
}
int main(void)
{
MatrixKey_Init();
LCD_Init();
LCD_Clear();
unsigned char key_val;
unsigned long number = 0;
unsigned int length = 0;
while (1)
{
key_val = MatrixKey_GetKey();
if (key_val != 0xFF)
{
if (key_val >= '0' && key_val <= '9')
{
number = number * 10 + (key_val - '0');
length++;
// 显示当前输入的数字
DisplayNumber(1, 1, number, length);
}
else if (key_val == '#')
{
// 执行计算操作,例如显示结果
// ...
// 清空数值和长度
number = 0;
length = 0;
// 清空LCD显示
LCD_Clear();
}
}
}
}
```
请确保你已经将 LCD12864 的驱动代码正确地集成到你的项目中,并完成相应的初始化。
上述示例代码展示了如何初始化矩阵键盘和 LCD12864,并使用矩阵键盘输入数字,在 LCD 上显示当前输入的数字。当按下 '#' 按键时,可以执行计算操作,并在 LCD 上显示结果。你可以根据自己的需求来修改和扩展该代码。
希望这能帮助到你。如果你还有其他问题,请随时提问。
相关推荐







