設計單片機并行口和4-16譯碼器74HC154驅動(控制)的兩個5×7點陣LED顯示器的驅動電路,并編寫程序實現在兩個5×7點陣LED顯示器上的字符顯示。 電路方面主要包括以下3部分。(a)設計單片機的最小系統(包括復位電路和外接的晶振電路),并確定相關元器件參數。(b)采用動態驅動的方式,設計單片機并行端口和74HC154控制(驅動)兩個5×7點陣LED顯示器的驅動電路,包括控制點陣LED行和列的連線(由單片機并行端口和74HC154分別驅動)。(c)設計點陣LED的給電流電路(單片機并行端口接上拉電阻)。
編寫單片機控制兩個5×7點陣LED顯示器字符顯示程序,實現數字(0—9)或簡單的英文字符的信息顯示。顯示方式和內容自定,如每隔一段時間循環顯示數字0—9 或英文字符。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
單片機源程序如下:
- #include <reg51.h>
- //字形碼****按列取模
- unsigned char code table1[]={
- 0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,
- 0xE3,0xDD,0xDD,0xE3,0xFF,/*"0",0*//* (5 X 7 , 宋體 ) */
- 0xff,0xff,0xff,0xff,0xff,
- 0xFF,0xDD,0xC1,0xDF,0xFF,/*"1",1*//* (5 X 7 , 宋體 ) */
- 0xff,0xff,0xff,0xff,0xff,
- 0xDB,0xCD,0xD5,0xDB,0xFF,/*"未命名文件",0*//* (5 X 7 ) *///0xD9,0xCD,0xD5,0xD9,0xFF,/*"2",2*//* (5 X 7 , 宋體 ) */
- 0xff,0xff,0xff,0xff,0xff,
- 0xFF,0xD5,0xD5,0xEB,0xFF,/*"未命名文件",0*//* (5 X 7 ) *///0xDD,0xD9,0xD9,0xE5,0xFF,/*"3",3*//* (5 X 7 , 宋體 ) */
- 0xff,0xff,0xff,0xff,0xff,
- 0xE7,0xEB,0xC1,0xEF,0xFF,/*"未命名文件",0*//* (5 X 7 ) *///0xF7,0xEB,0xEB,0xC1,0xFF,/*"4",4*//* (5 X 7 , 宋體 ) */
- 0xff,0xff,0xff,0xff,0xff,
- 0xFF,0xD1,0xD5,0xC5,0xFF,/*"未命名文件",0*//* (5 X 7 ) *///0xD1,0xD5,0xD5,0xC5,0xFF,/*"5",5*//* (5 X 7 , 宋體 ) */
- 0xff,0xff,0xff,0xff,0xff,
- 0xE3,0xD5,0xD5,0xC7,0xFF,/*"6",6*//* (5 X 7 , 宋體 ) */
- 0xff,0xff,0xff,0xff,0xff,
- 0xFD,0xC5,0xF9,0xFD,0xFF,/*"7",7*//* (5 X 7 , 宋體 ) */
- 0xff,0xff,0xff,0xff,0xff,
- 0xC9,0xD5,0xD5,0xC9,0xFF,/*"8",8*//* (5 X 7 , 宋體 ) */
- 0xff,0xff,0xff,0xff,0xff,
- 0xF1,0xD5,0xD5,0xE3,0xFF,/*"9",9*//* (5 X 7 , 宋體 ) */
- 0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,
- };
- void delay(int c)
- {
- int i,j;
- for(i=0;i<c;i++)
- for(j=0;j<10;j++);
- }
- void Display(void)
- {
- unsigned char i,j;
- unsigned int b=0; //顯示偏移控制,
- unsigned char a; //控制移動間隔時間
- while(1)
- {
- j=0;
- if(a>20) //移動間隔時間;取值0--255
- {
- a=0;
- b+=1;
- if(b>=130) b=0; //顯示到最后一個字,回頭顯示,
- }
- for(i=0;i<10;i++)
- {
- P1=i;
- P0=table1[j+b];
- delay(5);
- P0=0xff;
- j+=1;
- }
- a++;
- }
- }
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
t.rar
(101.9 KB, 下載次數: 105)
2018-1-21 20:11 上傳
點擊文件名下載附件
|