数码之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 202|回复: 21

[other] 屏幕点不亮,郁闷

[复制链接]
发表于 昨天 22:08 | 显示全部楼层 |阅读模式
想把许老师电桥的屏幕换成12864的,以前老王家买的1.7寸ST7567的屏,死活点不亮,是哪里问题呢?



  1. #include <ai8051u.h>
  2. #include "font16.h"


  3. // 引脚定义
  4. sbit LCD_BL = P2^7; //
  5. sbit LCD_SDA = P2^6; //
  6. sbit LCD_CLK = P2^5; //
  7. sbit LCD_RS = P2^4; //
  8. sbit LCD_RST = P2^3; //
  9. sbit LCD_CS = P2^2; //
  10. extern void delay_ms(unsigned int ms);
  11. extern void delay_us(unsigned int us);




  12. /******************** LCD写命令函数(简化CS) ********************/
  13. void LCD_Write_Command(unsigned char cmd) {

  14. char i;
  15. LCD_CS=0;
  16. LCD_RS=0;
  17. for(i=0;i<8;i++){
  18.    LCD_CLK=0;  
  19.    if(cmd&0x80) LCD_SDA=1; //置数据线
  20.    else       LCD_SDA=0;
  21.    LCD_CLK=1;  //产生时钟上升沿
  22.    cmd <<= 1;
  23. }
  24. LCD_CS=1;
  25. }

  26. /******************** LCD写数据函数(简化CS) ********************/
  27. void LCD_Write_Data(unsigned char dat) {
  28. char i;
  29. LCD_CS=0;
  30. LCD_RS=1;
  31. for(i=0;i<8;i++){
  32.    LCD_CLK=0;
  33.    if(dat&0x80) LCD_SDA=1; //置数据线
  34.    else       LCD_SDA=0;
  35.    LCD_CLK=1;  //产生时钟上升沿
  36.    dat <<= 1;
  37. }
  38. LCD_CS=1;
  39. }

  40. /******************** lcd显示清屏 ********************/
  41. void LCD_Claer() {
  42.    unsigned char x,y;
  43.          for(y=0;y<8;y++)
  44.                         {
  45.                                  LCD_Write_Command(0xb0+y);//页地址
  46.                                  LCD_Write_Command(0x00);//低地址
  47.                                  LCD_Write_Command(0x10);//高地址
  48.                                 for(x=0;x<128;x++)
  49.                                         LCD_Write_Data(0x00);
  50.                         }
  51.         }


  52. /******************** LCD初始化函数(优化CS控制) ********************/
  53. void LCD_Init() {

  54.     // 硬件复位
  55.     LCD_RST = 0;
  56.     delay_us(100);
  57.     LCD_RST = 1;
  58.    delay_us(50);
  59.     // 开始通信:永久拉低CS
  60.     LCD_CS = 0;   
  61.     // 初始化序列
  62.     LCD_Write_Command(0xE2);  // 软复位
  63.     delay_us(200);   
  64.     LCD_Write_Command(0xA2);  // 1/9 bias
  65.           delay_us(50);  
  66.     LCD_Write_Command(0xA0);  // ADC正常方向
  67.           delay_us(50);
  68.     LCD_Write_Command(0xC8);  // COM输出反向   
  69.     delay_us(50);        
  70.     LCD_Write_Command(0xA4);  // 正常显示(非全亮)
  71.           delay_us(50);
  72.     LCD_Write_Command(0xA6);  // 正常显示(非反白)
  73.           delay_us(50);
  74.     LCD_Write_Command(0x24);  // V0电阻设置   
  75.                 delay_us(50);
  76.     // 对比度设置
  77.     LCD_Write_Command(0x81);
  78.     LCD_Write_Command(0x28);  // 对比度值   
  79.                 delay_us(50);
  80.     // 升压电路设置
  81.     LCD_Write_Command(0xF8);
  82.     LCD_Write_Command(0x00);  // 升压比2x   
  83.     // 分步开启电源
  84.     LCD_Write_Command(0x2C);  // Booster on
  85.     delay_us(50);
  86.     LCD_Write_Command(0x2E);  // Regulator on
  87.     delay_us(50);
  88.     LCD_Write_Command(0x2F);  // Follower on
  89.    delay_us(20);
  90.      LCD_Claer() ;
  91.     LCD_Write_Command(0x40);  // 显示起始行0
  92.     LCD_Write_Command(0xAF);  // 开启显示
  93. }
  94. /******************** 设置显示位置 ********************/
  95. void LCD_SetPosition(unsigned char x, unsigned char y) {
  96.     LCD_Write_Command(0xB0 | y);      // 设置页地址
  97.     LCD_Write_Command(0x10 | (x >> 4)); // 设置列地址高4位
  98.     LCD_Write_Command(x & 0x0F);      // 设置列地址低4位
  99. }
  100. /******************** 显示字符调用font文件的函数 ********************/
  101. //x横坐标,y页地址=纵坐标除以8,注意每个字符高度占用16bit=2page,最多完整显示4page,y不是座标!
  102. //如果用font文件,那么只能完美显示4行y=0-1,2-3,4-5,6-7page.bit 这个参数是反显一个像素,没有用st7567的命令而是用像素取反运算
  103. void Display_Char(unsigned char x, unsigned char y, unsigned char ch_index,bit b) {
  104.     unsigned char i;
  105.     LCD_SetPosition(x, y);
  106.     ch_index= ch_index-32;
  107.          for(i=0;i<8;i++)
  108.                         {
  109.                                 if(b)
  110.                                         LCD_Write_Data(~F8X16[ch_index*16+i]);
  111.   else
  112.                                         LCD_Write_Data(F8X16[ch_index*16+i]);
  113.                         }//P8x16上半部分显示
  114.   LCD_SetPosition(x,y+1);
  115.         for(i=0;i<8;i++)
  116.                         {
  117.                                 if(b)
  118.                                         LCD_Write_Data(~F8X16[ch_index*16+i+8]);
  119.         else
  120.                                         LCD_Write_Data(F8X16[ch_index*16+i+8]);
  121. }//P8x16下半部分显示
  122. }

  123. /******************** 显示字符串调用font文件的函数 ********************/
  124. /*函数名称:Display_Chars
  125. 功能:Lcd显示字符串
  126. 输入:x坐标,y坐标其实是8y行,因为每Page占用8行,字符串,b反显
  127. 输出:无
  128. 备注:x<=128,y<=64
  129. *********************************/
  130. void Display_Chars(unsigned char x,y,unsigned char *ch,bit b)
  131. {
  132. while(*ch!='\0')
  133. {
  134.   if(x>120){x=0;y+=2;}//如果x在最右边,则回到左边且下移1页=8行
  135.         Display_Char(x,y,*ch++,b);
  136.   x+=8;
  137. }
  138. }
  139. /*********************************
  140. 函数名称:Display_pic
  141. 功能:Lcd显示图片
  142. 输入:x起始坐标,y起始坐标,x终止坐标,y终止坐标,图片数组
  143. 输出:无
  144. 备注:x<=128,y<=64,x1<x2,y1<y2
  145. *********************************/
  146. void Display_pic(unsigned char x0,y0,x1,y1,unsigned char *pic)
  147. {
  148.         unsigned char x,y;

  149.   if(y1%8==0) y=y1/8;      
  150.   else y=y1/8+1;
  151.         for(y=y0;y<y1;y++)
  152.         {
  153.                 LCD_SetPosition(x0,y);
  154.     for(x=x0;x<x1;x++)
  155.             {      
  156.                     LCD_Write_Data(*pic++);
  157.             }
  158.         }
  159. }
复制代码


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
 楼主| 发表于 昨天 22:13 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

 楼主| 发表于 昨天 22:14 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

 楼主| 发表于 昨天 22:16 | 显示全部楼层
游客请登录后查看回复内容

打赏

参与人数 1家元 +30 收起 理由
jpdd521 + 30 我也不会,但是可以精神上支持一下。.

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 昨天 23:34 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 12 小时前 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 11 小时前 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 11 小时前 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 1 反对 0

使用道具 举报

发表于 11 小时前 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 11 小时前 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 11 小时前 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 10 小时前 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 9 小时前 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 9 小时前 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 5 小时前 | 显示全部楼层
游客请登录后查看回复内容

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
回复 支持 反对

使用道具 举报

发表于 5 小时前 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 5 小时前 | 显示全部楼层
游客请登录后查看回复内容

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
回复 支持 反对

使用道具 举报

发表于 5 小时前 | 显示全部楼层
游客请登录后查看回复内容

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
回复 支持 反对

使用道具 举报

发表于 4 小时前 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 4 小时前 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 微信登录

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2026-4-8 19:54 , Processed in 0.234000 second(s), 10 queries , Gzip On, Redis On.

Powered by Discuz!

© MyDigit.Net Since 2006

快速回复 返回顶部 返回列表