[ZLG-MCU] 控制ZLG7290的问题:)

[复制链接]
3236|7
 楼主| malaohu 发表于 2007-4-29 09:48 | 显示全部楼层 |阅读模式
我想通过寄存器影像方式控制ZLG7290完成8位数码管全显并闪烁。其实就是I2C接口试验2的第一步。我写了如下程序:<br />int&nbsp;&nbsp;main(void)<br />{&nbsp;&nbsp;&nbsp;uint8&nbsp;&nbsp;b;<br />&nbsp;&nbsp;&nbsp;&nbsp;uint8&nbsp;&nbsp;*a;<br />&nbsp;&nbsp;&nbsp;b&nbsp;=&nbsp;0x88&nbsp;;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;a&nbsp;=&nbsp;&b;<br /><br />&nbsp;&nbsp;&nbsp;PINSEL0&nbsp;=&nbsp;0x00000000;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;设置管脚连接,使用I2C口<br />&nbsp;&nbsp;&nbsp;PINSEL1&nbsp;=&nbsp;0x00000000;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;I2C_Init(30000);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;I2C配置及端口初始化<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;ISendStr(0x70,&nbsp;0x0c,&nbsp;a,&nbsp;1);<br />}&nbsp;&nbsp;<br />先别说这个程序能否实现闪烁功能,调试时发现,运行过b&nbsp;=&nbsp;0x88&nbsp;;&nbsp;a&nbsp;=&nbsp;&b;后b不等于0x88,a=??,这是怎么回事?<br /><br />我向zlg7290的0x0c写入0x88可以实现8位全闪么?
LPC900 发表于 2007-4-29 15:42 | 显示全部楼层

“a = &b”这条语句有问题吧?

是否应该为“a&nbsp;&=&nbsp;b”呢?
LPC900 发表于 2007-4-29 15:54 | 显示全部楼层

可以留个E-mail吗?

我可以把完整的ZLG7290参考资料发给你。
zxq1234508 发表于 2007-4-29 16:13 | 显示全部楼层

问题

<br />&nbsp;a&nbsp;=&nbsp;&b;这句有问题。<br />&nbsp;&nbsp;b&nbsp;=&nbsp;0x88&nbsp;;控制数码管闪烁应该是0Xff;<br />闪烁控制寄存器FlashOnOff(地址:0CH)<br />FlashOnOff&nbsp;寄存器决定闪烁频率和占空比。复位值为0111,0111B。高4&nbsp;位表示闪烁时亮的持续时间,低4&nbsp;位表示闪烁时灭的持续时间。改变FlashOnOff&nbsp;的值,可以同时改变闪烁频率和占空比。FlashOnOff&nbsp;取值00H&nbsp;时可获得最快的闪烁速度,在4MHz&nbsp;下,亮或灭的持续时间最小单位约为280ms。特别说明:单独设置FlashOnOff&nbsp;寄存器的值,并不会看到显示闪烁,而应该配合闪烁控制命令。寄存器CmdBuf0(地址:07H)和CmdBuf1(地址:08H)共同组成命令缓冲区。<br />寄存器CmdBuf0(地址:07H)和CmdBuf1(地址:08H)共同组成命令缓冲区。通过向命令缓冲区写入相关的控制命令可以实现段寻址、下载显示数据、控制闪烁等功能。07H=0X70,08H=0XFF。就可以实现八位全闪烁。
 楼主| malaohu 发表于 2007-4-30 09:27 | 显示全部楼层

谢谢楼上2位大虾

to&nbsp;LPC900:&nbsp;谢谢:)资料我已经找到。<br /><br />to&nbsp;zxq1234508:&nbsp;特别说明:单独设置FlashOnOff&nbsp;寄存器的值,并不会看到显示闪烁,而应该配合闪烁控制命令。寄存器CmdBuf0(地址:07H)和CmdBuf1(地址:08H)共同组成命令缓冲区。这样我就清楚了:)<br /><br />那这么说来,影响寄存器控制岂不如同虚设了。<br /><br />调试时发现,运行过b&nbsp;=&nbsp;0x88&nbsp;;&nbsp;a&nbsp;=&nbsp;&b;后b不等于0x88,a=??,这是怎么回事?是不是程序有问题,还是要用什么volatile?
zxq1234508 发表于 2007-4-30 10:02 | 显示全部楼层

改变FlashOnOff 的值,可以同时改变闪烁频率和占空比。

改变FlashOnOff&nbsp;的值,可以同时改变闪烁频率和占空比。也就是说可以改变数码管亮度。而CmdBuf0(地址:07H)和CmdBuf1(地址:08H)是决定数码管是否闪烁。简而言之,FlashOnOff&nbsp;控制数码管亮度,CmdBuf0(地址:07H)和CmdBuf1(地址:08H)控制数码管是否闪烁。另外,不知道你为什么要搞成a&nbsp;=&nbsp;&b;直接uint&nbsp;a;a=0xff;不就可以了啊?还用什么指针。
 楼主| malaohu 发表于 2007-5-4 10:46 | 显示全部楼层

a=0xff,a对应的是地址么?

这样a对应的是常量啊,不是地址吧。编译时不行吧
断水栈桥 发表于 2015-10-10 10:13 | 显示全部楼层
a=?没有意义,a是指针,a=&b,是让a指针指向b的地址,应该用*a,这才是该内存单元的内容,也就是b的值 *a=0x88
您需要登录后才可以回帖 登录 | 注册

本版积分规则

31

主题

95

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部