c语言oled p14x16str,51单片机加OLED12864显示汉字遇到的奇葩现象
时间: 2023-09-28 16:09:57 浏览: 61
很抱歉,我不是一个可以运行代码的程序,也无法理解你所描述的问题。但是,我可以简单解释一下你所提到的技术。
C语言是一种通用的高级编程语言,常用于系统程序设计和应用软件开发。OLED(Organic Light-Emitting Diode,有机发光二极管)是一种新型的显示技术,具有高对比度、低功耗、快速响应等优点,适用于小尺寸显示设备。P14x16str可能是指一种14x16点阵的字符字模库,用于在OLED屏幕上显示汉字或其他字符。而51单片机是一种常用的微控制器,广泛应用于嵌入式系统、自动化控制等领域。
至于你所遇到的奇葩现象,可能需要更具体的描述才能确定问题所在。如果你可以提供更多详细信息,我会尽力帮助你解决问题。
相关问题
用c语言写一个CH579M单片机让PB14引脚输出高电平的程序
### 回答1:
可以这样写:#include <reg52.h>
void main(void)
{
P0=0xFF;
P1=0xFF;
P2=0xFF;
P3=0xFF;
P14=1;
while(1);
}
### 回答2:
在C语言中,要实现让CH579M单片机的PB14引脚输出高电平,可以通过设置相应的寄存器来实现。
首先,我们需要包含CH579M单片机的头文件,并定义相应的寄存器地址和位掩码。在CH579M的官方库中,IO口的寄存器地址和位掩码可以使用宏定义来表示。
```c
#include <CH579.h>
#define PORTB_BASE 0x48000300 // PB14所在的端口基地址
#define PIN_OFFSET 0x00 // 端口输入数据寄存器相对于基地址的偏移量
#define REG_BASE (PORTB_BASE + PIN_OFFSET)
#define PB14_MASK (1 << 14) // PB14对应的位掩码
```
接下来,我们需要编写一个设置PB14引脚输出高电平的函数。该函数需要先设置PB14引脚为输出模式,然后将相应的寄存器位置为1。
```c
void setPB14High(void) {
*((volatile unsigned long *)(REG_BASE + 0x400)) |= PB14_MASK; // 设置PB14为输出模式
GPIOPortWriteDataOUT(PORTB_BASE, PB14_MASK); // 将PB14引脚输出高电平
}
```
最后,在主函数中调用该函数即可实现让PB14引脚输出高电平。
```c
int main() {
setPB14High(); // 设置PB14引脚输出高电平
while (1) {
// 处理其他任务
}
return 0;
}
```
以上就是一个使用C语言编写的CH579M单片机让PB14引脚输出高电平的程序。在该程序中,首先通过设置寄存器将PB14引脚设置为输出模式,然后再将该引脚输出高电平。
### 回答3:
要使用C语言编写一个CH579M单片机让PB14引脚输出高电平的程序,您可以按照以下步骤进行:
1. 首先,您需要在程序中包含CH579M单片机的头文件和配置文件。例如:
```c
#include "ch579m.h"
#include "ch579m_config.h"
```
2. 接下来,您需要定义PB14引脚为输出引脚。CH579M单片机的引脚定义可以在相关文档或头文件中找到。例如:
```c
#define PB14_PIN 14
```
3. 在主函数中,您需要进行CH579M单片机的初始化设置。这包括GPIO初始化和时钟设置等。例如:
```c
void main(void)
{
// 初始化CH579M单片机
CH579M_Init();
// 设置PB14引脚为输出
GPIOPinMode(PB14_PIN, GPIO_OUT_PP);
// 主循环
while(1)
{
// 设置PB14引脚输出高电平
GPIOSetValue(PB14_PIN, GPIO_HIGH);
}
}
```
4. 最后,您可以在主循环中使用GPIOSetValue函数将PB14引脚设置为高电平。例如:
```c
GPIOSetValue(PB14_PIN, GPIO_HIGH);
```
通过这些步骤,您可以编写一个C语言程序,使CH579M单片机的PB14引脚输出高电平。
需要注意的是,以上代码仅为示例,实际应用中可能需要根据具体的硬件平台和需求进行相应的调整和修改。
基于51单片机的keil软件编程,有一个四位的共阳数码管 字选端P3,位选端p0.0-p0.3,有五个按键,p1.3-p1.7 要求是,按一个按键,数值左移一位,比如按第一个按键,数码管显示1,第二个按键按下 显示12 第三个123 以此类推
好的,这是一个比较典型的数字按键输入和数码管显示的程序,我可以给您提供一个基本的程序框架,您可以在此基础上进行编程:
```c
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit P10 = P1^0;
sbit P11 = P1^1;
sbit P12 = P1^2;
sbit P13 = P1^3;
sbit P14 = P1^4;
sbit LSA = P0^0;
sbit LSB = P0^1;
sbit LSC = P0^2;
uchar code num[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f}; //数码管显示0-9的编码
uchar display[4]; //数码管显示的4个数字,分别对应4个位选端口
uchar index = 0; //当前显示的位
uchar key = 0; //按键输入的数字
void delay(uint x) //延时函数
{
uint i, j;
for (i = x; i > 0; i--)
for (j = 110; j > 0; j--);
}
uchar getKey() //获取按键输入的数字
{
if (!P10) return 1;
if (!P11) return 2;
if (!P12) return 3;
if (!P13) return 4;
if (!P14) return 5;
return 0; //没有按键按下
}
void displayNumber() //数码管显示函数
{
uchar i;
for (i = 0; i < 4; i++)
{
switch (i)
{
case 0:
LSA = 0; LSB = 0; LSC = 0; break;
case 1:
LSA = 1; LSB = 0; LSC = 0; break;
case 2:
LSA = 0; LSB = 1; LSC = 0; break;
case 3:
LSA = 1; LSB = 1; LSC = 0; break;
default:
break;
}
P3 = display[i]; //将数字编码输出到字选端口
delay(1); //延时一段时间,让人眼看到
P3 = 0x00; //关闭数码管
}
}
void main()
{
while (1)
{
key = getKey(); //获取按键输入的数字
if (key > 0 && index < 4) //如果有按键按下,并且未达到4位数
{
display[index++] = num[key]; //将按键输入的数字编码存储到显示数组中
}
displayNumber(); //数码管显示函数
delay(500); //延时一段时间,降低刷新频率
if (index == 4) index = 0; //如果已经达到4位数,从头开始
}
}
```
这是一个比较简单的程序,实现了按键输入和数码管显示。您可以根据具体需求进行修改和扩展。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)