首页 zlg7289初始化程序

zlg7289初始化程序

举报
开通vip

zlg7289初始化程序zlg7289初始化程序 程序名称: 数码管显示与键盘管理芯片ZLG7289的标准80C51驱动程序(C51) 文件名: ZLG7289.h 说明: 本程序已经调试通过 程序的可移植性很好,仅做少量修改就可以直接包含使用 程序占用资源少,仅使用4根必须I/O口线,不占用定时器等其它资源 所有全局性的标识符都以ZLG7289_开头,不必担心命名冲突问题 程序结构清晰,思路明确,结合ZLG7289的数据手册很容易理解 用法: 1、重新定义I/O接口 2、如果CPU的主频比较高,则要适当调整延时,详...

zlg7289初始化程序
zlg7289初始化程序 程序名称: 数码管显示与键盘管理芯片ZLG7289的 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 80C51驱动程序(C51) 文件名: ZLG7289.h 说明: 本程序已经调试通过 程序的可移植性很好,仅做少量修改就可以直接包含使用 程序占用资源少,仅使用4根必须I/O口线,不占用定时器等其它资源 所有全局性的标识符都以ZLG7289_开头,不必担心命名冲突问题 程序结构清晰,思路明确,结合ZLG7289的数据手册很容易理解 用法: 1、重新定义I/O接口 2、如果CPU的主频比较高,则要适当调整延时,详见ZLG7289_Delay()函数 3、在用户程序中包含本头文件 4、在main()函数的开始处添加初始化函数ZLG7289_Init() 的用户指令集 5、以后在程序中可以直接使用ZLG7289 6、读取键盘扫描码使用函数ZLG7289_Key(),查询方式、中断方式皆可 用户指令集汇总: 复位指令:void ZLG7289_Reset(); 测试指令:void ZLG7289_Test(); 左移指令:void ZLG7289_SHL(); 右移指令:void ZLG7289_SHR(); 循环左移:void ZLG7289_ROL(); 循环右移:void ZLG7289_ROR(); 下载数据:void ZLG7289_Download(char mod,char addr,bit dp,char dat); 闪烁控制:void ZLG7289_Flash(char dat); 消隐控制:void ZLG7289_Hide(char dat); 段点亮控制:void ZLG7289_SegOn(char dat); 段关闭控制:void ZLG7289_SegOff(char dat); 读键盘数据指令:char ZLG7289_Key(); */ #ifndef _ZLG7289_H_ #define _ZLG7289_H_ #include #include //定义I/O接口 sbit ZLG7289_pinCS = P1^0; //片选信号,低电平有效 sbit ZLG7289_pinCLK = P1^1; //时钟信号:上升沿有效 sbit ZLG7289_pinDIO = P1^2; //数据信号:双向 sbit ZLG7289_pinKEY = P3^2; //键盘中断请求信号,低电平有效 /* 功能:专用的延时函数,延时几微秒到几百微秒 参数: t:决定延时长短 说明: 主频的标准80C51上调试通过。 本程序在12MHz 如果实际的CPU速度较快,则要适当增加_nop_()语句的个数; */ static void ZLG7289_Delay(unsigned char t) reentrant { do { _nop_(); }while ( --t ); } /* 功能:通过SPI总线写一个字节 参数: dat:要发送的数据 */ static void ZLG7289_SPI_Write(char dat) reentrant { unsigned char t; t = 8; do { ZLG7289_pinDIO = (bit)(dat & 0x80); dat <<= 1; ZLG7289_pinCLK = 1; ZLG7289_Delay(8); ZLG7289_pinCLK = 0; ZLG7289_Delay(6); } while ( --t ); } /* 功能:通过SPI总线读一个字节 */ static char ZLG7289_SPI_Read() reentrant { char dat; unsigned char t; ZLG7289_pinDIO = 1; t = 8; do { ZLG7289_pinCLK = 1; ZLG7289_Delay(8); dat <<= 1; if ( ZLG7289_pinDIO ) dat++; ZLG7289_pinCLK = 0; ZLG7289_Delay(7); } while ( --t ); return dat; } /* 功能:执行ZLG7289纯指令 参数: cmd:命令字 */ static void ZLG7289_cmd(char cmd) { ZLG7289_pinCS = 0; ZLG7289_Delay(50); ZLG7289_SPI_Write(cmd); ZLG7289_pinCS = 1; ZLG7289_Delay(10); } /* 功能:执行ZLG7289带数据指令 参数: cmd:命令字 dat:数据 */ static void ZLG7289_cmd_dat(char cmd, char dat) { ZLG7289_pinCS = 0; ZLG7289_Delay(50); ZLG7289_SPI_Write(cmd); ZLG7289_Delay(25); ZLG7289_SPI_Write(dat); ZLG7289_pinCS = 1; ZLG7289_Delay(10); } //以下定义ZLG7289的用户指令集 //复位(清除)指令 #define ZLG7289_Reset() ZLG7289_cmd(0xA4) //测试指令 #define ZLG7289_Test() ZLG7289_cmd(0xBF) //左移指令 #define ZLG7289_SHL() ZLG7289_cmd(0xA1) //右移指令 #define ZLG7289_SHR() ZLG7289_cmd(0xA0) //循环左移指令 #define ZLG7289_ROL() ZLG7289_cmd(0xA3) //循环右移指令 #define ZLG7289_ROR() ZLG7289_cmd(0xA2) /* 功能:下载数据 参数: mod=0:下载数据且按方式0译码 mod=1:下载数据且按方式1译码 mod=2:下载数据但不译码 addr:数码管地址位,取值0,7 dp=0:小数点不亮 dp=1:小数点亮 dat:要显示的数据,取值0,15,详见数据手册 */ extern void ZLG7289_Download(char mod, char addr, bit dp, char dat) { code char ModDat[3] = {0x80,0xC8,0x90}; char d1; char d2; if ( ( mod < 0 ) || ( mod > 2 ) ) mod = 2; d1 = ModDat[mod]; addr &= 0x07; d1 |= addr; d2 = dat & 0x7F; if ( dp ) d2 |= 0x80; ZLG7289_cmd_dat(d1,d2); } //闪烁控制 #define ZLG7289_Flash(dat) ZLG7289_cmd_dat(0x88,dat) //消隐控制 #define ZLG7289_Hide(dat) ZLG7289_cmd_dat(0x98,dat) //段点亮指令 #define ZLG7289_SegOn(dat) ZLG7289_cmd_dat(0xE0,dat) //段关闭指令 #define ZLG7289_SegOff(dat) ZLG7289_cmd_dat(0xC0,dat) /* 功能:执行ZLG7289键盘命令 返回值: 返回读到的按键值 说明: 本函数已经被定义成再入属性,因此在中断服务程序里也可以调用 当有键按下时,ZLG7289的KEY引脚将出现低电平,向主机提出中断申请 主机采用查询方式或中断方式去处理都是可以的 应当在KEY引脚出现低电平时立即用本函数去读取键值 读取键值后,KEY引脚不会自动恢复为高电平,一定要等到按键抬起为止 如果没有及时读取按键值,当按键抬起时,KEY引脚也将恢复高电平 在ZLG7289的KEY引脚处于高电平期间,试图去读取键值将得不到有意义的数据 如果采用中断方式,建议选择负边沿触发模式 */ extern char ZLG7289_Key() reentrant { char key; ZLG7289_pinCS = 0; ZLG7289_Delay(50); ZLG7289_SPI_Write(0x15); ZLG7289_Delay(25); key = ZLG7289_SPI_Read(); ZLG7289_pinCS = 1; ZLG7289_Delay(10); return key; } /* 功能:ZLG7289初始化 */ extern void ZLG7289_Init() { unsigned char addr; //I/O口初始化 ZLG7289_pinCS = 1; ZLG7289_pinCLK = 0; ZLG7289_pinDIO = 1; ZLG7289_pinKEY = 1; //点亮所有数码管 for ( addr=0; addr<8; addr++ ) { ZLG7289_Download(1,addr,1,8); } } #endif //_ZLG7289_H_
本文档为【zlg7289初始化程序】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_037433
暂无简介~
格式:doc
大小:54KB
软件:Word
页数:11
分类:生活休闲
上传时间:2017-09-27
浏览量:25