介紹了基于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)
2018-5-19 10:59 上傳
點擊文件名下載附件
|