找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 11247|回復(fù): 7
收起左側(cè)

合泰單片機(jī)HT66F70A LCD12864液晶屏驅(qū)動(dòng) 匯編和c語言都有

[復(fù)制鏈接]
ID:114770 發(fā)表于 2016-4-17 17:15 | 顯示全部樓層 |閱讀模式
12864液晶顯示屏單片機(jī)驅(qū)動(dòng),單片機(jī)型號(hào)是合泰HT66F70A

0.png
完整代碼下載: 12864驅(qū)動(dòng)1.zip (41.58 KB, 下載次數(shù): 114)


c語言版本的程序:
  1. #include <HT66F70A.H>
  2. #include "delay.h"

  3. #define IO_12864   _pc //定義12864的數(shù)據(jù)端口
  4. #define IO_12864_C   _pcc

  5. #define RS_12864  _pd5 //定義命令數(shù)據(jù)寄存器選擇端
  6. #define RW_12864  _pd6 //定義定義讀寫控制端        
  7. #define E_12864   _pd7  //定義使能端
  8. #define RST_12864  _pd4 //定義復(fù)位端
  9. //#define CS2   _pd3
  10. //#define CS1   _pd2



  11. void delay_12864(unsigned int ); //延時(shí)子函數(shù)原型
  12. /*void busychk_12864(void); //忙檢測子函數(shù)原型*/
  13. void wrtcom_12864(unsigned char); //寫命令子函數(shù)原型
  14. unsigned char reddat_12864(void); //讀數(shù)據(jù)子函數(shù)原型
  15. void wrtdat_12864(unsigned char); //寫數(shù)據(jù)子函數(shù)原型
  16. //void choose_12864(unsigned char i);        //選屏
  17. //void drawpic_12864( unsigned char*); //繪圖子函數(shù)原型
  18. //void drawdot_12864(unsigned char,unsigned char,unsigned char);//畫點(diǎn)子函數(shù)原型
  19. //void drawrec_12864(unsigned char,unsigned char,unsigned char,unsigned char,unsigned char);  //畫矩形子函數(shù)原型
  20. void clnGDR_12864(void); //清空GDRAM子函數(shù)原型
  21. void inputchars_12864(unsigned char,unsigned char,unsigned char*);//輸入短字符串子函數(shù)原型
  22. void scroll_12864(unsigned char*); //輸入長字符串卷動(dòng)子函數(shù)原型
  23. void initial_12864(void); //12864初始化子函數(shù)原型


  24. void main()
  25. {  
  26.         unsigned char  uctech[] = {"wweerrtt"};
  27.         _pcc=0;
  28.         _pdc=0;
  29.         //_pcpu=0xff;
  30.         _pc=0;
  31.         _pd=0;

  32.         initial_12864();
  33.         clnGDR_12864();
  34.    inputchars_12864(1,1,uctech);
  35.         

  36. }
  37.                                                                 /***********        延時(shí)子程序,最大延遲時(shí)間為65ms***************/
  38.                                                                                 
  39. void delay_12864(unsigned int del){
  40. unsigned int i;
  41. for(i = 0; i < del; i++){;}
  42. }


  43.                                                                         /***************忙檢測,若忙則等待,最長等待時(shí)間為60ms**********/
  44.                                                                                 
  45. //                                                                                
  46. //void busychk_12864(void){
  47. //unsigned int timeout = 0;
  48. //IO_12864_C=1;/////////
  49. //E_12864 = 0;
  50. //RS_12864 = 0;
  51. //RW_12864 = 1;
  52. //E_12864 = 1;
  53. //while((IO_12864 & 0x80) && ++timeout != 0); //忙狀態(tài)檢測,等待超時(shí)時(shí)間為60ms
  54. //E_12864 = 0;
  55. //}


  56.                                                                                                 /****************寫命令子程序*********************/
  57.                                                                                                 
  58.                                                                                                 
  59.                                                                                                 
  60. void wrtcom_12864(unsigned char com){
  61. //busychk_12864();
  62. IO_12864_C=0; ///////////////////////////
  63. delay_12864(5000);////////
  64. E_12864 = 0;
  65. RS_12864 = 0;
  66. RW_12864 = 0;
  67. E_12864 = 1;
  68. IO_12864 = com;
  69. delay_12864(5000); //使能延時(shí)50us!!!注意這里,如果是較快的CPU應(yīng)該延時(shí)久一些
  70. E_12864 = 0;
  71. }

  72.                                                                                         /**************************讀數(shù)據(jù)子程序,返回一個(gè)字節(jié)的數(shù)據(jù)****************/
  73.                                                                                        
  74.                                                                                        
  75. unsigned char reddat_12864(void){
  76. unsigned char temp;
  77. //busychk_12864();
  78. delay_12864(5000);/////////////
  79. E_12864 = 0;
  80. IO_12864_C=0;/////////////////////
  81. IO_12864 = 0xff; //IO口置高電平,讀引腳
  82. RS_12864 = 1;
  83. RW_12864 = 1;
  84. E_12864 = 1;
  85. delay_12864(5000); //使能延時(shí)50us!!!注意這里,如果是較快的CPU應(yīng)該延時(shí)久一些
  86. IO_12864_C=1;////////////////////////
  87. temp = IO_12864;
  88. return temp;
  89. }



  90.                                                                                                         /*****************寫數(shù)據(jù)子程序***********************/
  91.                                                                                                         
  92.                                                                                                         
  93.                                                                                                         
  94. void wrtdat_12864(unsigned char dat){
  95. //busychk_12864();
  96. IO_12864_C=0;//////////////////
  97. delay_12864(5000);/////////////
  98. E_12864 = 0;
  99. RS_12864 = 1;
  100. RW_12864 = 0;
  101. E_12864 = 1;
  102. IO_12864 = dat;
  103. delay_12864(5000); //使能延時(shí)50us!!!注意這里,如果是較快的CPU應(yīng)該延時(shí)久一些
  104. E_12864 = 0;
  105. }


  106.                                                                     /***************選屏****************/
  107.                                                                     
  108.                                                                     
  109. //void choose_12864(unsigned char i)//i是要寫的屏.0是左屏,1是右屏,2是雙屏;
  110. //{                                                                         //此處在硬件上運(yùn)行時(shí)i的電平全部與程序相反;
  111. //  switch (i)                                                 //此版本為仿真版;
  112. //  {
  113. //    case 0: CS1=0;CS2=1;break;        //比如此處如果要在電路上運(yùn)行則應(yīng)該改為CS=1;CS2=0;   
  114. //    case 1: CS1=1;CS2=0;break;
  115. //        case 2: CS1=0;CS2=0;break;
  116. //        default: break;
  117. //  }
  118. //}


  119.                                                 /************顯示圖片函數(shù),參數(shù)時(shí)圖片的地址,圖片必須是128*64像素的逐行逐行的點(diǎn)陣信息。****************/
  120.                                                 
  121.                                                 
  122.                                                 
  123. //void drawpic_12864( unsigned char   *pPicture ){
  124. //unsigned char j, k ;
  125. //wrtcom_12864(0x34);   //在寫GDRAM的地址之前一定要打開擴(kuò)充指令集,否則地址寫不進(jìn)去。
  126. //for( j = 0 ; j < 32 ; j++ )
  127. //{
  128. //wrtcom_12864(0x80 + j) ; //寫Y 坐標(biāo)
  129. //wrtcom_12864(0x80) ; //寫X 坐標(biāo)
  130. //for( k = 0 ; k < 16 ; k++ )         //寫一整行數(shù)據(jù)
  131. //{
  132. //wrtdat_12864( *pPicture++ );
  133. //}
  134. //}
  135. //for( j = 0 ; j < 32 ; j++ )
  136. //{
  137. //wrtcom_12864(0x80 + j) ; //寫Y 坐標(biāo)
  138. //wrtcom_12864(0x88) ; //寫X 坐標(biāo)
  139. //for( k = 0 ; k < 16 ; k++ )         //寫一整行數(shù)據(jù)
  140. //{
  141. //wrtdat_12864( *pPicture++ ) ;
  142. //}
  143. //}
  144. //wrtcom_12864(0x36); //打開繪圖顯示
  145. //wrtcom_12864(0x30); //返回基本指令集
  146. //}
  147. //   
  148. ////畫點(diǎn)函數(shù),左上角為參考點(diǎn)(0,0)
  149. ////右下角為(127,63),點(diǎn)坐標(biāo)形式為(行坐標(biāo),列坐標(biāo))
  150. ////參數(shù)type用于設(shè)置畫黑點(diǎn)、白點(diǎn)或取反(黑變白,白變黑)
  151. ////type = 0為白色,1 為黑色,2為取反
  152. ////畫完點(diǎn)不開啟顯示,需要自行開啟繪圖顯示
  153. //void drawdot_12864(unsigned char y,unsigned char x,unsigned char type){
  154. //unsigned char X,Y,k; //X存儲(chǔ)行地址,Y存儲(chǔ)列地址,k存儲(chǔ)點(diǎn)在字中的位置(0~15從左至右)
  155. //unsigned char DH,DL;
  156. //if(y >= 0 && y <= 63 && x >= 0 && x <= 127) {
  157. //if(y < 32){ //確定所畫點(diǎn)的地址行與列地址
  158. //X = 0x80 + (x >> 4);
  159. //Y = 0x80 + y;
  160. //}else{
  161. //X = 0x88 + (x >> 4);
  162. //Y = 0x80 + (y - 32);
  163. //}
  164. //wrtcom_12864(0x34); //開啟擴(kuò)展指令,關(guān)閉繪圖顯示
  165. //wrtcom_12864(Y); //寫行位地址
  166. //wrtcom_12864(X); //寫列字地址
  167. //DH = reddat_12864(); //假讀
  168. //DH = reddat_12864();   //讀高字節(jié)
  169. //DL = reddat_12864(); //讀低字節(jié)
  170. //k = x % 16;
  171. //switch(type){ //判斷類型,是黑點(diǎn)還是白點(diǎn)還是取反
  172. //case 0: //畫白點(diǎn)
  173. //  if(k < 8){
  174. //DH &= ~(0x01 << (7 - k));
  175. //}else{
  176. //DL &= ~(0x01 << (7 - (k % 8)));
  177. //}
  178. //break;
  179. //case 1: //畫黑點(diǎn)
  180. //if(k < 8){
  181. //DH |= (0x01 << (7 - k));
  182. //}else{
  183. //DL |= (0x01 << (7 - (k % 8)));
  184. //}
  185. //break;
  186. //case 2: //對(duì)點(diǎn)取反
  187. //if(k < 8){
  188. //DH ^= (0x01 << (7 - k));
  189. //}else{
  190. //DL ^= (0x01 << (7 - (k % 8)));
  191. //}
  192. //break;
  193. //default:
  194. //break;  
  195. //}
  196. //wrtcom_12864(Y); //寫行位地址
  197. //wrtcom_12864(X);   //寫列字地址
  198. //wrtdat_12864(DH); //回寫高字節(jié)
  199. //wrtdat_12864(DL); //回寫低字節(jié)
  200. //
  201. //wrtcom_12864(0x36); //開啟繪圖顯示
  202. //wrtcom_12864(0x30); //轉(zhuǎn)回普通指令
  203. //}
  204. //}
  205. //
  206. //                                                        /**********************畫矩形子函數(shù),參數(shù)為(點(diǎn)1行坐標(biāo),點(diǎn)1列坐標(biāo),點(diǎn)2行坐標(biāo),點(diǎn)2列坐標(biāo),*********
  207. //                                                        **********************線條顏色(0為白,1為黑,2對(duì)原色取反))*************************************/  
  208. //                        
  209. //                        
  210. //                        
  211. //void drawrec_12864(unsigned char y1,unsigned char x1,unsigned char y2,unsigned char x2,unsigned char type){
  212. //unsigned char largex,largey,smallx,smally;
  213. //unsigned char i;
  214. //if(x1 > x2){
  215. //largex = x1;
  216. //smallx = x2;
  217. //}else{
  218. //largex = x2;
  219. //smallx = x1;
  220. //}
  221. //if(y1 > y2){
  222. //largey = y1;
  223. //smally = y2;
  224. //}else{
  225. //largey = y2;
  226. //smally = y1;
  227. //}
  228. ////畫4條矩形邊框
  229. //for(i = smallx; i < largex; i++){
  230. //drawdot_12864(largey,i,type);
  231. //}
  232. //for(i = largey; i > smally; i--){
  233. //drawdot_12864(i,largex,type);
  234. //}
  235. //for(i = largex; i > smallx; i--){
  236. //drawdot_12864(smally,i,type);
  237. //}
  238. //for(i = smally; i < largey; i++){
  239. //drawdot_12864(i,smallx,type);
  240. //}
  241. //wrtcom_12864(0x30); //返回普通指令
  242. //}

  243.                                                                                                         /*****************清空GDRAM,往GDRAM內(nèi)部寫滿0x00*************/
  244.                                                                                                         
  245.                                                                                                         
  246. void clnGDR_12864(void){
  247. unsigned char j,k;
  248.   wrtcom_12864(0x34);//在寫GDRAM的地址之前一定要打開擴(kuò)充指令集,否則地址寫不進(jìn)去!!
  249. for( j = 0 ; j < 32 ; j++ )
  250. {
  251. wrtcom_12864(0x80 + j) ; //寫Y 坐標(biāo)
  252. wrtcom_12864(0x80) ; //寫X 坐標(biāo)
  253. for( k = 0 ; k < 32 ; k++ ) //寫一整行數(shù)據(jù)
  254. {
  255. wrtdat_12864( 0x00 );
  256. }
  257. }
  258. wrtcom_12864(0x30); //返回基本指令集
  259. }



  260.                                                         /***********************寫入短字符串函數(shù),參數(shù)分別為顯示行(0~3),顯示列(0~7),字符串首地址
  261.                                                                                                         字符串只會(huì)在一行顯示,超過的不顯示**********************************/
  262.                                                                                                         
  263.                                                                                                         

  264. void inputchars_12864(unsigned char y,unsigned char x,unsigned char *dataaddr){
  265. unsigned char i,address=0;
  266. switch (y){ //設(shè)置字符顯示起始地址
  267. case 0: address = 0x80 + x;
  268. break;
  269. case 1: address = 0x90 + x;
  270. break;
  271. case 2: address = 0x88 + x;
  272. break;
  273. case 3: address = 0x98 + x;
  274. break;
  275. default: break;
  276. }
  277. wrtcom_12864(0x30);
  278. wrtcom_12864(address);
  279. for(i = x;i < 8; i++){
  280. if(*dataaddr != '\0'){
  281. wrtdat_12864(*dataaddr++);
  282. }
  283. }
  284. }

  285.                                                                                         /******************長字符串顯示卷屏函數(shù)**************************/
  286.                                                                                        
  287.                                                                                        
  288.                                                                                        
  289. void scroll_12864(unsigned char *ser){
  290.         //addr存儲(chǔ)地址的中間變量,flag卷屏地址,hang要寫數(shù)據(jù)的行,
  291.         //over寫完字符串后繼續(xù)寫的空字符計(jì)數(shù)
  292. unsigned char i,addr,flag,hang,over,*ptdat;
  293. ptdat = ser; //獲得字符串首地址
  294. over = 0; //寫入空字符串(寫完字符串后)數(shù)目初始化為0
  295. wrtcom_12864(0x80); //寫第一行字符
  296. for(i = 0; i < 16; i++){
  297. if(*ptdat != '\0'){
  298. wrtdat_12864(*ptdat++);
  299. }else{
  300. wrtdat_12864(0x20);
  301. over++;
  302. }
  303. }
  304. wrtcom_12864(0x90); //寫第二行字符
  305. for(i = 0; i < 16; i++){
  306. if(*ptdat != '\0'){
  307. wrtdat_12864(*ptdat++);
  308. }else{
  309. wrtdat_12864(0x20);
  310. over++;
  311. }
  312. }
  313. wrtcom_12864(0x88); //寫第三行字符
  314. for(i = 0; i < 16; i++){
  315. if(*ptdat != '\0'){
  316. wrtdat_12864(*ptdat++);
  317. }else{
  318. wrtdat_12864(0x20);
  319. over++;
  320. }
  321. }
  322. wrtcom_12864(0x98); //寫第四行字符
  323. for(i = 0; i < 16; i++){
  324. if(*ptdat != '\0'){
  325. wrtdat_12864(*ptdat++);
  326. }else{
  327. wrtdat_12864(0x20);
  328. over++;
  329. }
  330. }
  331. ptdat = ptdat - 32;
  332. wrtcom_12864(0xa0); //寫第三行DDRAM,寫入內(nèi)容為第三行字符串和第五行字符串
  333. for(i = 0; i < 16; i++){ //寫第三行字符串
  334. if(*ptdat != '\0'){
  335. wrtdat_12864(*ptdat++);
  336. }else{
  337. wrtdat_12864(0x20);
  338. over++;
  339. }
  340. }
  341. ptdat = ptdat + 16;
  342. for(i = 0; i < 16; i++){   //寫第五行字符串
  343. if(*ptdat != '\0'){
  344. wrtdat_12864(*ptdat++);
  345. }else{
  346. wrtdat_12864(0x20);
  347. over++;
  348. }
  349. }
  350. wrtcom_12864(0x0c); //開顯示
  351. if(over > 15){;} //顯示字符不足4行,不卷動(dòng)
  352. else //顯示字符大于4行,繼續(xù)寫字符,同時(shí)開啟卷動(dòng)
  353. {
  354. hang = 4;
  355. flag = 0x01;
  356. while(1){
  357. switch(hang){   //設(shè)置寫入DDRAM的地址
  358. case 1: addr = 0x80; break;
  359. case 2: addr = 0x90; break;
  360. case 3: addr = 0xa0; break;
  361. case 4: addr = 0xb0; break;
  362. }
  363. switch(hang){ //設(shè)置要寫數(shù)據(jù)的下一行
  364. case 1: hang = 2; break;
  365. case 2: hang = 3; break;
  366. case 3: hang = 4; break;
  367. case 4: hang = 1; break;
  368. }
  369. ptdat = ptdat - 32;
  370. for(i = 0; i < 8; i++){
  371. wrtcom_12864(0x34); //打開擴(kuò)展指令
  372. wrtcom_12864(0x03); //允許輸入卷動(dòng)地址
  373. wrtcom_12864(0x40 + flag++); //設(shè)置卷動(dòng)地址
  374. wrtcom_12864(0x30);         //回到基本指令
  375. wrtcom_12864(addr + i);
  376. delay_12864(20000);
  377. if(*ptdat != '\0'){
  378. wrtdat_12864(*ptdat++);   //連續(xù)寫入兩個(gè)字節(jié)之高字節(jié)
  379. }else{
  380. wrtdat_12864(0x20);
  381. }
  382. if(*ptdat != '\0'){
  383. wrtdat_12864(*ptdat++);   //連續(xù)寫入兩個(gè)字節(jié)之低字節(jié)
  384. }else{
  385. wrtdat_12864(0x20);
  386. }
  387. }
  388. ptdat = ptdat + 16;
  389. for(i = 8; i < 16; i++){
  390. wrtcom_12864(0x34); //打開擴(kuò)展指令
  391. wrtcom_12864(0x03); //允許輸入卷動(dòng)地址
  392. if(flag == 64){flag = 0;}
  393. wrtcom_12864(0x40 + flag); //設(shè)置卷動(dòng)地址
  394. flag++;
  395. wrtcom_12864(0x30); //回到基本指令
  396. wrtcom_12864(addr + i);
  397. delay_12864(20000);
  398. if(*ptdat != '\0'){
  399. wrtdat_12864(*ptdat++);  //連續(xù)寫入兩個(gè)字節(jié)之高字節(jié)
  400. }else{
  401. over++;  //寫完最后一行字符,需要再卷動(dòng)16次才能顯示出來。
  402. wrtdat_12864(0x20);
  403. }
  404. if(*ptdat != '\0'){
  405. wrtdat_12864(*ptdat++);    //連續(xù)寫入兩個(gè)字節(jié)之低字節(jié)
  406. }else{
  407. wrtdat_12864(0x20);
  408. }
  409. }
  410. if(over < 8){;}   //最后一行顯示完畢則停止卷動(dòng)
  411. else {break;}
  412. }
  413. }
  414. }

  415.                                                                         /***********************初始化12864子函數(shù)***********************************/
  416.                                                                         
  417.                                                                         
  418.                                                                         
  419.                                                                         
  420.                                                                         
  421. void initial_12864(void){
  422. delay_12864(40000);
  423. RST_12864 = 1;
  424. RST_12864 = 0; //復(fù)位
  425. delay_12864(500);
  426. RST_12864 = 1;

  427. wrtcom_12864(0x30); //設(shè)置為基本指令集動(dòng)作
  428. delay_12864(100);
  429. wrtcom_12864(0x30); //設(shè)置為基本指令集動(dòng)作
  430. delay_12864(37);
  431. wrtcom_12864(0x08); //設(shè)置顯示、光標(biāo)、閃爍全關(guān)。
  432. delay_12864(100);
  433. wrtcom_12864(0x01); //清屏,并且DDRAM數(shù)據(jù)指針清零
  434. delay_12864(1000);
  435. wrtcom_12864(0x06);   //進(jìn)入模式設(shè)置
  436. wrtcom_12864(0x0c);     //開顯示
  437. }










復(fù)制代碼



匯編語言版本的程序:

  1. ; Generated by holtek-gcc v3.13, Wed Apr 13 19:10:57 2016
  2. ;
  3. ; Configuration:
  4. ;       with long instruction
  5. ;       Multi-ROM, Multi-RAM
  6. ;       bits_per_rom_unit:16
  7. ;       with mp1
  8. ;       with tbhp, address(0x9)
  9. ;          Use tabrd-const
  10. ;      
  11. ; SFR address of long-instruction arch:
  12. ;    mp0 = -1,1,0
  13. ;    mp1 = 4,3,2
  14. ;    mp2 = 14,13,12
  15. ;    tbp = 9,7,8
  16. ;    acc = 5
  17. ;    pcl = 6
  18. ;    status = 10
  19. ;    bp = 11
  20. ;    intc = 48
  21. ;      
  22. ; use 'tabrdc' instead of 'tabrd'
  23. ;      

  24. #pragma translator "holtek-gcc 4.6.4" "3.13" "build 20130711"
  25. ; Rebuild 26

  26. ir equ [2]
  27. mp equ [3]
  28. sbp equ [4]
  29. acc equ [5]
  30. bp equ [11]
  31. tblp equ [7]
  32. tbhp equ [9]
  33. status equ [10]
  34. c equ [10].0
  35. ac equ [10].1
  36. z equ [10].2
  37. ov equ [10].3
  38. cz equ [10].6
  39. sc equ [10].7
  40. intc equ [48]

  41. extern ra:byte
  42. extern rb:byte
  43. extern rc:byte
  44. extern rd:byte
  45. extern re:byte
  46. extern rf:byte
  47. extern rg:byte
  48. extern rh:byte
  49. extern _Crom2Prom:near
  50. extern _Crom2PromNext:near
  51. @HCCINIT        .section 'data'
  52. @HCCINIT0        .section 'data'

  53. #pragma debug scope 1 1
復(fù)制代碼


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:116003 發(fā)表于 2016-4-22 20:30 | 顯示全部樓層
謝謝                                 
回復(fù)

使用道具 舉報(bào)

ID:124260 發(fā)表于 2016-5-31 15:56 | 顯示全部樓層
本帖最后由 帥帥 于 2016-5-31 15:57 編輯

大神,我想用合泰HT66F70A來控制4X4然后顯示在lcd1602程序怎么寫啊?
回復(fù)

使用道具 舉報(bào)

ID:166387 發(fā)表于 2017-2-24 13:48 | 顯示全部樓層
下載看看有沒有學(xué)習(xí)價(jià)值
回復(fù)

使用道具 舉報(bào)

ID:186647 發(fā)表于 2017-4-6 13:02 | 顯示全部樓層
正好手頭用的是70a的單片機(jī),
回復(fù)

使用道具 舉報(bào)

ID:190835 發(fā)表于 2017-5-5 10:46 | 顯示全部樓層
竟然少
回復(fù)

使用道具 舉報(bào)

ID:260698 發(fā)表于 2018-3-30 16:57 | 顯示全部樓層
12864怎么接合泰66f70a,有電路圖沒?
回復(fù)

使用道具 舉報(bào)

ID:296136 發(fā)表于 2018-5-14 16:45 | 顯示全部樓層
樓主,你有HT66F70A LCD12864顯示時(shí)間或者溫度的程序嗎
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表