搜索
bottom↓
回复: 30

上传一个用STM8S003做的一个电子秤程序 调试通过

[复制链接]

出0入0汤圆

发表于 2014-7-7 20:50:55 | 显示全部楼层 |阅读模式
  1. #include "stm8s.h"
  2. #include "stm8s_gpio.h"
  3. #include "stm8s_exti.h"
  4. #include "stm8s.h"
  5. #include "stm8s_type.h"
  6. #include "stm8s.h"
  7. #include "stm8s_tim1.h"
  8. #include "stm8s_clk.h"
  9. #include "stm8s_conf.h"

  10. #define HC595_PORT (GPIOC)
  11. #define HC595_DIO  (GPIO_PIN_3)
  12. #define HC595_SCK  (GPIO_PIN_4)
  13. #define HC595_RCK (GPIO_PIN_5)

  14. void LS595_out(void);
  15. void LS595_in(u8 Data);

  16. /*
  17. #define BUTTON_PORT (GPIOC)
  18. #define BUTTOButtonStateN_PIN  (GPIO_PIN_0)
  19. */
  20. #define AD_Conver (GPIOA)
  21. #define AD_DA  (GPIO_PIN_1)
  22. #define AD_CK  (GPIO_PIN_2)


  23. u8 table[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6,0xee,0xfe,0x9c,0xfc,0x9e,0x8e};  //段选
  24. u8 Wtable[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};    //位选


  25. void shumaguan_595(u8 wei,u8 duan)        ;
  26. void display(void);
  27. u32 Sampling(void);

  28. u32 readconver(void);


  29. /* Private macro -------------------------------------------------------------*/

  30. /* Private function prototypes -----------------------------------------------*/
  31. void Delay (u16 nCount);

  32. /* Private functions ---------------------------------------------------------*/
  33. /* Public variables ---------------------------------------------------------*/
  34. //u8 ButtonState = 0x00;
  35. //u8 A1, A2, A3, A4,A5,A6,A7,A8;
  36. u32 Lheight,AD;

  37. unsigned char A1, A2, A3, A4,A5,A6,A7,A8;

  38. void main(void)
  39. {

  40.   u8 Leds; /* Contains which LEDs to operate */

  41.   CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);

  42.   /* Initialize I/Os in Output Mode */
  43. GPIO_Init(GPIOC,GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5,GPIO_MODE_OUT_PP_LOW_FAST); //推挽输出模式
  44.         GPIO_Init(AD_Conver,    AD_DA | AD_CK ,  GPIO_MODE_OUT_PP_LOW_FAST);                //推挽输出模式

  45.   /* Initialize I/O in Input Mode with Interrupt */
  46. // GPIO_Init(BUTTON_PORT, BUTTON_PIN, GPIO_MODE_IN_FL_IT);

  47.   /* Initialize the Interrupt sensitivity */
  48. // EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOC, EXTI_SENSITIVITY_FALL_ONLY);

  49. // enableInterrupts();

  50.   /* Toggles LEDs */

  51.   while (1)
  52.   {
  53.                          
  54.                    u32 c;
  55.                          // Lheight = ((Sampling()));
  56.                                 Lheight=(Sampling()/1000-92)*75;
  57.                           //Lheight=1;
  58.                                 //c=(readconver());
  59.                 //        c=         readconver();
  60.                 //Lheight = readconver()-93048;
  61.                 if(Lheight>0)
  62.                
  63.                 //Lheight=Lheight;
  64.                                 //Lheight = Sampling();
  65.                          {
  66.                          A8=Lheight%10;
  67.                           A7=(Lheight%100)/10;
  68.                           A6=(Lheight%1000)/100;
  69.                           A5=(Lheight%10000)/1000;                                                                                                         
  70.                           A4=(Lheight%100000)/10000;       
  71.         A3=(Lheight%1000000)/100000;       
  72.         A2=(Lheight%10000000)/1000000;
  73.         A1=Lheight/10000000;
  74.                         display();
  75.                         }
  76.                         else
  77.                         Lheight=0;
  78.                         A8=Lheight%10;
  79.                         A7=(Lheight%100)/10;
  80.                         A6=(Lheight%1000)/100;
  81.                         A5=(Lheight%10000)/1000;                                                                                                         
  82.                         A4=(Lheight%100000)/10000;       
  83.                         A3=(Lheight%1000000)/100000;       
  84.                         A2=(Lheight%10000000)/1000000;
  85.                         A1=Lheight/10000000;
  86.                         display();
  87.                        
  88.        
  89.                        
  90.   }

  91. }
  92. void display(void)
  93.   {   
  94.            u8 a;
  95.              for(a=2000;a>0;a--);
  96.                          {
  97.                          shumaguan_595(Wtable[0],table[A1]);
  98.                          shumaguan_595(Wtable[1],table[A2]);
  99.                          shumaguan_595(Wtable[2],table[A3]);
  100.                          shumaguan_595(Wtable[3],table[A4]);
  101.                          shumaguan_595(Wtable[4],table[A5]);
  102.                          shumaguan_595(Wtable[5],table[A6]);
  103.                          shumaguan_595(Wtable[6],table[A7]);
  104.                          shumaguan_595(Wtable[7],table[A8]);
  105.                          shumaguan_595(0xff,table[0]);
  106.                  Delay(100);
  107.                  }
  108.   }

  109. u32 readconver(void)
  110. {   

  111.         u8 i;
  112.         u32 dat=0;
  113.         //GPIO_WriteHigh(AD_Conver,AD_DA);
  114.         //Delay(5);
  115.         GPIO_WriteLow(AD_Conver,AD_CK);   //当 AD_CK 为低电平时,芯片处于正常工作状态,使能AD
  116.         while(GPIO_ReadInputPin(AD_Conver,AD_DA)!=0);   //AD转换未结束则等待,否则开始读取
  117.         GPIO_Init(AD_Conver,   AD_DA ,  GPIO_MODE_IN_FL_NO_IT); //重新配置为输入模式
  118.        
  119.                  for(i=0;i<24;i++)   //读24个bit
  120.         {
  121.                 GPIO_WriteHigh(AD_Conver,AD_CK);
  122.                 dat=dat<<1;//count=count<<1;   //向左移一位
  123.     GPIO_WriteLow(AD_Conver,AD_CK);               
  124.         //        if(GPIO_ReadInputPin(AD_Conver,AD_DA))  高电平返回非0,低返回0
  125.         if(GPIO_ReadInputPin(AD_Conver,AD_DA)!=0)
  126.    
  127.                 dat++;                  //if(AD_DA)count++; //当AD_DA为1时  count+1
  128.         }
  129.        
  130.          GPIO_WriteHigh(AD_Conver,AD_CK);
  131.           //dat=dat^0x800000;  // 第25个脉冲下降沿来时,转换数据
  132.          GPIO_WriteLow(AD_Conver,AD_CK);
  133.          return(dat);
  134. }



  135. u32 Sampling(void)
  136. {
  137.         u32 Sam[12],tmpmax,tmpmin,sum=0,Average;                                               
  138.         u8 i;
  139.                                                                                                                                                    
  140.         for(i=0;i<12;i++)
  141.         {                                                                                                                                                                                         
  142.                 Sam[i]=readconver();
  143.                 if(i==0)
  144.                 {
  145.                         tmpmax=Sam[0];
  146.                         tmpmin=Sam[0];
  147.                 }
  148.                 if(i>0)
  149.                 {
  150.                         if(Sam[i]>tmpmax)tmpmax=Sam[i];
  151.                         if(Sam[i]<tmpmin)tmpmin=Sam[i];
  152.                 }
  153.         }                                                                       

  154.         for(i=0;i<12;i++)
  155.         {
  156.                 if(!(Sam[i]==tmpmax||Sam[i]==tmpmin))
  157.                 {
  158.                         sum=sum+Sam[i];       
  159.                 }                                                                                                                               
  160.         }
  161.         Average=sum/10;

  162.         return(Average);
  163. }

  164. void shumaguan_595(u8 wei,u8 duan)                       
  165. {
  166.          u8 i;
  167.          for(i=0;i<8;i++)
  168.         {
  169.   LS595_in (wei);
  170.   LS595_in(duan);
  171.         LS595_out();
  172.         //TMR0_Delay1ms(1);
  173. }

  174. }                 
  175.    
  176. void LS595_in(u8 Data)
  177. {
  178.   u8 i;
  179.        
  180.         for(i=0;i<8;i++)            
  181.   {
  182.       GPIO_WriteLow(HC595_PORT, HC595_SCK);
  183.        
  184.                  if(Data&0x01)
  185.          {
  186.             GPIO_WriteHigh(HC595_PORT,HC595_DIO);
  187.          }
  188.      else
  189.    {
  190.            GPIO_WriteLow(HC595_PORT,HC595_DIO);
  191.    }                                  
  192.                 Data>>=1;                    
  193.     GPIO_WriteHigh(HC595_PORT, HC595_SCK);
  194.    }
  195. }
  196. /*写入数据函数*/

  197. void LS595_out(void)
  198. {
  199.   GPIO_WriteLow(HC595_PORT, HC595_RCK);
  200.                            
  201.   //RCK=1;                    //当RCK为上升沿时将数据并行输出
  202.         Delay(1);
  203.         GPIO_WriteHigh(HC595_PORT, HC595_RCK);
  204.   //TMR0_Delay1ms(1);
  205.         Delay(1);
  206.   GPIO_WriteLow(HC595_PORT, HC595_RCK);
  207.        
  208. }

  209. void Delay(u16 nCount)
  210. {
  211.   /* Decrement nCount value */
  212.   while (nCount != 0)
  213.   {
  214.     nCount--;
  215.   }
  216. }






  217. #ifdef FULL_ASSERT
  218. void assert_failed(u8 *file, u16 line)
  219. #else
  220. void assert_failed(void)
  221. #endif
  222. {
  223.   /* Add your own code to manage an assert error */
  224.   /* Infinite loop */
  225.   while (1)
  226.   {
  227.   }
  228. }
复制代码


使用HC595串行输入,并行输出

本帖子中包含更多资源

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

x

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

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

 楼主| 发表于 2014-7-7 20:55:44 | 显示全部楼层
程序放在这里  需要的下载  开发环境STD

本帖子中包含更多资源

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

x

出0入85汤圆

发表于 2014-7-7 21:02:54 | 显示全部楼层
又是HX711

出0入0汤圆

发表于 2014-7-7 21:12:03 | 显示全部楼层
做过温补吗

出0入0汤圆

发表于 2014-7-7 22:15:45 | 显示全部楼层

为什么说又是HX711?

出0入85汤圆

发表于 2014-7-7 22:34:50 | 显示全部楼层
feiante116 发表于 2014-7-7 22:15
为什么说又是HX711?

测试过这个AD感觉貌似很不怎样,短稳还可以,温度系数比较大,数据飘

出0入0汤圆

发表于 2014-7-7 23:24:28 来自手机 | 显示全部楼层
好东西,收藏了!谢谢分享!

出0入0汤圆

发表于 2014-7-7 23:45:55 | 显示全部楼层
楼主能不能公布原理图,,很想学习学习!@  谢谢

出0入0汤圆

发表于 2014-7-7 23:53:02 | 显示全部楼层
帮顶一下!

出0入0汤圆

发表于 2014-7-8 00:13:33 来自手机 | 显示全部楼层
用的什么传感器?

出0入8汤圆

发表于 2014-7-8 00:22:23 | 显示全部楼层
数码管不错

出0入0汤圆

 楼主| 发表于 2014-7-8 20:43:46 | 显示全部楼层
HYLG 发表于 2014-7-8 00:13
用的什么传感器?

大一学生党  没钱买传感器  淘宝里面买的一个便宜传感器    也不知道是什么传感器,连着AD HX711

出0入18汤圆

发表于 2014-7-8 20:50:32 | 显示全部楼层
你就while等么  可以用中断的啊

出0入0汤圆

 楼主| 发表于 2014-7-8 20:53:09 | 显示全部楼层
jackiezeng 发表于 2014-7-7 23:45
楼主能不能公布原理图,,很想学习学习!@  谢谢

没有画原理图呀  我就是几个模块连接起来的  具体的接口我代码上面都define了   传感器出来4根线 1根VCC, 1根GND, 1根A+, 1根A-  ;A+和A-连着HX711   

出0入0汤圆

 楼主| 发表于 2014-7-8 21:08:56 | 显示全部楼层
himan 发表于 2014-7-8 20:50
你就while等么  可以用中断的啊

恩恩   我现在准备用中断写    ,while里面会出现数码管闪烁,看着不是蛮舒服   
然后还用一个问题 003F3的flash太小,只有4K.  准备用寄存器写,用库函数占用的内存太大

出0入0汤圆

发表于 2014-7-8 23:02:41 | 显示全部楼层
王晨 发表于 2014-7-8 21:08
恩恩   我现在准备用中断写    ,while里面会出现数码管闪烁,看着不是蛮舒服   
然后还用一个问题 003F3 ...

003 为8K的

出0入0汤圆

发表于 2014-7-9 11:00:26 | 显示全部楼层
代码写的好乱

出0入0汤圆

发表于 2014-7-9 12:02:34 来自手机 | 显示全部楼层
先支持一下!

出0入0汤圆

发表于 2014-8-3 11:38:14 | 显示全部楼层
楼主stvd可以发下吗

出0入0汤圆

 楼主| 发表于 2014-8-3 14:35:19 | 显示全部楼层
蜗牛蜗牛 发表于 2014-8-3 11:38
楼主stvd可以发下吗

http://pan.baidu.com/s/1kTytF9P

出0入0汤圆

发表于 2014-8-4 22:25:58 | 显示全部楼层
谢谢了
马2化1腾1273753254

出0入0汤圆

发表于 2014-8-27 10:21:01 | 显示全部楼层
称重很准,谢谢分享,存下了。

出0入0汤圆

发表于 2014-8-27 10:24:56 | 显示全部楼层
楼主真厉害,喜欢看程序,算法特别有用

出0入95汤圆

发表于 2014-9-9 14:53:07 | 显示全部楼层
不错,参考一下

出0入0汤圆

发表于 2014-9-9 15:14:35 | 显示全部楼层
代码略乱 哈哈

出0入0汤圆

发表于 2015-3-1 11:13:06 | 显示全部楼层
精度怎么样?

出0入0汤圆

发表于 2015-3-1 18:08:49 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2015-4-24 23:29:27 | 显示全部楼层
上传一个用STM8S003做的一个电子秤程序 调试通过

出0入8汤圆

发表于 2015-4-25 10:43:47 | 显示全部楼层
如果你是全部库都加进去的  需要在优化选项中 打开一个优化选项,就不会占用多大空间了。   选项的意思是 不使用的函数 不连接。

出0入0汤圆

发表于 2015-4-25 15:17:26 | 显示全部楼层
mark学习一下

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-4-26 23:59

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

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