找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2631|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)用點(diǎn)陣LED實(shí)現(xiàn)靜態(tài)字符顯示實(shí)驗(yàn)程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
#
ID:1007874 發(fā)表于 2022-3-5 18:02 | 只看該作者 回帖獎(jiǎng)勵(lì) |正序?yàn)g覽 |閱讀模式
實(shí)驗(yàn)?zāi)康?
1、理解LED屏結(jié)構(gòu)及工作原理;
2. 掌握LED屏的靜態(tài)顯示方式;
3. 掌握LED屏與單片機(jī)的接線方法。
二、實(shí)驗(yàn)環(huán)境:
計(jì)算機(jī) 1 臺(tái)
三、 實(shí)驗(yàn)步驟:
l、步驟一:在D盤或E盤以自己名字建立自已的文件夾。
1)打開keil軟件,建立keil工程。
2) 將工程起名為led16保存在自已的文件夾中。
3) 選擇CPU,我們這里選擇Atmel公司的AT89S52
4) 選好芯片確定后,彈出提示框,問是否添加一些文件,我們這里選“否”
5) 下面新建文本文檔,用來編寫源程序。
6) 按下保存圖標(biāo),保存新建的文件以“l(fā)ed16.c”文件名保存在工程文件夾下。
7) 將新建的文件加入工程中。在Source Group 1上點(diǎn)鼠標(biāo)右鍵,在彈出的菜單上選擇Add Files…選項(xiàng)
在彈出的對話框中選擇工程文件夾下剛才新建的“l(fā)ed16.c”文件。點(diǎn)擊Add,再點(diǎn)擊Close關(guān)閉對話框。
8) 設(shè)置工程,讓其編譯時(shí)輸出十六進(jìn)制可執(zhí)行文件。至此,工程文件已經(jīng)建立設(shè)置完畢,在開始寫源程序之前,我們先用Proteus軟件設(shè)計(jì)出led燈的電路圖。
2、步驟二:設(shè)計(jì)電路圖。
1) 首先選擇要用的器件。如下圖,按下P 圖標(biāo)進(jìn)行器件選擇。輸入單片機(jī)芯片名AT89C52,器件便會(huì)出現(xiàn)在右側(cè)列表中。雙擊列表中的芯片名,它便會(huì)加入到主界面的器件表中, 并按下圖完成電路圖連接。至此,工程文件已經(jīng)建立設(shè)置完畢,在開始寫源程序之前,我們先用Proteus軟件設(shè)計(jì)出共陽數(shù)碼管顯示的電路圖。
2、步驟二:設(shè)計(jì)電路圖。
1) 首先選擇要用的器件。如下圖,按下圖標(biāo)進(jìn)行器件選擇。
單片機(jī)芯片名AT89C52、按鍵button、電阻res,無極電容cap,有極電容cap-elec,晶振crystal,8x8點(diǎn)陣matrix-8X8-orange排阻respack-8,并按下圖完成電路圖連接。
到這里電路已將設(shè)計(jì)完畢,下面我們到Keil中進(jìn)行相關(guān)程序的編寫。
3、步驟三:編輯,編譯并運(yùn)行程序。
1、任務(wù)要求:
用8*8LED點(diǎn)陣顯示0~9數(shù)字,P0口接LED點(diǎn)陣陽極,由于P0口沒有上拉能力,所以采用排阻上接電源提供上拉電流,P2口接LED點(diǎn)陣陰極。分屏顯示數(shù)字0~9,可以利用通過二維數(shù)組把0~9的數(shù)據(jù)碼存放起來。定時(shí)器T0用來定時(shí)1s,每顯示完一個(gè)數(shù)字延時(shí)1s,即可讓點(diǎn)陣每隔1s依次顯示0~9,實(shí)現(xiàn)分屏顯示的效果。
2、程序:
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. uchar num; //要顯示的數(shù)字
  4. void display()
  5. {
  6. uchar i,j,k,n;
  7. //數(shù)字0~9的8*8點(diǎn)陣
  8.   uchar code dizn[]={
  9.   0x00,0x00,0x3E,0x41,0x41,0x41,0x3E,0x00,//0
  10.   0x00,0x00,0x00,0x00,0x21,0x7F,0x01,0x00,//1
  11.   0x00,0x00,0x27,0x45,0x45,0x45,0x39,0x00,//2
  12.   0x00,0x00,0x22,0x49,0x49,0x49,0x36,0x00,//3
  13.   0x00,0x00,0x0c,0x14,0x24,0x7F,0x04,0x00,//4
  14.   0x00,0x00,0x72,0x51,0x51,0x51,0x4E,0x00,//5
  15.   0x00,0x00,0x3E,0x49,0x49,0x49,0x26,0x00,//6
  16.   0x00,0x00,0x40,0x40,0x40,0x4F,0x70,0x00,//7
  17.   0x00,0x00,0x36,0x49,0x49,0x49,0x36,0x00,//8
  18.   0x00,0x00,0x32,0x49,0x49,0x49,0x3E,0x00,//9
  19. };
  20. k=0x01; //初始化,顯示第一列
  21. n=num*8; //初始化為所顯示數(shù)字的第一列所在位置
  22. for(i=8;i>0;i--)
  23. {
  24. P0 =dizn[n]; //輸出行碼
  25. P2= ~k; //輸出列碼,讓指定的列顯示
  26. k =k <<1; //指向下一列
  27. n++; //指向點(diǎn)陣中的下一個(gè)字節(jié)
  28. for(j=100;j>0;j--);//延遲一段時(shí)間,約200μs
  29. P2=0xFF; //關(guān)閉顯示
  30. }
  31. }
  32. void main(void)
  33. {
  34. TMOD=0x01 ;
  35. TH0=(65536-10000)/256;
  36. TL0=(65536-10000)%256;
  37. TR0=1;
  38. ET0=1;
  39. EA=1; //到這里為止,將定時(shí)器0初始化為10ms中斷
  40. num =0;
  41. //顯示的第一個(gè)數(shù)字為“0”
  42. while(1)
  43. {
  44. display(); //循環(huán)調(diào)用顯示函數(shù)顯示 num的值
  45. }
  46. }
  47. void timer0()interrupt 1
  48. {
  49. static uchar t=0;
  50. TH0=(65536-10000)/256;
  51. TL0=(65536-10000)%256;
  52.   t++;
  53. if(t==100) //判斷是否到1s
  54. {
  55. t =0; //1時(shí)間到,將軟件計(jì)數(shù)單元清0
  56. num ++;                //計(jì)算要顯示的下一個(gè)數(shù)碼
  57. if(num>9)num=0;// 如果大于9,則又從0開始
  58. }
  59. }
復(fù)制代碼
3、對源程序進(jìn)行編譯。按下界面上的編譯按鍵進(jìn)行編譯程序。并生成了hex可執(zhí)行文件,該文件在工程文件夾下。
將生成的HEX可執(zhí)行文件加入Proteus仿真軟件at89c52芯片中。
四、問題思考:
使用模軟件獲得漢字“王”的編碼后,修改程序,讓8*8 LED點(diǎn)陣顯漢字“王”

以上圖文的Word格式文檔下載(內(nèi)容和本網(wǎng)頁上的一模一樣,方便大家保存):
實(shí)驗(yàn)十一:用點(diǎn)陣LED實(shí)現(xiàn)靜態(tài)字符顯示 - 副本.docx (112.67 KB, 下載次數(shù): 12)

評分

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

查看全部評分

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

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

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