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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 38299|回復(fù): 71
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)電子秤設(shè)計(jì)(源程序+lcd12864顯示)

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:75005 發(fā)表于 2015-3-22 02:28 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
本帖最后由 daxiao 于 2015-3-22 02:31 編輯












  1.         //按鍵接P2口
  2.        //LCD數(shù)據(jù)口接P0口
  3.        //DOUT=P3^0;
  4.        //PD_SCK=P3^1;
  5.        //RS=P1^1;  VOUT 空接 RST 空接   NC  PSB 接VCC
  6.        //RW=P1^2;
  7.        //E=P1^3;
  8.        //FMQ=P1^0;   蜂鳴器
  9.          #include<reg52.h>
  10. #define uchar unsigned char
  11. #define uint unsigned int

  12. sbit ADDO=P3^0;    //51CPU 準(zhǔn)雙向I/0 輸入使能(DOUT)  / 串行數(shù)據(jù)輸出
  13. sbit ADSK=P3^1;    // 使能AD(PD_SCK)   /  串行時(shí)鐘輸入
  14.     sbit RS=P1^1;     //寄存器選擇引腳,搞電平選擇數(shù)據(jù)寄存器,低電平選擇指令寄存器
  15.     sbit RW=P1^2;    //讀寫操作使能引腳,高電平使能讀操作,低電平使能寫操作
  16.     sbit E=P1^3;     //總使能引腳
  17. sbit FMQ=P1^0;           //蜂鳴器

  18. //----------------------AD轉(zhuǎn)換程序--//
  19. unsigned long ReadCount(void)  //無參數(shù),返回長整形變量
  20. {
  21.   unsigned long Count;      //聲明長整形變量Count
  22.   unsigned char i;       //聲明字符型變量i
  23.   ADSK=0;         //串行輸入拉低
  24.   Count=0;       //變量Count置零
  25.   while(ADDO);      //等待串行輸出拉高
  26.   for(i=0;i<24;i++)      //接收24個(gè)數(shù)據(jù)和發(fā)送24個(gè)脈沖
  27.   {         
  28.    ADSK=1;         //發(fā)送脈沖
  29.    Count=Count<<1;        //變量左移
  30.    ADSK=0;          //拉低
  31.    if(ADDO)Count++;       //讀入數(shù)據(jù)(高>>低)
  32.   }
  33.   ADSK=1;          //發(fā)送第25個(gè)脈沖(選擇A通道、128增益。)
  34.   Count=Count^0x800000;    //按位相異或
  35.   ADSK=0;       //串行拉低
  36.      return Count; //返回
  37. }  
  38. //--------------------延時(shí)子函數(shù)--------//
  39. void delay(unsigned char delayata)
  40. {
  41.   uchar i,j;
  42.   for(i=0;i<delayata;i++)
  43.   {
  44.    for(j=0;j<121;j++)
  45.    {;}
  46.   }
  47. }
  48. //-------------------------------------單鍵掃描子函數(shù)-----//
  49. unsigned char JP()
  50. {
  51. unsigned char x=0x00;
  52.   bit i=0;
  53.   x=P2;   //掃描Y坐標(biāo)
  54.   FMQ=0;    //響起蜂鳴器
  55.   delay(125);  //延時(shí)去抖動(dòng)
  56.   P2=0x0f;
  57.   delay(2);
  58.   x+=P2;    //掃描X坐標(biāo)
  59.   switch(x)
  60.   {
  61.    case 0xee:x=0x30;break;    //按下0
  62.    case 0xed:x=0x31;break;    //按下1
  63.    case 0xeb:x=0x34;break;    //按下4
  64.    case 0xe7:x=0x37;break;    //按下7
  65.    case 0xde:x=0x46;break;       //按下F/.
  66.    case 0xdd:x=0x32;break;    //按下2
  67.       case 0xdb:x=0x35;break;    //按下5
  68.    case 0xd7:x=0x38;break;    //按下8
  69.    case 0xbe:x=0x45;break;    //按下E
  70.    case 0xbd:x=0x33;break;    //按下3
  71.    case 0xbb:x=0x36;break;    //按下6
  72.    case 0xb7:x=0x39;break;    //按下9
  73.    case 0x7e:x=0x44;break;    //按下D
  74.    case 0x7d:x=0x43;break;    //按下C
  75.    case 0x7b:x=0x42;break;    //按下B
  76.    case 0x77:x=0x41;break;    //按下A
  77.    default:x=0xff;break;
  78.    }
  79.   FMQ=1;       //關(guān)閉蜂鳴器
  80.    while(i==0)    //等待按鍵松開
  81.    {
  82.     P2=0xf0;
  83.     delay(150);
  84.     if(P2==0xf0)
  85.     {
  86.      i=1;
  87.     }
  88.     else{i=0;}
  89.    }
  90.   return x;    //返回x(ASCII碼)
  91. }
  92. //------------------12864寫指令子函數(shù)-----//
  93. void write_12864com(unsigned char com)
  94. {
  95. RS=0;
  96. RW=0;
  97. delay(1);
  98. E=1;
  99. P0=com;
  100. delay(2);
  101. E=0;
  102. delay(1);
  103. }
  104. //------------------12864寫數(shù)據(jù)子函數(shù)-----//
  105. void write_12864dat(unsigned char dat)
  106. {
  107. RS=1;
  108. RW=0;
  109. delay(1);
  110. E=1;
  111. P0=dat;
  112. delay(2);
  113. E=0;
  114. delay(1);
  115. }
  116. //------------------------------LCD初始化-----//
  117. void initinal(void)
  118. {
  119.   delay(100);
  120.   write_12864com(0x30);   //8位并行通信
  121.   delay(1);
  122.   write_12864com(0x30);   //8位并行通信
  123.   delay(1);
  124.   write_12864com(0x02);  
  125.   delay(2);
  126.   write_12864com(0x06);  
  127.   delay(2);
  128.   write_12864com(0x0c);  
  129.   delay(2);
  130.   write_12864com(0x01);  
  131.   delay(2);
  132.   write_12864com(0x80);  
  133.   delay(2);
  134. }
  135. //--------------------主函數(shù)-------------//
  136. void main(void)
  137. {
  138.    uchar  LCD[16]={"0123456789ABCDEF"};
  139.    code uchar JM1[]={0xb5,0xda,0xc8,0xfd,0xd7,0xe9,0xb5,0xe7,0xd7,0xd3,0xb3,0xc6};
  140.    code uchar JM2[]={"單價(jià): 00.0元    "};
  141.    code uchar JM3[]={"重量: 00.000KG  "};
  142.    code uchar JM4[]={"總價(jià): 0000.0元  "};
  143.    uchar DJ[3];       //單價(jià)
  144.    uchar ZL[5];       //重量
  145.    uchar QPZL[5];   //去皮時(shí)的重量
  146.    uchar ZJ[5];       //總價(jià)
  147.    unsigned long J1;
  148.    uint J2,J3,J6=0;
  149.    bit J5=1;
  150.    uint J7;
  151.    uchar i;
  152.    uchar JM5[]={5679};
  153.    initinal();  //初始化
  154.   for(i=0;i<3;i++)  //填值
  155.   {
  156.    DJ[i]=0;
  157.   }
  158.   for(i=0;i<5;i++)   //填值
  159.   {
  160.    ZL[i]=0;
  161.   }
  162.   for(i=0;i<5;i++)   //填值
  163.   {
  164.    QPZL[i]=0;
  165.   }
  166.   for(i=0;i<5;i++)   //填值
  167.   {
  168.    ZJ[i]=0;
  169.   }
  170.     write_12864com(0x81);  //定位
  171.   for(i=0;i<12;i++)
  172. {
  173.   write_12864dat(JM1[i]);  //顯示 第三組電子稱
  174. }
  175. write_12864com(0x90);  //定位
  176. for(i=0;JM2[i]!='\0';i++)
  177. {
  178.   write_12864dat(JM2[i]);    //顯示 單價(jià):00.0元
  179. }
  180. write_12864com(0x88);  //定位
  181. for(i=0;JM3[i]!='\0';i++)
  182. {
  183.   write_12864dat(JM3[i]);  //顯示 重量: 00.000KG
  184. }
  185. write_12864com(0x98);    //定位
  186. for(i=0;JM4[i]!='\0';i++)
  187. {
  188.   write_12864dat(JM4[i]);   //顯示 總價(jià): 0000.0元
  189. }
  190. P2=0xf0;
  191. while(1)
  192. {
  193.    while(P2==0xf0)      //但沒有按鍵按下的時(shí)候進(jìn)入,有按鍵按下的時(shí)候跳出來
  194.    {
  195.    J1=ReadCount();    //讀AD值
  196.    J3=((J1-8388608)/150)-11;  //取值
  197.    ZL[0]=(J3/10000)%10;   //重量十位
  198.    if(ZL[0]>3){FMQ=0;}     //超重報(bào)警
  199.    else{FMQ=1;}
  200.    ZL[1]=(J3/1000)%10;       //重量個(gè)位
  201.    ZL[2]=(J3/100)%10;     //計(jì)算位
  202.    ZL[3]=(J3/10)%10;
  203.    ZL[4]=J3%10;
  204.    J7=ZL[4];
  205.    J7+=ZL[3]*10;
  206.    J7+=ZL[2]*100;
  207.    J7+=ZL[1]*1000;
  208.    J7+=ZL[0]*10000;
  209.    J3=QPZL[4];
  210.    J3+=QPZL[3]*10;
  211.    J3+=QPZL[2]*100;
  212.    J3+=QPZL[1]*1000;
  213.    J3+=QPZL[0]*10000;
  214.    J7-=J3;
  215.    ZL[0]=J7/10000;
  216.    J7%=10000;
  217.    ZL[1]=J7/1000;
  218.    J7%=1000;
  219.    ZL[2]=J7/100;
  220.    J7%=100;
  221.    ZL[3]=J7/10;
  222.    J7%=10;
  223.    ZL[4]=J7;
  224.    write_12864com(0x8b); //定位
  225.    write_12864dat(LCD[ZL[0]]);    //送顯示
  226.    write_12864dat(LCD[ZL[1]]);    //送顯示
  227.    write_12864dat(0x2e);    //送顯示
  228.    write_12864dat(LCD[ZL[2]]);    //送顯示
  229.    write_12864dat(LCD[ZL[3]]);    //送顯示
  230.    write_12864dat(LCD[ZL[4]]);    //送顯示
  231.    J7=DJ[2]*ZL[3];
  232.    J7+=DJ[2]*ZL[2]*10;
  233.    J7+=DJ[2]*ZL[1]*100;
  234.    J7+=DJ[2]*ZL[0]*1000;
  235.    J7/=10;
  236.    J7+=DJ[1]*ZL[3];
  237.    J7+=DJ[1]*ZL[2]*10;
  238.    J7+=DJ[1]*ZL[1]*100;
  239.    J7+=DJ[1]*ZL[0]*1000;
  240.    J7/=10;
  241.    J7+=DJ[0]*ZL[3];   
  242.    J7+=DJ[0]*ZL[2]*10;
  243.    J7+=DJ[0]*ZL[1]*100;
  244.    J7+=DJ[0]*ZL[0]*1000;

  245. ZJ[0]=J7/10000;
  246. J7%=10000;
  247. ZJ[1]=J7/1000;
  248. J7%=1000;
  249. ZJ[2]=J7/100;
  250. J7%=100;
  251. ZJ[3]=J7/10;
  252. J7%=10;
  253. ZJ[4]=J7;
  254.   write_12864com(0x9b); //定位
  255.   i=ZJ[0];
  256.   i=LCD[i];
  257.   write_12864dat(i);    //送顯示
  258.    i=ZJ[1];
  259.   i=LCD[i];
  260.   write_12864dat(i);    //送顯示
  261.    i=ZJ[2];
  262.   i=LCD[i];
  263.   write_12864dat(i);    //送顯示
  264.    i=ZJ[3];
  265.   i=LCD[i];
  266.   write_12864dat(i);    //送顯示
  267.   write_12864dat(0x2e);   //顯示點(diǎn)
  268.     i=ZJ[4];
  269.   i=LCD[i];
  270.   write_12864dat(i);    //送顯示
  271.    P2=0xf0;
  272.    delay(1);
  273.    }
  274.    J2=JP();
  275.    if(J6>2){J6=0;}
  276.    if(J2<0x40)
  277.    {
  278.    J2-=0x30;
  279.    DJ[J6]=J2;
  280.    J2=0xff;
  281.    J6++;
  282.    }
  283.    else
  284.    {
  285.     switch(J2)
  286.    {
  287. case 0x41:P2=0xf0;while(P2==0xf0);J2=0xff;break;    //按下A鎖定界面
  288.     case 0x42:J2=0xff;break;         //解除鎖定
  289. case 0x43:J1=ReadCount();          //去皮
  290.            J3=((J1-8388608)/150)-11;
  291.      QPZL[0]=(J3/10000)%10;
  292.      QPZL[1]=(J3/1000)%10;
  293.      QPZL[2]=(J3/100)%10;
  294.      QPZL[3]=(J3/10)%10;
  295.      QPZL[4]=J3%10;
  296.      J2=0xff;
  297.      break;
  298. case 0x44:DJ[0]=0;DJ[1]=0;DJ[2]=0;J6=0;J2=0xff;break;    //單價(jià) 復(fù)位
  299.     case 0x45:QPZL[0]=0;QPZL[1]=0;QPZL[2]=0;QPZL[3]=0;QPZL[4]=0;J2=0xff;break;   //重量復(fù)位
  300.     case 0x46:DJ[0]=0;DJ[1]=0;DJ[2]=0;J6=0;QPZL[0]=0;QPZL[1]=0;QPZL[2]=0;QPZL[3]=0;QPZL[4]=0;J2=0xff;break;    //單價(jià) 重量 復(fù)位
  301. default:break;
  302.    }
  303.    }
  304.    write_12864com(0x93);
  305.    i=DJ[0];
  306.    i=LCD[i];
  307.    write_12864dat(i);
  308.    i=DJ[1];
  309.    i=LCD[i];
  310.    write_12864dat(i);
  311.    write_12864dat(0x2e);
  312.    i=DJ[2];
  313.    i=LCD[i];
  314.    write_12864dat(i);
  315. }
  316. }
復(fù)制代碼


評(píng)分

參與人數(shù) 5黑幣 +26 收起 理由
512713659 + 5 贊一個(gè)!
黑boy + 1 贊一個(gè)!
ssfc + 5 贊一個(gè)!
YJGG + 10 很給力!
madell + 5 贊一個(gè)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏23 分享淘帖 頂9 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:73868 發(fā)表于 2015-3-25 08:58 | 只看該作者
不錯(cuò)啊,謝謝分享
回復(fù)

使用道具 舉報(bào)

板凳
ID:79560 發(fā)表于 2015-5-10 21:58 | 只看該作者
LZ 有沒有電路圖,有點(diǎn)路途就更好了
回復(fù)

使用道具 舉報(bào)

地板
ID:75610 發(fā)表于 2015-5-12 18:59 | 只看該作者
很好的學(xué)習(xí)資料,謝謝分享
回復(fù)

使用道具 舉報(bào)

5#
ID:81478 發(fā)表于 2015-5-29 16:28 | 只看該作者
樓主ad轉(zhuǎn)換程序是不是有點(diǎn)問題啊 剛開始不是0 哦
回復(fù)

使用道具 舉報(bào)

6#
ID:85424 發(fā)表于 2015-7-12 00:53 | 只看該作者
有仿真的圖么???求資源,謝謝你。
回復(fù)

使用道具 舉報(bào)

7#
ID:85424 發(fā)表于 2015-7-12 01:14 | 只看該作者
樓主有沒有仿真的電路圖,
回復(fù)

使用道具 舉報(bào)

8#
ID:86684 發(fā)表于 2015-7-24 09:10 | 只看該作者
很好的參考資料,謝謝分享,如有電路圖更好
回復(fù)

使用道具 舉報(bào)

9#
ID:87991 發(fā)表于 2015-8-9 18:34 | 只看該作者
樓主,放教程啊
回復(fù)

使用道具 舉報(bào)

10#
ID:93227 發(fā)表于 2015-10-29 01:31 | 只看該作者
太好了,一直想弄個(gè)電子稱,謝謝樓主
回復(fù)

使用道具 舉報(bào)

11#
ID:102541 發(fā)表于 2016-1-9 17:29 | 只看該作者
誰有量清杯的程序啊
回復(fù)

使用道具 舉報(bào)

12#
ID:109330 發(fā)表于 2016-3-17 14:23 | 只看該作者
LZ,有沒有圖啊?方便給下嗎?
回復(fù)

使用道具 舉報(bào)

13#
ID:109797 發(fā)表于 2016-3-20 10:56 | 只看該作者
樓主,我在做相關(guān)的畢業(yè)設(shè)計(jì),能放教程出來么
回復(fù)

使用道具 舉報(bào)

14#
ID:109752 發(fā)表于 2016-3-22 20:30 | 只看該作者
有仿真圖嗎?
回復(fù)

使用道具 舉報(bào)

15#
ID:106211 發(fā)表于 2016-3-27 01:12 | 只看該作者
學(xué)習(xí)了,頂起
回復(fù)

使用道具 舉報(bào)

16#
ID:110375 發(fā)表于 2016-4-18 15:05 | 只看該作者
樓主厲害哦!學(xué)習(xí)了!謝謝分享!
回復(fù)

使用道具 舉報(bào)

17#
ID:45225 發(fā)表于 2016-6-12 12:28 | 只看該作者
“case 0x41:P2=0xf0;while(P2==0xf0);J2=0xff;break;    //按下A鎖定界面
    case 0x42:J2=0xff;break;         //解除鎖定”          怎樣鎖定界面?請(qǐng)介紹下原理,謝謝!
回復(fù)

使用道具 舉報(bào)

18#
ID:134965 發(fā)表于 2016-7-25 16:58 | 只看該作者
樓主方便給一下仿真圖嗎
回復(fù)

使用道具 舉報(bào)

19#
ID:135271 發(fā)表于 2016-7-27 21:49 | 只看該作者
剛學(xué)習(xí),用HX711做的
回復(fù)

使用道具 舉報(bào)

20#
ID:135275 發(fā)表于 2016-7-27 22:13 | 只看該作者
lz  有沒有原理圖啊  給一個(gè) 拜謝
回復(fù)

使用道具 舉報(bào)

21#
ID:135271 發(fā)表于 2016-7-27 23:42 | 只看該作者
不是1602顯示的嗎??
回復(fù)

使用道具 舉報(bào)

22#
ID:135275 發(fā)表于 2016-7-28 00:35 | 只看該作者
請(qǐng)問你的A/D模塊是HX711嗎?還是別的
回復(fù)

使用道具 舉報(bào)

23#
ID:135299 發(fā)表于 2016-7-28 07:22 | 只看該作者
很好,值得學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

24#
ID:135166 發(fā)表于 2016-7-28 07:57 | 只看該作者
謝謝樓主大人的分享
回復(fù)

使用道具 舉報(bào)

25#
ID:139833 發(fā)表于 2016-9-19 15:16 | 只看該作者
感謝 感謝 感謝 非常感謝
回復(fù)

使用道具 舉報(bào)

26#
ID:113220 發(fā)表于 2016-10-11 13:01 | 只看該作者

很好的參考資料,謝謝分享,如有電路圖更好
回復(fù)

使用道具 舉報(bào)

27#
ID:142342 發(fā)表于 2016-10-11 17:46 | 只看該作者

很好的學(xué)習(xí)資料,謝謝分享
回復(fù)

使用道具 舉報(bào)

28#
ID:117161 發(fā)表于 2016-10-13 19:48 | 只看該作者
     兄弟有電路圖嗎
回復(fù)

使用道具 舉報(bào)

29#
ID:149863 發(fā)表于 2016-11-24 10:52 | 只看該作者
可以幫助哈我嗎  樓主
回復(fù)

使用道具 舉報(bào)

30#
ID:150514 發(fā)表于 2016-11-28 18:31 | 只看該作者
樓主再好把電路圖也上傳, 大家也學(xué)習(xí)一下。
回復(fù)

使用道具 舉報(bào)

31#
ID:147658 發(fā)表于 2016-11-29 23:44 | 只看該作者
厲害理解啊
回復(fù)

使用道具 舉報(bào)

32#
ID:62391 發(fā)表于 2016-12-7 08:11 | 只看該作者
有原理圖嗎
回復(fù)

使用道具 舉報(bào)

33#
ID:73795 發(fā)表于 2016-12-7 10:16 | 只看該作者
LZ 有電路圖嗎?
回復(fù)

使用道具 舉報(bào)

34#
ID:155015 發(fā)表于 2016-12-15 15:22 | 只看該作者
好棒的設(shè)計(jì),很清晰
回復(fù)

使用道具 舉報(bào)

35#
ID:110866 發(fā)表于 2016-12-20 13:08 | 只看該作者
感謝分享,學(xué)習(xí)了
回復(fù)

使用道具 舉報(bào)

36#
ID:184237 發(fā)表于 2017-4-1 14:54 | 只看該作者
感謝分享
回復(fù)

使用道具 舉報(bào)

37#
ID:108598 發(fā)表于 2017-4-12 17:43 | 只看該作者
有原理圖嗎?我想?yún)⒖家幌隆?/td>
回復(fù)

使用道具 舉報(bào)

38#
ID:146492 發(fā)表于 2017-4-12 22:00 | 只看該作者
值得學(xué)習(xí)一段時(shí)間了,感謝樓主的分享
回復(fù)

使用道具 舉報(bào)

39#
ID:18572 發(fā)表于 2017-4-13 14:13 | 只看該作者
不錯(cuò)啊,謝謝分享
回復(fù)

使用道具 舉報(bào)

40#
ID:18572 發(fā)表于 2017-4-13 20:00 | 只看該作者
謝謝真不錯(cuò)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美成人手机视频 | 国产高清在线观看 | 美女三区| 国产精品视频网 | 日韩一区二区在线视频 | 国产中文视频 | 国产精品视频yy9299一区 | 国产日韩一区 | 久久九九免费 | 久久久久亚洲av毛片大全 | 亚洲福利| 一区二区免费在线视频 | 中文字幕欧美一区 | 国产一区二区三区免费观看视频 | 成人动慢 | 亚洲一区二区三区视频 | 99久久精品免费看国产免费软件 | av中文字幕在线观看 | 99爱国产 | 久久久久久亚洲精品 | 99精品久久久 | 亚洲一区中文 | 日韩精品一区二区三区 | 成人免费视频网站在线观看 | 国产视频一视频二 | 国产精品国产成人国产三级 | 免费色网址 | 91免费看片| 亚洲精品91 | 日韩不卡视频在线 | 99精品视频一区二区三区 | 91精品久久久 | 亚洲av毛片 | 久草综合在线 | 国产精品国产三级国产aⅴ浪潮 | 婷婷丁香激情 | 999国产视频 | 国产精品99久久久精品免费观看 | av天天看 | 成人在线中文字幕 | 亚洲在线久久 |