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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2139|回復: 6
收起左側

單片機新手,想做一個三位半的數字萬用表,想請教仿真時代碼出現的問題如何解決

[復制鏈接]
ID:499243 發表于 2019-5-3 13:57 | 顯示全部樓層 |閱讀模式
100黑幣
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned charuchar code table[]="0123456789.vAmA" ;
uint i,j;
sbit ST=P2^0;
sbit EOC=P2^1;
sbit OE=P2^2;
sbit k1=P1^0;
sbit k2=P1^1;
sbit k3=P1^2;
sbit x1=P2^4;
sbit x2=P2^5;
sbit x3=P2^6;
sbit E=P1^5;
sbit RS=P1^4;
sbit RW=P1^3; bit busy_flag = 0;
RS = 0;
RW = 1;
E = 1;
Delay(5);
busy_flag = (bit)(P3 & 0x80);
E = 0;
return busy_flag;
}
void wcmd(uchar del)
{
while(Busy());
RS = 0;
RW = 0;
E = 0;
Delay(5);
P3 = del;
Delay(5);
E = 1;
Delay(5);
E = 0;
}
void wdata(uchar del)
{
while(Busy());
RS = 1;
RW = 0;
E = 0; Delay(5);
wcmd(0x38);
Delay(5);
wcmd(0x38);
Delay(5);
wcmd(0x38);
wcmd(0x08);
wcmd(0x0c);
wcmd(0x04);
wcmd(0x01);
}
void L1602_char(uchar hang,uchar lie,char sign)
{
uchar a;
if(hang == 1) a = 0x80;
if(hang == 2) a = 0xc0;
a = a + lie - 1;
wcmd(a);
wdata(sign);
}
void main()
{
uint a1,a2,a3,a4;
uchar add;
while(1)
{
ST=0; {
Delay(10);
if(k2==0)
{
if(x1==0)
{
Delay(10);
if(x1==0)
{
a1=(add*20)/1000;
a2=(add*20)%1000/100;
a3=(add*20)%100/10;
a4=(add*20)%10;
L1602_char(2,7,table[10]);
L1602_char(2,6,table[a1]);
L1602_char(2,8,table[a2]);
L1602_char(2,9,table[a3]);
}
}
}
if(x2==0)
{
a1=(add*10)/1000;
a2=(add*10)%1000/100;
a3=(add*10)%100/10;
a4=(add*10)%10;
L1602_char(2,8,table[10]);
L1602_char(2,6,table[a1]);
L1602_char(2,7,table[a2]);
L1602_char(2,9,table[a3]);
}
} L1602_char(2,8,table[a2]);
L1602_char(2,9,table[a3]);
L1602_char(2,10,table[a4]);
}
if(x2==0)
{
a1=add/5/1000;
a2=add/5%1000/100;
a3=add/5%100/10;
a4=add/5%10;
L1602_char(2,7,table[10]);
L1602_char(2,6,table[a1]);
L1602_char(2,8,table[a2]);
L1602_char(2,9,table[a3]);
}
if(x3==0)
{
a1=add/50/1000;
a2=add/50%1000/100;
a3=add/50%100/10;
a4=add/50%10;
L1602_char(2,7,table[10]);
L1602_char(2,6,table[a1]);
L1602_char(2,8,table[a2]);
L1602_char(2,9,table[a3]);
L1602_char(2,10,table[a4]);
}
}
if(k1==0)
{
if(x1==0)
{
a1=add*2/5/1000;
a2=add*2/5%1000/100; a1=(add*4)/1000;
a2=(add*4)%1000/100;
a3=(add*4)%100/10;
a4=(add*4)%10;
L1602_char(2,7,table[10]);
L1602_char(2,6,table[a1]);
L1602_char(2,8,table[a2]);
L1602_char(2,9,table[a3]);
}
if(x3==0)
{
a1=(add*80)/1000;
a2=(add*80)%1000/100;
a3=(add*80)%100/10;
a4=(add*80)%10;
L1602_char(2,9,table[10]);
L1602_char(2,6,table[a1]);
L1602_char(2,7,table[a2]);
L1602_char(2,8,table[a3]);
L1602_char(2,10,table[a4]);
}
}
}
}
a3=(add*2/5)%100/10;
a4=(add*2/5)%10;
L1602_char(2,8,table[10]);
L1602_char(2,6,table[a1]);
L1602_char(2,7,table[a2]);
L1602_char(2,9,table[a3]);
}
if(x2==0)
{
if(k3==0)
{
if(x1==0)
{
a1=(add*2)/1000;
a2=(add*2)%1000/100;
a3=(add*2)%100/10;
a4=(add*2)%10;
L1602_char(2,7,table[10]);
L1602_char(2,6,table[a1]);
OE=0;
P0=0xff;
ST=1;
_nop_(); _nop_(); _nop_();
ST=0;
_nop_(); _nop_(); _nop_(); _nop_();
while(EOC==0);
OE=1;add=P0;
_nop_();
OE=0;
Delay(30);
L1602_init();
if(k2==0)
Delay(5);
P3 = del;
Delay(5);
E = 1;
Delay(5);
E = 0;
}
void L1602_init(void)
{
wcmd(0x38);
void delay()
{
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
void Delay(uint i)
{
uint x,j;
for(j=0;j<i;j++)
for(x=0;x<=148;x++);
}
bit Busy(void)
{

DMM.zip

34.7 KB, 下載次數: 12

回復

使用道具 舉報

ID:499243 發表于 2019-5-4 13:07 | 顯示全部樓層
有大神能幫幫忙嗎
回復

使用道具 舉報

ID:213173 發表于 2019-5-4 15:00 | 顯示全部樓層
chenchen1 發表于 2019-5-4 13:07
有大神能幫幫忙嗎

樓主這是從哪里找來的,幾乎就是一堆亂碼。要想整理好比重新寫一個還麻煩。
回復

使用道具 舉報

ID:155507 發表于 2019-5-4 15:30 | 顯示全部樓層
給你改了, 但沒編譯也沒測試 不知道會有什么問題 你試試吧


  1. #include<reg52.h>
  2. #include<intrins.h>

  3. #define uint unsigned int
  4. #define uchar unsigned char
  5. uchar code table[]="0123456789.vAmA" ;
  6. uint i, j;
  7. sbit ST=P2^0;  //ADC0809 start conversion
  8. sbit EOC=P2^1; // End of conversion
  9. sbit OE=P2^2;  // Enable output data
  10. sbit k1=P1^0;
  11. sbit k2=P1^1;
  12. sbit k3=P1^2;
  13. sbit x1=P2^4;
  14. sbit x2=P2^5;
  15. sbit x3=P2^6;
  16. sbit E=P1^5;
  17. sbit RS=P1^4;
  18. sbit RW=P1^3;

  19. void delay5u()
  20. {
  21.   _nop_();
  22.   _nop_();
  23.   _nop_();
  24.   _nop_();
  25.   _nop_();
  26. }
  27. void Delay(uint i)
  28. {
  29.   uint x,j;
  30.   for(j=0;j<i;j++)
  31.   for(x=0;x<=148;x++);
  32. }

  33. bit Busy(void)
  34. {
  35.   bit busy_flag = 0;
  36.   
  37.   RS = 0;
  38.   RW = 1;
  39.   E = 1;
  40.   Delay(5);
  41.   busy_flag = (bit)(P3 & 0x80);
  42.   E = 0;
  43.   return busy_flag;
  44. }
  45. void wcmd(uchar del)
  46. {
  47.   while(Busy());
  48.   RS = 0;
  49.   RW = 0;
  50.   E = 0;
  51.   Delay(5);
  52.   P3 = del;
  53.   Delay(5);
  54.   E = 1;
  55.   Delay(5);
  56.   E = 0;
  57. }
  58. void wdata(uchar del)
  59. {
  60.   while(Busy());
  61.   RS = 1;
  62.   RW = 0;
  63.   E = 0;
  64.   Delay(5);
  65.   P3 = del;
  66.   Delay(5);
  67.   E = 1;
  68.   Delay(5);
  69.   E = 0;
  70. }


  71. void L1602_char(uchar hang, uchar lie, char sign)
  72. {
  73.   uchar a;
  74.   if(hang == 1) a = 0x80;
  75.   if(hang == 2) a = 0xc0;
  76.   a = a + lie - 1;
  77.   wcmd(a);
  78.   wdata(sign);
  79. }

  80. void L1602_init(void)
  81. {
  82.   wcmd(0x38);
  83.   Delay(5);
  84.   wcmd(0x38);
  85.   Delay(5);
  86.   wcmd(0x38);
  87.   Delay(5);
  88.   wcmd(0x38);
  89.   wcmd(0x08);
  90.   wcmd(0x0c);
  91.   wcmd(0x04);
  92.   wcmd(0x01);
  93. }


  94. void main()
  95. {
  96.   uint a1,a2,a3,a4;
  97.   uchar add;

  98.   Delay(30);
  99.   L1602_init();

  100.   while(1)
  101.   {
  102.     ST=0;  
  103.     OE=0;  // read ADC0809
  104.     P0=0xff;
  105.     ST=1;
  106.     _nop_(); _nop_(); _nop_();
  107.     ST=0;
  108.     _nop_(); _nop_(); _nop_(); _nop_();
  109.     while(EOC==0);
  110.     OE=1; add=P0;
  111.     _nop_();
  112.     OE=0;
  113.    
  114.     Delay(10);
  115.     if(x1==0)
  116.     {
  117.       Delay(10);
  118.       if(x1==0)
  119.       {
  120.         a1=(add*20)/1000;
  121.         a2=(add*20)%1000/100;
  122.         a3=(add*20)%100/10;
  123.         a4=(add*20)%10;
  124.         L1602_char(2,7,table[10]);
  125.         L1602_char(2,6,table[a1]);
  126.         L1602_char(2,8,table[a2]);
  127.         L1602_char(2,9,table[a3]);
  128.       }
  129.     }

  130.     if(x2==0)
  131.     {
  132.       a1=(add*10)/1000;
  133.       a2=(add*10)%1000/100;
  134.       a3=(add*10)%100/10;
  135.       a4=(add*10)%10;
  136.       L1602_char(2,8,table[10]);
  137.       L1602_char(2,6,table[a1]);
  138.       L1602_char(2,7,table[a2]);
  139.       L1602_char(2,9,table[a3]);
  140.     }
  141.     //}
  142.     L1602_char(2,8,table[a2]);
  143.     L1602_char(2,9,table[a3]);
  144.     L1602_char(2,10,table[a4]);

  145.     if(x2==0)
  146.     {
  147.       a1=add/5/1000;
  148.       a2=add/5%1000/100;
  149.       a3=add/5%100/10;
  150.       a4=add/5%10;
  151.       L1602_char(2,7,table[10]);
  152.       L1602_char(2,6,table[a1]);
  153.       L1602_char(2,8,table[a2]);
  154.       L1602_char(2,9,table[a3]);
  155.     }
  156.     if(x3==0)
  157.     {
  158.       a1=add/50/1000;
  159.       a2=add/50%1000/100;
  160.       a3=add/50%100/10;
  161.       a4=add/50%10;
  162.       L1602_char(2,7,table[10]);
  163.       L1602_char(2,6,table[a1]);
  164.       L1602_char(2,8,table[a2]);
  165.       L1602_char(2,9,table[a3]);
  166.       L1602_char(2,10,table[a4]);
  167.     }
  168.     //}
  169.     if(k1==0)
  170.     {
  171.       if(x1==0)
  172.       {
  173.         a1=add*2/5/1000;
  174.         a2=add*2/5%1000/100; a1=(add*4)/1000;
  175.         a2=(add*4)%1000/100;
  176.         a3=(add*4)%100/10;
  177.         a4=(add*4)%10;
  178.         L1602_char(2,7,table[10]);
  179.         L1602_char(2,6,table[a1]);
  180.         L1602_char(2,8,table[a2]);
  181.         L1602_char(2,9,table[a3]);
  182.       }
  183.       if(x3==0)
  184.       {
  185.         a1=(add*80)/1000;
  186.         a2=(add*80)%1000/100;
  187.         a3=(add*80)%100/10;
  188.         a4=(add*80)%10;
  189.         L1602_char(2,9,table[10]);
  190.         L1602_char(2,6,table[a1]);
  191.         L1602_char(2,7,table[a2]);
  192.         L1602_char(2,8,table[a3]);
  193.         L1602_char(2,10,table[a4]);
  194.       }
  195.     }  
  196.     //}
  197.     if(x2==0)
  198.     {
  199.       if(k3==0)
  200.       {
  201.         if(x1==0)
  202.         {
  203.           a1=(add*2)/1000;
  204.           a2=(add*2)%1000/100;
  205.           a3=(add*2)%100/10;
  206.           a4=(add*2)%10;
  207.           L1602_char(2,7,table[10]);
  208.           L1602_char(2,6,table[a1]);

  209.         }
  210.       }
  211.     }
  212.     if(k2==0)
  213.     {  
  214.       if(k2==0)
  215.       {

  216.         a3=(add*2/5)%100/10;
  217.         a4=(add*2/5)%10;
  218.         L1602_char(2,8,table[10]);
  219.         L1602_char(2,6,table[a1]);
  220.         L1602_char(2,7,table[a2]);
  221.         L1602_char(2,9,table[a3]);
  222.       }

  223.     }
  224.    
  225.   }
  226. }


復制代碼
回復

使用道具 舉報

ID:499243 發表于 2019-5-6 20:03 | 顯示全部樓層
angmall 發表于 2019-5-4 15:30
給你改了, 但沒編譯也沒測試 不知道會有什么問題 你試試吧

謝謝您抽出時間幫忙。我不懂這個,但是作業要求沒辦法,才來求助的。您給的代碼編譯沒有問題,但是仿真的時候沒有數值顯示,不知道是我操作有問題還是仿真圖沒畫對。
回復

使用道具 舉報

ID:499243 發表于 2019-5-6 21:59 | 顯示全部樓層
wulin 發表于 2019-5-4 15:00
樓主這是從哪里找來的,幾乎就是一堆亂碼。要想整理好比重新寫一個還麻煩。

你好,我是從其他網站找的。因為我也不是很懂,不知道問題在哪里
回復

使用道具 舉報

ID:478236 發表于 2019-5-7 15:10 | 顯示全部樓層
這個已經不是新手的范圍了,大佬
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91视视频在线观看入口直接观看 | 日韩成人在线播放 | 精品久久精品 | www.黄色在线观看 | 国产超碰人人爽人人做人人爱 | 久久久久久99 | 日本中文字幕视频 | 日韩精品视频在线免费观看 | 亚洲免费一区 | 欧美一区永久视频免费观看 | 97视频在线免费 | 亚洲精品免费看 | 国产精品久久久久久久久久久久午夜片 | 欧美成人免费电影 | 日本不卡视频 | 国产精品久久久久9999鸭 | 日本成人在线免费视频 | 亚洲一区二区在线 | 成人不卡在线 | 在线看h| 国产一区不卡 | 午夜激情网 | 91国产视频在线观看 | 我要看一级片 | 538在线精品 | 北条麻妃国产九九九精品小说 | 久久精品国产亚洲 | 国产精品久久久久一区二区三区 | 伊色综合久久之综合久久 | 精品久久久久香蕉网 | 精品一区二区三区不卡 | 国产精品久久 | 激情国产 | 国产网站在线免费观看 | 免费看黄色片 | 久久久这里都是精品 | 毛片网在线观看 | 成人高清视频在线观看 | 国产精品亚洲成在人线 | 精品国产乱码久久久久久闺蜜 | 亚洲精品一区二区三区蜜桃久 |