亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

標(biāo)題: 單片機(jī)串口發(fā)射 接收顯示二極管,四個(gè)按鍵控制四種顯示狀態(tài) [打印本頁(yè)]

作者: 電子發(fā)燒人    時(shí)間: 2020-6-15 22:33
標(biāo)題: 單片機(jī)串口發(fā)射 接收顯示二極管,四個(gè)按鍵控制四種顯示狀態(tài)
按鍵1按下從上到下點(diǎn)亮
按鍵2按下從兩頭往中間點(diǎn)亮
按鍵3按下從中間往兩邊點(diǎn)亮
按鍵4按下從下面往上點(diǎn)亮

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機(jī)源程序如下:
  1. #include<reg51.h>
  2. #define ILEN 8                                         //接收緩沖區(qū)大小
  3. unsigned char display_data[ILEN][8];                //顯示方式數(shù)據(jù)緩沖存儲(chǔ)區(qū)
  4. unsigned char istart=0;                                //接收緩沖區(qū)起始索引
  5. unsigned char iend=0;                                //接收緩沖區(qū)結(jié)束索引
  6. unsigned int dat_size[ILEN]=0;                        //顯示方式數(shù)據(jù)長(zhǎng)度存儲(chǔ)區(qū)
  7. /******************************************************
  8. 函數(shù)功能:延時(shí)N微秒
  9. ******************************************************/
  10. void delay_nus(unsigned int i)
  11. {
  12.   i=i/10;
  13.   while(--i);
  14. }
  15. /******************************************************
  16. 函數(shù)功能:延時(shí)N毫秒
  17. ******************************************************/
  18. void delay_nms(unsigned int n)
  19. {
  20.   n=n+1;
  21.   while(--n)
  22.     delay_nus(900);
  23. }
  24. void main()
  25. {
  26.   unsigned char j;
  27.   TMOD=0x20;      //定時(shí)器T1工作方式2
  28.   SCON=0x50;      //串口工作方式1
  29.   PCON=0x00;      //SMOD=0,波特率不倍增
  30.   TH1=0xfd;
  31.   TL1=0xfd;          //根據(jù)規(guī)定給定時(shí)器T1賦初值,即波特率為9600b/s
  32.   TR1=1;          //啟動(dòng)定時(shí)器T1
  33.   ES=1;              //串口中斷允許
  34.   EA=1;              //開啟總中斷
  35.   while(1)
  36.   {
  37.     while(iend == istart)       //等待數(shù)據(jù)緩沖區(qū)出現(xiàn)新數(shù)據(jù)
  38.       ;
  39.     for(j=0;j < dat_size[istart & (ILEN-1)];j++)  //根據(jù)顯示數(shù)據(jù)長(zhǎng)度取出數(shù)據(jù)
  40.     {
  41.       P1=display_data[istart & (ILEN-1)][j];   //送顯示數(shù)據(jù)
  42.       delay_nms(500);
  43.     }
  44.     istart++;          //為下次從緩沖區(qū)取出一組顯示數(shù)據(jù)做好準(zhǔn)備
  45.   }
  46. }
  47. /******************************************************
  48. 函數(shù)功能:串口中斷接收服務(wù)函數(shù)
  49. ******************************************************/
  50. void com_isr() interrupt 4 using 1
  51. {
  52.    unsigned char c;
  53.    static unsigned char i=0;
  54.    if(RI==1)           //是否接收完成
  55.    {
  56.      c=SBUF;             //從緩沖寄存器中取出數(shù)據(jù)
  57.      RI=0;               //軟件清零
  58.      if(istart+ILEN !=iend )   //判斷緩沖區(qū)是否以存滿
  59.      {
  60.        if(c!=0xff)              //判斷接收的數(shù)據(jù)是否是結(jié)束標(biāo)志數(shù)據(jù)
  61.        {
  62.          display_data[iend & (ILEN-1)][i++]=c;    //緩沖區(qū)接收數(shù)據(jù)
  63.        }
  64.        else                      //一組顯示數(shù)據(jù)接收完成
  65.        {
  66.          dat_size[iend & (ILEN-1)]=i;     //同時(shí)存儲(chǔ)該組數(shù)據(jù)的長(zhǎng)度
  67.          iend++;            //為接收下組數(shù)據(jù)做好準(zhǔn)備
  68.          i=0;
  69.        }
  70.      }  
  71.    }
  72. }
復(fù)制代碼

所有資料51hei提供下載:
串口發(fā)射 接收四種方式點(diǎn)亮8個(gè)二極管.rar (78.96 KB, 下載次數(shù): 15)







歡迎光臨 (http://www.denmoz.com/bbs/) Powered by Discuz! X3.1