和之前那块一起买的。又画了这个屏幕驱动,还画了灯丝电源驱动,和以前画的stm8核心板在JLC拼板。

亚光黑颜色,不单独收钱!

切好水洗吹干!

忘记给排针加丝印,手写代之。

焊接的时候,脑子发热,以为把层搞错了,结果就掰PT6311引脚,然后反向焊接。焊接好通电电流一下子上1A,检查半天发现没反!

调PT6311程序时顺便发现上次pcb画错了grid和segment,233.当时死活想不通芯片为什么这样设计,原来是自己搞反了。

  1. #include "pt6311.h"
  2. #include "stdio.h"
  3. #include <string.h>
  4. #include <intrins.h>
  5. //auth:katachi
  6. //time:2017-12-30
  7. //func:driver for pt6311
  8. //transplant to stm8 time:2018-1-14 17:
  9. //modify for 51 :2019年4月21日22:30:57
  10. //auto addr sequence:
  11. /*
  12. OpenStrobe_PT6311();
  13. WriteByte_PT6311(CMD_ModeSetting|0x00);//8grid 20seg
  14.  
  15. OpenStrobe_PT6311();
  16. WriteByte_PT6311(CMD_DataSetting|0x00); ////autoAdd addr
  17.  
  18. OpenStrobe_PT6311();
  19. WriteByte_PT6311(CMD_AddressSetting|0x00); //start addr 0x00
  20. WriteByte_PT6311(0x7e); //seg0-seg7
  21. WriteByte_PT6311(0x18); //seg8-seg15
  22. WriteByte_PT6311(0x2); //seg16-seg23
  23.  
  24. OpenStrobe_PT6311();
  25. WriteByte_PT6311(CMD_DisplaySetting|0x0f);//on 14/16
  26. STB=1;
  27. */
  28. //
  29. sbit DI =P3^;
  30. sbit DO =P1^;
  31. sbit CK =P3^;
  32. sbit STB =P3^;
  33. void Delay1us() //@12.000MHz
  34. {
  35. _nop_();
  36. _nop_();
  37. _nop_();
  38. _nop_();
  39. }
  40. void Delay1ms() //@12.000MHz
  41. {
  42. unsigned char i, j;
  43.  
  44. i = ;
  45. j = ;
  46. do
  47. {
  48. while (--j);
  49. } while (--i);
  50. }
  51. void delay_us(u8 n){
  52. while(n--)Delay1us();
  53. }
  54. void delay_ms(u32 n){
  55. while(n--)Delay1ms();
  56. }
  57. const u8 ADDR[]={
  58. 0x00,0x01,//digit 1
  59. 0x03,0x04,//digit 2
  60. 0x06,0x07,//digit 3
  61. 0x09,0x0a,//digit 4
  62. 0x0c,0x0d,//digit 5
  63. 0x0f,0x10,//digit 6
  64. 0x12,0x13,//digit 7
  65. 0x15,0x16,//digit 8
  66. 0x18,0x19,//digit 9
  67. 0x1B,0x1C,//digit 10
  68. 0x1E,0x1F,//digit 11
  69. 0x21,0x22,//digit 12
  70. 0x24,0x25,//digit 13
  71. 0x27,0x28,//digit 14
  72. 0x2a,0x2b};//digit 15
  73. const u16 font[]={
  74. 0x187e,0xc,0x1b6,0x19e,0x1cc,0x1da,0x1fa,0x1802,0x1fe,0x1de,//0-9
  75. 0x1ee,0x251e,0x72,0x241e,0x1f2,0x1e2,0x17a,0x1ec,0x2412,0x1c,0x48e0,0x70,0x2a6c,0x426c,0x7e,0x1e6,
  76. 0x407e,0x41e6,0x31a,0x2402,0x7c,0x1860,0x546c,0x5a00,0x2a00,0x1812,//a-z
  77. 0x2580,0x180,0x7f80,0x1800,0x2400,0x4200,0x10,0x8000,};//+-*/|\_.
  78. /*
  79. //ascii code :
  80. 0:48
  81. A:65
  82. for number:
  83. dspseg[i]=dspseg[i]-48;
  84. for alphabet:
  85. dspseg[i]=dspseg[i]-65+10;
  86. */
  87. u8 dspbuf[]; //bytes to send
  88. u8 dspseg[]; //character to dis
  89. unsigned int Pow2(u8 y)
  90. {
  91. u16 x=;
  92. if (y)
  93. {
  94. while (y--)
  95. x*=;
  96. }
  97. else
  98. x=;
  99. return x;
  100. }
  101. void OpenStrobe_PT6311(void)
  102. {
  103. STB=;
  104. delay_us();
  105. STB=;
  106. }
  107. void Init_PT6311(void)
  108. {
  109. u8 i;
  110.  
  111. OpenStrobe_PT6311();
  112. WriteByte_PT6311(CMD_ModeSetting|0x00);//8grid 20seg
  113.  
  114. OpenStrobe_PT6311();
  115. WriteByte_PT6311(CMD_DataSetting|0x00); ////autoAdd addr
  116.  
  117. OpenStrobe_PT6311();
  118. WriteByte_PT6311(CMD_DisplaySetting|0x8|);//0x80:on 14/16
  119.  
  120. //all on
  121. OpenStrobe_PT6311();
  122. WriteByte_PT6311(CMD_AddressSetting|0x00);
  123. for (i=;i<;i++){
  124. WriteByte_PT6311(0xff);
  125. }
  126. delay_ms();
  127. //all clr
  128. OpenStrobe_PT6311();
  129. WriteByte_PT6311(CMD_AddressSetting|0x00);
  130. for (i=;i<;i++){
  131. WriteByte_PT6311();
  132. }
  133. delay_ms();
  134. //show number
  135. strcpy(dspseg,"");
  136. for (i=;i<;i++)dspseg[i]=dspseg[i]-;
  137. OpenStrobe_PT6311();
  138. WriteByte_PT6311(CMD_AddressSetting|0x00);
  139.  
  140. for (i=;i!=0xff;i--){
  141. WriteByte_PT6311(font[dspseg[i]]);//low byte
  142. WriteByte_PT6311(font[dspseg[i]]>>);//high byte
  143. WriteByte_PT6311((font[dspseg[i]]&0x8)?0x2:0x0);//replace grid4 with grid18:low byte ----,grid4--- grid4&0x8 to get the segment
  144. }
  145. delay_ms();
  146. //show aplhabet
  147. strcpy(dspseg," HELLOOO");
  148. for (i=;i<;i++)dspseg[i]=dspseg[i]-;
  149. OpenStrobe_PT6311();
  150. WriteByte_PT6311(CMD_AddressSetting|0x00);
  151. for (i=;i!=0xff;i--){//0xff:for overflow
  152. WriteByte_PT6311(font[dspseg[i]]);//low byte
  153. WriteByte_PT6311(font[dspseg[i]]>>);//high byte
  154. WriteByte_PT6311((font[dspseg[i]]&0x8)?0x2:0x0);//replace grid4 with grid18:low byte ----,grid4--- grid4&0x8 to get the segment
  155. }
  156. }
  157. void WriteByte_PT6311(u8 dat)
  158. {
  159. u8 i;
  160.  
  161. CK=;//de-pulldown
  162. for (i=;i<;i++)
  163. {
  164. CK=; //>>200ns
  165. DI=dat&0x01; //send a bit to pt6311's data in pin
  166. dat>>=; //lsb first
  167. CK=;
  168. }
  169. }
  170. u8 ReadByte_PT6311(void)
  171. {
  172. u8 dat,i;
  173. CK=;
  174. delay_us();
  175. for (i=;i<;i++)
  176. {
  177. CK=;//while (j++<10);
  178. delay_us();//tplz tpzl
  179. dat>>=; //lsb first
  180. if (DO)
  181. dat|=0x80; //catch a bit from pt6311's data out pin
  182. CK=;
  183. }
  184. delay_us();//tclk stb
  185. return dat;
  186. }

这个芯片亮品率低,总是有的脚不能输出,这里的grid4通到引脚了但是还是没输出。

飞线到grid18,程序里加判断然后追加赋值解决。

取模绝对不会像上次那样自己算,本来想qt写个小软件。网上一找发现不少米字屏取模软件,PT6311选共阴。然后这个屏0-8的1是a段,再写段小程序左移一位得到字库。

HL-D793G七位蓝色+PT6311驱动的更多相关文章

  1. float 的有效数字为七位是怎么得出来的

    以下内容来自CSDN网友xian_wwq的回答(http://bbs.csdn.net/topics/390874239): float:   1bit(符号位) 8bits(指数位) 23bits( ...

  2. 64位系统安装ODBC驱动的方法

    为了更充分的利用硬件资源,我想很多人都开使用64位操作系统了,同时你可以也发现了在64位操作系统上ODBC的驱动找不到了,所以ODBC的东西都没法用了. 因为2007以前版本的Office只有32位版 ...

  3. 2011年排名前七位的Linux操作系统。

    下面列出了2011年排名前七位的Linux操作系统. Ubuntu Ubuntu 是一个由全球化的专业开发团队建造的操作系统.它包含了所有您需要的应用程序:浏览器.Office 套件.多媒体程序.即时 ...

  4. Qt5.8 下链接 Mysql 错误以及解决方法(无论 Mysql 是什么版本的,64 位 Qt 要用 64 位的 Mysql 驱动,32 位的 Qt 要用 32 位的Mysql 驱动)

    Qt 5.8 下链接 Mysql(Windows 平台下),有朋友会出现一个这个无法连接的错误 QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: ...

  5. 第七章 Rocketmq--消息驱动

    今天咱们接着 上一篇第六章 Sleuth–链路追踪 继续写 SpringCloud Alibaba全家桶 , 第七章 Rocketmq--消息驱动,废话不多说,开始了 7.1 MQ简介 7.1.1 什 ...

  6. SQLYOG导入数据时报错,出现找不到Microsoft office 元驱动程式,并且无法安装64位office Access驱动

    当我们使用mysql导入外部数据时(如Excel表),有时会出现如下的错误问题,即找不到64位access驱动.为了解决这个问题,我们需要下载相应的驱动,通过下图中的点击此链接即可进入下载页面(htt ...

  7. SpringCloud(七)Stream消息驱动

    Stream消息驱动 概述 屏蔽底层消息中间件的差异,降低切换成本,统一消息的编程模型 官网:https://cloud.spring.io/spring-cloud-static/spring-cl ...

  8. Arduino Uno 在win7 64位下的驱动问题

    1.解压[mdmcpq.inf_amd64_neutral_fbc4a14a6a13d0c8.rar],将[mdmcpq.inf_amd64_neutral_fbc4a14a6a13d0c8]文件夹复 ...

  9. 触摸屏 adb调试

    1.adb shell cat /proc/kmsg 这条命令肯定是要放在第一位的,可以打印内核信息,对应于驱动程序中的printk语句. 如果出现以下提示,说明权限不够,可以通过adb root获取 ...

随机推荐

  1. tomcat之过滤器

    过滤器是一种特殊的servlet,也需要在配置文件中进行配置,通过它可以将指定的请求拦截下来,之后对请求处理,处理完之后,将拦截请求放行.实现过滤器也需要实现一个接口叫javax. servlet.F ...

  2. querySelector与getElementBy的区别

    1,querySelector() 方法返回匹配指定 CSS 选择器元素的第一个子元素 . 该方法只返回匹配指定选择器的第一个元素.如果要返回所有匹配元素,需要使用 querySelectorAll( ...

  3. 必备Linux命令和C语言基础

    每一个学习嵌入式单片机的伙伴我相信对于这两个都不陌生,这毕竟是嵌入式单片机的生存之道    所有基础还是要打牢的   有句老话说的好基础不牢地动山摇    下面看下系统的资料吧   希望能对大家有所帮 ...

  4. MFC 修改标题

    1. Overwrite CMainFrame::PreCreateWindow. Clear the style FWS_ADDTOTITLE cs.style &= ~(LONG)FWS_ ...

  5. k8s-No.3-pod进阶

    本章目录 pod环境变量env pod的资源限制resources pod的健康检查-探针 pod的imagepullsecrets 一   pod-env 环境变量就是系统或者程序运行时的预定义的参 ...

  6. Springboot-001-解决nested exception is org.apache.ibatis.binding.BindingException: Parameter 'env' not found. Available parameters are [arg1, arg0, param1, param2]

    环境:Springboot + Mybatis + MySQL + VUE 场景: 前端发出数据比对请求,在服务后台与数据库交互时,接口提示错误信息如下所示: { "code": ...

  7. 汇编-10.0-CALL和RET指令

    call和ret指令都是转移指令,他们都是修改IP,或同时修改CS和IP.它们常被共同用来实现子程序设计. 1.ret和retf ret指令用栈中的数据,修改IP的内容,从而实现近转移: retf指令 ...

  8. gitlab自动备份和定时删除

    GitLab数据手动备份1.GitLab默认备份目录为/var/opt/gitlab/backups,可以修改/etc/gitlab/gitlab.rb里面的默认存放备份文件目录,这里使用默认备份目录 ...

  9. BIML 101 - ETL数据清洗 系列 - BIML 快速入门教程 - 连接数据库执行SQL语句

    BIML 101 - BIML 快速入门教程 第一节 连接数据库执行SQL语句 本小节将用BIML建一个简单的可以执行的包. 新建一个biml文件,贴入下面的代码 1 <Biml xmlns=& ...

  10. 完整工程,deeplab v3+(tensorflow)代码全理解及其运行过程,长期更新

    前提:ubuntu+tensorflow-gpu+python3.6 各种环境提前配好 1.下载工程源码 网址:https://github.com/tensorflow/models 下载时会遇到速 ...