基于DP5020点阵屏的显示驱动
- [导读]
- #申请原创# @21小跑堂 在以往的点阵屏中,多使用74HC595作为串并转换的芯片,它所处理的数据宽度只有8位。而现在的显示面板设计多使用16位的驱动IC,例如DP5020就是其中的一种,这样就可以有效地缩减芯片的使用量
- void DP5020_OutByte(UINT16 dat)
- {
- UINT8 i=0 ;
- for(i=0;i<16;i++)
- {
- LSCL=0;
- if(dat&0x8000)
- {
- LR1=1;
- }
- else
- {
- LR1=0;
- }
- dat=dat<<1;
- LSCL=1;
- }
- }
- void SeleRow(UINT8 Nd)
- {
- UINT8 N=Nd;
- N=N%16;
- if(N&0x01) LA=1;
- else LA=0;
- if (N&0x02) LB=1;
- else LB=0;
- if (N&0x04) LC=1;
- else LC=0;
- if (N&0x08) LD=1;
- else LD=0;
- }
- void DisCol(UINT16 *dat,UINT16 len)
- {
- while(len--)
- {
- DP5020_OutByte(dat);
- }
- }
- void Display(void)
- {
- DisCol(0x5555,4);
- LEN=1;
- LSTB=1;
- LSTB=0;
- SeleRow (ScanRow)
- LEN=0;
- ScanRow++;
- if(ScanRow>15) ScanRow=0;
- }
- void main (void)
- {
- Set_All_GPIO_Quasi_Mode;
- set_CLOEN;
- ScanRow=0;
- while(1)
- {
- Display();
- }
- }
- void DisCol(UINT16 lenght)
- {
- UINT16 dat,n;
- UINT8 m=8;
- n= lenght-2
- while(lenght--)
- {
- dat=( tab [m*32+ScanRow*2+1]<<8)+ tab [m*32+ScanRow*2];
- DP5020_OutByte(dat);
- m=m+1;
- }
- }
- void DisCol(UINT16 lenght)
- {
- UINT16 dat,n;
- UINT8 m=8;
- n= lenght-2;
- while(lenght--)
- {
- if(lenght>n) dat=( tab [m*32+ScanRow*2+1]<<8)+ tab [m*32+ScanRow*2];
- else dat=0x0;
- DP5020_OutByte(dat);
- m=m+1;
- }
- }
- 本文系21ic原创,未经许可禁止转载!
网友评论
- 联系人:巧克力娃娃
- 邮箱:board@21ic.com
- 我要投稿
-
欢迎入驻,开放投稿
-
人均百万?英伟达中国员工收入曝光! 2024-08-29
-
《黑神话:悟空》玩家硬盘升级攻略:提升游戏体验,畅享3A大作 2024-08-29
-
数睿数据参加《系统与软件工程 低代码开发平台通用技术要求》国家标准编制 2024-08-29
- NRF52810蓝牙数字耳机找人定制
预算:¥30005天前
- 125KW模块式PCS软硬件外包开发
预算:¥1100000015小时前
- 12V汽车启动电源项目BMS设计
预算:¥50000023小时前
- 数据可视化软件 开发
预算:¥5000023小时前
- PLC项目调试修改
预算:¥100001天前
- 起动电机控制器开发
预算:¥1100001天前