找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3303|回复: 7
收起左侧

注释详细的单片机电子音乐盒程序与Proteus仿真原理图设计

[复制链接]
ID:743542 发表于 2020-12-10 00:00 | 显示全部楼层 |阅读模式
分享一个音乐盒设计,里面包含低中高音,起风了,天空之城,停格音乐。Proteus原理图+代码,全注释,很好理解。
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
51hei.png

单片机源程序如下(代码注释很详细):
  1. #include <reg51.h> //调用单片机头文件
  2. #define uchar unsigned char //无符号字符型 宏定义变量范围 0~255
  3. #define uint unsigned int //无符号整型 宏定义变量范围 0~65535
  4. sbit beep = P2^1; //蜂鸣器定义
  5. sbit K1=P1^0;// 给 P1^0 定义,控制 DO 的发音
  6. sbit K2=P1^1;// 给 P1^1 定义,控制 RE 的发音
  7. sbit K3=P1^2;// 给 P1^2 定义,控制 MI 的发音
  8. sbit K4=P1^3;// 给 P1^3 定义,控制 FA 的发音
  9. sbit K5=P1^4;// 给 P1^4 定义,控制 SO 的发音
  10. sbit K6=P1^5;// 给 P1^5 定义,控制 LA 的发音
  11. sbit K7=P1^6;// 给 P1^6 定义,控制 SI 的发音

  12. sbit K8=P1^7;//  给 P1^7 定义,控制 DO 的发音
  13. sbit K9=P2^2;//  给 P2^2 定义,控制 RE 的发音
  14. sbit K10=P2^3;// 给 P2^3 定义,控制 MI 的发音
  15. sbit K11=P2^4;// 给 P2^4 定义,控制 FA 的发音
  16. sbit K12=P2^5;// 给 P2^5 定义,控制 SO 的发音
  17. sbit K13=P2^6;// 给 P2^6 定义,控制 LA 的发音
  18. sbit K14=P2^7;// 给 P2^7 定义,控制 SI 的发音

  19. sbit K15=P3^0;// 给 P3^0 定义,控制 DO 的发音
  20. sbit K16=P3^1;// 给 P3^1 定义,控制 RE 的发音
  21. sbit K17=P3^2;// 给 P3^2 定义,控制 MI 的发音
  22. sbit K18=P3^3;// 给 P3^3 定义,控制 FA 的发音
  23. sbit K19=P3^4;// 给 P3^4 定义,控制 SO 的发音
  24. sbit K20=P3^5;// 给 P3^5 定义,控制 LA 的发音
  25. sbit K21=P3^6;// 给 P3^6 定义,控制 SI 的发音
  26. sbit K22=P2^0;// 音乐播放按键
  27. uchar flag_en = 0; //开始放歌
  28. uchar flag_i = 0;
  29. //数码管段选定义 0 1 2 3 4 56 7 8 9
  30. uchar code smg_du[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff };
  31. // AB C D E F不显示
  32. //断码
  33. uchar m,n;
  34. uchar code T[49][2]={{0,0},
  35. {0xF8,0x8B},{0xF8,0xF2},{0xF9,0x5B},{0xF9,0xB7},{0xFA,0x14},{0xFA,0x66},{0xFA,0xB9}
  36. ,{0xFB,0x03},{0xFB,0x4A},{0xFB,0x8F},{0xFB,0xCF},{0xFC,0x0B},
  37. {0xFC,0x43},{0xFC,0x78},{0xFC,0xAB},{0xFC,0xDB},{0xFD,0x08},{0xFD,0x33},{0xFD,0x5B},
  38. {0xFD,0x81},{0xFD,0xA5},{0xFD,0xC7},{0xFD,0xE7},{0xFE,0x05},
  39. {0xFE,0x21},{0xFE,0x3C},{0xFE,0x55},{0xFE,0x6D},{0xFE,0x84},{0xFE,0x99},{0xFE,0xAD
  40. },{0xFE,0xC0},{0xFE,0x02},{0xFE,0xE3},{0xFE,0xF3},{0xFF,0x02},
  41. {0xFF,0x10},{0xFF,0x1D},{0xFF,0x2A},{0xFF,0x36},{0xFF,0x42},{0xFF,0x4C},{0xFF,0x56},
  42. {0xFF,0x60},{0xFF,0x69},{0xFF,0x71},{0xFF,0x79},{0xFF,0x81}};
  43. uchar code music1[][2]={{0,4},//天空之城
  44. {16,4},{18,4},{19,12},{18,4},{19,8},{23,8},{18,24},{11,8},{16,12},{14,4},{16,8},
  45. {19,8},{14,24},{11,8},{12,12},{11,4},{12,4},{19,4},{19,4},{11,24},{19,8},{18,12},
  46. {13,4},{13,8},{18,16},{0,8},{16,4},{18,4},{19,12},{18,4},{19,8},{23,8},{18,24},
  47. {11,4},{11,4},{16,12},{14,4},{16,8},{19,8},{14,24},{11,8},{12,8},{19,4},{18,4},
  48. {18,8},{19,8},{21,8},{23,4},{19,16},{0,4},{19,4},{18,4},{16,8},{18,8},{15,8},
  49. {16,16},{0,8},{19,4},{21,4},{23,12},{21,8},{23,8},{24,8},{26,4},{21,16},{14,8},
  50. {21,2},{19,2},{18,2},{19,2},{19,8},{19,4},{21,8},{23,4},{23,24},{16,4},{18,4},
  51. {19,8},{18,4},{19,4},{21,8},{19,12},{14,4},{14,16},{24,8},{23,8},{21,8},{19,8},
  52. {23,16},{16,4},{18,4},{19,12},{18,4},{19,8},{23,8},{18,24},{11,8},{16,12},{14,4},
  53. {16,8},{19,8},{14,24},{11,8},{12,4},{19,4},{18,4},{18,8},{19,8},{21,8},{23,4},
  54. {19,4},{19,16},{19,4},{18,4},{16,8},{18,8},{15,8},{16,24},{0xFF,0xFF}};
  55. uchar code music2[][2]={{0,4}, //起风了
  56. {15,6},{13,2},{15,6},{13,2},{15,4},{17,4},{20,4},{17,4},{15,6},{13,2},{15,6},
  57. {13,2},{15,2},{17,2},{15,2},{13,2},{8,8},{15,6},{13,2},{15,6},{13,2},{15,4},
  58. {17,4},{20,4},{17,4},{15,6},{17,2},{15,4},{13,4},{15,8},{0,8},{15,6},{13,2},
  59. {15,6},{13,2},{15,6},{13,2},{15,4},{17,4},{20,4},{17,4},{15,6},{17,2},{15,4},
  60. {13,4},{10,8},{17,2},{15,2},{13,2},{15,2},{17,2},{15,2},{13,2},{15,2},{13,8},
  61. {17,2},{15,2},{13,2},{15,2},{13,6},{20,2},{17,2},{15,2},{13,2},{15,2},{13,16},
  62. {13,4},{15,4},{17,4},{13,4},{22,4},{22,2},{22,2},{22,6},{13,2},{24,4},{22,2},
  63. {24,2},{24,8},{24,4},{22,2},{24,2},{24,4},{17,4},{25,2},{27,2},{25,2},{24,2},
  64. {22,4},{20,4},{22,4},{20,2},{22,2},{22,2},{20,2},{22,2},{20,2},{22,4},{20,2},
  65. {15,2},{15,2},{20,6},{17,16},{13,4},{15,4},{17,4},{13,4},{22,4},{20,2},{22,2},
  66. {22,6},{13,2},{24,4},{22,2},{24,2},{24,2},{24,4},{22,2},{24,2},{24,4},{17,4},
  67. {25,2},{27,2},{25,2},{24,2},{22,4},{20,4},{22,4},{29,2},{29,2},{29,4},{20,4},
  68. {22,4},{29,2},{29,2},{29,4},{20,4},{22,4},{29,2},{29,2},{29,2},{20,4},{22,2},
  69. {22,24},{25,4},{27,4},{29,4},{34,2},{32,2},{32,4},{34,2},{32,2},{32,4},{34,2},
  70. {32,2},{32,4},{27,2},{29,2},{29,4},{34,2},{32,2},{32,4},{34,2},{32,2},{32,4},
  71. {34,2},{32,2},{32,2},{29,6},{27,4},{25,2},{22,2},{22,2},{25,4},{22,2},{27,2},
  72. {25,2},{22,4},{22,2},{25,6},{29,8},{29,2},{30,2},{29,4},{29,2},{27,6},{25,4},
  73. {27,4},{29,4},{34,2},{32,2},{32,4},{34,2},{32,2},{32,4},{34,2},{32,4},{34,2},
  74. {32,2},{32,4},{27,4},{29,4},{34,2},{32,2},{32,4},{34,2},{32,2},{32,4},{34,2},
  75. {32,2},{32,2},{29,6},{27,4},{25,2},{22,2},{10,2},{29,6},{27,4},{25,2},{22,2},
  76. {22,2},{25,6},{25,16},{0,8},{34,2},{29,6},{27,4},{25,2},{22,2},{22,2},{29,6},
  77. {27,4},{25,2},{22,2},{22,2},{25,6},{25,24},{0,8},{0xFF,0xFF}};
  78. uchar code music3[][2]={{0,4}, //停格
  79. {10,4},{13,4},{10,4},{15,2},{17,2},{17,2},{10,6},{0,8},{0,4},{10,2},{1,2},
  80. {10,8},{15,4},{15,2},{17,2},{17,8},{0,8},{15,8},{0,8},{15,8},{8,6},{8,2},
  81. {18,6},{17,2},{17,4},{15,4},{13,2},{12,8},{10,4},{13,4},{10,4},{15,2},
  82. {17,2},{17,2},{10,6},{0,8},{0,4},{10,2},{1,2},{10,4},{15,2},{17,2},{17,2},
  83. {17,6},{17,8},{0,8},{15,8},{0,8},{15,8},{0,6},{8,2},{18,6},{17,2},{17,4},
  84. {15,2},{13,2},{17,8},{0,6},{17,2},{25,6},{24,2},{24,4},{22,2},{20,2},{17,6},
  85. {15,2},{15,2},{10,4},{10,2},{20,2},{22,2},{22,4},{22,4},{0,4},{20,2},{22,2},
  86. {22,4},{22,4},{0,4},{20,8},{20,6},{20,2},{17,4},{15,4},{13,2},{10,2},{10,4},
  87. {17,4},{15,4},{13,4},{15,4},{12,8},{0,6},{0xFF,0xFF}};
  88. void delay(uchar p)
  89. {
  90. uchar i,j;
  91. for(;p>0;p--)
  92. for(i=181;i>0;i--)
  93. for(j=181;j>0;j--);
  94. }
  95. void pause()
  96. {
  97. uchar i,j;
  98. for(i=150;i>0;i--)
  99. for(j=150;j>0;j--);
  100. }
  101. /***********************1ms 延时函数 *****************************/
  102. void delay_1ms(uint q)
  103. {
  104. uint i,j;
  105. for(i=0;i<q;i++)
  106. for(j=0;j<120;j++);
  107. }
  108. /****************** 按键程序 *************************/
  109. void key() //按键程序
  110. {
  111. if(K1==0)
  112. {
  113. delay_1ms(10); //按键去抖动
  114. if(K1==0)
  115. {
  116. P0=smg_du[1];// 使数码管显示该音调的字符
  117. while(!K1)
  118. {
  119. m = 1;
  120. TR0 = 1; //打开定时器
  121. }// 使蜂鸣器发出相应频率的声音 ;
  122. TR0 = 0; //关闭定时器
  123. }
  124. }
  125. if(K2==0)
  126. {
  127. delay_1ms(10); //按键去抖动
  128. if(K2==0)
  129. {
  130. P0=smg_du[2];// 使数码管显示该音调的字符
  131. while(!K2)
  132. {
  133. m = 2;
  134. TR0 = 1; //打开定时器
  135. }// 使蜂鸣器发出相应频率的声音 ;
  136. TR0 = 0; //关闭定时器
  137. }
  138. }
  139. if(K3==0)
  140. {
  141. delay_1ms(10); //按键去抖动
  142. if(K3==0)
  143. {
  144. P0=smg_du[3];// 使数码管显示该音调的字符
  145. while(!K3)
  146. {
  147. m = 3;
  148. TR0 = 1; //打开定时器
  149. }// 使蜂鸣器发出相应频率的声音 ;
  150. TR0 = 0; //关闭定时器
  151. }
  152. }
  153. if(K4==0)
  154. {
  155. delay_1ms(10); //按键去抖动
  156. if(K4==0)
  157. {
  158. P0=smg_du[4];// 使数码管显示该音调的字符
  159. while(!K4)
  160. {
  161. m = 4;
  162. TR0 = 1; //打开定时器
  163. }// 使蜂鸣器发出相应频率的声音 ;
  164. TR0 = 0; //关闭定时器
  165. }
  166. }
  167. if(K5==0)
  168. {
  169. delay_1ms(10); //按键去抖动
  170. if(K5==0)
  171. {
  172. P0=smg_du[5];// 使数码管显示该音调的字符
  173. while(!K5)
  174. {
  175. m = 5;
  176. TR0 = 1; //打开定时器
  177. }// 使蜂鸣器发出相应频率的声音 ;
  178. TR0 = 0; //关闭定时器
  179. }
  180. }
  181. if(K6==0)
  182. {
  183. delay_1ms(10); //按键去抖动
  184. if(K6==0)
  185. {
  186. P0=smg_du[6];// 使数码管显示该音调的字符
  187. while(!K6)
  188. {
  189. m = 6;
  190. TR0 = 1; //打开定时器
  191. }// 使蜂鸣器发出相应频率的声音 ;
  192. TR0 = 0; //关闭定时器
  193. }
  194. }
  195. if(K7==0)
  196. {
  197. delay_1ms(10); //按键去抖动
  198. if(K7==0)
  199. {
  200. P0=smg_du[7];// 使数码管显示该音调的字符
  201. while(!K7)
  202. {
  203. m = 7;
  204. TR0 = 1; //打开定时器
  205. }// 使蜂鸣器发出相应频率的声音 ;
  206. TR0 = 0; //关闭定时器
  207. }
  208. }
  209. if(K8==0)
  210. {
  211. delay_1ms(10); //按键去抖动
  212. if(K8==0)
  213. {
  214. P0=smg_du[1];// 使数码管显示该音调的字符
  215. while(!K8)
  216. {
  217. m = 8;
  218. TR0 = 1; //打开定时器
  219. }// 使蜂鸣器发出相应频率的声音 ;
  220. TR0 = 0; //关闭定时器
  221. }
  222. }
  223. if(K9==0)
  224. {
  225. delay_1ms(10); //按键去抖动
  226. if(K9==0)
  227. {
  228. P0=smg_du[2];// 使数码管显示该音调的字符
  229. while(!K9)
  230. {
  231. m = 9;
  232. TR0 = 1; //打开定时器
  233. }// 使蜂鸣器发出相应频率的声音 ;
  234. TR0 = 0; //关闭定时器
  235. }
  236. }
  237. if(K10==0)
  238. {
  239. delay_1ms(10); //按键去抖动
  240. if(K10==0)
  241. {
  242. P0=smg_du[3];// 使数码管显示该音调的字符
  243. while(!K10)
  244. {
  245. m = 10;
  246. TR0 = 1; //打开定时器
  247. }// 使蜂鸣器发出相应频率的声音 ;
  248. TR0 = 0; //关闭定时器
  249. }
  250. }
  251. if(K11==0)
  252. {
  253. delay_1ms(10); //按键去抖动
  254. if(K11==0)
  255. {
  256. P0=smg_du[4];// 使数码管显示该音调的字符
  257. while(!K11)
  258. {
  259. m = 11;
  260. TR0 = 1; //打开定时器
  261. }// 使蜂鸣器发出相应频率的声音 ;
  262. TR0 = 0; //关闭定时器
  263. }
  264. }
  265. if(K12==0)
  266. {
  267. delay_1ms(10); //按键去抖动
  268. if(K12==0)
  269. {
  270. P0=smg_du[5];// 使数码管显示该音调的字符
  271. while(!K12)
  272. {
  273. m = 12;
  274. TR0 = 1; //打开定时器
  275. }// 使蜂鸣器发出相应频率的声音 ;
  276. TR0 = 0; //关闭定时器
  277. }
  278. }
  279. if(K13==        0)
  280. {
  281. delay_1ms(10); //按键去抖动
  282. if(K13==0)
  283. {
  284. P0=smg_du[6];// 使数码管显示该音调的字符
  285. while(!K13)
  286. {
  287. m = 13;
  288. TR0 = 1; //打开定时器
  289. }// 使蜂鸣器发出相应频率的声音 ;
  290. TR0 = 0; //关闭定时器
  291. }
  292. }
  293. if(K14==0)
  294. {
  295. delay_1ms(10); //按键去抖动
  296. if(K14==0)
  297. {
  298. P0=smg_du[7];// 使数码管显示该音调的字符
  299. while(!K14)
  300. {
  301. m = 14;
  302. TR0 = 1; //打开定时器
  303. }// 使蜂鸣器发出相应频率的声音 ;
  304. TR0 = 0; //关闭定时器
  305. }
  306. }
  307. if(K15==0)
  308. {
  309. delay_1ms(10); //按键去抖动
  310. if(K15==0)
  311. {
  312. P0=smg_du[1];// 使数码管显示该音调的字符
  313. while(!K15)
  314. {
  315. m = 15;
  316. TR0 = 1; //打开定时器
  317. }// 使蜂鸣器发出相应频率的声音 ;
  318. TR0 = 0; //关闭定时器
  319. }
  320. }
  321. if(K16==0)
  322. {
  323. delay_1ms(10); //按键去抖动
  324. if(K16==0)
  325. {
  326. P0=smg_du[2];// 使数码管显示该音调的字符
  327. while(!K16)
  328. {
  329. m = 16;
  330. TR0 = 1; //打开定时器
  331. }// 使蜂鸣器发出相应频率的声音 ;
  332. TR0 = 0; //关闭定时器
  333. }
  334. }
  335. if(K17==0)
  336. {
  337. delay_1ms(10); //按键去抖动
  338. if(K17==0)
  339. {
  340. P0=smg_du[3];// 使数码管显示该音调的字符
  341. while(!K17)
  342. {
  343. m = 17;
  344. TR0 = 1; //打开定时器
  345. }// 使蜂鸣器发出相应频率的声音 ;
  346. TR0 = 0; //关闭定时器
  347. }
  348. }
  349. if(K18==0)
  350. {
  351. delay_1ms(10); //按键去抖动
  352. if(K18==0)
  353. {
  354. P0=smg_du[4];// 使数码管显示该音调的字符
  355. while(!K18)
  356. {
  357. m = 18;
  358. TR0 = 1; //打开定时器
  359. }// 使蜂鸣器发出相应频率的声音 ;
  360. TR0 = 0; //关闭定时器
  361. }
  362. }
  363. if(K19==0)
  364. {
  365. delay_1ms(10); //按键去抖动
  366. if(K19==0)
  367. {
  368. P0=smg_du[5];// 使数码管显示该音调的字符
  369. while(!K19)
  370. {
  371. m = 19;
  372. TR0 = 1; //打开定时器
  373. }// 使蜂鸣器发出相应频率的声音 ;
  374. TR0 = 0; //关闭定时器
  375. }
  376. }
  377. if(K20==0)
  378. {
  379. delay_1ms(10); //按键去抖动
  380. if(K20==0)
  381. {
  382. P0=smg_du[6];// 使数码管显示该音调的字符
  383. while(!K20)
  384. {
  385. m =20;
  386. TR0 = 1; //打开定时器
  387. }// 使蜂鸣器发出相应频率的声音 ;
  388. TR0 = 0; //关闭定时器
  389. }
  390. }
  391. if(K21==0)
  392. {
  393. delay_1ms(10); //按键去抖动
  394. if(K21==0)
  395. {
  396. P0=smg_du[7];// 使数码管显示该音调的字符
  397. while(!K21)
  398. {
  399. m = 21;
  400. TR0 = 1; //打开定时器
  401. }// 使蜂鸣器发出相应频率的声音 ;
  402. TR0 = 0; //关闭定时器
  403. }
  404. }
  405. P0 = 0x20;
  406. K9 = 1;
  407. if(K22==0)
  408. {
  409. delay_1ms(10); //按键去抖动
  410. if(K22==0)
  411. {
  412. flag_en ++;
  413. flag_i = 0;
  414. if(flag_en > 3)
  415. {
  416. flag_en = 0;
  417. TR0 = 0;
  418. }
  419. while(!K22)
  420. {
  421. }// 使蜂鸣器发出相应频率的声音 ;
  422. }
  423. }
  424. }
  425. /****************** 主程序 **********************/
  426. void main()
  427. {
  428. P0 = P1 = P2 = P3 = 0xff;
  429. TMOD=0x01;
  430. EA=1;
  431. ET0=1; //定时器 0 初始化
  432. while(1)
  433. {
  434. key(); //按键程序
  435. if(flag_en == 1) //天空之城
  436. {
  437. m=music1[flag_i][0];
  438. n=music1[flag_i][1]; //放歌
  439. P0 = smg_du[m % 8]; //显示
  440. if(m==0x00)
  441. {
  442. TR0=0;
  443. beep = 1;
  444. delay(n);
  445. flag_i++;
  446. }
  447. else if(m==0xFF) //放歌结束
  448. {
  449. TR0=0;
  450. beep = 1;
  451. delay(30);
  452. flag_i=0;
  453. flag_en = 0;}
  454. else if(m==music1[flag_i+1][0])
  455. {
  456. TR0=1;
  457. delay(n);
  458. TR0=0;
  459. beep = 1;
  460. pause();
  461. flag_i++;
  462. }
  463. else
  464. {
  465. TR0=1;
  466. delay(n);
  467. flag_i++;
  468. }
  469. }
  470. else
  471. beep = 1 ;
  472. if(flag_en == 2) //起风了
  473. {
  474. m=music2[flag_i][0];
  475. n=music2[flag_i][1]; //放歌
  476. P0 = smg_du[m % 8]; //显示
  477. if(m==0x00)
  478. {
  479. TR0=0;
  480. beep = 1;
  481. delay(n);
  482. flag_i++;
  483. }
  484. else if(m==0xFF) //放歌结束
  485. {
  486. TR0=0;
  487. beep = 1;
  488. delay(30);
  489. flag_i=0;
  490. flag_en = 0;
  491. }
  492. else if(m==music2[flag_i+1][0])
  493. {
  494. TR0=1;
  495. delay(n);
  496. TR0=0;
  497. beep = 1;
  498. pause();
  499. flag_i++;
  500. }
  501. else
  502. {
  503. TR0=1;
  504. delay(n);
  505. flag_i++;
  506. }
  507. }
  508. else
  509. beep = 1 ;
  510. if(flag_en == 3) //停格
  511. {
  512. m=music3[flag_i][0];
  513. n=music3[flag_i][1]; //放歌
  514. P0 = smg_du[m % 8]; //显示
  515. if(m==0x00)
  516. {
  517. TR0=0;
  518. beep = 1;
  519. delay(n);
  520. flag_i++;
  521. }
  522. else if(m==0xFF) //放歌结束
  523. {
  524. TR0=0;
  525. beep = 1;
  526. delay(30);
  527. flag_i=0;
  528. flag_en = 0;
  529. }
  530. else if(m==music3[flag_i+1][0])
  531. {
  532. TR0=1;
  533. delay(n);
  534. TR0=0;
  535. beep = 1;
  536. pause();
  537. flag_i++;
  538. }
  539. else
  540. {
  541. TR0=1;
  542. delay(n);
  543. flag_i++;
  544. }
  545. }
  546. else
  547. beep = 1 ;
  548. }
  549. }
  550. /***************** 定时器 0 中断 *********************/
  551. void T0_int() interrupt 1
  552. {
  553. beep=!beep;
  554. TH0=T[m][0];
  555. TL0=T[m][1];
  556. }
复制代码
51hei.gif
所有资料51hei提供下载:
代码+原理图.zip (111.87 KB, 下载次数: 101)

评分

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

查看全部评分

回复

使用道具 举报

ID:941608 发表于 2021-6-23 09:40 | 显示全部楼层
你好,我想问一下数码管怎么不显示
回复

使用道具 举报

ID:743542 发表于 2021-6-24 13:01 来自手机 | 显示全部楼层
111110.. 发表于 2021-6-23 09:40
你好,我想问一下数码管怎么不显示

你检查一下是不是共阴阳的问题噢。
回复

使用道具 举报

ID:743542 发表于 2021-6-24 13:02 来自手机 | 显示全部楼层
111110.. 发表于 2021-6-23 09:40
你好,我想问一下数码管怎么不显示

因为我是软件仿真  做实物还是有些差距的。
回复

使用道具 举报

ID:971355 发表于 2021-10-12 10:41 来自手机 | 显示全部楼层
111110.. 发表于 2021-6-23 09:40
你好,我想问一下数码管怎么不显示

我也想问一下这个问题
回复

使用道具 举报

ID:997585 发表于 2021-12-28 20:20 | 显示全部楼层
请问有接PCB图的图片嘛?
回复

使用道具 举报

ID:743542 发表于 2021-12-30 17:01 | 显示全部楼层
3437380774 发表于 2021-10-12 10:41
我也想问一下这个问题

我这边是正常显示的~
回复

使用道具 举报

ID:743542 发表于 2021-12-30 17:02 | 显示全部楼层
YYYds 发表于 2021-12-28 20:20
请问有接PCB图的图片嘛?

没有噢 自己画一个 也不难 可以直接用自动布线画。不是很难。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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