完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
/**************H头文件********************/ #ifndef __12864_H #define __12864_H #include "sys.h" /*#define CS PAout(0) #define SID PAout(1) #define SCLK PAout(2) #define RST PAout(3) #define PSB PAout(4)*/ #define RS_ON GPIO_SetBits(GPIOA,GPIO_Pin_0); #define RS_OFF GPIO_ResetBits(GPIOA,GPIO_Pin_0); #define SID_ON GPIO_SetBits(GPIOA,GPIO_Pin_1); #define SID_OFF GPIO_ResetBits(GPIOA,GPIO_Pin_1); #define E_ON GPIO_SetBits(GPIOA,GPIO_Pin_2); #define E_OFF GPIO_ResetBits(GPIOA,GPIO_Pin_2); #define RST_ON GPIO_SetBits(GPIOA,GPIO_Pin_3); #define RST_OFF GPIO_ResetBits(GPIOA,GPIO_Pin_3); //***it CS=P2^6; //片选信号 RS //***it SID=P2^5; //数据信号 R/W //***it SCLK=P2^7; //时钟信号 E //***it RST=P3^4; //复位信号 //***it PSB = P3^2; //并行、串行选择信号 void Gpio_Init(void);//GPIO初始化函数 void sendbyte(u8 zdata); //发送数据 void write_com(u8 cmdcode); void write_data(u8 Dispdata); void LCD12864_Init(void);//初始化函数 void hzkdis(u8 *s); void Test(void);//显示内容 #endif /************************.C文件************************/ #include "12864.h" #include "delay.h" void Gpio_Init(void) { GPIO_InitTypeDef GPIO_InitT; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE);//使能GPIOA时钟 // GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE); // SystemInit(); GPIO_InitT.GPIO_Mode=GPIO_Mode_Out_PP;//通用推挽输出 GPIO_InitT.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4; GPIO_InitT.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOA,&GPIO_InitT); //GPIO_SetBits(GPIOA,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4); } void sendbyte(u8 zdata) //发送数据 { u8 i; for(i=0; i<8; i++) { if((zdata << i) & 0x80) { SID_ON; } else { SID_OFF; } E_OFF; E_ON; } } void write_com(u8 cmdcode) { RS_ON; sendbyte(0xf8); sendbyte(cmdcode & 0xf0); sendbyte((cmdcode << 4) & 0xf0); delay_ms(10); } void write_data(u8 Dispdata) //写串口命令 { RS_ON; sendbyte(0xfa); sendbyte(Dispdata & 0xf0); sendbyte((Dispdata << 4) & 0xf0); delay_ms(10); } void LCD12864_Init(void) { RST_OFF; delay_ms(100); RST_ON; delay_ms(100); write_com(0x30); delay_ms(50); write_com(0x0c); delay_ms(50); } void hzkdis(u8 *s) { while(*s > 0) { write_data(*s); s++; delay_ms(50); } } void Test(void) { write_com(0x03); delay_ms(50); write_com(0x81); hzkdis("语音录放系统"); write_com(0x92); hzkdis("abcf"); write_com(0x88); hzkdis("▲◆◆▲"); write_com(0x98); hzkdis("作者: "); } /**************主函数******************/ #include "delay.h" #include "12864.h" #include "sys.h" int main(void) { LCD12864_Init(); Gpio_Init(); delay_init(); // PSB= 0; //只有在上面定义了以后才能用这句话,不然会报错没有接地时会出现乱码 // LCD12864_Init(); delay_ms(10); while(1) { Test(); delay_ms(5); } } |
|
相关推荐
3个回答
|
|
这个就是那么好玩
|
|
|
|
|
|
|
|
有时间帮我看一下哪里不对谢谢啦
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1187 浏览 0 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1122 浏览 2 评论
2223 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1311 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1735 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-27 04:35 , Processed in 0.634500 second(s), Total 78, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号