led點(diǎn)陣書寫顯示屏簡(jiǎn)介程序_第1頁
led點(diǎn)陣書寫顯示屏簡(jiǎn)介程序_第2頁
led點(diǎn)陣書寫顯示屏簡(jiǎn)介程序_第3頁
led點(diǎn)陣書寫顯示屏簡(jiǎn)介程序_第4頁
led點(diǎn)陣書寫顯示屏簡(jiǎn)介程序_第5頁
已閱讀5頁,還剩10頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、LED點(diǎn)陣書寫顯屏作品是一個(gè)用光敏三極管做中斷源的16X16點(diǎn)陣,已經(jīng)實(shí)現(xiàn)了7個(gè)功能:1. 書寫2. 反顯3. 單筆擦除4. 移動(dòng)文字5. 儲(chǔ)存文字(可用顯示功能一次放映5個(gè)字)6. 清屏(直接擦除屏幕上的文字)7. 放映存儲(chǔ)的文字程序:8. #include<reg51.h>9. #include<intrins.h>10. #define uchar unsigned char11. #define uint unsigned int12. #define LCM_Data P1/數(shù)據(jù)接口13. uint dlzbw=0x0001,dlzbw1;14. uchar

2、Count_a=0; /菜單翻頁計(jì)數(shù);15. uchar Count_b; /比較值16. uchar Count_c=0; /子菜單計(jì)數(shù)17. uchar p2hc=0xe0;/ p2hcl;18. uchar p0hc,p0hc1,p0hcl,p0hc1l,sxhc=0;19.20.21. uchar hhc1=0x08,hhc2,lhc1=0x08,lhc2,ydhc=0;22.23.24.25. uchar lie_1,hang_1;/列行初值為026. uint dl,wl,hhc,lhc;/點(diǎn)亮和微亮的延時(shí)量緩存行列值27. uint gbhc=0,dbhc=0;/光筆緩存28.

3、uchar a_1=1;29. uchar b_1=0;30. uchar c_1=0;31. uchar d_1=0;32. uchar e_1=0;33. uint led_dl16=0;34. uint xdata led_dl116=0;35. uint xdata led_dl216=0;36. uint xdata led_dl316=0;37. uint xdata led_dl416=0;38. sbit s1 = P26;39. sbit s2 = P27;40. sbit LCM_E=P02;/定義接口41. sbit LCM_RW=P01;42. sbit LCM_RS=

4、 P00;43. sbit LCM_G0=P24;44. uchar code net0 = "Writing"45. uchar code net1 = ">1.Re-display"46. uchar code net2 = ">2.Erase"47. uchar code net3 = ">3.Drag"48. uchar code net4 = ">4.Storage"49. uchar code net5 = ">5.Eliminate"

5、;50. uchar code net6 = ">6.Display"51. uchar code net7 = ">Return"52. uchar code net8 = "Frist_word"53. uchar code net9 = "Second_word"54. uchar code net10 = "Third_word"55. uchar code net11 = "Fourth_word"56. uchar code net12 = "

6、;Wellcome!"57. uint code dh816=0xffff,0x8001,0x8001,0x8001,0x8001,0x8001,0x8001,0x8001,58. 0x8001,0x8001,0x8001,0x8001,0x8001,0x8001,0x8001,0xffff,59. 0xffff,0xffff,0xc003,0xc003,0xc003,0xc003,0xc003,0xc003,60. 0xc003,0xc003,0xc003,0xc003,0xc003,0xc003,0xffff,0xffff,61. 0xffff,0xffff,0xffff,0xe

7、007,0xe007,0xe007,0xe007,0xe007,62. 0xe007,0xe007,0xe007,0xe007,0xe007,0xffff,0xffff,0xffff,63. 0xffff,0xffff,0xffff,0xffff,0xf00f,0xf00f,0xf00f,0xf00f,64. 0xf00f,0xf00f,0xf00f,0xf00f,0xffff,0xffff,0xffff,0xffff,65. 0xffff,0xffff,0xffff,0xffff,0xffff,0xf81f,0xf81f,0xf81f,66. 0xf81f,0xf81f,0xf81f,0xf

8、fff,0xffff,0xffff,0xffff,0xffff,67. 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xfc3f,0xfc3f,68. 0xfc3f,0xfc3f,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,69. 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xfe7f,70. 0xfe7f,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,71. 0xffff,0xffff,0xffff,0xf

9、fff,0xffff,0xffff,0xffff,0xffff,72. 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff;73.74. /*延時(shí)函數(shù)*/75. void delayliang(uint x) 76. while(x-);77. /*延時(shí)函數(shù)*/78. void delay(uint x,uint y)79. while(x-)while(y-);80. 81. /*400ms延時(shí)延時(shí)函數(shù)*/82. void Delay400Ms(void)83. uchar TempCycA = 5;84. unsigned int

10、 TempCycB;85. while(TempCycA-)86. TempCycB=7269;87. while(TempCycB-);88. ;89. 90. /*1602A讀狀態(tài)函數(shù)*/91. uchar LCM_ReadStatus(void)92. LCM_Data = 0xFF;93. LCM_RS = 0;94. LCM_RW = 1;95. LCM_E = 0;96. LCM_E = 0;97. LCM_E = 1;98. while (LCM_Data & 0x80);99. return(LCM_Data);100. 101. /*1602A寫數(shù)據(jù)函數(shù)*/102.

11、void LCM_WriteData(uchar WDLCM)103. LCM_ReadStatus();104. LCM_Data = WDLCM;105. LCM_RS = 1;106. LCM_RW = 0;107. LCM_E = 0;108. LCM_E = 0;109. LCM_E = 1;110. 111. /*1602A寫指令函數(shù)*/112. void LCM_WriteCommand(uchar WCLCM,BuysC)113. if (BuysC) LCM_ReadStatus();114. LCM_Data = WCLCM;115. LCM_RS = 0;116. LCM

12、_RW = 0;117. LCM_E = 0;118. LCM_E = 0;119. LCM_E = 1;120. 121.122. /*1602A初始化函數(shù)*/123. void LCM_Init(void)124. LCM_Data = 0;125. LCM_WriteCommand(0x38,0);126. delayliang(5000);127. LCM_WriteCommand(0x38,0);128. delayliang(5000);129. LCM_WriteCommand(0x38,0);130. delayliang(5000);131. 132. LCM_WriteCo

13、mmand(0x38,1);/顯示模式設(shè)置,開始要求每次檢測(cè)忙信號(hào)133. LCM_WriteCommand(0x08,1);/關(guān)閉顯示134. LCM_WriteCommand(0x01,1);/顯示清屏135. LCM_WriteCommand(0x06,1);/ 顯示光標(biāo)移動(dòng)設(shè)置136. LCM_WriteCommand(0x0C,1);/ 顯示開及光標(biāo)設(shè)置137. 138. /*1602A按指定位置顯示一個(gè)字符函數(shù)*/139. void DisplayOneChar(uchar X, uchar Y, uchar DData)140. Y &= 0x1;141. X &

14、= 0xF;142. if (Y) X |= 0x40;143. X |= 0x80;144. LCM_WriteCommand(X, 0);/這里不檢測(cè)忙信號(hào),發(fā)送地址碼145. LCM_WriteData(DData);146. 147. /*1602A按指定位置顯示一串字符函數(shù)*/148. void DisplayListChar(uchar X, uchar Y, uchar code *DData)149. uchar ListLength;150. ListLength = 0;151. Y &= 0x1;152. X &= 0xF;153. while (DDat

15、aListLength>0x20)/若到達(dá)字串尾則退出154. if (X <= 0xF)155. DisplayOneChar(X, Y, DDataListLength);156. ListLength+;157. X+;158. 159. 160. 161. /*按鍵中斷l(xiāng)cd顯示控制函數(shù)*/162. void outside_int()interrupt 0163. EX0=0;164. if(s1=0)&&(s2=1)165. delay(2,400);166. if(s1=0)&&(s2=1)167. 168. 169. if(a_1!=

16、0)Count_a+;170. if(Count_a>5)Count_a=0;171. 172. while (s1 != 1);173. 174. 175. 176. if(s2=0)&&(s1=1)177. 178. delayliang(5000);179. if(s2=0)&&(s1=1)180. 181. if(Count_a!=4)a_1=0; b_1+;182. else e_1=1;a_1=0 ; 183. if(Count_a=3&&(b_1!=0)Count_c=1;d_1+;b_1=0;184. else Count_

17、c=0; 185. if(d_1=5)d_1=1; 186. if(a_1=0&&b_1=2)a_1=1;b_1=0;187.188. 189. 190. while (s2 != 1);191. 192. 193. 194. EX0=1; 195. 196.197. /*書寫函數(shù)*/198. void shuxie()199. uint gai=0x0001;200. gai=_irol_(gai,lhc);201. led_dlhhc=led_dlhhc|gai;202. 203. /*單筆擦除函數(shù)*/204. void dbcc()205. uint cha=0xfffe

18、;206. cha=_irol_(cha,lhc);207. led_dlhhc=led_dlhhc&cha;208. 209. /*拖動(dòng)函數(shù)*/210. void sxyd()/上下移動(dòng)211. uchar i,j;212. uint x;213. if(hhc2-hhc1<=0)214. for(i=0;i<hhc2-hhc1;i+)215. x=led_dl15;216. for(j=0;j<15;j+)217. led_dl15-j=led_dl14-j;218. led_dl0=x;219. 220. else221. for(i=0;i<hhc1-h

19、hc2;i+)222. x=led_dl0;223. for(j=0;j<15;j+)224. led_dlj=led_dlj+1;225. led_dl15=x;226. 227. 228. void zy()229. 230. uchar j;231. if(lhc2-lhc1>=0)232. 233. for(j=0;j<16;j+)234. led_dlj=_irol_(led_dlj,lhc2-lhc1);235. 236. else237. for(j=0;j<16;j+)238. led_dlj=_iror_(led_dlj,lhc1-lhc1);239.

20、 240. 241. void yidong()242. EX1=0;243. zy();244. sxyd();245. hhc1=hhc2;246. lhc1=lhc2;247. EX1=1;248. /*無微亮行掃描函數(shù)*/249. void hsm1()250. uchar i,k,j;251. p0hc1=P0;/保留p0值252. p0hc1=p0hc1&0x07;/保留低3位253. for(i=0;i<16;i+)254. hang_1=i;255. p0hc=hang_1;256. p0hc=_crol_(p0hc,4);/輸出行地址257. p0hc=p0hc

21、|p0hc1;258. P0=p0hc;259. dlzbw1=led_dlhang_1;260. for(k=0;k<2;k+)261. for(j=0;j<16;j+)262. lie_1=j;263. p2hc=p2hc&0xe0;264. p2hc=p2hc|lie_1;265. dlzbw1=_iror_(led_dlhang_1,j);266. dlzbw1=dlzbw1&dlzbw;267. if(dlzbw1=0)268. P2=p2hc|0xf0;269. else270. P2=p2hc,delayliang(20);271. 272. 273.

22、 274. /*行掃描函數(shù)*/275. void hsm3()276. uchar i,j;277. p0hc1=P0;/保留p0值278. p0hc1=p0hc1&0x07;/保留低3位279. for(i=0;i<16;i+)280. hang_1=i;281. p0hc=hang_1;282. p0hc=_crol_(p0hc,4);/輸出行地址283. p0hc=p0hc|p0hc1;284. P0=p0hc;285. dlzbw1=led_dlhang_1;286. 287. 288. for(j=0;j<16;j+)289. lie_1=j;290. p2hc=

23、p2hc&0xe0;291. p2hc=p2hc|lie_1;292. dlzbw1=_iror_(led_dlhang_1,j);293. dlzbw1=dlzbw1&dlzbw;294. if(dlzbw1=0)295. dl=5,wl=30;296. else297. dl=80,wl=30;298. P2=p2hc;299. delayliang(dl);300. P2=p2hc|0xf0;301. delayliang(wl);302.303. if(ydhc=1)yidong();sxhc=0;dbhc=0;ydhc=0;304. 305. 306. /*行掃描函數(shù)

24、*/307. void hsm()308. uchar i,j;309. p0hc1=P0;/保留p0值310. p0hc1=p0hc1&0x07;/保留低3位311. for(i=0;i<16;i+)312. hang_1=i;313. p0hc=hang_1;314. p0hc=_crol_(p0hc,4);/輸出行地址315. p0hc=p0hc|p0hc1;316. P0=p0hc;317. dlzbw1=led_dlhang_1;318. 319. 320. for(j=0;j<16;j+)321. lie_1=j;322. p2hc=p2hc&0xe0;

25、323. p2hc=p2hc|lie_1;324. dlzbw1=_iror_(led_dlhang_1,j);325. dlzbw1=dlzbw1&dlzbw;326. if(dlzbw1=0)327. dl=5,wl=30;328. else329. dl=80,wl=30;330. P2=p2hc;331. delayliang(dl);332. P2=p2hc|0xf0;333. delayliang(wl);334. if(sxhc=1)shuxie();sxhc=0;dbhc=0;ydhc=0;335. 336. 337. /*擦除用掃描函數(shù)*/338. void hsm2

26、()339. uchar i,j;340. p0hc1=P0;/保留p0值341. p0hc1=p0hc1&0x07;/保留低3位342. for(i=0;i<16;i+)343. hang_1=i;344. p0hc=hang_1;345. p0hc=_crol_(p0hc,4);/輸出行地址346. p0hc=p0hc|p0hc1;347. P0=p0hc;348. dlzbw1=led_dlhang_1;349. 350. 351. for(j=0;j<16;j+)352. lie_1=j;353. p2hc=p2hc&0xe0;354. p2hc=p2hc|

27、lie_1;355. dlzbw1=_iror_(led_dlhang_1,j);356. dlzbw1=dlzbw1&dlzbw;357. if(dlzbw1=0)358. dl=5,wl=30;359. else360. dl=80,wl=30;361. P2=p2hc;362. delayliang(dl);363. P2=p2hc|0xf0;364. delayliang(wl);365. if(dbhc=1)dbcc();dbhc=0;sxhc=0;ydhc=0;366. 367. 368. 369. 370. 371. /*反顯函數(shù)*/372. void fanxian()

28、373. uchar h1; 374. EX1=0;375. for(h1=0;h1<16;h1+)376. led_dlh1=led_dlh1;377. while(b_1!=0)378. hsm1();379. EX1=1;380. 381. /*整屏擦除函數(shù)*/382. void zpcc()383. uchar i;384. for(i=0;i<16;i+)385. led_dli=0x0000;386. 387.388. /*光筆中斷函數(shù)*/389. void EX_INT1() interrupt 2390. EX1=0;391. 392. hhc=hang_1;lhc

29、=lie_1;sxhc=1;dbhc=1;ydhc=1;393. hhc2=hang_1;lhc2=lie_1;394. EX1=1;395. 396. /*多字儲(chǔ)存函數(shù)*/397. void dzlx(uint *s)398. uchar i;399. for(i=0;i<16;i+)400. si=led_dli;401. 402. /*多字顯示函數(shù)*/403. void dzxs()404. uchar k,i;405. uint j;406. uint hc;407. for(k=0;k<16;k+)408. hc=led_dl0;409. for(i=0;i<15;

30、i+)led_dli=led_dli+1;410.411. led_dl15=led_dl10;412. for(i=0;i<15;i+)led_dl1i=led_dl1i+1;413.414. led_dl115=led_dl20;415. for(i=0;i<15;i+)led_dl2i=led_dl2i+1;416.417. led_dl215=led_dl30;418. for(i=0;i<15;i+)led_dl3i=led_dl3i+1;419.420. led_dl315=led_dl40;421. for(i=0;i<15;i+)led_dl4i=led

31、_dl4i+1;422. led_dl415=hc;423. for(j=0;j<5;j+)424. hsm1();425. 426. 427. /*開機(jī)動(dòng)畫函數(shù)*/428. void kjdh()429. 430. uchar i,j,k;431. for(i=0;i<8;i+)432. for(j=0;j<16;j+)433. led_dlj=dhij;434. for(k=0;k<5;k+)435. hsm1();436. 437. for(i=0;i<8;i+)438. for(j=0;j<16;j+)439. led_dlj=dh7-ij;440.

32、 for(k=0;k<5;k+)441. hsm1();442. 443. for(i=0;i<16;i+)444. led_dli=0;445. 446. 447. /*主函數(shù)*/448. void main()449. 450. EA=1;451. EX1=1;452. IT1=1;453. IT0 = 1; 454. EX0 = 1; 455. sxhc=0;456. Delay400Ms();457. LCM_Init();/LCM初始化458. delayliang(500);459.460. LCM_WriteCommand(0x80,0);461. delaylian

33、g(30); 462. DisplayListChar(0, 0, net12);463. delayliang(30); 464. 465. 466. kjdh();467. LCM_WriteCommand(0x01,1);468. while (1)469. if(a_1 = 1) 470. 471. switch(Count_a)472. 473. case 0:474. LCM_WriteCommand(0x80,0);475. delayliang(30); 476. DisplayListChar(0, 0, net0); 477. delayliang(30);478. Dis

34、playListChar(0, 1, net1);479. while(a_1=1&&Count_a=0) hsm(); 480. LCM_WriteCommand(0x01,1); 481. break;482. case 1:483. LCM_WriteCommand(0x80,0);484. delayliang(30); 485. DisplayListChar(0, 0, net0);486. delayliang(30); 487. DisplayListChar(0, 1, net2);488. while(a_1=1&&Count_a=1) hs

35、m();489. LCM_WriteCommand(0x01,1);490. break;491. case 2:492. LCM_WriteCommand(0x80,0); 493. delayliang(30);494. DisplayListChar(0, 0, net0);495. delayliang(30); 496. DisplayListChar(0, 1, net3);497.498. while(a_1=1&&Count_a=2)hsm();499.500.501. LCM_WriteCommand(0x01,1);502. break; 503. case

36、 3:504. LCM_WriteCommand(0x80,0);505. delayliang(30); 506. DisplayListChar(0, 0, net0);507. delayliang(30); 508. DisplayListChar(0, 1, net4);509. while(a_1=1&&Count_a=3) hsm();510. LCM_WriteCommand(0x01,1);511. break; 512. case 4:513. LCM_WriteCommand(0x80,0);514. delayliang(30); 515. Displa

37、yListChar(0, 0, net0);516. delayliang(30); 517. DisplayListChar(0, 1, net5);518. while(a_1=1&&Count_a=4) hsm(); 519. if(e_1=1)520. zpcc();e_1=0;Count_a=0;b_1=0;a_1=1;521. LCM_WriteCommand(0x01,1);522. break; 523. case 5:524. LCM_WriteCommand(0x80,0);525. delayliang(30); 526. DisplayListChar(0, 0, net0);527. delayliang(30); 528. DisplayListChar(0, 1, net6);529. while(a_1=1&&Count_a=5) hsm(); 530. LCM_WriteCommand(0x01,1);531. break; 532. 533. 534. if(a_1=0) 535. switch(Count_c)536. case 0:537. LCM_WriteCommand(0x80,0);538. delayliang(30); 539. DisplayListChar(0, 0, net

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論