完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
一、前期准备
单片机:STM32F103ZET6 开发环境:MDK5.14 库函数:标准库V3.5 二、实验效果 三、驱动原理 1002521871,验证:呵呵。 四、驱动代码 5110.h #ifndef __NOKIA_5110_H__ #define __NOKIA_5110_H__ #include "stm32f10x.h" #include "gpio.h" #include "delay.h" #include "nokiafont.h" #define Nokia_CLK PEout(0) #define Nokia_DIN PEout(1) #define Nokia_DC PEout(2) #define Nokia_CE PEout(3) #define Nokia_RST PEout(4) extern void Nokia5110Configuration(void); extern void Nokia_Clear(void); extern void Nokia_Write_Chinese_String(uint8_t X, uint8_t Y, uint8_t ch_with, uint8_t num, uint8_t line, uint8_t row); extern void Nokia_Write_English_String(uint8_t X, uint8_t Y, char *s); #endif 5110.c #include "nokia5110.h" void Nokia_Write_Byte(uint8_t dat, uint8_t cmd) { uint8_t i; Nokia_CE = 0; // 使能LCD if (cmd == 0) { Nokia_DC = 0; // 传送命令 } else { Nokia_DC = 1; // 传送数据 } for(i = 0; i < 8; i ++) { if(dat & 0x80) { Nokia_DIN = 1; } else { Nokia_DIN = 0; } Nokia_CLK = 0; dat = dat << 1; Nokia_CLK = 1; } Nokia_CE = 1; } void Nokia_Clear(void) { uint16_t i; Nokia_Write_Byte(0x0c, 0); Nokia_Write_Byte(0x80, 0); for (i = 0; i < 504; i ++) { Nokia_Write_Byte(0, 1); } } void Nokia_Set_Position(uint8_t X, uint8_t Y) { Nokia_Write_Byte(0x40 | Y, 0); // column Nokia_Write_Byte(0x80 | X, 0); // row } void Nokia_Write_Char(uint8_t c) { uint8_t line; c -= 32; for (line = 0; line < 6; line ++) { Nokia_Write_Byte(font6x8[c][line], 1); } } void Nokia_Write_English_String(uint8_t X, uint8_t Y, char *s) { Nokia_Set_Position(X, Y); while (*s) { Nokia_Write_Char(*s); s ++; } } /*----------------------------------------------------------------------- Nokia_Write_Chinese_String: 在LCD上显示汉字 输入参数:X、Y :显示汉字的起始X、Y坐标; ch_with :汉字点阵的宽度 num :显示汉字的个数; line :汉字点阵数组中的起始行数 row :汉字显示的行间距 -----------------------------------------------------------------------*/ void Nokia_Write_Chinese_String(uint8_t X, uint8_t Y, uint8_t ch_with, uint8_t num, uint8_t line, uint8_t row) { uint8_t i, n; Nokia_Set_Position(X, Y); //设置初始位置 for (i = 0; i < num;) { for (n = 0; n < ch_with * 2; n ++) //写一个汉字 { if (n == ch_with) //写汉字的下半部分 { if (i == 0) { Nokia_Set_Position(X, Y + 1); } else { Nokia_Set_Position((X + (ch_with + row) * i), Y + 1); } } Nokia_Write_Byte(write_chinese[line + i][n], 1); } i ++; Nokia_Set_Position((X + (ch_with + row) * i), Y); } } /*----------------------------------------------------------------------- Nokia_Draw_Bmp_Pixel : 位图绘制函数 输入参数:X、Y :位图绘制的起始X、Y坐标; *map :位图点阵数据; Pix_x :位图像素(长) Pix_y :位图像素(宽) -----------------------------------------------------------------------*/ void Nokia_Draw_Bmp_Pixel(uint8_t X,uint8_t Y,uint8_t *map, uint8_t Pix_x, uint8_t Pix_y) { uint16_t i, n; uint8_t row; if (Pix_y % 8 == 0) { row = Pix_y / 8; //计算位图所占行数 } else { row = Pix_y / 8 + 1; } for (n = 0; n < row; n ++) { Nokia_Set_Position(X, Y); for(i = 0; i < Pix_x; i ++) { Nokia_Write_Byte(map[i + n * Pix_x], 1); } Y ++; //换行 } } void Nokia5110Configuration(void) { GPIO_InitTypeDef GPIO; //Enable APB2 Bus RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE); //Register IO GPIO.GPIO_Pin = 0x1F; GPIO.GPIO_Speed = GPIO_Speed_50MHz; GPIO.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOE, &GPIO); Nokia_RST = 0; DelayUs(1); Nokia_RST = 1; Nokia_CE = 0; // 关闭LCD DelayUs(1); Nokia_CE = 1; // 使能LCD DelayUs(1); Nokia_Write_Byte(0x21, 0); // 使用扩展命令设置LCD模式 Nokia_Write_Byte(0xc8, 0); // 设置偏置电压 Nokia_Write_Byte(0x06, 0); // 温度校正 Nokia_Write_Byte(0x13, 0); // 1:48 Nokia_Write_Byte(0x20, 0); // 使用基本命令 Nokia_Clear(); // 清屏 Nokia_Write_Byte(0x0c, 0); // 设定显示模式,正常显示 Nokia_CE = 0; // 关闭LCD } |
|
|
|
只有小组成员才能发言,加入小组>>
3269 浏览 9 评论
2947 浏览 16 评论
3446 浏览 1 评论
8967 浏览 16 评论
4041 浏览 18 评论
1084浏览 3评论
562浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
556浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2294浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1850浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-13 11:20 , Processed in 1.396813 second(s), Total 80, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号