介绍了基于C8051F410的电子秤设计,包含原理图及上位机(组态王)部分。
Altium Designer画的原理图如下:(51hei附件中可下载工程文件)
单片机主函数源程序如下:
- #include"COM_WEIGHT.h"
- sbit key1 = P1^4;
- xdata union{float F[16];long L[16];int I[32];char R[64];}A_DAT; //数据联合体
- /*********************************全局变量***************************************/
- float A,C;
- unsigned int i;
- /*********************************码值20次采样****************************************/
- void cs1238_average()
- {
- for(i=0;i<=19;i++)
- {
- cs1238();
- C=((Weight_A-Weight_Z)/1.0/Weight_K);
- A = C + A;
- }
- }
- void Delay1(unsigned int z)
- {
- for(z;z>0;z--);
- }
- //长延时函数
- /*
- void Delay2(unsigned int z)
- {
- for(z;z>0;z--)
- {
- Delay1(60000);
- }
- }
- */
- /*************************************************************************/
- //联合体变量初始化函数
- void A_DAT_INIT()
- {
- Stand_No =1;
- Weight_A =0;
- Weight_B=0; //重量
- Weight_K = 128.38887666555; //转换斜率
- Weight_Z = 0; //0点码值
- Weight_peel = 0; //去皮重量
- Weight_per = 0; //单价
- Weight_total = 0; //总价
- }
- /*************************************************************************/
- void main ()
- {
- Init_Device();
- rx_start();
- A_DAT_INIT();
- LCD_Init();
- CS1238_WR_CONFIG(0x0c); //AD初始化
- cs1238();
- Weight_Z = Weight_A;
- LCD_Write_String(0,1,"Weight:");
- LCD_Write_String(10,1,"G");
- LCD_Write_String(0,0,"AD_CODE:");
- while (1)
- {
- A = 0;
- // if(Weight_B >= 5000)
- // {
- // Weight_B = 5005;
- // }
- cs1238_average();
- Weight_B=(A/20*10) - Weight_peel*10;
- // if(Weight_B >= 5000)
- // {
- // Weight_B = 5004;
- // }
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
weight为上位机程序及画面,最终版为下位机程序,weight_1为原理图。
所有资料51hei提供下载:
电子秤.rar
(270.84 KB, 下载次数: 108)
|