本程序來自http://www.zg4o1577.cn/bbs/dpj-205333-1.html更改,驅動P3.75單紅64X16。測試了下驅動9塊板,sta8a選RC22.018MHz,刷新整屏都在98HZ
實物圖如下:
IMG_20220318_162748.jpg (4.24 MB, 下載次數: 65)
下載附件
2022-3-18 16:42 上傳
單片機源程序如下:
- //LED屏控制程序 本程序驅動32*64LED彩色屏
- #include <stc15f2k60s2.H>
- #include<uart.h>
- //#include "common.h"
- #include <intrins.h>
- #define u8 unsigned char
- #define u16 unsigned int
- #define NOP _nop_()
- char Key_Read();
- //第1組
- //LED端口 共16根,其中3根為GND
- sbit XOE = P1^0; //傳數允許
- sbit XSHCP=P1^1; //S 時鐘
- sbit XSTCP=P1^2; //L 鎖存輸出
- sbit XA1 = P1^3; //A 由138控制的掃描行 共16行
- sbit XB1 = P1^4; //B
- sbit XC1 = P1^5; //C
- sbit XD1 = P1^6; //D
- sbit SR1DATA=P1^7; //數據1 紅色
- //大字體
- u8 code dz1[4][128]={
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x3C,
- ***********
- u8 code kuaile[]={
-
- 0x18,0x06,0x18,0x06,0x18,0x06,0xD8,0x3F,0x38,0x36,0x7E,0x36,0x1E,0x36,0x1E,0x36,
- 0xFB,0xFF,0x18,0x06,0x18,0x0F,0x18,0x0F,0x98,0x19,0x98,0x19,0xD8,0x30,0x78,0xE0, //快0
- 0x00,0x0C,0x00,0x1F,0xF8,0x01,0x18,0x00,0x98,0x01,0x8C,0x01,0x8C,0x01,0xFC,0x7F,
- 0x80,0x01,0xB0,0x0D,0xB0,0x19,0x98,0x31,0x8C,0x61,0x86,0x61,0xE0,0x01,0xC0,0x00 //樂1
- };
-
-
-
-
- //第1組上下半部分數據傳送 紅 1 綠 2 藍
- void shuju_input1(u8 sdat1) //參數為上半部數據 下半部數據 顯示顏色
- {
- u8 m;
- sdat1=~sdat1;
- for(m=0;m<8;m++) //8位數據傳送
- {
- if(sdat1 & 0x80) //判斷最高位 上半部數據
- {
-
- SR1DATA=1;
- }
- else
- {
-
-
- SR1DATA=0;
-
-
- }
-
-
- XSHCP=0;
- XSHCP=1;
- NOP;
- NOP;
- XSHCP=0;
- NOP;
- NOP;
- sdat1=sdat1<<1;
- }
- }
- /*******************************************************************************************/
- void serial_output()
- {
- XSTCP=1;
- NOP;
- XSTCP=0;
- }
- void HC138_scan(u8 temp)
- {
- XOE=0;
- XA1=0x01 & temp;
- XB1=0x01 &(temp>>1);
- XC1=0x01 &(temp>>2);
- XD1=0x01 &(temp>>3);
- }
- //顯示 每一單元板為32*64,能夠顯示二行漢字,每行四字(字模為順向,逐行式,陰碼的算法)
- void display(u8 *p) //4字的首地址
- {
- u8 qx=0,qxdata=0,qd=1;//奇數倍
- u16 j=0,k;
- for(k=0;k<16;k++) //16行 控制掃描行
- {
- for(j=1;j<5;j++) //共取8個字符高16X8,4個大字一個字是16X16
- {
- shuju_input1(*(p+(j-1)*32+k)); //取上下半漢字的第1個字節
- ////////////////////////////////////////////////////////////////////////////////
- qxdata=0;
- qx=0;
- while(qd)
- {
- qxdata++;
- if(qxdata%2){qx++;}
- if(qx==j)qd=0;
- }
- qd=1;
- ////////////////////////////////////////////////////////////////生成1 3 5 7 9 11
- shuju_input1(*(p+(qxdata*16)+k)); //取上下半漢字的第2個字節
- }
- XOE=1;
- serial_output(); //允許輸出控制
- HC138_scan(k); //對應行
- }
- }
- void main()
- {
- UartInit(); //串口1初始化 //9600bps@11.0592MHz
- UART1_fs(0x88);
- while(1)
- {
- if(dyjs_1){
- dyjs_1=0;
- UART1_fs(0x99);
- }
- display(dzx4); //1個單元控制
- // display1(dzx1,dzx2); //1個單元控制
- // display2(dz2);
- // display3(dz1);
- }
- }
復制代碼
51hei.png (6.18 KB, 下載次數: 48)
下載附件
2022-3-18 19:52 上傳
Keil代碼下載:
p3.75單紅半板.zip
(58.04 KB, 下載次數: 32)
2022-3-18 16:43 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|