9869|28

2056

帖子

0

TA的资源

五彩晶圆(初级)

楼主
 

【玩转C2000 Launchpad】NOKIA 5110液晶显示 [复制链接]

花了一个早上写了一个NOKIA5110液晶显示程序!
祝大家元旦快乐!
附上工程: 5110-C2000LAUNCHPAD.zip (248.07 KB, 下载次数: 130, 售价: 1 分芯积分)
  1. /*--------------------------------------------
  2. LCD_write_byte: 使用SPI接口写数据到LCD
  3. 输入参数:dt:写入的数据;
  4. command :写数据/命令选择;
  5. ----------------------------------------------*/
  6. void LCD_write_byte(unsigned char dt, unsigned char command)
  7. {
  8. unsigned char i;
  9. sce=0;
  10. dc=command;
  11. for(i=0;i<8;i++)
  12. {
  13. if(dt&0x80)
  14. sdin=1;
  15. else
  16. sdin=0;
  17. dt=dt<<1;
  18. sclk=0;
  19. sclk=1;
  20. }
  21. dc=1;
  22. sce=1;
  23. sdin=1;
  24. }
  25. /*---------------------------------------
  26. LCD_init: 3310LCD初始化
  27. ----------------------------------------- */
  28. void LCD_init(void)
  29. {
  30. res=0;
  31. delayms(10);
  32. res=1;
  33. LCD_write_byte(0x21,0);//初始化Lcd,功能设定使用扩充指令
  34. LCD_write_byte(0xC6,0);//设定液晶偏置电压
  35. LCD_write_byte(0x06,0);//温度校正
  36. LCD_write_byte(0x13,0); //1:48
  37. LCD_write_byte(0x20,0);//使用基本指令
  38. LCD_write_byte(0x0C,0);//设定显示模式,正常显示
  39. }

  40. /*-----------------------------------------------------------------------
  41. LCD_set_XY : 设置LCD坐标函数

  42. 输入参数:X :0-83
  43. Y :0-5
  44. -----------------------------------------------------------------------*/
  45. void LCD_set_XY(unsigned char X, unsigned char Y)
  46. {
  47. LCD_write_byte(0x40 | Y, 0); // column
  48. LCD_write_byte(0x80 | X, 0); // row
  49. }

  50. /*-----------------------------------------------------------------------
  51. LCD_clear : LCD清屏函数
  52. -----------------------------------------------------------------------*/
  53. void LCD_clear(void)
  54. {
  55. unsigned int i;

  56. LCD_write_byte(0x0c, 0);
  57. LCD_write_byte(0x80, 0);

  58. for (i=0; i<504; i++)
  59. LCD_write_byte(0, 1);
  60. }


  61. /*-----------------------------------------------------------------------
  62. LCD_write_char : 显示英文字符

  63. 输入参数:c :显示的字符;
  64. -----------------------------------------------------------------------*/
  65. void LCD_write_char(unsigned char c)
  66. {
  67. unsigned char line;

  68. c -= 32;

  69. for (line=0; line<6; line++)
  70. LCD_write_byte(font6x8[c][line], 1);
  71. }

  72. /*-----------------------------------------------------------------------
  73. LCD_write_english_String : 英文字符串显示函数

  74. 输入参数:*s :英文字符串指针;
  75. X、Y : 显示字符串的位置,x 0-83 ,y 0-5
  76. -----------------------------------------------------------------------*/
  77. void LCD_write_english_string(unsigned char X,unsigned char Y,char *s)
  78. {
  79. LCD_set_XY(X,Y);
  80. while (*s)
  81. {
  82. LCD_write_char(*s);
  83. s++;
  84. }
  85. }

  86. /*-----------------------------------------------------------------------
  87. LCD_write_chinese_string: 在LCD上显示汉字

  88. 输入参数:X、Y :显示汉字的起始X、Y坐标;
  89. ch_with :汉字点阵的宽度
  90. num :显示汉字的个数;
  91. line :汉字点阵数组中的起始行数
  92. row :汉字显示的行间距
  93. 测试:
  94. LCD_write_chi(0,0,12,7,0,0);
  95. LCD_write_chi(0,2,12,7,0,0);
  96. LCD_write_chi(0,4,12,7,0,0);
  97. -----------------------------------------------------------------------*/
  98. void LCD_write_chinese_string(unsigned char X, unsigned char Y,
  99. unsigned char ch_with,unsigned char num,
  100. unsigned char line,unsigned char row)
  101. {
  102. unsigned char i,n;

  103. LCD_set_XY(X,Y); //设置初始位置

  104. for (i=0;i
  105. {
  106. for (n=0; n
  107. {
  108. if (n==ch_with) //写汉字的下半部分
  109. {
  110. if (i==0) LCD_set_XY(X,Y+1);
  111. else
  112. LCD_set_XY((X+(ch_with+row)*i),Y+1);
  113. }
  114. LCD_write_byte(chinese[line+i][n],1);
  115. }
  116. i++;
  117. LCD_set_XY((X+(ch_with+row)*i),Y);
  118. }
  119. }

  120. /*----------------------------------------------
  121. LCD_draw_map : 位图绘制函数

  122. 输入参数:X、Y :位图绘制的起始X、Y坐标;
  123. *map :位图点阵数据;
  124. Pix_x :位图像素(长)
  125. Pix_y :位图像素(宽)
  126. -----------------------------------------------*/
  127. void LCD_draw_bmp_pixel(unsigned char X,unsigned char Y,unsigned char *map,unsigned char Pix_x,unsigned char Pix_y)
  128. {

  129. unsigned int i,n;
  130. unsigned char row;
  131. if (Pix_y%8==0)
  132. {
  133. row=Pix_y/8; //计算位图所占行数
  134. }
  135. else
  136. {
  137. row=Pix_y/8+1;
  138. }
  139. for (n=0;n
  140. {
  141. LCD_set_XY(X,Y);
  142. for(i=0; i
  143. {
  144. LCD_write_byte(map[i+n*Pix_x], 1);
  145. }
  146. Y++; //换行
  147. }
  148. }
复制代码


[ 本帖最后由 IC爬虫 于 2013-1-1 14:00 编辑 ]

最新回复

经典分享,经得起时间的考验,经久不衰。   详情 回复 发表于 2019-11-13 09:29
 
点赞 关注

回复
举报

54

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
顶你,大家新年快乐啊

点评

谢谢!  详情 回复 发表于 2013-1-1 14:14
 
 

回复

2056

帖子

0

TA的资源

五彩晶圆(初级)

板凳
 

回复 沙发 spyx07 的帖子

谢谢!
 
 
 

回复

1万

帖子

26

TA的资源

裸片初长成(高级)

4
 
不错不错。

5110的LCD现在还在用啊。老掉牙了。


楼主LCD_write_byte()函数使用SPI会更好的。

[ 本帖最后由 dontium 于 2013-1-1 15:06 编辑 ]

点评

我好多项目里都用5110,不为别的,只为轻巧。没有什么老不老的问题,做产品不就这样么,满足性能就好,何来老不老。  详情 回复 发表于 2013-1-6 22:28
楼主用的就是SPI通信啊,软件模拟的,如果使用硬件SPI模块,可以怎么做呢  详情 回复 发表于 2013-1-3 00:56
用什么替代好呀?  详情 回复 发表于 2013-1-1 18:01
我只有5110液晶了!  详情 回复 发表于 2013-1-1 15:19
 
 
 

回复

2056

帖子

0

TA的资源

五彩晶圆(初级)

5
 

回复 4楼 dontium 的帖子

我只有5110液晶了!
 
 
 

回复

1453

帖子

18

TA的资源

纯净的硅(高级)

6
 
元旦快乐
 
 
 

回复

474

帖子

2

TA的资源

纯净的硅(初级)

7
 
顶一个~~~
 
 
 

回复

5276

帖子

5

TA的资源

裸片初长成(中级)

8
 
原帖由 dontium 于 2013-1-1 15:02 发表
不错不错。

5110的LCD现在还在用啊。老掉牙了。


楼主LCD_write_byte()函数使用SPI会更好的。
用什么替代好呀?

点评

不是替代。 函数中,楼主使用的是控制IO的状态的方法向LCD发串行数据。当然不如SPI的效率高了  详情 回复 发表于 2013-1-1 18:07
 
个人签名没工作,没女人老婆,没宽带 ,  没钱
 
 

回复

1万

帖子

26

TA的资源

裸片初长成(高级)

9
 
原帖由 wangfuchong 于 2013-1-1 18:01 发表
用什么替代好呀?

不是替代。

函数中,楼主使用的是控制IO的状态的方法向LCD发串行数据。当然不如SPI的效率高了

点评

晕,我是问用什么替代5110的LCD好?  详情 回复 发表于 2013-1-1 19:44
 
 
 

回复

384

帖子

2

TA的资源

纯净的硅(初级)

10
 
不错哈   顶一个!
 
 
 

回复

5276

帖子

5

TA的资源

裸片初长成(中级)

11
 

回复 9楼 dontium 的帖子

晕,我是问用什么替代5110的LCD好?

点评

现在好多点阵的LCD使用SPI接口,如HM12864  详情 回复 发表于 2013-1-1 23:01
 
个人签名没工作,没女人老婆,没宽带 ,  没钱
 
 

回复

1万

帖子

26

TA的资源

裸片初长成(高级)

12
 

回复 11楼 wangfuchong 的帖子

现在好多点阵的LCD使用SPI接口,如HM12864

点评

省电么?  详情 回复 发表于 2013-1-2 13:51
 
 
 

回复

19

帖子

0

TA的资源

一粒金砂(中级)

13
 
新年快乐  大吉大利  万事如意
 
 
 

回复

5276

帖子

5

TA的资源

裸片初长成(中级)

14
 
原帖由 dontium 于 2013-1-1 23:01 发表
现在好多点阵的LCD使用SPI接口,如HM12864
省电么?
 
个人签名没工作,没女人老婆,没宽带 ,  没钱
 
 

回复

54

帖子

0

TA的资源

一粒金砂(中级)

15
 

回复 4楼 dontium 的帖子

楼主用的就是SPI通信啊,软件模拟的,如果使用硬件SPI模块,可以怎么做呢

点评

过去在做ADS8332时,用的LCD是SPI接口的,使用的是C2000 SPI控制显示的,你可以找找。  详情 回复 发表于 2013-1-3 17:22
 
 
 

回复

1万

帖子

16

TA的资源

版主

16
 

不错,顶个

 
个人签名http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr
 
 

回复

1万

帖子

26

TA的资源

裸片初长成(高级)

17
 

回复 15楼 spyx07 的帖子

过去在做ADS8332时,用的LCD是SPI接口的,使用的是C2000 SPI控制显示的,你可以找找。
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(中级)

18
 

回复 4楼 dontium 的帖子

我好多项目里都用5110,不为别的,只为轻巧。没有什么老不老的问题,做产品不就这样么,满足性能就好,何来老不老。

点评

做产品,为了减小产品的验证,一般希望仍然使用过去的东西,这是正常的。如果它的供货有来源,也是可以的。  详情 回复 发表于 2013-1-6 23:54
 
 
 

回复

1万

帖子

26

TA的资源

裸片初长成(高级)

19
 

回复 18楼 cools1860 的帖子

做产品,为了减小产品的验证,一般希望仍然使用过去的东西,这是正常的。如果它的供货有来源,也是可以的。
 
 
 

回复

51

帖子

0

TA的资源

一粒金砂(中级)

20
 
很好,我很多小玩意儿也用5110,不过这次学F28027这款片,还不会用
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表