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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2552|回復: 0
收起左側

16年山東電賽電子稱程序

[復制鏈接]
ID:225587 發表于 2017-8-7 21:07 | 顯示全部樓層 |閱讀模式
這是16年山東電賽電子稱的程序,各方面功能都已經齊全,希望能幫助到大家

所有資料51hei提供下載:
電賽電子稱.zip (2.43 KB, 下載次數: 43)

單片機源程序如下:
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int

  4. sbit ADDO=P3^0;    //51CPU 準雙向I/0 輸入使能(DOUT)  / 串行數據輸出
  5. sbit ADSK=P3^1;    // 使能AD(PD_SCK)   /  串行時鐘輸入
  6.     sbit RS=P1^1;     //寄存器選擇引腳,搞電平選擇數據寄存器,低電平選擇指令寄存器
  7.     sbit RW=P1^2;    //讀寫操作使能引腳,高電平使能讀操作,低電平使能寫操作
  8.     sbit E=P1^3;     //總使能引腳
  9. sbit FMQ=P1^0;           //蜂鳴器

  10. //----------------------AD轉換程序--//
  11. unsigned long ReadCount(void)  //無參數,返回長整形變量
  12. {
  13.   unsigned long Count;      //聲明長整形變量Count
  14.   unsigned char i;       //聲明字符型變量i
  15.   ADSK=0;         //串行輸入拉低
  16.   Count=0;       //變量Count置零
  17.   while(ADDO);      //等待串行輸出拉高
  18.   for(i=0;i<24;i++)      //接收24個數據和發送24個脈沖
  19.   {         
  20.    ADSK=1;         //發送脈沖
  21.    Count=Count<<1;        //變量左移
  22.    ADSK=0;          //拉低
  23.    if(ADDO)Count++;       //讀入數據(高>>低)
  24.   }
  25.   ADSK=1;          //發送第25個脈沖(選擇A通道、128增益。)
  26.   Count=Count^0x800000;    //按位相異或
  27.   ADSK=0;       //串行拉低
  28.      return Count; //返回
  29. }  
  30. //--------------------延時子函數--------//
  31. void delay(unsigned char delayata)
  32. {
  33.   uchar i,j;
  34.   for(i=0;i<delayata;i++)
  35.   {
  36.    for(j=0;j<121;j++)
  37.    {;}
  38.   }
  39. }
  40. //-------------------------------------單鍵掃描子函數-----//
  41. unsigned char JP()
  42. {
  43. unsigned char x=0x00;
  44.   bit i=0;
  45.   x=P2;   //掃描Y坐標
  46.   FMQ=0;    //響起蜂鳴器
  47.   delay(125);  //延時去抖動
  48.   P2=0x0f;
  49.   delay(2);
  50.   x+=P2;    //掃描X坐標
  51.   switch(x)
  52.   {
  53.    case 0xee:x=0x31;break;    //按下1
  54.    case 0xed:x=0x34;break;    //按下4
  55.    case 0xeb:x=0x37;break;    //按下7
  56.    case 0xe7:x=0x46;break;    //按下F         8888
  57.    case 0xde:x=0x32;break;       //按下2/.
  58.    case 0xdd:x=0x35;break;    //按下5
  59.       case 0xdb:x=0x38;break;    //按下8
  60.    case 0xd7:x=0x30;break;    //按下0         
  61.    case 0xbe:x=0x33;break;    //按下3
  62.    case 0xbd:x=0x36;break;    //按下6
  63.    case 0xbb:x=0x39;break;    //按下9
  64.    case 0xb7:x=0x45;break;    //按下E         88888
  65.    case 0x7e:x=0x44;break;    //按下D
  66.    case 0x7d:x=0x43;break;    //按下C
  67.    case 0x7b:x=0x42;break;    //按下B
  68.    case 0x77:x=0x41;break;    //按下A
  69.    default:x=0xff;break;
  70.    }
  71.   FMQ=1;       //關閉蜂鳴器
  72.    while(i==0)    //等待按鍵松開
  73.    {
  74.     P2=0xf0;
  75.     delay(150);
  76.     if(P2==0xf0)
  77.     {
  78.      i=1;
  79.     }
  80.     else{i=0;}
  81.    }
  82.   return x;    //返回x(ASCII碼)
  83. }
  84. //------------------12864寫指令子函數-----//
  85. void write_12864com(unsigned char com)
  86. {
  87. RS=0;
  88. RW=0;
  89. delay(1);
  90. E=1;
  91. P0=com;
  92. delay(2);
  93. E=0;
  94. delay(1);
  95. }
  96. //------------------12864寫數據子函數-----//
  97. void write_12864dat(unsigned char dat)
  98. {
  99. RS=1;
  100. RW=0;
  101. delay(1);
  102. E=1;
  103. P0=dat;
  104. delay(2);
  105. E=0;
  106. delay(1);
  107. }
  108. //------------------------------LCD初始化-----//
  109. void initinal(void)
  110. {
  111.   delay(100);
  112.   write_12864com(0x30);   //8位并行通信
  113.   delay(1);
  114.   write_12864com(0x30);   //8位并行通信
  115.   delay(1);
  116.   write_12864com(0x02);  
  117.   delay(2);
  118.   write_12864com(0x06);  
  119.   delay(2);
  120.   write_12864com(0x0c);  
  121.   delay(2);
  122.   write_12864com(0x01);  
  123.   delay(2);
  124.   write_12864com(0x80);  
  125.   delay(2);
  126. }
  127. //--------------------主函數-------------//
  128. void main(void)
  129. {
  130.    uchar  LCD[16]={"0123456789ABCDEF"};
  131.    code uchar JM1[]={"地表最強戰隊"};
  132.    code uchar JM2[]={"單價: 0.0 元    "};
  133.    code uchar JM3[]={"重量: 0000.0克  "};
  134.    code uchar JM4[]={"總價: 0000.0元  "};
  135.    uchar DJ[2];       //單價
  136.    uchar ZL[5];       //重量
  137.    uchar QPZL[5];   //去皮時的重量
  138.    uchar ZJ[5];       //總價
  139.    unsigned long J1;
  140.    uint J2,J3,J6=0;
  141.    bit J5=1;
  142.    uint J7;
  143.    uchar i;
  144.    uchar JM5[]={5679};
  145.    initinal();  //初始化
  146.   for(i=0;i<3;i++)  //填值
  147.   {
  148.    DJ[i]=0;
  149.   }
  150.   for(i=0;i<5;i++)   //填值
  151.   {
  152.    ZL[i]=0;
  153.   }
  154.   for(i=0;i<5;i++)   //填值
  155.   {
  156.    QPZL[i]=0;
  157.   }
  158.   for(i=0;i<5;i++)   //填值
  159.   {
  160.    ZJ[i]=0;
  161.   }
  162.     write_12864com(0x81);  //定位
  163.   for(i=0;i<12;i++)
  164. {
  165.   write_12864dat(JM1[i]);  //顯示 第三組電子稱
  166. }
  167. write_12864com(0x90);  //定位
  168. for(i=0;i<14;i++)
  169. {
  170.   write_12864dat(JM2[i]);    //顯示 單價:00.0元
  171. }
  172. write_12864com(0x88);  //定位
  173. for(i=0;JM3[i]!='\0';i++)
  174. {
  175.   write_12864dat(JM3[i]);  //顯示 重量: 00.000KG
  176. }
  177. write_12864com(0x98);    //定位
  178. for(i=0;JM4[i]!='\0';i++)
  179. {
  180.   write_12864dat(JM4[i]);   //顯示 總價: 0000.0元
  181. }
  182. P2=0xf0;
  183. while(1)
  184. {
  185.    while(P2==0xf0)      //但沒有按鍵按下的時候進入,有按鍵按下的時候跳出來
  186.    {
  187.    J1=ReadCount();
  188.      //讀AD值
  189.    
  190.    J3=(unsigned int)((float)(J1/43.10+0.05)/1.0288);  //取值

  191.    
  192.      //重量十位,一般為零
  193.    ZL[0]=(J3/10000)%10;       //重量個位 一                                         
  194.    ZL[1]=(J3/1000)%10;     //計算位  百科為
  195.    ZL[2]=(J3/100)%10;                           //市科委
  196.    ZL[3]=(J3/10)%10;                                                //各位
  197.    ZL[4]=J3%10;                                        //小數點后以為

  198.    J7=ZL[4];
  199.    J7+=ZL[3]*10;
  200.    J7+=ZL[2]*100;
  201.    J7+=ZL[1]*1000;
  202.    J7+=ZL[0]*10000;
  203.    
  204.    J3=QPZL[4];
  205.    J3+=QPZL[3]*10;
  206.    J3+=QPZL[2]*100;
  207.    J3+=QPZL[1]*1000;
  208.    J3+=QPZL[0]*10000;
  209.    
  210.    J7-=J3;
  211.    
  212.    ZL[0]=J7/10000;
  213.    J7%=10000;
  214.    ZL[1]=J7/1000;
  215.    J7%=1000;
  216.    ZL[2]=J7/100;
  217.    J7%=100;
  218.    ZL[3]=J7/10;
  219.    J7%=10;
  220.    ZL[4]=J7;
  221.    write_12864com(0x8b); //定位
  222.    
  223.    write_12864dat(LCD[ZL[0]]);    //送顯示
  224.    write_12864dat(LCD[ZL[1]]);    //送顯示
  225.    write_12864dat(LCD[ZL[2]]);    //送顯示
  226.    write_12864dat(LCD[ZL[3]]);    //送顯示
  227.    write_12864dat(0x2e);    //送顯示
  228.    write_12864dat(LCD[ZL[4]]);    //送顯示
  229.    

  230.    J7=DJ[1]*ZL[4];
  231.    J7+=DJ[1]*ZL[3]*10;
  232.    J7+=DJ[1]*ZL[2]*100;
  233.    J7+=DJ[1]*ZL[1]*1000;
  234.    J7+=DJ[1]*ZL[0]*10000;

  235.   

  236.    J7+=DJ[0]*ZL[4]*10;
  237.    J7+=DJ[0]*ZL[3]*100;   
  238.    J7+=DJ[0]*ZL[2]*1000;
  239.    J7+=DJ[0]*ZL[1]*10000;
  240.    J7+=DJ[0]*ZL[0]*100000;

  241. ZJ[0]=J7/10000;
  242. J7%=10000;
  243. ZJ[1]=J7/1000;
  244. J7%=1000;
  245. ZJ[2]=J7/100;
  246. J7%=100;
  247. ZJ[3]=J7/10;
  248. J7%=10;
  249. ZJ[4]=J7;

  250.   write_12864com(0x9b); //定位
  251.   i=ZJ[0];
  252.   i=LCD[i];
  253.   write_12864dat(i);    //送顯示
  254.    i=ZJ[1];
  255.   i=LCD[i];
  256.   write_12864dat(i);    //送顯示
  257.   
  258.    i=ZJ[2];
  259.   i=LCD[i];
  260.   write_12864dat(i);    //送顯示
  261.    write_12864dat(0x2e);   //顯示點
  262.    i=ZJ[3];
  263.   i=LCD[i];
  264.   write_12864dat(i);    //送顯示

  265.     i=ZJ[4];
  266.   i=LCD[i];
  267.   write_12864dat(i);    //送顯示
  268.    P2=0xf0;
  269.    delay(1);
  270.    }
  271.    J2=JP();
  272.    if(J6>1){J6=0;}
  273.    if(J2<0x40)
  274.    {
  275.    J2-=0x30;
  276.    DJ[J6]=J2;
  277.    J2=0xff;
  278.    J6++;
  279.    }
  280.    else
  281.    {
  282. ……………………

  283. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼



評分

參與人數 1黑幣 +50 收起 理由
admin + 50 絕世好帖!

查看全部評分

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 天天搞天天操 | 久久国产高清 | 九九热免费观看 | 久久丁香 | 色综合天天综合网国产成人网 | 欧美最猛黑人xxxx黑人 | 久久精品一区二区三区四区 | 国内精品视频 | 亚洲91精品 | 日韩综合在线视频 | 欧美久久不卡 | 亚洲精品国产成人 | 国产欧美日韩在线一区 | 久久一区二区视频 | 日韩亚洲视频 | 国产一区在线免费 | 国内精品视频在线观看 | 91久久久久久久久 | 亚洲国产精品视频一区 | 日韩中文字幕一区 | av中文字幕在线观看 | 国产精品夜夜夜一区二区三区尤 | 欧美一区二区在线看 | av中文字幕在线 | 99热在线播放 | 国产www在线 | 日韩精品一区二区三区 | 日韩在线不卡视频 | 日韩一区在线观看视频 | 狠狠操狠狠操 | 成人a在线 | 成人午夜精品 | 天天干天天插天天 | 久久午夜视频 | 韩日在线 | 精品国产精品一区二区夜夜嗨 | 色婷婷一区二区三区四区 | 亚洲精品久久久久久久久久久 | 91超碰caoporn97人人 | 成人午夜黄色 | 亚洲国产精品久久久久 |