找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3219|回复: 0
打印 上一主题 下一主题
收起左侧

STC12单片机驱动IIC液晶屏(裸屏)源程序

[复制链接]
跳转到指定楼层
楼主
一个IIC的1.4寸小裸屏,目前没有字库和显示函数,只完成了一个线的显示,有懂的提个思路。清屏也是不完美的。
制作出来的实物图如下:


单片机源程序如下:
  1. #include "STC12C5A60S2.H"
  2. #define uchar unsigned char
  3. #define uint unsigned int


  4. uchar code LCD_DATA[1717] = {    //全屏图片
  5. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  6. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X0C,0XFC,0X00,0X00,
  7. 0X00,0X00,0XC0,0X0F,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XC0,0X0F,0XFC,0X00,
  8. 0X00,0X00,0X00,0XC0,0X0F,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XFC,
  9. 0XF0,0X03,0X00,0X00,0XC0,0X0F,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,
  10. 0XFC,0XF0,0X03,0X00,0X00,0XC0,0X0F,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  11. 0X3F,0XFC,0XF0,0X03,0X00,0X00,0XC0,0X0F,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  12. 0XFC,0XFF,0XFC,0XF0,0X03,0X00,0X00,0XC0,0X0F,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  13. 0X00,0XFF,0XFF,0XFC,0XF0,0X03,0X00,0X00,0XC0,0X0F,0X00,0X00,0X00,0X00,0X00,0X00,
  14. 0X00,0XC0,0XFF,0XFF,0XFF,0XFF,0X3F,0X00,0X00,0XC0,0XFF,0XFF,0XFF,0XFF,0X3F,0X00,
  15. 0X00,0X00,0XC0,0XCF,0XFF,0XFF,0XFF,0X3F,0X00,0X00,0XC0,0XFF,0XFF,0XFF,0XFF,0X3F,
  16. 0X00,0X00,0X00,0XC0,0XCF,0XCF,0XFF,0XFF,0X3F,0X00,0X00,0XC0,0XFF,0XFF,0XFF,0XFF,
  17. 0X3F,0X00,0X00,0X00,0XC0,0XCF,0X0F,0XFF,0XF0,0X03,0X00,0X00,0XC0,0XFF,0XFF,0XFF,
  18. 0XFF,0X3F,0X00,0X00,0X00,0XC0,0X0F,0X3F,0XFF,0XF0,0X03,0X00,0X00,0XC0,0X0F,0X00,
  19. 0XF0,0X03,0X00,0X00,0X00,0X00,0XC0,0X0F,0X3F,0XFC,0XF3,0X03,0X00,0X00,0XC0,0X0F,
  20. 0X00,0XF0,0X03,0X00,0X00,0X00,0X00,0XC0,0X0F,0X3F,0XFC,0XFF,0X03,0X00,0X00,0XC0,
  21. 0X0F,0X00,0XF0,0X03,0X00,0X00,0X00,0X00,0XC0,0X0F,0X3F,0XFC,0X0F,0X00,0X00,0X00,
  22. 0XC0,0X0F,0X00,0XF0,0X03,0X00,0X00,0X00,0X00,0XC0,0X0F,0XFF,0XFC,0X3F,0X00,0X00,
  23. 0X00,0XC0,0X0F,0X00,0XF0,0X03,0X00,0X00,0X00,0X00,0XC0,0XFF,0XFC,0XFC,0XFC,0X00,
  24. 0X00,0X00,0XC0,0X0F,0X00,0XF0,0X03,0X00,0X00,0X00,0X00,0XC0,0XFF,0X3C,0XFC,0XF0,
  25. 0X03,0X00,0X00,0XC0,0X0F,0X00,0XF0,0X03,0X00,0X00,0X00,0X00,0X00,0X3F,0X0C,0XFC,
  26. 0XF0,0X00,0X00,0X00,0XC0,0X0F,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  27. 0XFC,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  28. 0X00,0XFC,0X00,0X00,0X00,0X00,0X00,0X0C,0X00,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,
  29. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0XF0,0XF0,0XC0,0X03,0X00,0X00,0X00,
  30. 0XC0,0X0F,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0XF3,0XF0,0XCF,0X03,0X00,0X00,
  31. 0X00,0XC0,0X0F,0XC0,0X0F,0XC0,0X0F,0X00,0X00,0XF0,0XC3,0XF3,0XF0,0XFF,0X03,0X00,
  32. 0X00,0X00,0XC0,0X0F,0XC0,0X0F,0XC0,0X0F,0X00,0X00,0XF0,0X03,0XF0,0XF0,0XCF,0X3F,
  33. 0X00,0X00,0X00,0XC0,0X0F,0XC0,0X0F,0XC0,0X0F,0X00,0X00,0XF0,0XFF,0XFF,0XFF,0XC0,
  34. 0X3F,0X00,0X00,0X00,0XC0,0X0F,0XC0,0X0F,0XC0,0X0F,0X00,0X00,0XC0,0XFF,0XFF,0XFF,
  35. 0XC0,0X3F,0X00,0X00,0X00,0XC0,0X0F,0XC0,0X0F,0XC0,0X0F,0X00,0X00,0X00,0XC0,0XF0,
  36. 0XF0,0XFF,0X03,0X00,0X00,0X00,0XC0,0X0F,0XC0,0X0F,0XC0,0X0F,0X00,0X00,0X00,0XF0,
  37. 0XF3,0XF0,0XFF,0X03,0X00,0X00,0X00,0XC0,0X0F,0XC0,0X0F,0XC0,0X0F,0X00,0X00,0X00,
  38. 0XFC,0XF3,0XF0,0XCC,0X03,0X00,0X00,0X00,0XC0,0XFF,0XFF,0XFF,0XFF,0X0F,0X00,0X00,
  39. 0XC0,0X33,0XF0,0XF0,0XC0,0X03,0X00,0X00,0X00,0XC0,0XFF,0XFF,0XFF,0XFF,0X0F,0X00,
  40. 0X00,0XF0,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XC0,0XFF,0XFF,0XFF,0XFF,0X0F,
  41. 0X00,0X00,0XC0,0XFF,0XFF,0XFF,0XFF,0X03,0X00,0X00,0X00,0XC0,0X0F,0XC0,0X0F,0XC0,
  42. 0X0F,0X00,0X00,0X00,0XFC,0XFF,0XFF,0XFF,0X03,0X00,0X00,0X00,0XC0,0X0F,0XC0,0X0F,
  43. 0XC0,0X0F,0X00,0X00,0X00,0X00,0XFC,0XFF,0XFF,0X03,0X00,0X00,0X00,0XC0,0X0F,0XC0,
  44. 0X0F,0XC0,0X0F,0X00,0X00,0X00,0X00,0X00,0XFC,0XC0,0X0F,0X00,0X00,0X00,0XC0,0X0F,
  45. 0XC0,0X0F,0XC0,0X0F,0X00,0X00,0XF0,0XFF,0XFF,0XFF,0XC0,0X0F,0X00,0X00,0X00,0XC0,
  46. 0X0F,0XC0,0X0F,0XC0,0X0F,0X00,0X00,0XF0,0XFF,0XFF,0XFF,0XC0,0X0F,0X00,0X00,0X00,
  47. 0XC0,0X0F,0XC0,0X0F,0XC0,0X0F,0X00,0X00,0XF0,0XFF,0XFF,0XFF,0X00,0X3F,0X00,0X00,
  48. 0X00,0XC0,0X0F,0XC0,0X0F,0XC0,0X0F,0X00,0X00,0X00,0X00,0X00,0XFC,0X00,0X3F,0X00,
  49. 0X00,0X00,0XC0,0X0F,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFC,0X00,0X00,
  50. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  51. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFC,0X00,0X00,0X00,0X00,0XF0,0XFF,0XFF,0X00,
  52. 0X00,0X00,0X00,0X00,0X00,0XC0,0XFF,0X0F,0XFC,0XF0,0X03,0X00,0X00,0XF0,0XFF,0XFF,
  53. 0X00,0X00,0X00,0X00,0X00,0X00,0XF0,0XFF,0XFF,0XFC,0XF0,0X03,0X00,0X00,0XF0,0XFF,
  54. 0XFF,0XF0,0XFF,0X0F,0X00,0X00,0X00,0X00,0XFC,0XFF,0XFC,0XF0,0X03,0X00,0X00,0XC0,
  55. 0X0F,0XFC,0XF0,0XFF,0X0F,0X00,0X00,0X00,0X00,0X3F,0X00,0XFC,0XFF,0X3F,0X00,0X00,
  56. 0XC0,0X0F,0XFC,0XF0,0XFF,0X0F,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0X3F,0X00,
  57. 0X00,0XC0,0X0F,0XFC,0XF0,0XC3,0X0F,0X00,0X00,0X00,0XC0,0XFF,0XFF,0XFF,0XFF,0X3F,
  58. 0X00,0X00,0XF0,0XFF,0XFF,0XF0,0XC3,0X0F,0X00,0X00,0X00,0XC0,0XFF,0XFF,0XFF,0XF0,
  59. 0X03,0X00,0X00,0XF0,0XFF,0XFF,0XF0,0XC3,0X0F,0X00,0X00,0X00,0XC0,0X0F,0X3F,0XFC,
  60. 0XF0,0X03,0X00,0X00,0XF0,0XFF,0XFF,0XF0,0XC3,0X0F,0X00,0X00,0X00,0XC0,0X0F,0X3F,
  61. 0XFC,0XF0,0X03,0X00,0X00,0X00,0X00,0X00,0XF0,0XC3,0X0F,0X00,0X00,0X00,0XC0,0X0F,
  62. 0X00,0X3F,0X00,0X00,0X00,0X00,0XF0,0XFF,0XFF,0XF0,0XC3,0X0F,0X00,0X00,0X00,0XC0,
  63. 0X0F,0X00,0X3F,0XC0,0X0F,0X00,0X00,0XF0,0XFF,0XFF,0XF0,0XC3,0X0F,0X00,0X00,0X00,
  64. 0XC0,0X0F,0X00,0X3F,0XC0,0X0F,0X00,0X00,0XF0,0XFF,0XFF,0XF0,0XC3,0X0F,0X00,0X00,
  65. 0X00,0XC0,0X0F,0X00,0X3F,0XC0,0X0F,0X00,0X00,0XC0,0X0F,0XFC,0XF0,0XC3,0X0F,0X00,
  66. 0X00,0X00,0XC0,0XCF,0XFF,0XFF,0XFF,0X0F,0X00,0X00,0XC0,0X0F,0XFC,0XF0,0XFF,0X0F,
  67. 0X00,0X00,0X00,0XC0,0XCF,0XFF,0XFF,0XFF,0X0F,0X00,0X00,0XC0,0X0F,0XFC,0XF0,0XFF,
  68. 0X0F,0X00,0X00,0X00,0XC0,0XCF,0XFF,0XFF,0XFF,0X0F,0X00,0X00,0XF0,0XFF,0XFF,0XF0,
  69. 0XFF,0X0F,0X00,0X00,0X00,0XC0,0X0F,0X00,0X3F,0XC0,0X0F,0X00,0X00,0XF0,0XFF,0XFF,
  70. 0X00,0X00,0X00,0X00,0X00,0X00,0XC0,0X0F,0X00,0X3F,0XC0,0X0F,0X00,0X00,0XF0,0XFF,
  71. 0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0XC0,0X0F,0X00,0X3F,0XC0,0X0F,0X00,0X00,0X00,
  72. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X0C,0X00,0X00,0X00,0X00,0X00,0X00,
  73. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  74. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XC0,0X00,0X00,0XF0,0XFF,0X0F,
  75. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XF0,0XC3,0X03,0XF0,0XFF,
  76. 0X0F,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XC0,0XCF,0XF3,0XF0,
  77. 0XFF,0X0F,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XC0,0XCF,0XFF,
  78. 0X03,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,
  79. 0XFF,0XF3,0XFF,0X3F,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  80. 0XFF,0XFF,0XF3,0XFF,0X3F,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  81. 0XF0,0XC3,0XFF,0XFF,0XFF,0X3F,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  82. 0X00,0XF0,0XC3,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  83. 0X00,0X00,0XF0,0XFF,0XFC,0XFC,0X03,0X0F,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  84. 0X00,0X00,0X00,0XF0,0XFF,0XFC,0XFC,0XF3,0X0F,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  85. 0X00,0X00,0X00,0X00,0XC0,0XFF,0XFC,0XF0,0XFF,0X0F,0X00,0X00,0X00,0X00,0X00,0X00,
  86. 0X00,0X00,0X00,0X00,0X00,0X00,0XC0,0XF0,0XC0,0X3F,0X0F,0X00,0X00,0X00,0X00,0X00,
  87. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XC3,0XF0,0XC3,0X0F,0X0F,0X00,0X00,0X00,0X00,
  88. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XCF,0XFC,0XC3,0X0F,0X0F,0X00,0X00,0X00,
  89. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XC0,0XCF,0XFF,0XC0,0X3F,0X0F,0X00,0X00,
  90. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XC0,0XC3,0X0F,0XC0,0XFF,0X0F,0X00,
  91. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XC0,0XC3,0X03,0XF0,0XF3,0X0F,
  92. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XF0,0XF3,0X03,0XF0,0XC0,
  93. 0X0F,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XC0,0XC0,0X00,0XF0,
  94. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  95. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  96. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  97. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  98. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  99. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  100. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  101. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  102. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  103. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  104. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  105. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  106. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  107. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  108. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  109. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  110. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  111. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  112. 0X00,0X00,0X00,0X00,0X00,
  113. };
  114. uchar code LCD_INT[74] =          //LCD的初始化指令,具体含义写在后面
  115.         {
  116.                 0X78,0X80,        //选择地址,0X3C,加上W/R为0X78
  117.                 0X01,0X80,        //进0页
  118.                 0X09,0X80,        //选1页PS:选页指令在0页。
  119.                 0X06,0X80,        //选择正常显示模式
  120.                 0X12,0X80,        //选择偏置模式
  121.                 0X40,0X80,        //选择前8行的显示模式??
  122.                 0X01,0X80,        //回0页
  123.                 0X16,0X80,        //选择垂直模式,掉电模式
  124.                 0x20,0x80,        //选择Y地址,默认为0,可不设置。
  125.                 0X40,0X80,        //选择X地址,默认为0,可不设置.
  126.                 0X0C,0X80,        //翻到4页
  127.                 0X05,0X80,        //打开显示和直接驱动模式(电压倍增器)
  128.                 0X01,0X80,        //回0页
  129.                 0X0A,0X80,        //选2页
  130.                 0X08,0X80,        //设定2倍VLCD电压
  131.                 0X12,0X80,        //设定温度系数2
  132.                 0X04,0X80,        //设定VLCD为低,并关闭高压发生器
  133.     0XC8,0X80,        //设定VLCD电压 ~=7.74V  //4.5+72*0.045
  134.                 0X01,0X80,        //回0页
  135.                 0X0B,0X80,        //翻到3页
  136.                 0X40,0X80,        //选择灰度0(寄存器)
  137.                 0X80,0X80,        //灰度0设为0
  138.           0X41,0X80,        //选额灰度1
  139.                 0X94,0X80,        //灰度1设为20
  140.                 0X42,0X80,        //选择灰度2
  141.                 0XA8,0X80,        //灰度2设为40
  142.                 0X43,0X80,        //选择灰度3
  143.                 0XBF,0X80,        //灰度3设为63
  144.                 0X01,0X80,        //回0页
  145.                 0X0A,0X80,        //选择2页
  146.                 0X05,0X80,        //设定VLCD为低,并打开高压发生器
  147.                 0X01,0X80,        //回0页
  148.                 0X12,0X80,        //打开操作模式,设定垂直模式 ,交换MSB和LSB 0X12:不交换MSB和LSB
  149.                 0X0A,0X80,        //翻到2页
  150.                 0X09,0X80,        //设定VLCD为3X
  151.                 0X0A,0X80,        //设定VLCD为4X
  152.                 0X0B,0X40,        //设定VLCD为5x,X040:后面开始写DDRAM显示数据
  153.         };
  154.       
  155. //delay ----------------------------------------------------------------------
  156. void delayus()
  157. {
  158.         uchar i=6;
  159.         while(i--);
  160. }


  161. void delayms(int a)
  162. {
  163.         uchar i, j;
  164.         i = 32;
  165.         j = 40;
  166.         while (j--)
  167.         {        while (i--);
  168.         }
  169.         }




  170. //I2C init ----------------------------------------------------------------------
  171. sbit I2CRST = P1^0; //定义I2C引脚
  172. sbit SDA = P1^1;
  173. sbit SCL =P1^2;
  174. void I2C_SOFT_START() //软件模拟I2C 开始信号
  175. {
  176.         SDA = 1;
  177.         delayus();
  178.         SCL = 1;
  179.         delayus();
  180.         SDA = 0;
  181.         delayus();
  182.         SCL        =        0;
  183.         SDA        = 1;
  184. }


  185. void I2C_SOFT_STOP() //软件模拟I2C 停止信号
  186. {
  187.         SDA = 0;
  188.         delayus();
  189.         SCL = 1;
  190.         delayus();
  191.         SDA = 1;
  192.         delayus();
  193.         SCL        =        0;
  194.         SDA        = 1;
  195. }




  196. void I2C_SOFT_SEND(uchar S_SND)   //软件模拟I2C,写1字节数据
  197. {
  198.         uchar i,SOFT_ACK,SND;
  199.         SOFT_ACK = 1;
  200. while (SOFT_ACK)      
  201. {
  202.         SND = S_SND;
  203. for (i=8;i!=0;i--)
  204.         {
  205.                 if(SND & 0X80)
  206.                         SDA = 1;
  207.                 else SDA = 0;
  208.                 SND <<=1;
  209.                 delayus();
  210. //                delayus();
  211.                 SCL = 1;
  212.                 delayus();
  213. //                delayus();
  214.                 SCL=0;
  215.                 delayus();
  216.         }
  217.                 SDA =1;
  218.                 delayus();
  219.                 SCL = 1;
  220.                 if(~SDA)
  221.                 {
  222.                         delayus();  //貌似少了这个延时,有时候不能顺利初始化
  223.                         SOFT_ACK = 0; //判断是否重发
  224.                 }SCL=0;
  225. }
  226. }


  227. //LCD INT ------------------------------------------------------
  228. void LCD_INIT()
  229. {
  230.         uint num;
  231.         I2CRST = 0;                                                //RST腿拉低
  232.         delayms();
  233.         I2CRST = 1;
  234.   delayms();
  235.         delayms();
  236.         delayms();
  237.         delayms();
  238.         I2C_SOFT_START();                        //发送开始信号
  239.                 for(num=0;num<=74;num++)
  240.                 {
  241.                         I2C_SOFT_SEND(LCD_INT[num]);


  242.                 }                                                                              
  243.         }


  244. void LCD_SET_XY(uchar x,y) //设定在X,Y位置写数据
  245. {
  246.         uchar i;


  247. I2C_SOFT_STOP();                                //芯片没有返回指令列表的指令,SO,结束I2C,再打开。
  248.         delayus();
  249. I2C_SOFT_START();      


  250. I2C_SOFT_SEND(0X78);        //选地址
  251. I2C_SOFT_SEND(0X80);        //这个蛋疼的芯片,每次写一条指令都要说明下一条是指令还是数据,所以这么多0X80。
  252. I2C_SOFT_SEND(0X01);        //选页指令
  253. I2C_SOFT_SEND(0X80);      
  254. I2C_SOFT_SEND(0X040|y);        //设置Y地址,(0-16)
  255. I2C_SOFT_SEND(0X80);               
  256. I2C_SOFT_SEND(0X80|x);        //设置X地址,        (0-100)
  257. I2C_SOFT_SEND(0X40);                //0x40表示后面开始写数据
  258. }
  259. void map() //显示一幅面
  260. {
  261.         uint num;
  262.                         for(num=0;num<=1717;num++)
  263.                 {
  264.                         I2C_SOFT_SEND(LCD_DATA[num]);


  265.                 }      
  266.         }
  267. void LSC(uchar X,uchar Y) //清屏
  268. {
  269.    int n;
  270.         LCD_SET_XY(X,Y);        //列、行      
  271.         for(n=1717;n>0;n--)        //1634个点
  272.         {
  273.                 I2C_SOFT_SEND(0X00);
  274.         }
  275.         }      
  276. void NLSC() //反清屏
  277. {
  278.    int n;
  279.         for(n=1717;n>0;n--)        //1634个点
  280.         {
  281.                 I2C_SOFT_SEND(0XFF);
  282.         }
  283.         }      
  284. void HX(uchar X,uchar Y) //划一条线
  285. {
  286.    uchar n;
  287.         LCD_SET_XY(X,Y);        //列、行      
  288.         for(n=16;n>0;n--)        //16个点
  289.         {
  290.                 I2C_SOFT_SEND(0XFF);
  291.         }
  292.         }
  293. void HK(int n,y) //划一条粗线
  294. {

  295.         for(n;n>0;n--)        //16个点
  296.         {
  297.         HX(y+n,0);//列、行 划一条线
  298.         }
  299. }
  300. void main()
  301. {


  302.   LCD_INIT();                //LCD初始化      
  303.   LSC();//清屏      
  304.         //NLSC();//反清屏
  305.         //map();//显示一幅面
  306.         while(1)
  307. {
  308.         HK(30,65);//列宽、列位置 划一条粗线


  309.         HX(2,0);//列宽、列位置 划一条线
  310.       
  311.       
  312. }
  313. }
复制代码

所有资料51hei提供下载:
1.4显IIC测试STC12OK2.zip (76.11 KB, 下载次数: 19)




评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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