完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我的1602不知为啥一直自动加1,本来是220,但变成了331,我并没有设置自动加1 main函数
a =ADC_ConvertedValueLocal*100.000; /ad采集过来的数/ ge=a%10; shi=a%100/10; bai=a/100; d[0]=bai+0x30; /这一步正确,显示2/ d[1]=shi+0x30; /这一步正确,显示2/ d[2]=ge+0x30; /这一步正确,显示0/ for(num=0;num<4;num++) { Lcd1602WriteData(d[num]); DelayMs(100); } 经过for循环,却在显示屏上显示331 求大神指点!!!!!! 1602.c文件 #include "lcd1602.h" #include "delay.h" void LcdIo1602(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_SetBits(GPIOA,GPIO_Pin_10|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOC, &GPIO_InitStructure); GPIO_SetBits(GPIOC,GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14); } void Lcd1602Write(u8 data) { u8 i = 0; u8 operation = 0; for(i = 0; i < 8; i++) { if((data>>i) & 0x01) operation = 1; else operation = 0; switch(i) { case 0: if(operation) GPIO_SetBits(GPIOPORT, GPIO_Pin_10); else GPIO_ResetBits(GPIOPORT, GPIO_Pin_10); break; case 1: if(operation) GPIO_SetBits(GPIOPORT, GPIO_Pin_1); else GPIO_ResetBits(GPIOPORT, GPIO_Pin_1); break; case 2: if(operation) GPIO_SetBits(GPIOPORT, GPIO_Pin_2); else GPIO_ResetBits(GPIOPORT, GPIO_Pin_2); break; case 3: if(operation) GPIO_SetBits(GPIOPORT, GPIO_Pin_3); else GPIO_ResetBits(GPIOPORT, GPIO_Pin_3); break; case 4: if(operation) GPIO_SetBits(GPIOPORT, GPIO_Pin_4); else GPIO_ResetBits(GPIOPORT, GPIO_Pin_4); break; case 5: if(operation) GPIO_SetBits(GPIOPORT, GPIO_Pin_5); else GPIO_ResetBits(GPIOPORT, GPIO_Pin_5); break; case 6: if(operation) GPIO_SetBits(GPIOPORT, GPIO_Pin_6); else GPIO_ResetBits(GPIOPORT, GPIO_Pin_6); break; case 7: if(operation) GPIO_SetBits(GPIOPORT, GPIO_Pin_7); else GPIO_ResetBits(GPIOPORT, GPIO_Pin_7); break; default: break; } } } void Lcd1602WriteData(u8 date) { LCD1602_EN_HIGH; LCD1602_RS_HIGH; LCD1602_RW_LOW; Lcd1602Write(date); DelayMs(100); LCD1602_EN_LOW; } void Lcd1602WriteCommand(u8 com) { LCD1602_EN_HIGH; LCD1602_RS_LOW; LCD1602_RW_LOW; Lcd1602Write(com); DelayMs(100); LCD1602_EN_LOW; } void Lcd1602Init(void) { Lcd1602WriteCommand(0x38); Lcd1602WriteCommand(0x38); Lcd1602WriteCommand(0x38); Lcd1602WriteCommand(0x01); Lcd1602WriteCommand(0x0c); Lcd1602WriteCommand(0x06); Lcd1602WriteCommand(0x80); } |
|
相关推荐
2 个讨论
|
|
在debug中仿真显示d【0】 d[1] d[2] ,d[3]是个点(0x2e),仿真是对的,但液晶显示是错的显示它的下一位‘/’(0x2f),真是奇怪
|
|
|
|
|
|
你正在撰写讨论
如果你是对讨论或其他讨论精选点评或询问,请使用“评论”功能。
2272 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
2083 浏览 3 评论
4708 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
2229 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
2773 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-27 14:07 , Processed in 0.644454 second(s), Total 37, Slave 31 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号