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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2483|回復: 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 絕世好帖!

查看全部評分

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲国产精品成人 | 一区二区三区成人 | 国产乱码精品一区二区三区中文 | 亚洲三级免费看 | 欧美一区二区三区视频 | 看片国产 | 国产精品毛片一区二区在线看 | 日本三级全黄三级三级三级口周 | 亚洲高清在线 | 男插女下体视频 | 成人av免费| 日韩视频三区 | 三级视频久久 | 日韩午夜网站 | www..99re| 91在线免费观看网站 | www.色婷婷| 在线看av网址 | 一级片网址 | 视频二区国产 | 亚洲欧美日韩精品久久亚洲区 | 欧洲尺码日本国产精品 | 亚洲毛片在线 | 91精品欧美久久久久久久 | 1000部精品久久久久久久久 | 欧美精品一区二区三区在线播放 | 国产精品久久久久999 | com.国产| 一级毛片免费 | 国产自产c区 | 久久综合久久综合久久 | 精品国产1区2区3区 一区二区手机在线 | 毛片毛片毛片毛片 | 成年人免费在线视频 | 欧美电影一区 | 一级黄色裸片 | 华人黄网站大全 | 在线中文字幕av | 日韩成人免费av | 色婷婷精品久久二区二区蜜臂av | 第四色播日韩第一页 |