搜索
bottom↓
回复: 37

led 怎么不闪呀求指教

[复制链接]

出0入0汤圆

发表于 2012-11-29 23:13:14 | 显示全部楼层 |阅读模式
    本人有一定的51基础,没想到一上手avr给我沉重的打击,连个灯都搞不定这个让我很疼,我只好发帖求助一下请各位网友指教
#include <avr/io.h>           
#define uchar unsigned char  
#define uint unsigned int  
void DelayMs(uint i);   
/**************************主函数**********************/
void main(void)
{
DDRD=0XFF;               
while(1)               
     {
         PORTD=0XFF;
         DelayMs(30);
            PORTD=0X00;
        DelayMs(30);               
     }
}
/*******************延时子程序****************************/
void DelayMs(uint i)
{
uint j;                          
for (;i>0;i--)               
    {
          for (j=10000;j>0;j--);   
         }
}
led一直是亮着的,就是不闪烁,我就比较郁闷延时应该是够大了呀,怎么还不闪呢???
还有一个就是外部晶振插于不插程序都能运行,程序运行指示灯一直亮着,可是被控发光二极管就是不闪烁,这是为什么??????
我用的软件是winavr,下载程序的软件是智峰的那个发两张图让各位高手作参考!!!!!

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2012-11-29 23:18:43 | 显示全部楼层
图就是这两个,看设置是不是有问题

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2012-11-29 23:22:38 | 显示全部楼层
直接把这个  PORTD=0XFF;  注销,再看下亮不亮

出0入0汤圆

 楼主| 发表于 2012-11-29 23:38:29 | 显示全部楼层
还是亮着的!!!!!

出0入0汤圆

 楼主| 发表于 2012-11-29 23:39:37 | 显示全部楼层
亮度更加亮!!!!!!程序运行灯也亮!!!!!!

出0入0汤圆

 楼主| 发表于 2012-11-29 23:41:16 | 显示全部楼层
吧PORTD=0x00注销后就不亮了!!!

出0入0汤圆

发表于 2012-11-29 23:41:57 | 显示全部楼层
liudaolunhui 发表于 2012-11-29 23:39
亮度更加亮!!!!!!程序运行灯也亮!!!!!!

先查硬件有没有问题吧,要不然就直接运行一个空的while,把引脚配置那些都去掉

出0入0汤圆

 楼主| 发表于 2012-11-29 23:46:13 | 显示全部楼层
硬件没有问题的,我试了马老师的那个流水灯运行的还蛮不错的,他那个是在cvavr平台下开发的!!!

出0入0汤圆

发表于 2012-11-29 23:48:36 | 显示全部楼层
30ms太短了吧,相当于33Hz,不那么容易看出闪烁的,把间隔改大,比如1000ms

出0入0汤圆

 楼主| 发表于 2012-11-29 23:49:07 | 显示全部楼层
我就是有点怀疑外部晶振为什么插了跟没插都能下程序,而且运行呢!!!!

出0入0汤圆

 楼主| 发表于 2012-11-29 23:49:43 | 显示全部楼层
好再试一次!!!!!!!

出0入0汤圆

 楼主| 发表于 2012-11-29 23:51:19 | 显示全部楼层
还是不行!!!!!!!!!!!

出0入0汤圆

发表于 2012-11-29 23:53:34 | 显示全部楼层
liudaolunhui 发表于 2012-11-29 23:49
我就是有点怀疑外部晶振为什么插了跟没插都能下程序,而且运行呢!!!! ...

因为从你2楼贴的熔丝位来看,你用的是内部1M的RC震荡,所以与外接晶振无关

出0入0汤圆

 楼主| 发表于 2012-11-29 23:56:12 | 显示全部楼层
哦,我是新手,但程序应该没有问题呀!!我用的是16的片子,这个就比较疼了!!!!!

出0入0汤圆

 楼主| 发表于 2012-11-29 23:58:54 | 显示全部楼层
zb05022005 发表于 2012-11-29 23:53
因为从你2楼贴的熔丝位来看,你用的是内部1M的RC震荡,所以与外接晶振无关 ...

大哥,你有atmega16 灯的程序吗,用winavr编的!!!你发给我一份邮箱1315666783@qq.com我再试一下看行不!!!

出0入0汤圆

发表于 2012-11-30 00:03:48 | 显示全部楼层
你的延时ms好像太长了,试试这个

void delay_1ms(void)                 //1ms延时函数
  {
   unsigned int i;
   for (i=0;i<142;i++);
  }
  
void delay_nms(unsigned int n)       //N ms延时函数
  {
   unsigned int i=0;
   for (i=0;i<n;i++)
   delay_1ms();
  }

出0入0汤圆

发表于 2012-11-30 00:06:13 | 显示全部楼层
还有,你配置熔丝位的时候可以用“向导方式”,就在2楼图片左侧中间位置,有个标签,看到了吗

出0入0汤圆

发表于 2012-11-30 00:15:42 | 显示全部楼层
第一,我认为你延时不够长,应该用一个嵌套的循环,第二,你的截图中那个下载软件的熔丝位的配置我看不到的你调成那种向导模式吧……再给你回答另一个问题,不同于51单片机,avr有内部自带的时钟,是通过下载软件的熔丝位配置的,挺你说晶振插不插都能用,你肯定用的是内部时钟

出0入0汤圆

发表于 2012-11-30 00:29:20 | 显示全部楼层
建议楼主在安装一个avrstdio

出0入0汤圆

 楼主| 发表于 2012-11-30 07:03:14 | 显示全部楼层
恩,我看到了!!昨天晚上断网了学校12点准时断网,不好意思!!!!!!!!!!

出0入0汤圆

 楼主| 发表于 2012-11-30 07:12:13 | 显示全部楼层
liudaolunhui 发表于 2012-11-30 07:03
恩,我看到了!!昨天晚上断网了学校12点准时断网,不好意思!!!!!!!!!! ...

这些都是打钩的截图!!!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2012-11-30 07:13:11 | 显示全部楼层
liudaolunhui 发表于 2012-11-30 07:12
这些都是打钩的截图!!!

这些都是默认的!!!!!!!

出0入0汤圆

发表于 2012-11-30 09:48:23 | 显示全部楼层
要怪就怪你眼睛的带宽不够吧。。。扎示波器看

出0入0汤圆

发表于 2012-11-30 10:41:53 | 显示全部楼层
uint j;  改成 volatile uint j; 试试,大概是优化问题

出0入0汤圆

发表于 2012-11-30 10:46:06 | 显示全部楼层
是不是灯闪 的太快了?

出0入0汤圆

发表于 2012-11-30 11:19:40 | 显示全部楼层
先调试一下软件延时的问题,,,还有你选择的是内部1Mhz的晶振,频率很低的,这里可能导致了你软件延时的不准确,从而导致灯的闪烁频率使我们肉眼无法辨别,,,,,

出0入0汤圆

发表于 2012-11-30 11:23:39 来自手机 | 显示全部楼层
延时函数被优化掉了,直接用gcc自带的延时函数

出0入0汤圆

发表于 2012-11-30 11:24:58 来自手机 | 显示全部楼层
建议你看下芯艺的avr的gcc程序设计

出0入0汤圆

 楼主| 发表于 2012-11-30 11:52:51 | 显示全部楼层
好,我继续试一下!!!!!!

出0入0汤圆

 楼主| 发表于 2012-11-30 12:00:36 | 显示全部楼层
lcw_swust 发表于 2012-11-30 10:41
uint j;  改成 volatile uint j; 试试,大概是优化问题

闪了,就是那个延时函数优化的问题,太郁闷了!!!!!!!

出0入0汤圆

 楼主| 发表于 2012-11-30 12:05:21 | 显示全部楼层
  就是搞不懂为什么少个volatile 就会出现这种状况????

出0入4汤圆

发表于 2012-11-30 12:07:49 | 显示全部楼层
软件run一下 看看是不是延时函数被优化掉了   我也遇到过同样的问题 纠结了好久

出0入0汤圆

 楼主| 发表于 2012-11-30 12:12:28 | 显示全部楼层
哦,原来如此,谢谢各位,希望此贴能对以后的初学者有帮助!!!!!!

出0入0汤圆

发表于 2012-11-30 14:28:02 | 显示全部楼层
AVR好学吗?我现在用STC51

出0入0汤圆

 楼主| 发表于 2012-11-30 22:29:09 | 显示全部楼层
本帖最后由 liudaolunhui 于 2012-11-30 22:31 编辑
liangjiatian 发表于 2012-11-30 14:28
AVR好学吗?我现在用STC51


  至少比51好,51是最低级的一块片子,avr基本都是中档的片子!!!!!!

出0入0汤圆

 楼主| 发表于 2012-12-1 12:48:32 | 显示全部楼层
zcx2012 发表于 2012-11-30 11:24
建议你看下芯艺的avr的gcc程序设计

   大哥呀,小弟还有一根问题就是atmega16驱动lcd(1602或12864)不需要加外部排阻吧!!!!!

出0入0汤圆

发表于 2012-12-1 15:31:39 | 显示全部楼层
不用,加个小排阻也没问题

出0入0汤圆

 楼主| 发表于 2012-12-1 19:39:14 | 显示全部楼层
感谢各位大哥对我的支持!!!!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 05:24

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表