完整源码
stm32_max7219code.zip
(307.5 KB, 售价: 2 E币)
关于MAX7912驱动数码管的问题,论坛上基本找到的都会51驱动例程。
实际上我测试过根据资料也没有什么问题,但是如果一旦移植到32,确发现不行。检查时序没有问题,百思不得其解,去网上找资料找到的都是硬件spi。
看到spi速率的问题时突然想到8051和stm32单片机之间的区别,就是主频问题,f1主频71M,基本8051只有1M,max7912是否也有反应速率的问题呢?于是将模拟IO口的工作频率设置为10M,发现问题解决。
部分源码
- void Write7219(unsigned char address,unsigned char dat)
- {
- unsigned char i;
- Max7219_CS(0); //拉低片选线,选中器件
- //发送地址
- for (i=0;i<8;i++) //移位循环8次
- {
- Max7219_CLK(0); //清零时钟总线
- if((address&0x80))
- {
- Max7219_DIN(1);
- }
- else
- {
- Max7219_DIN(0);
- }
- address<<=1; //左移一位
- Max7219_CLK(1); //时钟上升沿,发送地址
- }
- //发送数据
- for (i=0;i<8;i++)
- {
- Max7219_CLK(0);
- if((dat&0x80))
- {
- Max7219_DIN(1);
- }
- else
- {
- Max7219_DIN(0);
- }
- dat<<=1;
- Max7219_CLK(1); //时钟上升沿,发送数据
- }
- Max7219_CS(1); //发送结束,上升沿锁存数据
- }
- //MAX7219初始化,设置MAX7219内部的控制寄存器
- void Max7219Init(void)
- {
- MAX7912_GPIO_Config();
- Write7219(SHUT_DOWN,0x01); //开启正常工作模式(0xX1)
- Write7219(DISPLAY_TEST,0x00); //选择工作模式(0xX0)
- Write7219(DECODE_MODE,0xff); //选用全译码模式
- Write7219(SCAN_LIMIT,0x07); //8只LED全用
- Write7219(INTENSITY,0x04); //设置初始亮度
- }
复制代码
【必读】版权免责声明
1、本主题所有言论和内容纯属会员个人意见,与本论坛立场无关。2、本站对所发内容真实性、客观性、可用性不做任何保证也不负任何责任,网友之间仅出于学习目的进行交流。3、对提供的数字内容不拥有任何权利,其版权归原著者拥有。请勿将该数字内容进行商业交易、转载等行为,该内容只为学习所提供,使用后发生的一切问题与本站无关。 4、本网站不保证本站提供的下载资源的准确性、安全性和完整性;同时本网站也不承担用户因使用这些下载资源对自己和他人造成任何形式的损失或伤害。 5、本网站所有软件和资料均为网友推荐收集整理而来,仅供学习用途使用,请务必下载后两小时内删除,禁止商用。6、如有侵犯你版权的,请及时联系我们(电子邮箱1370723259@qq.com)指出,本站将立即改正。
|