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

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

QQ登錄

只需一步,快速開始

搜索
查看: 3862|回復(fù): 11
收起左側(cè)

如何把單片機(jī)P1端口的值,以二進(jìn)制的方式顯示在數(shù)碼管上?

[復(fù)制鏈接]
回帖獎(jiǎng)勵(lì) 1 黑幣 回復(fù)本帖可獲得 1 黑幣獎(jiǎng)勵(lì)! 每人限 1 次(中獎(jiǎng)概率 10%)
ID:611208 發(fā)表于 2020-4-7 14:21 | 顯示全部樓層 |閱讀模式
單片機(jī)p1端口是簡(jiǎn)單的led閃爍,我想把P1口的值(狀態(tài)),以二進(jìn)制的方式 動(dòng)態(tài)掃描的方式顯示在8位數(shù)碼管上 。
冥思苦想沒寫出來,太菜了,有個(gè)例子也行,我照樣子看看能不能改出來,越是寫不出來,越是想知道。雖然沒有太大意義,我就想知道怎么能顯示出來。
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit du=P2^6;//段選

sbit we =P2^7;//位選
uchar code leddata[]={

                0x3F,  //"0"
                0x06,  //"1"
                         };


void delay(uint z)//延時(shí)函數(shù)
{
      uint x,y;
      for(x=z;x>0;x--)
        for(y=114;y>0;y--);

}
void display(數(shù)碼管部分不會(huì)寫了)//顯示函數(shù)
{
         we=1;
         P1=0xfe;
         we=0;
        P1=0xff;


          du=1;          P0=leddata[];
          du=0;
        delay(5);


}

void main()
{
     P1=0xe7;11100111
     delay(500);
     P1=1;
    delay(500);

   p1=0xaa;
    delay(500);
   p1=1;
    delay(500);

}



回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2020-4-9 15:10 | 顯示全部樓層
最后一搏 發(fā)表于 2020-4-9 09:34
謝謝回復(fù),但是我現(xiàn)在的水平 看不明白

按樓主的現(xiàn)在的理解能力寫的示例
無標(biāo)題.jpg

  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit du=P2^6;//段選
  5. sbit we =P2^7;//位選
  6. uchar code leddata[]={
  7.                 0x3f,  //"0"
  8.                 0x06,  //"1"
  9.                 };


  10. void delay(uint z)//延時(shí)函數(shù)
  11. {
  12.       uint x,y;
  13.       for(x=z;x>0;x--)
  14.         for(y=114;y>0;y--);

  15. }
  16. void display()//顯示函數(shù)
  17. {
  18.         P0=0x00;//送段碼消隱碼,這很重要,否則數(shù)碼管會(huì)有殘影
  19.         du=1;                //鎖存
  20.         du=0;
  21.         P0=0xfe;//送位碼
  22.         we=1;                //鎖存
  23.         we=0;
  24.         P0=leddata[P1>>7&0x01];//送段碼,P1的最高位右移7位代入數(shù)組
  25.         du=1;                //鎖存
  26.         du=0;
  27.         delay(1);//延時(shí)
  28.         //以下各位顯示以此類推
  29.         P0=0x00;
  30.         du=1;
  31.         du=0;
  32.         P0=0xfd;
  33.         we=1;
  34.         we=0;
  35.         P0=leddata[P1>>6&0x01];//送段碼,P1的次高位右移7位代入數(shù)組
  36.         du=1;
  37.         du=0;
  38.         delay(1);

  39.         P0=0x00;
  40.         du=1;
  41.         du=0;
  42.         P0=0xfb;
  43.         we=1;
  44.         we=0;
  45.         P0=leddata[P1>>5&0x01];
  46.         du=1;
  47.         du=0;
  48.         delay(1);

  49.         P0=0x00;
  50.         du=1;
  51.         du=0;
  52.         P0=0xf7;
  53.         we=1;
  54.         we=0;
  55.         P0=leddata[P1>>4&0x01];
  56.         du=1;
  57.         du=0;
  58.         delay(1);

  59.         P0=0x00;
  60.         du=1;
  61.         du=0;
  62.         P0=0xef;
  63.         we=1;
  64.         we=0;
  65.         P0=leddata[P1>>3&0x01];
  66.         du=1;
  67.         du=0;
  68.         delay(1);

  69.         P0=0x00;
  70.         du=1;
  71.         du=0;
  72.         P0=0xdf;
  73.         we=1;
  74.         we=0;
  75.         P0=leddata[P1>>2&0x01];
  76.         du=1;
  77.         du=0;
  78.         delay(1);

  79.         P0=0x00;
  80.         du=1;
  81.         du=0;
  82.         P0=0xbf;
  83.         we=1;
  84.         we=0;
  85.         P0=leddata[P1>>1&0x01];
  86.         du=1;
  87.         du=0;
  88.         delay(1);

  89.         P0=0x00;
  90.         du=1;
  91.         du=0;
  92.         P0=0x7f;
  93.         we=1;
  94.         we=0;
  95.         P0=leddata[P1&0x01];
  96.         du=1;
  97.         du=0;
  98.         delay(1);
  99. }

  100. void main()
  101. {
  102.         P1=0xe7;//11100111
  103.         while(1)
  104.         {
  105.                 display();
  106.         }
  107. }
復(fù)制代碼



回復(fù)

使用道具 舉報(bào)

ID:388929 發(fā)表于 2020-4-7 15:33 | 顯示全部樓層
可以用最笨的方法,用移位一位一位的把8個(gè)位與出來,再一位一位的放到8個(gè)數(shù)碼管上,例如P1與A0,就可以將最高位與出來,顯示在數(shù)碼管上,顯示只選8位數(shù)碼管的最高位,其他滅掉,延時(shí),P1左移1位,重復(fù)上一個(gè)動(dòng)作,應(yīng)該就成了
回復(fù)

使用道具 舉報(bào)

ID:70069 發(fā)表于 2020-4-7 18:18 | 顯示全部樓層
#include<reg52.h>
#include<intrins.h>
unsigned char code discode2[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};        //共陰
unsigned char code discode3[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};         //共陽
unsigned char code wei[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
#define uchar unsigned char
uchar key=0;
uchar i=0,a;
void delay5ms(uchar k)
{
        uchar i,j;
        for(i=k;i>0;i--)
                for(j=248;j>0;j--);
}
main()
{
     while(1)
   {   key=0x87;
  for(i=0;i<8;i++)
       {
        a=key&0X01;
       key=_crol_(key,1) ;
                   P0=discode3[a];
                P2=wei[i-1];
                delay5ms(600000000);
        //        P2=0x00;       
                P0=0xff;
                }
        }
}
回復(fù)

使用道具 舉報(bào)

ID:70069 發(fā)表于 2020-4-7 18:34 | 顯示全部樓層
#include<reg52.h>
#include<intrins.h>
unsigned char code discode2[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};        //共陰
unsigned char code discode3[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};         //共陽
unsigned char code wei[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
unsigned char code wei2[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
#define uchar unsigned char
uchar key=0;
uchar i=0,a;
void delay5ms(uchar k)
{
        uchar i,j;
        for(i=k;i>0;i--)
                for(j=248;j>0;j--);
}
main()
{
     while(1)
   {   key=0x88;
  for(i=0;i<8;i++)
       {
        a=key&0x01;
      key=_cror_(key,1) ;
         //  key>>=1;
                   P0=discode3[a];
                P2=wei2[i];
                delay5ms(600000000);
        //        P2=0x00;       
                P0=0xff;
                }
        }
}
回復(fù)

使用道具 舉報(bào)

ID:611208 發(fā)表于 2020-4-9 09:34 | 顯示全部樓層
benclee 發(fā)表于 2020-4-7 18:34
#include
#include
unsigned char code discode2[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6 ...

謝謝回復(fù),但是我現(xiàn)在的水平 看不明白
回復(fù)

使用道具 舉報(bào)

ID:611208 發(fā)表于 2020-4-10 09:12 來自手機(jī) | 顯示全部樓層
wulin 發(fā)表于 2020-4-9 15:10
按樓主的現(xiàn)在的理解能力寫的示例

非常感謝這位朋友專門寫了這個(gè)程序,這個(gè)我基本能看懂思路了,我就是想不到怎么能把p1值提取出來,看了這個(gè)程序受益匪淺,非常的感謝,謝謝回復(fù)帖子的朋友們,51hei有你們會(huì)更精彩
回復(fù)

使用道具 舉報(bào)

ID:611208 發(fā)表于 2020-4-10 09:13 來自手機(jī) | 顯示全部樓層
wulin 發(fā)表于 2020-4-9 15:10
按樓主的現(xiàn)在的理解能力寫的示例

順便問一句,你圖片顯示數(shù)碼管那軟件叫什么,我沒有,謝謝
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2020-4-10 10:33 | 顯示全部樓層
最后一搏 發(fā)表于 2020-4-10 09:13
順便問一句,你圖片顯示數(shù)碼管那軟件叫什么,我沒有,謝謝

Proteus 7 仿真軟件
回復(fù)

使用道具 舉報(bào)

ID:723403 發(fā)表于 2020-4-10 11:31 | 顯示全部樓層
Proteus 7 大學(xué)里用過,挺好用的!
回復(fù)

使用道具 舉報(bào)

ID:611208 發(fā)表于 2020-4-10 21:16 | 顯示全部樓層

非常感謝,又新增長(zhǎng)了知識(shí)
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2020-4-14 11:19 | 顯示全部樓層
按你目前的理解能力應(yīng)該能看懂,中斷周期選擇2.5ms的目的是為了使動(dòng)態(tài)數(shù)碼管顯示既不會(huì)閃爍也保證足夠的亮度。 6位百分秒表 仿真.zip (105.39 KB, 下載次數(shù): 4)

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 色综合久久天天综合网 | 国产精品日韩欧美一区二区 | 成人午夜免费视频 | 日韩精品一区二区三区在线观看 | 欧美精品一二三 | 亚洲另类春色偷拍在线观看 | 日韩成人精品在线观看 | 亚洲精品一区二区在线观看 | 国产成人99久久亚洲综合精品 | 欧美一级片在线播放 | 亚洲成人一区 | 97日日碰人人模人人澡分享吧 | 日日天天| 久久久久成人精品免费播放动漫 | 国产日韩欧美一区二区 | 天天澡天天操 | 91.xxx.高清在线 | 国产不卡视频 | 亚洲精品久久久一区二区三区 | 久久久免费精品 | 欧美一区二区三区久久精品视 | 欧美高清视频在线观看 | 99热这里有精品 | 国产在线精品一区二区 | 中文字幕一区二区三区在线乱码 | 欧美成人精品一区二区男人看 | 少妇一级淫片免费播放 | 羞羞色视频 | 精品综合久久 | 欧美久久久久久 | 亚洲免费人成在线视频观看 | av网站在线播放 | 超碰最新在线 | 国产999精品久久久 午夜天堂精品久久久久 | 日本午夜精品一区二区三区 | 精品久久久久久 | 中文字字幕一区二区三区四区五区 | 国产乱码精品一区二区三区av | 中日韩av | 国产a视频 | 国产一二区视频 |