|
采用2片74HC595驅(qū)動,只需接單片機(jī)3路IO口,不會浪費(fèi)IO使用率,根據(jù)點(diǎn)陣管動態(tài)掃描原理進(jìn)行顯示
兼容LCD1602液晶顯示屏接口,直接插在開發(fā)板上就可以使用。
- /*
- 8×8點(diǎn)陣屏循環(huán)顯示 “電”“子”“1”“2”“3”。
- */
- #include <reg52.h>
- #include <intrins.h> //循環(huán)右移頭文件
- sbit DIO = P3^4; //串行數(shù)據(jù)口
- sbit S_CLK = P3^5;//移位寄存器時鐘
- sbit R_CLK = P3^6;//輸出鎖存器時鐘
- /*點(diǎn)陣字形碼*/
- unsigned char code tabel[5][8]={
- 0xE0,0xEE,0x01,0x6D,0x01,0x6D,0x01,0xEF,//點(diǎn)
- 0xE7,0xF7,0xF7,0xF7,0x80,0xF7,0xFB,0xC3,//子
- 0x81,0xE7,0xE7,0xE7,0xE7,0xE7,0xC7,0xE7,//1
- 0x81,0x81,0xCF,0xE7,0xF3,0xB9,0x81,0xC3,//2
- 0xC3,0xB9,0xF9,0xFB,0xE7,0xFB,0xB9,0xC3,//3
- };
- /*595發(fā)送一字節(jié)*/
- void Send_Byte(unsigned char dat)
- {
- unsigned char i; //循環(huán)次數(shù)變量
- S_CLK = 0;//拉低移位寄存器時鐘
- R_CLK = 0;//拉低輸出鎖存器時鐘
- for(i=0; i<8; i++) //循環(huán)8次
- {
- if(dat & 0x01)//發(fā)送1
- DIO = 1;
- else //發(fā)送0
- DIO = 0;
- dat >>= 1;//數(shù)據(jù)右移
- S_CLK = 1;//拉高移位寄存器時鐘,數(shù)據(jù)移位
- S_CLK = 0;//拉低移位寄存器時鐘
- }
- }
- void main()
- {
- unsigned char j, k, ROW;//j發(fā)送8列和8行字形碼,k字符數(shù)量,ROW行值
- unsigned int z; //動態(tài)掃描延時變量
- while(1)
- {
- for(k=0; k<5; k++)//k 需要顯示的字符數(shù)量
- {
- for(z=0; z<500; z++)//z刷新次數(shù)
- {
- ROW = 0x80;//行選初值
- for(j=0; j<8; j++) //循環(huán)8次發(fā)送行和列值
- {
- Send_Byte(tabel[k][j]);//發(fā)送列選值
- Send_Byte(ROW); //發(fā)送行選值
- R_CLK = 1; //拉高輸出鎖存器,把移位寄存器中數(shù)據(jù)輸出
- R_CLK = 0; //拉低輸出鎖存器
- ROW = _cror_(ROW, 1);//右移,選擇下一行
- }
- }
- }
- }
- }
復(fù)制代碼 |
評分
-
查看全部評分
|