夫妇是什么意思| 芹菜炒什么配菜好吃| 男性支原体阳性有什么症状| pcl是什么意思| 手脱臼有什么症状| 结肠炎是什么原因引起的| 胆囊结石吃什么食物好| 后脑勺疼是什么原因| 什么中药化结石最厉害| 直接胆红素偏高是什么意思| 舌头烂了是什么原因| 舌头发麻是什么原因引起的| 符号是什么意思| 细菌感染有什么症状表现| 带状疱疹是什么| 沙僧是什么生肖| 经常喝蜂蜜水有什么好处和坏处| 自主能力是什么意思| 榴莲什么时候吃最好| 夏季有什么花| 25岁属什么| 高反人群一般是什么人| 什么样的房子风水好| 胰腺钙化灶是什么意思| 茶鱼是什么鱼| 肝不好的人有什么症状| 十二月六号是什么星座| 夏枯草有什么功效| 成都机场叫什么名字| 崎岖是什么意思| 怀孕吃核桃对宝宝有什么好处| 什么是体制内的工作| 碗摔碎了预示着什么| 不时之需是什么意思| 什么是文爱| 月经不来吃什么| 榴莲什么人不适合吃| 头皮上长疣是什么原因造成的| 低密度脂蛋白偏高吃什么药| hpv16阳性有什么症状| 乙状结肠管状腺瘤是什么意思| 女人身体发热预示什么| 198是什么意思| 为什么会得胆囊炎| guess什么意思| 奶奶和孙女是什么关系| 间接胆红素是什么| 吃白糖有什么好处和坏处| 憋不住尿是什么原因| 吃什么可降低胆固醇| 泥淖是什么意思| 什么天什么什么| 月亮是什么颜色| 跳什么舞减肥最快| 俄罗斯的货币叫什么| 湿痹是什么意思| 茶叶蛋用什么茶叶| 迂回战术什么意思| 苏醒是什么意思| 粒子是什么| 最大的动物是什么| 祛湿是什么意思| 免去职务是什么意思| 更年期补钙吃什么钙片好| ons是什么意思| 老炮儿是什么意思啊| 脚烧是什么原因| 博士在古代是什么意思| 马齿笕有什么功效| 赘是什么意思| 高血压一级是什么意思| 脑血管堵塞是什么症状| 结婚20周年属于什么婚| 马上是什么意思| 什么样的伤口需要缝针| 焚香是什么意思| 海苔吃多了有什么坏处| 甘油三酯高有什么危害| 三位一体是什么生肖| 交感神经型颈椎病吃什么药| 出类拔萃什么意思| 人什么什么事的成语| 蛞蝓是什么动物| 版图是什么意思| 肺栓塞挂什么科| 惠字五行属什么| 19年属什么| 啤酒喝了有什么好处| 白细胞十一是什么意思| 1973年是什么命| 五灵脂是什么| 鼻炎吃什么消炎药| 血糖高可以吃什么零食| 传染性单核细胞增多症是什么病| 世上谁嫌男人丑的前一句是什么| 拉肚子吃什么| 什么是性行为| 腰椎疼痛挂什么科| 你干什么呢| 不发烧流鼻涕打喷嚏吃什么药| 什么能助睡眠| 夏天吹空调感冒了吃什么药| 1989年是什么蛇| crs是什么意思| 外阴瘙痒是什么情况| 孤家寡人什么意思| 乡和镇的区别是什么| rhino是什么意思| 溶肌症的症状是什么| 跨性别是什么意思| 血白细胞高是什么原因| 心肌酶谱是查什么的| 初级会计考什么科目| 小孩肠胃感冒吃什么药比较好| 四面楚歌什么意思| 宫颈炎吃什么药好| 脑电图异常是什么病| 西藏有什么大学| 虾仁可以炒什么菜| 做梦被打了是什么意思| 什么是粒子植入治疗| 关羽使用的武器是什么| 碳13和碳14有什么区别| 什么动物的血是蓝色的| 什么是前置胎盘| 鲁迅原名什么| 十年粤语版叫什么名字| 迪根是什么药| 今天是什么生肖日| 正月初七什么星座| 肝风上扰会有什么症状| 中元节不能穿什么衣服| 治飞蚊症用什么眼药水| 低血压有什么症状| 什么水果糖分低| 目赤是什么症状| 吃什么东西对肺好| 景五行属什么| 麻黄是什么| 股癣用什么药最好| 一夜白头是什么原因| 什么样的莲蓬| 胃寒吃什么药最有效| 家五行属什么| 冬日暖阳是什么意思| 湿疹是因为什么引起的| 尿血是什么问题| 人生于世上有几个知己是什么歌| ch什么意思| 排骨炖什么汤止咳润肺| 朴是什么意思| 大白刁是什么鱼| 柴米油盐什么意思| 口我什么意思| 吃什么会自然流产| 什么的脸| 手机流量是什么| 爽约什么意思| 女人纵欲过度会有什么症状| 什么能助睡眠| 男人都是大猪蹄子是什么意思| 腰疼吃点什么药| 仓鼠用什么洗澡| 呆小症是缺乏什么激素| 后脑勺发胀是什么原因| notice是什么意思| doris什么意思| 大圣归来2什么时候上映| 女人更年期吃什么药| 踏雪寻梅是什么意思| 卵巢囊肿是什么| nba新赛季什么时候开始| 1981年五行属什么| 胎儿左心室灶状强回声是什么意思| 尿酸高吃什么药降尿酸效果好| 结婚5年是什么婚| 什么不同成语| 免冠照片是什么意思| 尿检4个加号什么意思| 房性早搏吃什么药最好| 81年属什么| 疑问是什么意思| 丘疹性荨麻疹用什么药| 喉咙痛不能吃什么| 咖啡色是什么颜色| 耳刀旁加步念什么| 心慌是什么原因引起的| 热锅上的蚂蚁是什么意思| 红蜘蛛是什么虫| 08年属什么生肖| 柴鸡是什么鸡| 周吴郑王是什么意思| 作茧自缚是什么意思| 乌鱼子是什么意思| 贡高我慢是什么意思| 脑膜炎有什么症状| 98年属虎的是什么命| 1999年出生的属什么| 男人梦到掉牙什么预兆| 脚后跟骨头疼是什么原因| 中性粒细胞百分比偏低什么意思| 牛肉和什么不能一起吃| 金匮肾气丸主治什么病| 女人为什么会宫外怀孕| 原研药是什么意思| 月经前有褐色分泌物是什么原因| 七月初八是什么星座| 跑马是什么意思| 没有润滑油用什么代替| 世界上最坚硬的东西是什么| 青的五行属性是什么| 梦见豹子是什么预兆| 欢喜是什么意思| 打喷嚏头疼是什么原因| 阿赖耶识是什么意思| 老是放臭屁是什么原因| 吃什么补硒最快最好| 馋是什么意思| 梦见狗熊是什么预兆| 最新奥特曼叫什么| 哈达是什么| 尿道感染要吃什么药| 扌字旁的字和什么有关| mc什么意思| 精液什么颜色| 脖子上有结节挂什么科| 小名是什么意思| 精子什么味道| 医生说忌生冷是指什么| 高铁与动车有什么区别| 风情万种的意思是什么| 减肥期间可以喝什么茶| 飞水是什么意思| 什么醒酒| 2016属什么生肖| 果酸是什么东西| 姨妈是什么| 秘辛是什么意思| 说话鼻音重是什么原因| 从来不吃窝边草是什么生肖| 兜兜转转是什么意思| 信佛有什么好处| 为什么乳晕会变大| 什么叫御姐| 眼睛红是什么病的前兆| 脚干裂用什么药最好| acc是什么意思| 子卯相刑有什么危害| 中元节注意什么| 什么的天空飘着什么的白云| 42岁属什么| 出格是什么意思| 健身吃蛋白粉有什么好处和坏处| php是什么意思| 团长一般是什么军衔| 什么是畸胎瘤| 尿蛋白是什么原因| 沅字五行属什么| 尿液中有泡沫是什么原因| 吃什么有助于降血压| 韩国烧酒什么味道| 胃热吃什么药最有效| 侧着睡觉有什么坏处| 神经递质是什么| 百度
这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 ? 论坛首页 ? 活动中心 ? 板卡试用 ? 【换取手持数字示波器】ACM32F070LCD屏和触控按键功驱动蜂鸣器分享

共3条 1/1 1 跳转至

【换取手持数字示波器】ACM32F070LCD屏和触控按键功驱动蜂鸣器分享

高工
2025-08-05 19:58:35   被打赏 40 分(兑奖)     打赏
百度 宋代空前繁荣的海上贸易几乎全为民间经营。

实现步骤与计划:

ACM32F070是一款功能强大的MCU,它提供了丰富的外设接口和强大的性能,非常适合用于各种嵌入式应用的开发。

关于点亮LCD屏和触控按键功能操作,以及驱动蜂鸣器测评,下面是一些建议和指导:



  1. 硬件连接:首先,确保LCD屏与开发板之间的连接正确无误。通常,你需要将LCD屏的电源、地线、数据线等接口与开发板上的对应接口相连。

  2. 驱动配置:查阅ACM32F070的文档,了解如何配置LCD控制器或相关的GPIO接口。根据LCD屏的规格和要求,设置正确的数据格式、时序等参数。

  3. 编程实现:编写代码来初始化LCD控制器,并发送图像数据到LCD屏上显示。这通常涉及到对LCD控制器的寄存器进行操作,以及准备和发送图像帧数据。

触控按键功能操作

  1. 硬件连接:同样,确保触控按键模块与开发板之间的连接正确。这通常包括电源、地线以及用于传输触控数据的接口。

  2. 驱动配置:配置相关的GPIO接口或触控控制器,以接收和处理触控数据。

  3. 编程实现:编写代码来读取触控数据,并根据需要执行相应的操作。例如,你可以编写一个函数来检测是否有按键被按下,并根据按下的按键执行不同的操作。

驱动蜂鸣器测评

  1. 硬件连接:将蜂鸣器模块与开发板上的PWM或GPIO接口相连。确保连接正确,避免短路或损坏设备。

  2. 驱动配置:根据蜂鸣器的类型(有源或无源)和规格,配置相应的PWM或GPIO接口。对于有源蜂鸣器,你可能只需要控制其电源线的通断;对于无源蜂鸣器,你可能需要使用PWM信号来调节其发声频率和音量。

  3. 编程实现:编写代码来驱动蜂鸣器发声。你可以根据需要调整PWM信号的频率和占空比,以产生不同的音效和节奏。

原理图:

蜂鸣器

image.png

触摸按键

image.png


image.png

LCD:

image.png


代码:

COM0 COM1 COM2 COM3分别是接PA9 PA10 PA11 PA12,其它的就请见上图,和上上图。
下面我上代码:
蜂鸣器
#define BUZZER_GPIO_PORT GPIOD
#define BUZZER_GPIO_PIN  GPIO_PIN_1
定义GPIOD口的Pin的1脚。
void BUZZER_Init(void)
{
    GPIO_InitTypeDef GPIOx_Handle;    
    GPIOx_Handle.Pin       = BUZZER_GPIO_PIN;
    GPIOx_Handle.Mode      = GPIO_MODE_OUTPUT_PP;
    GPIOx_Handle.Pull      = GPIO_NOPULL;
    GPIOx_Handle.Alternate = GPIO_FUNCTION_0;
    HAL_GPIO_Init(BUZZER_GPIO_PORT, &GPIOx_Handle);  
    HAL_GPIO_WritePin(BUZZER_GPIO_PORT, BUZZER_GPIO_PIN, GPIO_PIN_CLEAR);
}
蜂鸣器工作函数:
    GPIOCD->SET = (GPIO_PIN_1<<16);
    System_Delay_MS(200);
    GPIOCD->CLR = (GPIO_PIN_1<<16);
这里延时200MS,蜂鸣器的声音更加响亮。
触摸按键:
uint8_t TouchKey_Init(void)
{
    uint8_t ret = 0;
    TKEY_Init();
    TKEY_Calibrate_ParaInit();
    ret = TKEY_Quick_Calibrate(); //校准无触摸时的读取数据寄存器值 
    TKEY_Timer_ScanInit();
    TKEY_Timer_Scan_Start(); 
    TKEY_DEBUG("sgu16_RawDataRangRatio = %d\n", sgu16_RawDataRangRatio);
    TKEY_DEBUG("sgu8_TKEYScanTime = %d\n", sgu8_TKEYScanTime); 
    return ret;
}
按键的滤波:
#define TKEY_DEBIN        2  
#define TKEY_DEBOUT    2 
扫描按键获取值:
uint8_t TK_TimerSacn_GetKeyVal(void)
{
    uint8_t  ucKey = 0xFF;
    TKEY_Timer_Scan_Result(&ucKey);
#ifdef TKEY_WAVEFORM_OUTPUT    
    TK_DebugDataOut();
#endif
    return ucKey;
}
void TKEY_Timer_Scan_Result(uint8_t *pucKey)
{
    *pucKey = 0xFF;
#ifdef TKEY_FIFO_ENABLE
    if(FIFO_Query(&TKEY_Fifo))
    {
        FIFO_Out(&TKEY_Fifo, pucKey);
    }
#endif
}
按键如果看不明白,可以看原DEMO,我这里不多介绍。
下面是屏的相关代码,我把我用的全赋上,屏是用的YR1618。
先上初始化:
void LCD_Init_YR1618A(void)
{  
    memset(&lcdhandle_YR1618A,0,sizeof(lcdhandle_YR1618A));//初始化清零Handle
    lcdhandle_YR1618A.Instance=LCD;
    lcdhandle_YR1618A.Init.Bias=LCD_BIAS_1_3;
    lcdhandle_YR1618A.Init.Duty=LCD_DUTY_1_4;
    lcdhandle_YR1618A.Init.DisplayMode=LCD_DisplayMode_1;
    lcdhandle_YR1618A.Init.LCDFrequency=LCD_LCDFrequency_512HZ;
    lcdhandle_YR1618A.Init.Driving_Waveform=LCD_Driving_Waveform_B;
    lcdhandle_YR1618A.Init.BiasSrc=LCD_BiasSrc_InRes_Seg31_35_Normal;//内部电阻模式
    //   lcdhandle_YR1618A.Init.BlinkEN=LCD_BlinkEN_Enable;//闪频使能
    lcdhandle_YR1618A.Init.BlinkFrequency =0x3;//帧间隔时间,影响帧中断时间和LCD DMA请求时间 以及闪烁时间
    HAL_LCD_Init(&lcdhandle_YR1618A);
    LCD_InResInitTypeDef  Resstrcut;
    memset(&Resstrcut,0,sizeof(Resstrcut));//初始化清零Handle
    Resstrcut.Contrast=LCD_Contrast_903VDD;
    Resstrcut.BiasRes=LCD_BiasRes_240k;//LCD_BiasRes_240k  LCD_BiasRes_4M
    Resstrcut.FastCharge=LCD_FastCharge_Enable;//快速充电配置
    Resstrcut.PONTime=0x3f;
    Resstrcut.DriveMod=LCD_DriveMod_FC;//LCD_DriveMod_FC
    HAL_LCD_InResConfig(&lcdhandle_YR1618A,&Resstrcut);
    LCD_GPIO_Config_YR1618A();
    LCD_SegCom_Config_YR1618A(); 
}
再上一个IO的配置:这里我介绍一下,担心会有看不明白的。
void LCD_GPIO_Config_YR1618A(void)
{
清GPIO的YR1618初始化
    memset(&GPIO_Init_YR1618A,0,sizeof(GPIO_Init_YR1618A));
下面的是配置COM0 COM1 COM2 COM3的GPIO,这个端口是PA口,分别是PA9 PA10 PA11 PA12
还有SEG14 SEG0和SEG13的PA4 PA8 PA0;
    /* COM0-COM3:PA9-PA12  SEG0:PA8  */
    GPIO_Init_YR1618A.Pin = GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_8|GPIO_PIN_4|GPIO_PIN_0;    
    GPIO_Init_YR1618A.Mode = GPIO_MODE_ANALOG;
    HAL_GPIO_Init(GPIOA, &GPIO_Init_YR1618A);//
    这里是配置SEG1-4的GPIO口对应的脚位是PC6到PC9
    /* SEG1-4:PC9-6 */
    GPIO_Init_YR1618A.Pin = GPIO_PIN_9|GPIO_PIN_8|GPIO_PIN_7|GPIO_PIN_6|GPIO_PIN_5|GPIO_PIN_4|GPIO_PIN_3|GPIO_PIN_2|GPIO_PIN_1|GPIO_PIN_0;    
    GPIO_Init_YR1618A.Mode = GPIO_MODE_ANALOG;
    HAL_GPIO_Init(GPIOC, &GPIO_Init_YR1618A);    
    
    /* SEG5-7:PB15-13 */
    GPIO_Init_YR1618A.Pin = GPIO_PIN_0|GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_15|GPIO_PIN_14|GPIO_PIN_13;    
    GPIO_Init_YR1618A.Mode = GPIO_MODE_ANALOG;
    HAL_GPIO_Init(GPIOB, &GPIO_Init_YR1618A);  
    /* SEG5-7:PD5, =1*/
    GPIO_Init_YR1618A.Pin = GPIO_PIN_5;    
    GPIO_Init_YR1618A.Mode = GPIO_MODE_ANALOG;
    HAL_GPIO_Init(GPIOD, &GPIO_Init_YR1618A);      
}
void LCD_SegCom_Config_YR1618A(void)
{
    LCD_SegComInitStructure2.SEG0_31=0xF0371C00;//开启SEG0-SEG70xF0371C00
    LCD_SegComInitStructure2.Stc_SEG32_39_COM0_8.SEG32_39_COM0_8=0xFFFFFFFF;//初始化LCD_POEN1寄存器 关闭全部输出
    LCD_SegComInitStructure2.Stc_SEG32_39_COM0_8.SEGCOM_bit.COM0_3=0;//开启COM0-COM3
    LCD_SegComInitStructure2.Stc_SEG32_39_COM0_8.SEGCOM_bit.SEG32_35=0xf;//关闭SEG32_35和COM4-7
    LCD_SegComInitStructure2.Stc_SEG32_39_COM0_8.SEGCOM_bit.SEG36_COM7=1;
    LCD_SegComInitStructure2.Stc_SEG32_39_COM0_8.SEGCOM_bit.SEG37_COM6=1;
    LCD_SegComInitStructure2.Stc_SEG32_39_COM0_8.SEGCOM_bit.SEG38_COM5=1;
    LCD_SegComInitStructure2.Stc_SEG32_39_COM0_8.SEGCOM_bit.SEG39_COM4=1;
    HAL_LCD_SegComConfig(&lcdhandle_YR1618A,&LCD_SegComInitStructure2);
}
再上显示数字:这里我上传两断DEMO中比较经典的,个人写的非常的乱,只上传图片好了。
void LCD_DisplayNum_YR1618A(uint32_t Num)
 {
    uint32_t ram_buff[4];
    ram_buff[0]=0;
    ram_buff[1]=0;
    ram_buff[2]=0;
    ram_buff[3]=0;
//  ram_buff[4]=0;
    if(Num>9999) Num=9999;//4位数,最大显示9999
    Get_RAM_NUM_DATA(ram_buff,Num,Num);
    HAL_LCD_Write(&lcdhandle_YR1618A,0,ram_buff[0]);
    HAL_LCD_Write(&lcdhandle_YR1618A,1,ram_buff[1]);
    HAL_LCD_Write(&lcdhandle_YR1618A,2,ram_buff[2]);
    HAL_LCD_Write(&lcdhandle_YR1618A,3,ram_buff[3]);
//   HAL_LCD_Write(&lcdhandle_YR1618A,4,ram_buff[4]);
 }
8位动态显示0-9
void LCD_DisplayNum_YR1618A_INIT()
{
    uint16_t i=0; 
    uint32_t ram_buff[5];
    uint16_t numi=6;//5
    for(numi=0;numi<8;numi++)
    {
        System_Delay_MS(100);
        for(i=0;i<10;i++)
        {
            ram_buff[0]=0;
            ram_buff[1]=0;
            ram_buff[2]=0;
            ram_buff[3]=0;
            if(numi==4)
            {
            ram_buff[0]=NUM5_RAM0_DIS<<NUM_RAM_OFFSET[numi];
            ram_buff[1]=NUM5_RAM1_DIS<<NUM_RAM_OFFSET[numi];
            ram_buff[2]=NUM5_RAM2_DIS<<NUM_RAM_OFFSET[numi];
            ram_buff[3]=NUM5_RAM3_DIS<<NUM_RAM_OFFSET[numi];
            }
            else if(numi==6)
            {
            ram_buff[0]=NUM7_RAM0_DIS<<NUM_RAM_OFFSET[numi];
            ram_buff[1]=NUM7_RAM1_DIS<<NUM_RAM_OFFSET[numi];
            ram_buff[2]=NUM7_RAM2_DIS<<NUM_RAM_OFFSET[numi];
            ram_buff[3]=NUM7_RAM3_DIS<<NUM_RAM_OFFSET[numi];
            }
            else
            {
            ram_buff[0]=NUM123468_RAM0_DIS<<NUM_RAM_OFFSET[numi];
            ram_buff[1]=NUM123468_RAM1_DIS<<NUM_RAM_OFFSET[numi];
            ram_buff[2]=NUM123468_RAM2_DIS<<NUM_RAM_OFFSET[numi];
            ram_buff[3]=NUM123468_RAM3_DIS<<NUM_RAM_OFFSET[numi];
            }
            HAL_LCD_Write(&lcdhandle_YR1618A,0,ram_buff[0]);
            HAL_LCD_Write(&lcdhandle_YR1618A,1,ram_buff[1]);
            HAL_LCD_Write(&lcdhandle_YR1618A,2,ram_buff[2]);
            HAL_LCD_Write(&lcdhandle_YR1618A,3,ram_buff[3]);
            System_Delay_MS(100);//初始化时每个项显示时间,方便检测每一段显示状态
        }
    }
}

实现效果:

image.png

点亮LCD屏image.png

实现0-9显示:

image.png




专家
2025-08-05 00:07:55     打赏
2楼

感谢楼主分享


菜鸟
2025-08-05 10:42:07     打赏
3楼

好腻害,谢谢分享


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]
nba是什么意思的缩写 什么是血浆 喉咙痒吃什么药好 梦见朋友离婚了是什么意思 皮肤发白一块一块的是什么病
甲状腺结节伴钙化什么意思 汉朝后面是什么朝代 汗毛长的女人代表什么 318什么意思 bull是什么意思
血压低说明什么 9价疫苗适合什么年龄人打 电解工是干什么的 浅表性胃炎伴糜烂吃什么药效果好 女性腰肌劳损吃什么药
口腔溃疡是什么样子 阴道有灼热感是什么原因 过渡句的作用是什么 锻练与锻炼有什么区别 jojo是什么
logo是什么hcv8jop8ns2r.cn 得过且过什么意思hcv9jop6ns7r.cn 美国有什么特产fenrenren.com 牙结石不除有什么危害hcv8jop2ns9r.cn 老人生日送什么礼物好hcv9jop4ns5r.cn
气血不足什么原因引起的zsyouku.com 闹代表什么生肖hcv9jop5ns6r.cn 马卡龙是什么hcv8jop7ns8r.cn 舌苔发白是什么情况hcv8jop7ns5r.cn 四级专家是什么级别creativexi.com
干白是什么酒hcv7jop6ns4r.cn 教师资格证有什么用hcv8jop8ns7r.cn 林彪为什么叛逃hcv9jop6ns5r.cn 越国在现在的什么地方hcv8jop1ns8r.cn 为什么会长脂肪瘤xinjiangjialails.com
生扶什么意思hcv8jop2ns3r.cn 什么牌子的氨糖最好aiwuzhiyu.com 赵子龙属什么生肖liaochangning.com 淋巴清扫是什么意思hebeidezhi.com 鼻头发红是什么原因hcv7jop6ns2r.cn
百度