|
為了給自己做的功放加個頻譜顯示做的,LCD1602正好和原來的顯示屏大小一樣,就用1602做顯示了,為了防止對音頻信號的干擾,輸入用4558做的緩沖放大。
2021-01-09_19-20-42.jpg (77.41 KB, 下載次數(shù): 85)
下載附件
2021-1-9 19:20 上傳
單片機(jī)主程序如下:
- #include "STC15.H"
- #include "1602.h"
- sbit busyFlag = P2^7;
- /***********************************************/
- //自定義的8個字符 分別為第1橫格到8橫格
- uchar code Pic[8][8]=
- {
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f},
- {0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0x1f},
- {0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0x1f},
- {0x00,0x00,0x00,0x00,0x1f,0x00,0x1f,0x1f},
- {0x00,0x00,0x00,0x1f,0x1f,0x00,0x1f,0x1f},
- {0x00,0x00,0x00,0x1f,0x1f,0x00,0x1f,0x1f},
- {0x00,0x1f,0x00,0x1f,0x1f,0x00,0x1f,0x1f},
- {0x1f,0x1f,0x00,0x1f,0x1f,0x00,0x1f,0x1f},
- };
- /*********檢查LCD忙****************************/
- void lcdCheckbusy()
- {
- lcdDb=0xff;
- lcdRs=0; //dc=1為數(shù)據(jù),=0為命令.
- lcdRw=1; //rw=1為讀,=0為寫.
- lcdE=1; //cs=1選通.
- delay40us(1);
- while(busyFlag);
- lcdE=0;
- }
- /*******初始化函數(shù)*****************************/
- void lcdInit(void)
- {
- lcdWriteCommand(0x38); //設(shè)置8位格式,2行,5x7
- lcdWriteCommand(0x0c); //整體顯示,關(guān)光標(biāo),不閃爍
- lcdWriteCommand(0x06); //設(shè)定輸入方式,增量不移位
- lcdWriteCommand(0x01); //清除屏幕顯示
- }
- /********寫指令函數(shù)*****************************/
- void lcdWriteCommand(uchar dat)
- {
- lcdCheckbusy();
- lcdDb=dat;
- lcdRs=0; //指令
- lcdRw=0; //寫入
- lcdE=1; //允許
- delay40us(1);
- lcdE=0;
- }
- /********寫數(shù)據(jù)函數(shù)*****************************/
- void lcdWriteData(uchar dat)
- {
- lcdCheckbusy();
- lcdDb=dat;
- lcdRs=1; //數(shù)據(jù)
- lcdRw=0; //寫入
- lcdE=1; //允許
- lcdE=0;
- }
- /********寫入CGRAM "自定義" 字符***************/
- void lcdWritePic()
- {
- uchar i,j;
- for(i=0;i<8;i++)
- {
- lcdWriteCommand(0x40+i*8); //指令地址為0100 0000 +(0000 0000~0011 1000)具體參考說明書CGRAM的使用
- for(j=0;j<8;j++)lcdWriteData(Pic[i][j]);//向CGRAM寫入字型編碼數(shù)據(jù)(CGRAM數(shù)據(jù)).
- }
- }
- /*******************************************************
- 功能:顯示一個字符
- 函數(shù)參數(shù) : 顯示坐標(biāo)(x,y,dat)范圍 (0~f,0~1,0~7)
- *******************************************************/
- void dispString(uchar x,uchar y,uchar dat)//dat范圍是0~7,表示顯示8個自定義字符的第幾個
- {
- uchar address;
- switch (y)
- {
- case 0: address=0x80+x; //00000000B(00H)+10000000B(80H)=10000000B(80H)
- break;
- case 1: address=0xc0+x; //01000000B(40H)+10000000B(80H)=11000000B(C0H)
- break;
- }
- lcdWriteCommand(address); //地址顯示
- lcdWriteData(dat); //顯示自定義的第幾個字符
- }
- /********延時函數(shù) 1T 22.1148M***************/
- void delay40us(uint n)
- {
- uchar a,b;
- while(n--)
- {
- for(b=185;b>0;b--)
- for(a=1;a>0;a--);
- }
- }
復(fù)制代碼
51hei.png (6.37 KB, 下載次數(shù): 111)
下載附件
2021-1-9 19:42 上傳
程序下載:
15W408版本.rar
(88.56 KB, 下載次數(shù): 141)
2021-1-9 19:20 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評分
-
查看全部評分
|