久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標(biāo)題: 用51單片機(jī)制作電子秤的資料(帶仿真文件) [打印本頁(yè)]

作者: shige    時(shí)間: 2013-6-26 16:16
標(biāo)題: 用51單片機(jī)制作電子秤的資料(帶仿真文件)


源碼和仿真文件下載: 0150、電子秤proteus仿真 程序資料.rar (188.4 KB, 下載次數(shù): 804)

下面是部分程序預(yù)覽:
  1. /********************************************************
  2.                    壓力測(cè)試儀
  3. 系統(tǒng)描述;輸入  15--115kPA壓力信號(hào)
  4.          輸出  00h--ffh數(shù)字信號(hào)(adc0832)
  5.          在LCD上顯示實(shí)際的壓力值,如果超限則報(bào)警

  6. 線性區(qū)間標(biāo)度變換公式:    y=(115-15)/(243-13)*X+15kpa   

  7. 作者:
  8. 單位:
  9. 日期:2008.3.7

  10. ********************************************************/

  11. #include<reg51.h>
  12. #include<intrins.h>
  13. #include <absacc.h>
  14. #include <math.h>

  15. #define uchar unsigned char
  16. #define uint   unsigned int
  17. #define BUSY  0x80                               //常量定義
  18. #define DATAPORT P0


  19. //ADC0832的引腳
  20. sbit ADCS =P3^5;  //ADC0832 chip seclect
  21. sbit ADDI =P3^7;  //ADC0832 k in
  22. sbit ADDO =P3^7;  //ADC0832 k out
  23. sbit ADCLK =P3^6;  //ADC0832 clock signal

  24. sbit LCM_RS=P2^0;
  25. sbit LCM_RW=P2^1;
  26. sbit LCM_EN=P2^2;

  27. uchar ad_data;                                    //采樣值存儲(chǔ)
  28. sbit Alarm_led_red =P3^1;                         //超過(guò)壓力表量程最大值紅色led報(bào)警定義
  29. sbit Alarm_led_green=P3^2;                        //低于壓力表量程最小值綠色led報(bào)警定義
  30.                           //adc采樣值存儲(chǔ)單元
  31. char press_data;                                  //標(biāo)度變換存儲(chǔ)單元
  32. unsigned char ad_alarm;                           //報(bào)警值存儲(chǔ)單元
  33. unsigned char press_ge=0;                        //顯示值百位
  34. unsigned char press_shifen=0;                        //顯示值十位
  35. unsigned char press_baifen=0;                         //顯示值個(gè)位
  36. unsigned char press_qianfen=0;                        //顯示值十分位

  37. uchar code str0[]={"Weight:  .   Kg "};
  38. uchar code str1[]={"Make by GUO TAO "};
  39. uchar code str2[]={"Price:          "};
  40. uchar code str3[]={"Total:          "};
  41. void delay(uint);
  42. void lcd_wait(void);
  43. void delay_LCM(uint);                                                                                                     //LCD延時(shí)子程序
  44. void initLCM( void);                                                                                                       //LCD初始化子程序
  45. void lcd_wait(void);                                                                                                      //LCD檢測(cè)忙子程序
  46. void WriteCommandLCM(uchar WCLCM,uchar BusyC);                              //寫(xiě)指令到ICM子函數(shù)
  47. void WriteDataLCM(uchar WDLCM);                                             //寫(xiě)數(shù)據(jù)到LCM子函數(shù)
  48. void DisplayOneChar(uchar X,uchar Y,uchar DData);                           //顯示指定坐標(biāo)的一個(gè)字符子函數(shù)
  49. void DisplayListChar(uchar X,uchar Y,uchar code *DData);                                         //顯示指定坐標(biāo)的一串字符子函數(shù)
  50.   void keyscan();                  
  51. void display(void);                                                         //系統(tǒng)顯示子函數(shù)
  52. uchar Adc0832(unsigned char channel);                                                                                                                       
  53. void alarm(void);
  54. void data_pro(void);


  55. /**********main funcation************/

  56. void main(void)
  57. {
  58.     delay(500);                      //系統(tǒng)延時(shí)500ms啟動(dòng)
  59. //        ad_data=0;                       //采樣值存儲(chǔ)單元初始化為0
  60.            initLCM( );
  61.         
  62.            WriteCommandLCM(0x01,1);                    //清顯示屏
  63.     DisplayListChar(0,0,str0);
  64.            DisplayListChar(0,1,str2);

  65.         while(1)
  66.     {
  67.            ad_data =Adc0832(0);           //采樣值存儲(chǔ)單元初始化為0
  68.           
  69.             alarm();
  70.        
  71.                 data_pro();
  72.                
  73.                 display();
  74.                                  
  75.         }
  76. }


  77. /*********延時(shí)K*1ms,12.000mhz**********/

  78. void delay(uint k)
  79. {
  80.     uint i,j;
  81.     for(i=0;i<k;i++)
  82.     {
  83.         for(j=0;j<60;j++)
  84.                 {;}
  85.     }
  86. }   
  87. /**********寫(xiě)指令到ICM子函數(shù)************/

  88. void WriteCommandLCM(uchar WCLCM,uchar BusyC)
  89. {
  90.     if(BusyC)lcd_wait();
  91.         DATAPORT=WCLCM;
  92.     LCM_RS=0;                   // 選中指令寄存器
  93.     LCM_RW=0;                       // 寫(xiě)模式       
  94.     LCM_EN=1;   
  95.         _nop_();   
  96.         _nop_();
  97.         _nop_();
  98.     LCM_EN=0;
  99.    
  100. }

  101. /**********寫(xiě)數(shù)據(jù)到LCM子函數(shù)************/

  102. void WriteDataLCM(uchar WDLCM)
  103. {
  104.     lcd_wait( );             //檢測(cè)忙信號(hào)   
  105.         DATAPORT=WDLCM;
  106.     LCM_RS=1;                // 選中數(shù)據(jù)寄存器
  107.     LCM_RW=0;                    // 寫(xiě)模式
  108.     LCM_EN=1;
  109.     _nop_();
  110.         _nop_();
  111.         _nop_();
  112.     LCM_EN=0;
  113. }

  114. /***********lcm內(nèi)部等待函數(shù)*************/

  115. void lcd_wait(void)
  116. {
  117.     DATAPORT=0xff;             //讀LCD前若單片機(jī)輸出低電平,而讀出LCD為高電平,則沖突,Proteus仿真會(huì)有顯示邏輯黃色
  118.         LCM_EN=1;
  119.     LCM_RS=0;   
  120.     LCM_RW=1;   
  121.     _nop_();
  122.     _nop_();
  123.         _nop_();
  124.     while(DATAPORT&BUSY)  
  125.         {  LCM_EN=0;
  126.            _nop_();
  127.            _nop_();
  128.            LCM_EN=1;
  129.            _nop_();
  130.            _nop_();
  131.            }         
  132.            LCM_EN=0;       
  133.        
  134. }

  135. /**********LCM初始化子函數(shù)***********/

  136. void initLCM( )
  137. {   
  138.         DATAPORT=0;       
  139.         delay(15);
  140.         WriteCommandLCM(0x38,0);    //三次顯示模式設(shè)置,不檢測(cè)忙信號(hào)
  141.     delay(5);
  142.     WriteCommandLCM(0x38,0);
  143.     delay(5);
  144.     WriteCommandLCM(0x38,0);
  145.     delay(5);

  146.     WriteCommandLCM(0x38,1);    //8bit數(shù)據(jù)傳送,2行顯示,5*7字型,檢測(cè)忙信號(hào)
  147.     WriteCommandLCM(0x08,1);    //關(guān)閉顯示,檢測(cè)忙信號(hào)
  148.     WriteCommandLCM(0x01,1);    //清屏,檢測(cè)忙信號(hào)
  149.     WriteCommandLCM(0x06,1);    //顯示光標(biāo)右移設(shè)置,檢測(cè)忙信號(hào)
  150.     WriteCommandLCM(0x0c,1);    //顯示屏打開(kāi),光標(biāo)不顯示,不閃爍,檢測(cè)忙信號(hào)
  151. }

  152. /****顯示指定坐標(biāo)的一個(gè)字符子函數(shù)****/

  153. void DisplayOneChar(uchar X,uchar Y,uchar DData)

  154. {
  155.    Y&=0x01;
  156.     X&=0x0f;
  157.     if(Y)X|=0x40;               //若y為1(顯示第二行),地址碼+0X40
  158.     X|=0x80;                    //指令碼為地址碼+0X80
  159.     WriteCommandLCM(X,1);
  160.     WriteDataLCM(DData);
  161. }

  162. /*******顯示指定坐標(biāo)的一串字符子函數(shù)*****/

  163. void DisplayListChar(uchar X,uchar Y,uchar code *DData)
  164. {
  165.     uchar ListLength=0;
  166.     Y&=0x01;
  167.     X&=0x0f;
  168.     while(X<16)
  169.     {
  170.         DisplayOneChar(X,Y,DData[ListLength]);
  171.         ListLength++;
  172.         X++;
  173.     }
  174. }

  175. /*****************系統(tǒng)顯示子函數(shù)*****************/

  176. void display(void)
  177. {
  178.            WriteCommandLCM(0x0c,1);                                    //顯示屏打開(kāi),光標(biāo)不顯示,不閃爍,檢測(cè)忙信號(hào)       
  179.         DisplayListChar(0,0,str0);       
  180.         DisplayListChar(0,1,str2);       


  181.         DisplayOneChar(8,0,press_ge+0x30);
  182.         DisplayOneChar(10,0,press_shifen+0x30);
  183.         DisplayOneChar(11,0,press_baifen+0x30);
  184.     DisplayOneChar(12,0,press_qianfen+0x30);
  185.         delay(1000);                               //穩(wěn)定顯示
  186. }
  187. /************
  188. 讀ADC0832函數(shù)
  189. ************/

  190. //采集并返回
  191. uchar Adc0832(unsigned char channel)     //AD轉(zhuǎn)換,返回結(jié)果
  192. {
  193.     uchar i=0;
  194.     uchar j;
  195.     uint dat=0;
  196.     uchar ndat=0;

  197.     if(channel==0)channel=2;
  198.     if(channel==1)channel=3;
  199.     ADDI=1;
  200.     _nop_();
  201.     _nop_();
  202.     ADCS=0;//拉低CS端
  203.     _nop_();
  204.     _nop_();
  205.     ADCLK=1;//拉高CLK端
  206.     _nop_();
  207.     _nop_();
  208.     ADCLK=0;//拉低CLK端,形成下降沿1
  209.     _nop_();
  210.     _nop_();
  211.     ADCLK=1;//拉高CLK端
  212.     ADDI=channel&0x1;
  213.     _nop_();
  214.     _nop_();
  215.     ADCLK=0;//拉低CLK端,形成下降沿2
  216.     _nop_();
  217.     _nop_();
  218.     ADCLK=1;//拉高CLK端
  219.     ADDI=(channel>>1)&0x1;
  220.     _nop_();
  221.     _nop_();
  222.     ADCLK=0;//拉低CLK端,形成下降沿3
  223.     ADDI=1;//控制命令結(jié)束
  224.     _nop_();
  225.     _nop_();
  226.     dat=0;
  227.     for(i=0;i<8;i++)
  228.     {
  229.         dat|=ADDO;//收數(shù)據(jù)
  230.         ADCLK=1;
  231.         _nop_();
  232.         _nop_();
  233.         ADCLK=0;//形成一次時(shí)鐘脈沖
  234.         _nop_();
  235.         _nop_();
  236.         dat<<=1;
  237.         if(i==7)dat|=ADDO;
  238.     }  
  239.     for(i=0;i<8;i++)
  240.     {
  241.         j=0;
  242.         j=j|ADDO;//收數(shù)據(jù)
  243.         ADCLK=1;
  244.         _nop_();
  245.         _nop_();
  246.         ADCLK=0;//形成一次時(shí)鐘脈沖
  247.         _nop_();
  248.         _nop_();
  249.         j=j<<7;
  250.         ndat=ndat|j;
  251.         if(i<7)ndat>>=1;
  252.     }
  253.     ADCS=1;//拉低CS端
  254.     ADCLK=0;//拉低CLK端
  255.     ADDO=1;//拉高數(shù)據(jù)端,回到初始狀態(tài)
  256.     dat<<=8;
  257.     dat|=ndat;
  258.     return(dat);            //return ad k
  259. }


  260. void data_pro(void)
  261. {
  262.       unsigned int temp;
  263.       float  press;                             

  264.           if(14<ad_data<243)                                       //當(dāng)壓力值介于15kpa到115kpa之間時(shí),遵循線性變換
  265.                  {                            
  266.                     int vary=ad_data;                                                //y=(115-15)/(243-13)*X+15kpa                       
  267.                         press=((10.0/23.0)*vary)+9.3;                        //測(cè)試時(shí)補(bǔ)償值為9.3
  268.                                                                                                                   
  269.                         temp=(int)(press*10);                        //放大10倍,便于后面的計(jì)算
  270.                                                                                               
  271.                                                                                                            
  272.                         press_ge=temp/1000;                                     //取壓力值百位
  273.                         press_shifen=(temp%1000)/100;                            //取壓力值十位
  274.                         press_baifen=((temp%1000)%100)/10;                    //取壓力值個(gè)位
  275.                         press_qianfen=((temp%1000)%100)%10;                        //取壓力值十分位

  276.                       }            
  277.                          
  278. }
  279. /*****************報(bào)警子函數(shù)*******************/

  280. void alarm(void)
  281. {
  282.          if(ad_data>=243)                           //如果當(dāng)前壓力值大于115kpa,

  283.           {  Alarm_led_red=0; }                 //則啟動(dòng)red led報(bào)警
  284.         
  285.           else
  286.              {          Alarm_led_red=1; }                        //關(guān)閉red led 報(bào)警
  287.                   
  288.        
  289.           if(ad_data<=14)                                                        //如果當(dāng)前壓力值小于16kpa

  290.              {  Alarm_led_green=0;  }               //則啟動(dòng)green led報(bào)警

  291.       else
  292.              {   Alarm_led_green=1; }                              //關(guān)閉green  led 報(bào)警
  293.          
  294. }



復(fù)制代碼

作者: avav07    時(shí)間: 2013-6-26 20:28
謝謝分享啊
作者: 左左右右    時(shí)間: 2013-7-2 17:16
好東東,牛人,51Hei(51黑)論壇有你更精彩.
作者: 朗朗繁星    時(shí)間: 2013-7-9 14:32
學(xué)習(xí)學(xué)習(xí)
作者: 1156615097    時(shí)間: 2013-7-23 23:20
不錯(cuò)的,好假貨,大家一起學(xué)習(xí)下

作者: wutao    時(shí)間: 2013-8-1 22:49
學(xué)習(xí)下

作者: 胖子    時(shí)間: 2013-9-27 16:18
學(xué)習(xí)下


作者: renzhi6    時(shí)間: 2013-10-11 09:23
資料不錯(cuò)
作者: 13620819446    時(shí)間: 2013-10-13 22:54
資料真不錯(cuò).
作者: amgpj    時(shí)間: 2014-3-6 00:54
學(xué)習(xí)一下
作者: ls0899    時(shí)間: 2014-3-9 16:22
學(xué)習(xí)中
作者: zdmjjp    時(shí)間: 2014-5-11 09:02
好東東,牛人,51Hei(51黑)論壇有你更精彩
作者: xiaoyuxinke    時(shí)間: 2014-6-9 19:57
好東東,牛人,51Hei(51黑)論壇有你更精彩
作者: 啦啦啦啦    時(shí)間: 2014-6-12 11:34
1156615097 發(fā)表于 2013-7-23 23:20
不錯(cuò)的,好假貨,大家一起學(xué)習(xí)下

感覺(jué)仿真了下 好像沒(méi)用哎 是不是我的技術(shù)問(wèn)題啊。哎
作者: 平淡人生    時(shí)間: 2014-10-12 22:06
學(xué)習(xí)了,不錯(cuò)
作者: 釣魚(yú)臺(tái)    時(shí)間: 2015-3-27 07:44
學(xué)了點(diǎn)單片機(jī)皮毛,什么都想仿,學(xué)習(xí)下,灰常感謝!
作者: hlywhp    時(shí)間: 2015-4-26 15:30
謝謝共享
作者: hlywhp    時(shí)間: 2015-4-26 15:30
實(shí)用的東西
作者: yangkai3bu    時(shí)間: 2015-5-12 17:25
學(xué)習(xí)學(xué)習(xí)
作者: songbin    時(shí)間: 2015-5-31 13:15
可以下載不

作者: cuidi    時(shí)間: 2015-5-31 15:37
這個(gè)仿真起來(lái)怎么輸入單價(jià) 總價(jià)都是0.0765啊
作者: masteror    時(shí)間: 2016-3-17 22:12
學(xué)習(xí)了,謝謝樓主分享
作者: purple唯愛(ài)紫    時(shí)間: 2016-3-20 18:10
怎么設(shè)置price呢?不怎么行耶

作者: z605191439    時(shí)間: 2016-4-6 21:18
學(xué)習(xí)下
作者: 127100    時(shí)間: 2016-4-9 13:17
謝謝分享
作者: mbyshr123    時(shí)間: 2016-5-7 17:06
謝謝分享
作者: ad9966362    時(shí)間: 2016-5-8 11:24
houhouhou
作者: shuai088    時(shí)間: 2016-5-19 14:04

學(xué)習(xí)下
作者: shuai088    時(shí)間: 2016-5-19 14:10
謝謝分享
作者: zk1234    時(shí)間: 2016-5-25 02:08
謝謝分享
作者: wzslxgdx    時(shí)間: 2016-6-24 12:19
學(xué)習(xí)了,謝謝樓主分享
作者: he825691296    時(shí)間: 2016-6-24 22:19
好帖子!!!!!!!!!!!樓主好人!
作者: 點(diǎn)對(duì)點(diǎn)你今年    時(shí)間: 2016-6-28 17:00
仿真怎么運(yùn)行,程序有沒(méi)有詳細(xì)的解釋。求大神幫忙很急啊
作者: greatfun2006    時(shí)間: 2016-6-29 08:18
不錯(cuò),學(xué)習(xí)啦!!
作者: wumenbabu    時(shí)間: 2016-7-4 20:27
GOOOD,GOOOD
作者: h4098    時(shí)間: 2016-7-27 11:38
支持大神
作者: pppaz    時(shí)間: 2016-7-28 07:54
感謝樓主分享
作者: 1301231123132    時(shí)間: 2016-11-26 14:23
仿真軟件用的啥  為什么我找不到仿真文件啊
作者: Skylake    時(shí)間: 2016-11-26 23:34
感謝分享謝謝樓主
作者: 再掛東南枝    時(shí)間: 2016-12-19 02:50
仿真是怎么用的啊。。
作者: 落幕年華、yao    時(shí)間: 2017-2-11 13:15
厲害00000
作者: 落幕年華、yao    時(shí)間: 2017-2-11 13:16
我沒(méi)黑幣下載
作者: fuzhanpei    時(shí)間: 2017-2-13 14:47
能夠?qū)崿F(xiàn)什么功能?
作者: 274239413    時(shí)間: 2017-2-20 17:06
謝謝分享
作者: 東西南北風(fēng)    時(shí)間: 2017-3-3 17:12
感動(dòng),謝博主
作者: 周鵬5118    時(shí)間: 2017-3-15 15:31
看起來(lái)很不錯(cuò)
作者: 落幕年華、yao    時(shí)間: 2017-3-19 17:13
很好,我要下載
作者: 小51hei56565    時(shí)間: 2017-3-31 15:38
感謝分享
作者: 1598181716    時(shí)間: 2017-4-2 15:35
恩學(xué)習(xí)學(xué)習(xí)
作者: 墨澄景    時(shí)間: 2017-5-8 21:12
總價(jià)沒(méi)有變化是怎么回事
作者: 墨澄景    時(shí)間: 2017-5-8 21:13
cuidi 發(fā)表于 2015-5-31 15:37
**** 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽 ****

你解決了嗎?
作者: wuai0314    時(shí)間: 2017-5-9 11:39
感謝分享
作者: lyl_420819    時(shí)間: 2017-5-17 16:08
用HX711做A/D,豈不精度更高!?
作者: bnahlz    時(shí)間: 2017-5-26 18:14
謝謝分享,
作者: csz8773    時(shí)間: 2017-5-28 12:22
樓主可以的,很強(qiáng)勢(shì)
作者: 竇泥丸    時(shí)間: 2017-11-9 16:58
csz8773 發(fā)表于 2017-5-28 12:22
樓主可以的,很強(qiáng)勢(shì)

你好,請(qǐng)問(wèn)你資料下載了嗎?

作者: 班長(zhǎng)丑到竟然    時(shí)間: 2017-12-17 16:16

好東東,牛人,51Hei(51黑)論壇有你更精彩
作者: 平生顧    時(shí)間: 2017-12-23 22:30
謝謝分享!
作者: 小米粒    時(shí)間: 2017-12-28 10:57
非常有用,謝謝!
作者: Tower    時(shí)間: 2017-12-28 13:15
謝謝分享
作者: yuchen173    時(shí)間: 2018-1-7 23:34
謝謝大佬
作者: sdbzwhh    時(shí)間: 2018-3-29 10:11
好東西,謝謝分享
作者: sabine    時(shí)間: 2018-12-8 10:29
謝謝分享啊




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 亚洲一区二区在线播放 | 久久国产欧美 | a级黄色片 | 国产一区二区精品在线 | 精品久久视频 | 天天操一操 | 欧美日韩一区二区三区 | 午夜两性 | 青青草福利视频 | 日韩国产中文字幕 | 成人扒开伸进免费观看 | 视频一二三区 | 狠狠做深爱婷婷久久综合一区 | 伊人一区| 日韩高清精品免费观看 | 91欧美日韩 | 精品视频一区二区三区四区 | 手机在线看片1024 | 中文字幕日韩视频 | 亚洲激情综合 | 日本福利在线 | 国产精品一区一区三区 | 国产又粗又猛又黄又爽无遮挡 | 日韩在线视频免费 | 国产精品毛片一区二区在线看 | 久久精品久久久 | 伊人影院久久 | 99热精品在线观看 | 精品一二三区 | 国产三级在线免费观看 | 国产美女福利 | av免费网站 | 免费毛片网站 | 午夜xxx| 日本一级大毛片a一 | 三级黄色片免费看 | 成人免费视频一区二区 | 99久久综合 | 天天澡天天狠天天天做 | 国产精品hd | 伊人91|