久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2846|回復: 1
打印 上一主題 下一主題
收起左側

[原創設計]STC單片機用無字庫12864顯示中考倒計時天數 附源程序

[復制鏈接]
跳轉到指定樓層
樓主
剛學單片機不久,剛好手上買了12864點陣屏,孩子快中考了,為方便不用每天手動給他更換倒數天數,就琢磨著用單片機加12864顯示屏弄一個自動倒計時天數的小玩意,略表心意的同時,也讓自己能有所提高。

硬件:
STC單片機(STC15W408AS)的開發板;
無字庫的控制芯片0107 /0108并口LCD12864,借用開發板已有的串并轉換芯片實現串行。
因為沒接觸過過12864顯示屏,所以一開始光點亮出字,就廢了我幾天時間。一開始光屏幕背光亮,沒有點陣的陰影出現。搞明白負壓輸出電路和對比度調節電位器后,才將點陣顯示弄好。

軟件:
需求變更:天數每天自動減一,顯示時去掉小時、分鐘和秒數;
在買的開發板配套的軟件中,有12864無字庫的測試代碼。用字模軟件(Sunman字符圖形點陣代碼生成器),選SMG12864C,生成小字的數組,包含“距中考還有”這5個漢字16*16;為美觀和醒目,又生成了大字的數組,包含“天”這1個漢字32*32,和“0-9”十個數,16*32;

通過更改無字庫測試程序,主要是刪除了畫線等函數和語句,增加了大字的字符、字符串顯示函數,可以按意圖顯示出靜態文字和數字了。
增加定時器中斷,加上倒計時的天、時、分、秒語句,實現自動計時。
下來遇到的難題,就是如何動態顯示數字,讓減少的天數這個變量和大字符的數組關聯起來?這個問題困擾了我好幾天,終于在今天搞懂了字符指針含義,通過自建一個將數字變更成字符數組對應元素的函數void num2str(unsigned int dd),在putchar子函數的參數里將數字和對應地址綁到一起,就可以顯示變量了。
完整源程序見附件。因借用了測試源代碼,自己修改添加后,里面會有些冗余或不合理的地方,歡迎指正!

最后但并非不重要的是,要感謝此論壇,給了我很多學習的資料和思路。
作為第一篇發帖,在編輯帖子里總看不到圖片顯示,圖片和文字排版可能混亂,抱歉。。。以此輸出聊表謝意,并與大家共勉!


12864引腳定義.png (13.39 KB, 下載次數: 46)

12864引腳定義

12864引腳定義

51hei圖片_202005251637462.jpg (53.68 KB, 下載次數: 69)

效果1

效果1

51hei圖片_20200525163746.jpg (75.4 KB, 下載次數: 47)

51hei圖片_20200525163746.jpg

51hei圖片_20200525163745.jpg (62.52 KB, 下載次數: 45)

51hei圖片_20200525163745.jpg

51hei圖片_202005251637461.jpg (56.38 KB, 下載次數: 47)

51hei圖片_202005251637461.jpg

main2days_countdown.7z

6.58 KB, 下載次數: 28, 下載積分: 黑幣 -5

倒計數天

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:741842 發表于 2020-5-25 16:52 | 只看該作者
也不知發成功沒有測試一下

單片機源程序如下:
  1. //SMG12864C標準圖形點陣型液晶顯示模塊的演示程序[C51編程語言][MCS51模擬口線接口方式]
  2. //應用產品: SMG12864C SMG12864BV SMG12864A SMG12864D3 標準圖形點陣型液晶顯示模塊
  3. //  本演示程序適用于SMG12864C液晶顯示模塊與MCS51系列單片機采用MCS51模擬口線的
  4. //硬件連線方式。
  5. //  本演示程序包括KS0108B兼容芯片的MCS51模擬口線接口子程序集,KS0108B兼容芯片的12864
  6. //液晶顯示模塊的基本子程序,12864系列繪圖子程序集,12864系列圖形子程序集,12864系列
  7. //精簡中英文字庫子程序集,以及SMG12864C系列標準圖形點陣型液晶顯示的演示子程序.
  8. //  本演示的內容為,在128列X64行的點陣液晶顯示屏上清屏,圖片演示,英文字符串演示,
  9. //中文字符串演示,反白顯示字符串,繪制矩形,寫點,繪制直線,全屏顯示.
  10. //-------------------------------------------------------------------------------
  11. //創建日期: 2020.5.18
  12. //軟件環境: VW For Windows
  13. //硬件環境: STC MCU,MCS-51系列 MCU,etc.
  14. //工程師  :YF
  15. //-------------------------------------------------------------------------------
  16. //#include <stc15.h>
  17. #include <reg51.h>
  18. #include <intrins.h>

  19. signed char second=0,minute=0,hour=12,count=0;        //從中午開始計時就改hour
  20. unsigned int day=53;
  21. void num2str(unsigned int dd);
  22. void time0_init();
  23. //以下為演示程序的函數定義
  24. void exsample(void);                    //演示程序
  25. void exdelay(void);                     //演示延時子程序
  26. void putchar(unsigned int c);           //定位寫字符子程序
  27. void putcharD(unsigned int d);            //定位寫大字符子程序
  28. void putstr(unsigned char code *s);     //顯示字符串子程序,字符碼為0時退出
  29. void putstrD(unsigned char code *t);      //顯示大字符串子程序,字符碼為0時退出
  30. unsigned char code *getchinesecodepos(unsigned int ac);
  31. unsigned char code *getChn_Codepos(unsigned int ad);  //中文大字符
  32. unsigned char code *getenglishcodepos(unsigned char ac);
  33. unsigned char code *getEng_Codepos(unsigned char ad);   //英文大字符
  34. void putimage(unsigned char code *s);   //顯示圖形子程序
  35. void putsizeimage(unsigned char XSIZE,unsigned char YSIZE,unsigned char code *s);
  36.                                         //顯示指定大小的圖形子程序
  37. // void point(bit b);
  38. // void line(unsigned char x0,unsigned char y0,unsigned char x1,unsigned char y1,bit b);
  39. // void lineto(unsigned char x1,unsigned char y1,bit b);//繪制(XPOS,YPOS)-(X1,Y1)的直線
  40. // void rect(unsigned char x0,unsigned char y0,unsigned char x1,unsigned char y1,bit b);
  41. void lcdfill(unsigned char d);          //整屏顯示d代表的字節數據子程序
  42. void lcdpos(void);                      //設置坐標點(XPOS,YPOS)內部RAM地址的子程序
  43. void lcdreset(void);                    //液晶顯示控制器初始化子程序
  44. void setlcdvoltage(unsigned char vol);   //LCD電壓設置
  45. void lcdwd(unsigned char d);            //送圖形數據子程序
  46.   
  47. void lcdwc(unsigned char c);            //送指令子程序
  48. void lcdwaitidle(void);                 //忙檢測子程序

  49. void lcdwd1(unsigned char d);           //送圖形數據子程序

  50. void lcdwc1(unsigned char c);           //送指令子程序
  51. void lcdwaitidle1(void);                //忙檢測子程序
  52. void lcdwd2(unsigned char d);           //送圖形數據子程序

  53. void lcdwc2(unsigned char c);           //送指令子程序
  54. void lcdwaitidle2(void);                //忙檢測子程序
  55. //-------------------------------------------------------------------------------
  56. //SMG12864C產品引腳說明及演示連線
  57. //PIN1: VSS  [電源地]
  58. //PIN2: VDD  [電源正極]
  59. //PIN3: Vo   [LCD偏壓輸入]
  60. //PIN4: RS   [數據/命令選擇端 1:數據 0:命令]
  61. //PIN5: RW   [讀寫信號選擇端 1:讀操作 0:寫操作]
  62. //PIN6: E    [使能信號輸入 高有效]
  63. //PIN7: DB0  [Data I/O]
  64. //PIN8: DB1  [Data I/O]
  65. //PIN9: DB2  [Data I/O]
  66. //PIN10:DB3  [Data I/O]
  67. //PIN11:DB4  [Data I/O]
  68. //PIN12:DB5  [Data I/O]
  69. //PIN13:DB6  [Data I/O]
  70. //PIN14:DB7  [Data I/O]
  71. //PIN15:CS1  [片選1信號輸入 高有效]
  72. //PIN16:CS2  [片選2信號輸入 高有效]
  73. //PIN17:RST  [復位信號輸入(H:正常工作,L:復位)]
  74. //PIN18:VEE  [LCD驅動負壓輸出(-10V)]
  75. //PIN19:EL-E [EL 使能端(低電平有效)]
  76. //PIN20:NC   [空腳]
  77. //注:8031的晶振頻率為12MHz.
  78. //請參見http://download.sunman.cn/lcm/product/1/SMG12864C.pdf

  79. /*************        本地變量聲明        **************/


  80. void Send_595(unsigned char dat);
  81. void Send_byte_over(unsigned char sda);

  82. sfr AUXR        =   0x8E;   //0000,0000 輔助寄存器
  83. sfr  P4  = 0xe8;
  84. sbit P46 = P4^6;
  85. sbit P45 = P4^5;       //ISP下載需勾選"ALE腳用作P4.5口"
  86. sbit P44 = P4^4;
  87. sbit P43 = P4^3;
  88. sbit P42 = P4^2;
  89. sbit P41 = P4^1;
  90. sbit P40 = P4^0;
  91. sfr P5   = 0xC8;
  92. //-------------------------------------------------------------------------------
  93. //以下為產品接口引腳在演示程序中的預定義
  94. //用戶在編寫應用程序時,需按自己的實際硬件連線來重新定義
  95. sbit RS  = P3^5;                       // RS對應單片機引腳
  96. sbit RW  = P3^4;                       // RW對應單片機引腳
  97. sbit EN  = P3^3;                       // E對應單片機引腳
  98. sbit CS1 = P3^2;                       // CS1對應單片機引腳
  99. sbit CS2 = P3^1;                       // CS2對應單片機引腳
  100. sbit RST = P5^5;

  101. sbit        P_HC595_SRCLK = P1^0;        //pin 11        SRCLK        Shift data clock
  102. sbit        P_HC595_RCLK  = P3^7;        //pin 12        RCLk        store (latch) clock
  103. sbit        P_HC595_SER   = P3^6;        //pin 14        SER                data input
  104. //-------------------------------------------------------------------------------
  105. //以下XPOS,YPOS變量用于指示當前操作點的位置的預定義
  106. //用戶在編寫應用程序時,需按自己的實際軟件程序需要來重新定義
  107. unsigned char XPOS;                     //列方向LCD點陣位置指針
  108. unsigned char YPOS;                     //行方向LCD點陣位置指針
  109. bit CharImageReverse;                   //字符及圖形的反顯控制,0(正常顯示),1(反顯)

  110. #define XDOTS   128                     //圖形空間X方向大小
  111. #define YDOTS   64                      //圖形空間X方向大小

  112. //-------------------------------------------------------------------------------
  113. //以下為精簡版中英文字庫
  114. //實際使用時請包含由Sunman精簡版中英文字符庫代碼生成器.exe自動生成的charlib.c文
  115. //文件來替換該部分
  116. #define ENGLISHCHARNUMBER  1       //精簡版英文字符庫中的英文字符的個數
  117. #define CHINESECHARNUMBER  5       //精簡版中文字符庫中的中文字符的個數
  118. #define ENGLISHCHARSIZE    8       //英文字符X方向顯示點的個數
  119. #define CHINESECHARSIZE    16      //中文字符X方向及中英文字符Y方向顯示點的個數
  120. #define ENGLISHCHARDOTSIZE 16      //單個英文字符點陣的字節數
  121. #define CHINESECHARDOTSIZE 32      //單個中文字符點陣的字節數

  122. unsigned int code EnglishCode[]={
  123. 0x20     //字符001:[ ]
  124. };

  125. unsigned int code ChineseCode[]={
  126. 0xbbb9,  //字符001:[還]
  127. 0xbee0,  //字符002:[距]
  128. 0xbfbc,  //字符003:[考]
  129. 0xd3d0,  //字符004:[有]
  130. 0xd6d0   //字符005:[中]
  131. };

  132. unsigned char code EnglishCharDot[]={
  133. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,   //字符001:[ ]
  134. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
  135. };

  136. unsigned char code ChineseCharDot[]={
  137. 0x40,0x00,0x40,0x40,0x42,0x20,0xcc,0x1f,   //字符001:[還]
  138. 0x00,0x20,0x00,0x42,0x02,0x41,0x82,0x40,
  139. 0x42,0x40,0xf2,0x5f,0x0e,0x40,0x42,0x40,
  140. 0x82,0x40,0x02,0x43,0x00,0x40,0x00,0x00,
  141. 0x00,0x20,0x3e,0x3f,0x22,0x20,0xe2,0x1f,   //字符002:[距]
  142. 0x22,0x11,0x3e,0x11,0x00,0x00,0xfe,0x7f,
  143. 0x22,0x44,0x22,0x44,0x22,0x44,0x22,0x44,
  144. 0x22,0x44,0xe2,0x47,0x02,0x40,0x00,0x00,
  145. 0x20,0x10,0x20,0x08,0x24,0x04,0x24,0x02,   //字符003:[考]
  146. 0x24,0x01,0x24,0x0d,0xbf,0x0b,0x64,0x09,
  147. 0x24,0x49,0x34,0x89,0x28,0x49,0x24,0x39,
  148. 0x22,0x01,0x20,0x00,0x20,0x00,0x00,0x00,
  149. 0x04,0x04,0x04,0x02,0x04,0x01,0x84,0x00,   //字符004:[有]
  150. 0xe4,0xff,0x3c,0x09,0x27,0x09,0x24,0x09,
  151. 0x24,0x09,0x24,0x49,0x24,0x89,0xe4,0x7f,
  152. 0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,
  153. 0x00,0x00,0x00,0x00,0xf0,0x0f,0x10,0x04,   //字符005:[中]
  154. 0x10,0x04,0x10,0x04,0x10,0x04,0xff,0xff,
  155. 0x10,0x04,0x10,0x04,0x10,0x04,0x10,0x04,
  156. 0xf0,0x0f,0x00,0x00,0x00,0x00,0x00,0x00
  157. };
  158. //本文件由Sunman精簡版中英文字符庫代碼生成器.exe自動生成
  159. //字節方向:[垂直] 字位順序:[從低到高]
  160. //中文字體:[華文新魏] 英文字體:[華文新魏] 字體大小:[32]
  161. //下面是大字體的數字和漢字天;楷體不完整;
  162. #define ENG_NUMBER  10      //精簡版英文字符庫中的英文字符的個數
  163. #define CHN_NUMBER  1       //精簡版中文字符庫中的中文字符的個數
  164. #define ENG_SIZE    16      //英文字符X方向顯示點的個數
  165. #define CHN_SIZE    32      //中文字符X方向及中英文字符Y方向顯示點的個數
  166. #define ENG_DOTSIZE 64      //單個英文字符點陣的字節數
  167. #define CHN_DOTSIZE 128     //單個中文字符點陣的字節數

  168. unsigned int code Eng_Code[]={
  169. 0x30,    //字符001:[0]
  170. 0x31,    //字符002:[1]
  171. 0x32,    //字符003:[2]
  172. 0x33,    //字符004:[3]
  173. 0x34,    //字符005:[4]
  174. 0x35,    //字符006:[5]
  175. 0x36,    //字符007:[6]
  176. 0x37,    //字符008:[7]
  177. 0x38,    //字符009:[8]
  178. 0x39     //字符010:[9]
  179. };

  180. unsigned int code Chn_Code[]={
  181. 0xccec   //字符001:[天]
  182. };

  183. unsigned char code Eng_Dot[]={
  184. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,   //字符001:[0]
  185. 0x00,0xfe,0x07,0x00,0x80,0x03,0x1c,0x00,
  186. 0x40,0x00,0x60,0x00,0x20,0x00,0xc0,0x00,
  187. 0x10,0x00,0x80,0x00,0x18,0x00,0x80,0x01,
  188. 0x18,0x00,0x80,0x01,0x18,0x00,0x80,0x01,
  189. 0x18,0x00,0x80,0x01,0x18,0x00,0x80,0x00,
  190. 0x30,0x00,0x40,0x00,0x60,0x00,0x20,0x00,
  191. 0xc0,0x01,0x1c,0x00,0x00,0x00,0x00,0x00,
  192. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,   //字符002:[1]
  193. 0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,
  194. 0x30,0x00,0x00,0x00,0x30,0x00,0x00,0x00,
  195. 0xf0,0xff,0xff,0x01,0x30,0x00,0x80,0x01,
  196. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  197. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  198. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  199. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  200. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,   //字符003:[2]
  201. 0x00,0x00,0xc0,0x01,0x60,0x00,0xe0,0x01,
  202. 0x30,0x00,0xb0,0x01,0x38,0x00,0x98,0x01,
  203. 0x18,0x00,0x98,0x01,0x18,0x00,0x8c,0x01,
  204. 0x18,0x00,0x86,0x01,0x18,0x00,0x83,0x01,
  205. 0x38,0x80,0x81,0x01,0x30,0xc0,0x80,0x01,
  206. 0x60,0x70,0x80,0x01,0xc0,0x1f,0x80,0x01,
  207. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  208. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,   //字符004:[3]
  209. 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,
  210. 0x30,0x00,0x80,0x01,0x38,0x60,0x80,0x01,
  211. 0x18,0x60,0x80,0x01,0x18,0x60,0x80,0x01,
  212. 0x18,0x70,0x80,0x01,0x18,0x50,0xc0,0x01,
  213. 0x38,0xd0,0xc0,0x00,0x30,0x88,0x60,0x00,
  214. 0xe0,0x87,0x73,0x00,0x80,0x03,0x1f,0x00,
  215. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  216. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,   //字符005:[4]
  217. 0x00,0x00,0x07,0x00,0x00,0xc0,0x06,0x00,
  218. 0x00,0x60,0x06,0x00,0x00,0x10,0x06,0x00,
  219. 0x00,0x08,0x06,0x00,0x00,0x06,0x06,0x00,
  220. 0x00,0x03,0x06,0x00,0x80,0x01,0x06,0x00,
  221. 0xc0,0x00,0x06,0x00,0xe0,0x00,0xc6,0x01,
  222. 0xf0,0xff,0xff,0x01,0x00,0x00,0x06,0x00,
  223. 0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,
  224. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,   //字符006:[5]
  225. 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,
  226. 0x00,0x10,0xc0,0x01,0x80,0x1f,0xc0,0x01,
  227. 0x38,0x18,0x80,0x01,0x18,0x18,0x80,0x01,
  228. 0x18,0x18,0xc0,0x01,0x18,0x18,0xc0,0x00,
  229. 0x18,0x18,0xc0,0x00,0x18,0x18,0x60,0x00,
  230. 0x18,0x30,0x60,0x00,0x18,0x70,0x38,0x00,
  231. 0x18,0xc0,0x0f,0x00,0x00,0x00,0x00,0x00,
  232. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,   //字符007:[6]
  233. 0x00,0xc0,0x0f,0x00,0x00,0xf8,0x3f,0x00,
  234. 0x00,0x46,0x40,0x00,0x80,0x41,0xc0,0x00,
  235. 0xc0,0x20,0x80,0x01,0x60,0x20,0x80,0x01,
  236. 0x20,0x30,0x80,0x01,0x30,0x30,0x80,0x01,
  237. 0x10,0x30,0x80,0x01,0x18,0x30,0x80,0x00,
  238. 0x10,0x60,0xc0,0x00,0x00,0xe0,0x60,0x00,
  239. 0x00,0x80,0x3f,0x00,0x00,0x00,0x00,0x00,
  240. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,   //字符008:[7]
  241. 0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,
  242. 0x30,0x00,0x00,0x00,0x30,0x00,0x00,0x00,
  243. 0x30,0x00,0xf0,0x01,0x30,0x00,0x7c,0x00,
  244. 0x30,0x00,0x0f,0x00,0x30,0xc0,0x01,0x00,
  245. 0x30,0x60,0x00,0x00,0x30,0x18,0x00,0x00,
  246. 0x30,0x06,0x00,0x00,0xb0,0x03,0x00,0x00,
  247. 0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  248. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,   //字符009:[8]
  249. 0x00,0x00,0x00,0x00,0xc0,0x07,0x3f,0x00,
  250. 0x60,0x8c,0xe1,0x00,0x30,0x90,0xc0,0x00,
  251. 0x10,0x70,0x80,0x01,0x18,0x60,0x80,0x01,
  252. 0x18,0x60,0x80,0x01,0x18,0x60,0x80,0x01,
  253. 0x18,0x60,0x80,0x01,0x18,0xd0,0x80,0x00,
  254. 0x30,0xd8,0xc0,0x00,0x60,0x8c,0x61,0x00,
  255. 0xc0,0x03,0x1f,0x00,0x00,0x00,0x00,0x00,
  256. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,   //字符010:[9]
  257. 0x00,0x0f,0x00,0x00,0xc0,0x39,0x00,0x00,
  258. 0x20,0x60,0x00,0x00,0x30,0x40,0x80,0x01,
  259. 0x10,0xc0,0x80,0x01,0x18,0xc0,0x80,0x00,
  260. 0x18,0xc0,0xc0,0x00,0x18,0xc0,0x40,0x00,
  261. 0x18,0x40,0x20,0x00,0x10,0x40,0x38,0x00,
  262. 0x30,0x20,0x0c,0x00,0x60,0xb0,0x07,0x00,
  263. 0x80,0xff,0x01,0x00,0x00,0x00,0x00,0x00
  264. };

  265. unsigned char code Chn_Dot[]={
  266. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,   //字符001:[天]
  267. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  268. 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,
  269. 0x00,0x00,0x80,0x00,0x00,0x00,0x80,0x01,
  270. 0x00,0x00,0xc0,0x00,0x00,0xc0,0x40,0x00,
  271. 0x00,0x40,0x20,0x00,0x80,0x61,0x10,0x00,
  272. 0x80,0x63,0x08,0x00,0x80,0x63,0x03,0x00,
  273. 0x80,0xfb,0x03,0x00,0xc0,0x33,0x03,0x00,
  274. 0xc0,0x31,0x02,0x00,0xc0,0x10,0x04,0x00,
  275. 0xe0,0x10,0x00,0x00,0x40,0x18,0x00,0x00,
  276. 0x00,0x18,0x30,0x00,0x00,0x10,0xe0,0x00,
  277. 0x00,0x00,0xe0,0x01,0x00,0x00,0xc0,0x01,
  278. 0x00,0x00,0xc0,0x01,0x00,0x00,0xc0,0x01,
  279. 0x00,0x00,0x80,0x01,0x00,0x00,0x80,0x01,
  280. 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
  281. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
  282. };


  283. /*------------------------------------------------
  284. uS延時函數,含有輸入參數 unsigned char t,無返回值
  285. unsigned char 是定義無符號字符變量,其值的范圍是
  286. 0~255 這里使用晶振12M,精確延時請使用匯編,大致延時
  287. 長度如下 T=tx2+5 uS
  288. ------------------------------------------------*/
  289. void DelayUs2x(unsigned char t)
  290. {   
  291. while(--t);
  292. }
  293. /*------------------------------------------------
  294. mS延時函數,含有輸入參數 unsigned char t,無返回值
  295. unsigned char 是定義無符號字符變量,其值的范圍是
  296. 0~255 這里使用晶振12M,精確延時請使用匯編
  297. ------------------------------------------------*/
  298. void DelayMs(unsigned char t)
  299. {
  300.      
  301. while(t--)
  302. {
  303.      //大致延時100uS
  304.      DelayUs2x(50);
  305.            DelayUs2x(50);
  306. }
  307. }


  308. ////-------------------------------------------------------------------------------
  309. ////以下為圖片庫點陣代碼
  310. ////實際使用時請包含由SUNMAN圖形點陣代碼生成器.EXE自動生成的imagelib.c文件來替換

  311. void TM0_Isr() interrupt 1 using 1
  312. {
  313.          count++;
  314.         if(count==100)
  315.         {
  316.            count=0;
  317.            second--;
  318.            if(second<0)
  319.            {
  320.                         second=59;
  321.                         minute--;
  322.                         if(minute<0)
  323.                         {
  324.                                  minute=59;
  325.                                  hour--;
  326.                                  if(hour<0)
  327.                                          {
  328.                                                 hour=24;
  329.                                                 day--;
  330.                                          }
  331.                                         if(day==0)
  332.                                                  {
  333.                                                         day=99;
  334.                                                  }
  335.                         }   
  336.                         
  337.                 }
  338.                   
  339.         }
  340.       
  341. }
  342. void time0_init()
  343. {   
  344.     //AUXR |= 0x80;                   //定時器0為1T模式
  345.     AUXR &= 0x7f;                   //定時器0為12T模式
  346.     TMOD = 0x00;
  347.     TL0 = (65536-9217)%256;                                 //10ms
  348.     TH0 = (65536-9217)/256;
  349.     TR0 = 1;                                    //啟動定時器
  350.     ET0 = 1;                                    //使能定時器中斷
  351.     EA = 1;
  352. }

  353. void num2str(unsigned int dd)                        //將兩位數字拆分為10位和個位的數字,放入字符函數的數組地址中,分別用字符輸出函數顯示輸出
  354. {        unsigned int a,b;
  355.         a=dd/10%10;                                //兩位整數的10位
  356.         b=dd%10;                                //兩位整數的個位
  357.         //Eng_Code[]是英文大字符的名稱數組16進制編號,Eng_Dot[]是英文大字符的圖形點陣地址數組
  358.         putcharD(a+0X30);
  359.         //exdelay();
  360.         putcharD(b+0X30);
  361.         exdelay();
  362. }
  363. //-------------------------------------------------------------------------------

  364. void main(void)
  365. {
  366.         P42 = 0;
  367.         RST = 0;
  368.         exdelay();
  369.         RST = 1;
  370.         time0_init();
  371.     while(1)
  372.     {
  373.                 lcdreset();                     //初始化液晶顯示控制器
  374.         exsample();                     //演示程序
  375.     }
  376. }
  377. void exsample(void)                     //演示程序
  378. {
  379. //0.演示前的準備,將LCD液晶顯示全部清空
  380.     CharImageReverse=0;                 //反顯關閉
  381.     lcdfill(0);                         //清屏

  382. //1.圖片測試: 在(8,16)位置顯示32點陣SUNMAN圖標
  383.     // XPOS=8;
  384.     // YPOS=8;
  385.     // putimage(Img_sunman_32);            //寫數據到當前LCDRAM地址中
  386.     // exdelay();                          //延時約600mS

  387. //3.字符串測試: 在(40,32)位置顯示"太陽人電子"字符串.
  388.     XPOS=10;
  389.     YPOS=0;
  390.     putstr("距中考還有");
  391. //   exdelay();                          //延時約600mS
  392.         
  393. //2.字符串測試: 在(26,32)位置顯示變化的數字day,在(58,32)位置顯示"天"字符串.
  394.     XPOS=26;
  395.     YPOS=32;
  396.         num2str(day);                                //字符串變量一般都是數組,如何用指針變量定位碼表中的字符?
  397.         XPOS=58;
  398.     YPOS=32;
  399.     putstrD("天");
  400.     exdelay();                          //延時約600mS
  401.         exdelay();exdelay();
  402. //4.反顯測試: 在(40,32)位置反顯"太陽人電子"字符串.
  403.     XPOS=26;
  404.     YPOS=32;
  405.     CharImageReverse=1;
  406.     num2str(day);                                
  407.         XPOS=58;
  408.     YPOS=32;
  409.     putstrD("天");
  410.     CharImageReverse=0;
  411.     exdelay();                          //延時約600mS
  412.         exdelay();

  413. }
  414. void exdelay(void)                      //演示延時子程序
  415. { unsigned char i,j,k;                  //延時約600mS
  416.   for(i=0;i<60;i++)
  417.     for(j=0;j<100;j++)
  418.       for(k=0;k<200;k++);
  419. }

  420. //-------------------------------------------------------------------------------
  421. //以下putchar為字符對象的基本子程序,putstr為字符對象的擴充子程序,getchinesecodepos,
  422. //getenglishcodepos為字符對象的輔助子程序.
  423. //-------------------------------------------------------------------------------
  424. //子程序名稱:void putchar(unsigned int c).
  425. //功能:在(XPOS,YPOS)位置寫單個字符點陣,若c>128 表示為中文字符,否則為西文字符
  426. //修改日期:2009.8.18
  427. //修改人:chujianjun@sunman.cn,tanchao@sunman.cn
  428. //-------------------------------------------------------------------------------
  429. void putchar(unsigned int c)            //定位寫字符子程序
  430. {   if(c>128)
  431.         putsizeimage(CHINESECHARSIZE,CHINESECHARSIZE,getchinesecodepos(c));
  432.     else
  433.         putsizeimage(ENGLISHCHARSIZE,CHINESECHARSIZE,getenglishcodepos(c));
  434. }
  435. //-------------------------------------------------------------------------------
  436. void putcharD(unsigned int d)            //定位寫大字符子程序
  437. {   if(d>128)
  438.         putsizeimage(CHN_SIZE,CHN_SIZE,getChn_Codepos(d));
  439.     else
  440.         putsizeimage(ENG_SIZE,CHN_SIZE,getEng_Codepos(d));
  441. }
  442. //-------------------------------------------------------------------------------
  443. //子程序名稱:void putstr(unsigned char code *s).
  444. //功能:寫字符串點陣,若*s=0 表示字符串結束.
  445. //修改日期:2009.8.18
  446. //修改人:chujianjun@sunman.cn,tanchao@sunman.cn
  447. //-------------------------------------------------------------------------------
  448. void putstr(unsigned char code *s)      //顯示字符串子程序,字符碼為0時退出
  449. {   unsigned int c;
  450.     while(1)
  451.     {   c=*s;
  452.         s++;
  453.         if(c==0) break;
  454.         if(c<128)
  455.             putchar(c);
  456.         else
  457.         {   putchar(c*256+*s);
  458.             s++;
  459.         }
  460.     }
  461. }
  462. //-------------------------------------------------------------------------------
  463. void putstrD(unsigned char code *t)      //顯示大字符串子程序,字符碼為0時退出
  464. {   unsigned int c;
  465.     while(1)
  466.     {   c=*t;
  467.         t++;
  468.         if(c==0) break;
  469.         if(c<128)
  470.             putcharD(c);
  471.         else
  472.         {   putcharD(c*256+*t);
  473.             t++;
  474.         }
  475.     }
  476. }
  477. //-------------------------------------------------------------------------------
  478. //子程序名稱:unsigned char code *getchinesecodepos(unsigned char ac).
  479. //功能:根據當前中文字符碼查表后計算得到當前中文字符碼的字庫點陣位置.
  480. //修改日期:2009.8.18
  481. //修改人:chujianjun@sunman.cn,tanchao@sunman.cn
  482. //-------------------------------------------------------------------------------
  483. unsigned char code *getchinesecodepos(unsigned int ac)
  484. {   unsigned int min,max,mid,midc;
  485.     min=0;
  486.     max=CHINESECHARNUMBER-1;
  487.     while(1)
  488.     {   if(max-min<2)
  489.         {   if(ChineseCode[min]==ac)
  490.                 mid=min;
  491.             else if(ChineseCode[max]==ac)
  492.                 mid=max;
  493.             else
  494.                 mid=0;
  495.             break;
  496.         }
  497.         mid=(max+min)/2;
  498.         midc=ChineseCode[mid];
  499.         if(midc==ac)
  500.             break;
  501.         else if(midc>ac)
  502.             max=mid-1;
  503.         else
  504.             min=mid+1;
  505.     }
  506.     return ChineseCharDot+mid*CHINESECHARDOTSIZE;
  507. }
  508. //-------------------------------------------------------------------------------
  509. //-------------------------------------------------------------------------------
  510. unsigned char code *getChn_Codepos(unsigned int ad)  //中文大字符
  511. {   unsigned int min,max,mid,midc;
  512.     min=0;
  513.     max=CHN_NUMBER-1;
  514.     while(1)
  515.     {   if(max-min<2)
  516.         {   if(Chn_Code[min]==ad)
  517.                 mid=min;
  518.             else if(Chn_Code[max]==ad)
  519.                 mid=max;
  520.             else
  521.                 mid=0;
  522.             break;
  523.         }
  524.         mid=(max+min)/2;
  525.         midc=Chn_Code[mid];
  526.         if(midc==ad)
  527.             break;
  528.         else if(midc>ad)
  529.             max=mid-1;
  530.         else
  531.             min=mid+1;
  532.     }
  533.     return Chn_Dot+mid*CHN_DOTSIZE;
  534. }
  535. //-------------------------------------------------------------------------------
  536. //子程序名稱:unsigned char code *getenglishcodepos(unsigned char ac).
  537. //功能:根據當前ASCII字符碼查表后計算得到當前ASCII字符碼的字庫點陣位置.
  538. //修改日期:2009.8.18
  539. //修改人:chujianjun@sunman.cn,tanchao@sunman.cn
  540. //-------------------------------------------------------------------------------
  541. unsigned char code *getenglishcodepos(unsigned char ac)
  542. {   unsigned char min,max,mid,midc;
  543.     min=0;
  544.     max=ENGLISHCHARNUMBER-1;
  545.     while(1)
  546.     {   if(max-min<2)
  547.         {   if(EnglishCode[min]==ac)
  548.                 mid=min;
  549.             else if(EnglishCode[max]==ac)
  550.                 mid=max;
  551.             else
  552.                 mid=0;
  553.             break;
  554.         }
  555.         mid=(max+min)/2;
  556.         midc=EnglishCode[mid];
  557.         if(midc==ac)
  558.             break;
  559.         else if(midc>ac)
  560.             max=mid-1;
  561.         else
  562.             min=mid+1;
  563.     }
  564.     return EnglishCharDot+mid*ENGLISHCHARDOTSIZE;
  565. }
  566. //-------------------------------------------------------------------------------
  567. //-------------------------------------------------------------------------------
  568. unsigned char code *getEng_Codepos(unsigned char ad)   //英文大字符
  569. {   unsigned char min,max,mid,midc;
  570.     min=0;
  571.     max=ENG_NUMBER-1;
  572.     while(1)
  573.     {   if(max-min<2)
  574.         {   if(Eng_Code[min]==ad)
  575.                 mid=min;
  576.             else if(Eng_Code[max]==ad)
  577.                 mid=max;
  578.             else
  579.                 mid=0;
  580.             break;
  581.         }
  582.         mid=(max+min)/2;
  583.         midc=Eng_Code[mid];
  584.         if(midc==ad)
  585.             break;
  586.         else if(midc>ad)
  587.             max=mid-1;
  588.         else
  589.             min=mid+1;
  590.     }
  591.     return Eng_Dot+mid*ENG_DOTSIZE;
  592. }
  593. //-------------------------------------------------------------------------------
  594. //以下putsizeimage為圖形對象的基本子程序,putimage為圖形對象的擴充子程序
  595. //-------------------------------------------------------------------------------
  596. //子程序名稱:void putsizeimage(unsigned char XSIZE,unsigned YSIZE,
  597. //                             unsigned char code *s)
  598. //功能:在(XPOS,YPOS)位置繪制XSIZE列及YISZE行點陣的圖形*S.
  599. //修改日期:2009.8.31
  600. //修改人:chujianjun@sunman.cn,tanchao@sunman.cn
  601. //-------------------------------------------------------------------------------
  602. void putsizeimage(unsigned char XSIZE,unsigned char YSIZE,unsigned char code *s)
  603. {
  604.    unsigned char k,lx,ly,a1,a2,y,Lcd_Mask;
  605.    k=YPOS&0x7;
  606.    YSIZE+=k;
  607.    y=YPOS;
  608.    s--;
  609.    for(lx=0;lx<XSIZE;lx++,XPOS++)
  610.    {  for(YPOS=y,ly=k;ly<YSIZE;)
  611.       {  unsigned char p;
  612.          a1=*s;
  613.          s++;
  614.          a2=*s;
  615.          if(CharImageReverse)
  616.          {   a1=~a1;
  617.              a2=~a2;
  618.          }
  619.          for(p=0;p<k;p++)
  620.          {  a2>>=1;
  621.             if((a1&0x1)==1)
  622.                a2+=0x80;
  623.             a1>>=1;
  624.          }
  625.          if((k==0) && (YSIZE<ly+8))
  626.          {   lcdpos();
  627.              ly+=8;
  628.              YPOS+=8;
  629.          }
  630.          else
  631.          {   lcdpos();

  632.              lcdpos();
  633.              ly+=8;
  634.              YPOS+=8;
  635.              Lcd_Mask=0xff;
  636.              p=YSIZE&0x7;
  637.              while(p>0)
  638.              {   Lcd_Mask>>=1;
  639.                  YPOS--;
  640.                  p--;
  641.              }
  642.              p=0xff;
  643.              while(YSIZE<ly)
  644.              {   ly--;
  645.                  YPOS--;
  646.                  p<<=1;
  647.              }
  648.              Lcd_Mask&=p;
  649.              a2&=Lcd_Mask;
  650.              a2|=a1&(~Lcd_Mask);
  651.          }
  652.          lcdwd(a2);
  653.       }
  654.       if((k!=0) && (YSIZE&0x7 != 0) && (k >= YSIZE&0x7)) s--;
  655.    }
  656.    YPOS=y;
  657. }
  658. //-------------------------------------------------------------------------------
  659. //子程序名稱:void putimage(unsigned char code *s).
  660. //功能:在(XPOS,YPOS)位置繪制XSIZE[*s]列及YISZE[*(s+1)]行點陣的圖形[*(s+2)].
  661. //修改日期:2009.8.18
  662. //修改人:chujianjun@sunman.cn,tanchao@sunman.cn
  663. //-------------------------------------------------------------------------------
  664. void putimage(unsigned char code *s)    //顯示圖形子程序
  665. {
  666.     unsigned char XSIZE,YSIZE;
  667.     XSIZE=*s;
  668.     s++;
  669.     YSIZE=*s;
  670.     s++;
  671.     putsizeimage(XSIZE,YSIZE,s);
  672. }
  673. //-------------------------------------------------------------------------------

  674. //-------------------------------------------------------------------------------
  675. //以下lcdfill,lcdpos,lcdreset為KS0108B型硬件接口的12864液晶顯示模塊的基本子程序
  676. //-------------------------------------------------------------------------------
  677. //子程序名稱:void lcdfill(unsigned char d).
  678. //功能:整屏顯示d表示的字節數據.
  679. //修改日期:2009.08.31
  680. //修改人:chujianjun@sunman.cn,tanchao@sunman.cn
  681. //-------------------------------------------------------------------------------
  682. void lcdfill(unsigned char d)           //整屏顯示d代表的字節數據子程序
  683. {  
  684.         unsigned char j;
  685.     for(YPOS=0;YPOS<64;YPOS+=8)         //8頁
  686.     {   XPOS=0;
  687.         lcdpos();
  688.         for(j=0;j<64;j++)              //64列
  689.             lcdwd1(d);                 //送圖形數據
  690.         XPOS=64;
  691.         lcdpos();
  692.         for(j=0;j<64;j++)              //64列
  693.             lcdwd2(d);                 //送圖形數據
  694.     }
  695.     XPOS=0;
  696.     YPOS=0;
  697. }
  698. //-------------------------------------------------------------------------------
  699. //子程序名稱:void lcdpos(void).
  700. //功能:設置坐標點(XPOS,YPOS)位置對應的內部RAM地址.
  701. //修改日期:2009.08.31
  702. //修改人:chujianjun@sunman.cn,tanchao@sunman.cn
  703. //-------------------------------------------------------------------------------
  704. void lcdpos(void)                       //設置坐標點(XPOS,YPOS)內部RAM地址的子程序
  705. {  //unsigned char Column;
  706.    if(XPOS<64)
  707.    {
  708.               lcdwc1(0xB8+((YPOS/8)&0x07));     //頁地址設置
  709.        lcdwc1(0x40+XPOS);               //列地址設置
  710.    }
  711.    else
  712.    {   lcdwc2(0xB8+((YPOS/8)&0x07));     //頁地址設置
  713.        lcdwc2(0x40+(XPOS&0x3F));        //列地址設置
  714.    }
  715. }
  716. //-------------------------------------------------------------------------------
  717. //子程序名稱:void lcdreset(void)
  718. //功能:液晶顯示控制器初始化
  719. //修改日期:2009.08.31
  720. //修改人:chujianjun@sunman.cn,tanchao@sunman.cn
  721. //-------------------------------------------------------------------------------
  722. void lcdreset(void)                     //液晶顯示控制器初始化子程序
  723. {
  724.     lcdwc1(0xC0);                       //設置顯示初始行
  725.     lcdwc2(0xC0);                       //設置顯示初始行
  726.     lcdwc1(0x3F);                       //開顯示
  727.     lcdwc2(0x3F);                       //開顯示

  728. }

  729. //-------------------------------------------------------------------------------
  730. //子程序名稱:void lcdwd(unsigned char d).
  731. //功能:向液晶顯示控制器寫圖形數據.
  732. //修改日期:2009.08.31
  733. //修改人:chujianjun@sunman.cn,tanchao@sunman.cn
  734. //-------------------------------------------------------------------------------
  735. void lcdwd(unsigned char d)
  736. {
  737.     if(XPOS<64)
  738.         lcdwd1(d);
  739.     else
  740.         lcdwd2(d);
  741. }
  742. //-------------------------------------------------------------------------------
  743. //子程序名稱:void lcdwd1(unsigned char d).
  744. //功能:向液晶顯示控制器1寫圖形數據.
  745. //修改日期:2009.08.31
  746. //修改人:chujianjun@sunman.cn,tanchao@sunman.cn
  747. //-------------------------------------------------------------------------------
  748. void lcdwd1(unsigned char d)
  749. {  
  750.         lcdwaitidle1();
  751.     Send_byte_over(d);//通過74HC595 串行輸入數據,并行輸出到LCD的8位數據口
  752.     RS  = 1;
  753.     RW  =0;
  754.     CS1 =1;
  755.     CS2 =0;
  756.     EN  =1;
  757.     _nop_();
  758.     EN  =0;
  759.     CS1 =0;
  760. }
  761. //-------------------------------------------------------------------------------
  762. //子程序名稱:void lcdwd2(unsigned char d).
  763. //功能:向液晶顯示控制器2寫圖形數據.
  764. //修改日期:2009.08.31
  765. //修改人:chujianjun@sunman.cn,tanchao@sunman.cn
  766. //-------------------------------------------------------------------------------
  767. void lcdwd2(unsigned char d)
  768. {  
  769.         lcdwaitidle2();
  770.     Send_byte_over(d); //通過74HC595 串行輸入數據,并行輸出到LCD的8位數據口
  771.     RS  = 1;
  772.     RW        = 0;
  773.     CS1        = 0;
  774.     CS2        = 1;
  775.     EN        = 1;
  776.     _nop_();
  777.     EN  = 0;
  778.     CS2        = 0;
  779. }

  780. //-------------------------------------------------------------------------------
  781. //子程序名稱:lcdwc1(unsigned char c).
  782. //功能:向液晶顯示控制器1送指令.
  783. //修改日期:2009.10.30
  784. //修改人:chujianjun@sunman.cn,tanchao@sunman.cn
  785. //-------------------------------------------------------------------------------
  786. void lcdwc1(unsigned char c)            //向液晶顯示控制器1送指令
  787. {
  788.     lcdwaitidle1();
  789.     Send_byte_over(c);//通過74HC595 串行輸入數據,并行輸出到LCD的8位數據口
  790.     RS        = 0;
  791.     RW        = 0;
  792.     CS1        = 1;
  793.     CS2        = 0;
  794.     EN        = 1;
  795.     _nop_();
  796.     EN        = 0;
  797.     CS1        = 0;
  798. }
  799. //-------------------------------------------------------------------------------
  800. //子程序名稱:lcdwc2(unsigned char c).
  801. //功能:向液晶顯示控制器2送指令.
  802. //修改日期:2009.10.30
  803. //修改人:chujianjun@sunman.cn,tanchao@sunman.cn
  804. //-------------------------------------------------------------------------------
  805. void lcdwc2(unsigned char c)            //向液晶顯示控制器2送指令
  806. {
  807.     lcdwaitidle2();
  808.     Send_byte_over(c);        //通過74HC595 串行輸入數據,并行輸出到LCD的8位數據口
  809.     RS        = 0;
  810.     RW        = 0;
  811.     CS1        = 0;
  812.     CS2        = 1;
  813.     EN        = 1;
  814.     _nop_();
  815.     EN        = 0;
  816.     CS2        = 0;
  817. }
  818. //-------------------------------------------------------------------------------
  819. //子程序名稱:voidlcdwaitidle1(void).
  820. //功能:忙檢測,在對液晶顯示控制器操作的每一條指令之前,需檢測液晶顯示器是否空閑.
  821. //修改日期:2009.10.30
  822. //修改人:chujianjun@sunman.cn,tanchao@sunman.cn
  823. //-------------------------------------------------------------------------------
  824. void lcdwaitidle1(void)                 //控制器1忙檢測子程序
  825. {   
  826.     RS        = 0;
  827.     RW        = 1;
  828.     CS1        = 1;
  829.     CS2        = 0;
  830.     EN        = 1;
  831.         DelayMs(1);
  832.     EN        = 0;
  833.     CS1        = 0;
  834. }
  835. //-------------------------------------------------------------------------------
  836. //子程序名稱:voidlcdwaitidle2(void).
  837. //功能:忙檢測,在對液晶顯示控制器操作的每一條指令之前,需檢測液晶顯示器是否空閑.
  838. //修改日期:2009.10.30
  839. //修改人:chujianjun@sunman.cn,tanchao@sunman.cn
  840. //-------------------------------------------------------------------------------
  841. void lcdwaitidle2(void)                 //控制器2忙檢測子程序
  842. {  
  843.     RS        = 0;
  844.     RW        = 1;
  845.     CS1        = 0;
  846.     CS2        = 1;
  847.     EN        = 1;
  848.         DelayMs(1);        //查忙由延時替代
  849.     EN        = 0;
  850.     CS2        = 0;
  851. }

  852. /**********************************************/
  853. void Send_595(unsigned char dat)        //發送一個字節
  854. {               
  855.         unsigned char        i;
  856.         for(i=0; i<8; i++)
  857.         {
  858.                 if(dat & 0x80)        P_HC595_SER = 1;
  859.                 else                        P_HC595_SER = 0;
  860.                 P_HC595_SRCLK = 1;
  861.                 P_HC595_SRCLK = 0;
  862.                 dat = dat << 1;
  863.         }
  864. }

  865. void Send_byte_over(unsigned char sda)
  866. {
  867.         Send_595(sda);
  868.         P_HC595_RCLK = 1;
  869.         P_HC595_RCLK = 0;
  870. }
復制代碼

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产一区二区久久 | 久久成人精品一区二区三区 | 国产91久久久久 | 亚洲一区二区三区免费视频 | 欧美视频一区二区三区 | 丁香婷婷综合激情五月色 | 国产成人免费视频网站视频社区 | 日韩精品成人免费观看视频 | 国产精品美女久久久久久不卡 | 日韩在线不卡 | 一区二区av| 看片天堂| 天天操天天摸天天爽 | 九九免费观看视频 | 91免费在线视频 | 免费黄色av网站 | 黄色福利 | 天天操夜夜操 | 免费精品一区 | 天堂资源| 欧美国产一区二区 | 国产区在线视频 | 国产精品永久免费 | 青青草精品| 精品国产一区二区在线 | 国产午夜一级 | 黄色网址在线免费观看 | 黄色毛片在线观看 | 亚洲精品一区中文字幕乱码 | 特一级毛片 | 欧美一区视频 | 91久久精品一区二区二区 | 精品视频一区二区 | 中文字幕欧美日韩一区 | 亚洲国产一区视频 | 亚洲精品9999久久久久 | 成人永久免费视频 | 永久免费在线观看 | 亚洲免费视频在线观看 | 成人久久18免费网站麻豆 | 久久黄网|