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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1726|回復: 10
收起左側

STC實驗板顯示函數誰能幫忙解釋一下?

[復制鏈接]
ID:72649 發表于 2023-11-30 05:34 來自觸屏版 | 顯示全部樓層 |閱讀模式
STC實驗板這個顯示函數看不懂
/********************** 顯示掃描函數 ************************/
void DisplayScan(void)
{   
    P7 = ~T_COM[7-display_index];
    P6 = ~t_display[LED8[display_index]];
    if(++display_index >= 8)    display_index = 0;  //8位結束回0
}
這段程序誰能幫忙解釋一下?如果位選不在同一個字節的IO口,比如分別用了P1口和P3口,程序要怎樣修改?
回復

使用道具 舉報

ID:277550 發表于 2023-11-30 10:06 | 顯示全部樓層
重新定義位變量,賦值時寫單獨的語句,
sbit w1 = P1^1;
sbit w2 = P1^2;
sbit w3 = P1^6;
sbit w4 = P3^7;



賦值時,分別
w1=0;
w2=1;
w3=0;
w4=0;

回復

使用道具 舉報

ID:548322 發表于 2023-11-30 11:09 | 顯示全部樓層
直接在頭文件把位選 映射到P1 P3端口
回復

使用道具 舉報

ID:72649 發表于 2023-11-30 12:47 來自觸屏版 | 顯示全部樓層
devcang 發表于 2023-11-30 10:06
重新定義位變量,賦值時寫單獨的語句,
sbit w1 = P1^1;
sbit w2 = P1^2;

這樣賦值,在上面的函數里面怎么寫?
回復

使用道具 舉報

ID:72649 發表于 2023-11-30 12:50 來自觸屏版 | 顯示全部樓層
小盼666 發表于 2023-11-30 11:09
直接在頭文件把位選 映射到P1 P3端口

如果位選三位,斷選有七段,索引又該怎么寫?
回復

使用道具 舉報

ID:72649 發表于 2023-11-30 13:44 來自觸屏版 | 顯示全部樓層
devcang 發表于 2023-11-30 10:06
重新定義位變量,賦值時寫單獨的語句,
sbit w1 = P1^1;
sbit w2 = P1^2;

哪這樣的映射在函數里面又該怎么寫
回復

使用道具 舉報

ID:1085085 發表于 2023-11-30 13:48 | 顯示全部樓層
P7做COM口控制,分時輸出。P6口做SEG口,顯示數字碼表。實驗箱采樣共陽極數碼管,所以使用共陰極碼表時要進行反相處理。

若樓主還有疑問可以去STCAI官方咨詢
回復

使用道具 舉報

ID:213173 發表于 2023-11-30 17:47 | 顯示全部樓層
/*
t_display[]     //共陰段碼
T_COM[]         //共陰位碼
LED8[8]         //顯示緩沖
display_index;  //顯示位索引
*/
/********************** 顯示掃描函數 ************************/
void DisplayScan(void)
{//使用的是共陽數碼管,段碼、位碼都要取反
        P7 = ~T_COM[7-display_index];//位掃描順序7、6、5、4、3、2、1、0
        P6 = ~t_display[LED8[display_index]];//段碼顯示內容示范12-30-58
        if(++display_index >= 8)    display_index = 0;  //顯示位索引8位結束回0
}

/********************** Timer0 1ms中斷函數 ************************/
void timer0 (void) interrupt 1
{
    DisplayScan();  //1ms掃描顯示一位
    B_1ms = 1;      //1ms標志
}

任意端口組合驅動數碼管.rar (136.94 KB, 下載次數: 5)


回復

使用道具 舉報

ID:72649 發表于 2023-12-4 15:36 來自觸屏版 | 顯示全部樓層
STC新未來 發表于 2023-11-30 13:48
P7做COM口控制,分時輸出。P6口做SEG口,顯示數字碼表。實驗箱采樣共陽極數碼管,所以使用共陰極碼表時要進 ...

STC官網,只知道截圖手冊,根本不能回答實質性問題。
回復

使用道具 舉報

ID:72649 發表于 2023-12-6 09:43 | 顯示全部樓層
wulin 發表于 2023-11-30 17:47
/*
t_display[]     //共陰段碼
T_COM[]         //共陰位碼

#include <STC8H.H>

sbit LED0=P2^0;
sbit LED1=P2^1;
sbit LED2=P2^2;
sbit LED3=P2^3;
sbit LED4=P2^4;
sbit LED5=P2^5;
sbit LED6=P2^6;
sbit LED7=P2^7;

sbit wei0=P1^4;
sbit wei1=P1^5;
sbit wei2=P3^3;

unsigned char data table[18]={

        0x03,0x9F,0x25,0x0D,0x99,0x49,0x41,0x1F,
  0x01,0x09,0x11,0xC1,0x63,0x85,0x61,0x71,
        0x00,0x02};           //0000  0000

LED_buf[]={8,8,8};       
unsigned int wnd,Temp1=22,Temp2,Temp3;       
       
void LED_dula(unsigned char dat);
void LED_wela(unsigned char dat);
void Delay_ms(unsigned int t);       
void GPIO_CSH();
void LED_xshi();       
void LED_fuwu();
       
void LED_dula(unsigned char dat)
{
        LED0=dat   &0x01;
        LED1=dat>>1&0x01;
        LED2=dat>>2&0x01;
        LED3=dat>>3&0x01;
        LED4=dat>>4&0x01;
        LED5=dat>>5&0x01;
        LED6=dat>>6&0x01;
        LED7=dat>>7&0x01;
}

void LED_wela(unsigned char dat)
{
        wei0=dat   &0x01;
        wei1=dat>>1&0x01;
        wei2=dat>>2&0x01;
}

void Delay_ms(unsigned int t)
{
        unsigned int i,j;
        for(i=t;i>0;i--)
                for(j=120;j>0;j--);
}

void GPIO_CSH()
{
          P0M0 = 0x00; P0M1 = 0x00;
    P1M0 = 0x00; P1M1 = 0xc0;
    P2M0 = 0x00; P2M1 = 0x00;
    P3M0 = 0x00; P3M1 = 0x00;
    P4M0 = 0x00; P4M1 = 0x00;
    P5M0 = 0x00; P5M1 = 0x00;
    P6M0 = 0x00; P6M1 = 0x00;
    P7M0 = 0x00; P7M1 = 0x00;
}

void LED_xshi()
{
          unsigned int i;
        switch (i)
  {
          case0:
                LED_wela(LED_buf[0]);//送位碼       
          LED_dula(0);               //送段碼       
          Delay_ms(1);       
                LED_wela(0x00);                        //位消隱       
                i++;
          break;
               
          case1:
                LED_wela(LED_buf[1]);//送位碼
          LED_dula(1);         //送段碼          
          Delay_ms(1);       
                LED_wela(0x00);                        //位消隱       
                i++;               
          break;
               
          case2:
                LED_wela(LED_buf[2]);//送位碼
          LED_dula(2);               //送段碼       
          Delay_ms(1);       
                LED_wela(0x00);                        //位消隱       
                i=0;
          break;               
               
          default:
          break;
  }

}

void LED_fuwu()
{
unsigned int i;
        switch (wnd)
  {
          case0:
                LED_buf[0]=18;
                LED_buf[1]=Temp1/10;
                LED_buf[2]=Temp1%10;
                for(i=0;i<5000;i++)
    {
                        LED_xshi();
    }
          break;
               
          case1:
                LED_buf[0]=18;
                LED_buf[1]=Temp2/10;
                LED_buf[2]=Temp2%10;
                for(i=0;i<5000;i++)       
    {
                        LED_xshi();
    }               
          break;       

          case2:
                LED_buf[0]=18;
                LED_buf[1]=Temp3/10;
                LED_buf[2]=Temp3%10;
                for(i=0;i<5000;i++)       
    {
                        LED_xshi();
    }               
          break;       
               
          default:
                  break;
  }

}

void main()
{
        unsigned int i;
        GPIO_CSH();
        for(i=0;i<5000;i++)       
    {
                        LED_xshi();
    }       
        while (1)
        {
   LED_fuwu();
        }
}

這個為什么不能顯示?
回復

使用道具 舉報

ID:161164 發表于 2023-12-7 09:45 | 顯示全部樓層
hjx5548 發表于 2023-11-30 12:50
如果位選三位,斷選有七段,索引又該怎么寫?

假設:
P11是位1
P32是位2
P17是位3
  1. sbit P11 = P1^1;
  2. sbit P32 = P3^2;
  3. sbit P17 = P1^7;
  4. void DigiOut(uchar dat)
  5. {
  6.         if(dat & 0x01)
  7.         {
  8.                 P11 = 1;
  9.         }
  10.         else
  11.         {
  12.                 P11 = 0;
  13.         }
  14.         if(dat & 0x02)
  15.         {
  16.                 P32 = 1;
  17.         }
  18.         else
  19.         {
  20.                 P32 = 0;
  21.         }
  22.         if(dat & 0x04)
  23.         {
  24.                 P17 = 1;
  25.         }
  26.         else
  27.         {
  28.                 P17 = 0;
  29.         }
  30. }
  31. void DisplayScan(void)
  32. {   
  33.     DigiOut(~T_COM[7-display_index]);
  34.     P6 = ~t_display[LED8[display_index]];
  35.     if(++display_index >= 3)    display_index = 0;  //8位結束回0
  36. }
復制代碼
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91大神新作在线观看 | 亚洲一区二区网站 | 伊人久久精品一区二区三区 | 一级欧美| 久草.com| 黄视频在线网站 | 天天狠狠 | 成人免费网站视频 | 久草新在线 | 久久精品中文字幕 | 免费精品一区 | 天天干天天爱天天爽 | 久久国产精品视频 | 一级黄色影片在线观看 | 久久久亚洲| 国产精品国产a | 99精品欧美一区二区蜜桃免费 | 一区二区视频在线观看 | 精品国产欧美一区二区 | 日韩网站在线观看 | 日韩精品在线播放 | 日韩久久久久久 | 中国人pornoxxx麻豆 | 午夜网址 | 国产一区中文字幕 | 亚洲国产精品人人爽夜夜爽 | 国产精品久久久久影院色老大 | 国产成人精品免高潮在线观看 | 国产精品福利在线 | 国产精品综合 | 亚洲精品黑人 | 午夜亚洲| 老牛嫩草一区二区三区av | 日韩av一区二区在线观看 | 成人片免费看 | 毛片在线视频 | 91网在线播放 | 欧美日韩精品中文字幕 | 精品国产欧美一区二区三区不卡 | 国产一区二区三区 | 亚洲精品乱码久久久久久按摩 |