一乐电子

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

微信扫码登录

搜索
楼主: zhuaii3721

[其他综合] 想抽些时间好好学单片机了,求师!求指教!

 火.. [复制链接]
发表于 2012-8-27 15:20 | 显示全部楼层
回复  fat


    我用ICCAVR写的,

连续读取10次这个简单,定义10个局部变量,

下面是我写的一个 ...
356053261 发表于 2012-8-27 12:16 https://www.yleee.com.cn/images/common/back.gif


我没有ICCAVR,没调试过,大概弄了一个,应该是下面这样:

void bubble(uint *a,uint n)  //冒泡排序函数,参数a是数组首地址,n是要排序数组的元素个数
{  uint i,j,temp;
for(i=0;i<n-1;i++)
   for(j=i+1;j<n;j++)
     if(a>a[j]) { temp=a; a=a[j]; a[j]=temp; }
}
void main()
{
   uint data,ad[10],a[4],i;
   // uint ad,ad0,ad1,ad2,ad3,ad4,ad5,ad6,ad7,ad8,ad9;
   init_LCD();           //初始化LCD
   while(1)
  {
   for(i=0;i<10;i++)
   {
      ad=m16_ad();   //读取10次AD值
      delay(2);)
  }     
  bubble(&ad, 10);      //10个AD值进行冒泡排序
  data=0;                 //每次使用前要记得清零
  for(i=1;i<9;i++)      //排序后最大和最小值放在数组的头和尾,只要将中间的8个求平均就行
    data=data+ad;      //读取的8次AD值相加
  data>>3;               //求得的和右移3位就是相当于除以8
  data=data/10/2.048/2; //数据换算


以上程序只是作为冒泡排序的一个例子,如果你程序要处理的事情比较多,不能接受冒泡的时间复杂度,可以考虑使用快速排序法,或者更简单一点,只用一重循环,将最大值和最小值查出来,然后对10个数求和,再减去最大值和最小值,结果和对排序后的中间8个数求和一样的,这样时间复杂度上小很多。
回复

使用道具 举报

发表于 2012-8-27 16:40 | 显示全部楼层
回复 21# fat


    太感谢了,有空研究下,坛子里高人很多!
回复

使用道具 举报

 楼主| 发表于 2012-8-27 18:41 | 显示全部楼层
好好学习,天天向上,可惜我还没到这个程度啊
回复

使用道具 举报

发表于 2012-8-27 19:40 | 显示全部楼层
回复 23# zhuaii3721


跑完例程后,就可以找一个感兴趣的实际能用的项目来做,你就当是一个能拿到市场上去卖的产品来做,会有很大提高的
回复

使用道具 举报

发表于 2012-8-27 19:46 | 显示全部楼层
支持开班
回复

使用道具 举报

 楼主| 发表于 2012-8-27 20:29 | 显示全部楼层
回复 24# 阳光999


    可是光跑例程是很快的呦`~ ~关键是没有好的思路啊,没有拓展性的学习方法,能够举一反三的
回复

使用道具 举报

发表于 2012-8-27 23:10 | 显示全部楼层
回复 26# zhuaii3721


   你都还想不出要做啥东西那来的思路呀
   不做东西不需要思路


    做不同的东西需要不同的思路
回复

使用道具 举报

 楼主| 发表于 2012-8-28 08:03 | 显示全部楼层
回复 27# 阳光999


    嗯,我现在想要试做一个转速表,测量一分钟的设备转速,不知兄弟可否指导下思路
回复

使用道具 举报

发表于 2012-8-28 17:50 | 显示全部楼层
回复 28# zhuaii3721


  第一步:在网上找10个别人在卖的的转速表,比较他们的功能,价格;

  第二步:确定你要做的转速表的功能,指标;

  第三步:找10个别人的程序,比较他们实现的方法、所用硬件、优缺点;

  第四步:确定你所要选用的硬件电路和实现方法;

  然后你就可以开始想你的思路了
回复

使用道具 举报

发表于 2012-8-29 13:44 | 显示全部楼层
你还是老套路啊,没电创新的思路;写单片机程序之前得先确定原理图,想好后再写出程序的基本结构框架,完后再逐渐添加子函数模块的功能;完善后再从新写一个最精简的程序来替代笨拙的长代码;也可以参考别人的代码;当你写成功后,才知道,哦,原来是这样的啊,真是没想对解决问题的方法而已
回复

使用道具 举报

本版积分规则

QQ|一淘宝店|手机版|商店|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2025-8-19 01:17 , Processed in 0.030093 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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