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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2395|回復: 0
打印 上一主題 下一主題
收起左側

單片機串口發射 接收顯示二極管,四個按鍵控制四種顯示狀態

[復制鏈接]
跳轉到指定樓層
樓主
按鍵1按下從上到下點亮
按鍵2按下從兩頭往中間點亮
按鍵3按下從中間往兩邊點亮
按鍵4按下從下面往上點亮

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


單片機源程序如下:
  1. #include<reg51.h>
  2. #define ILEN 8                                         //接收緩沖區大小
  3. unsigned char display_data[ILEN][8];                //顯示方式數據緩沖存儲區
  4. unsigned char istart=0;                                //接收緩沖區起始索引
  5. unsigned char iend=0;                                //接收緩沖區結束索引
  6. unsigned int dat_size[ILEN]=0;                        //顯示方式數據長度存儲區
  7. /******************************************************
  8. 函數功能:延時N微秒
  9. ******************************************************/
  10. void delay_nus(unsigned int i)
  11. {
  12.   i=i/10;
  13.   while(--i);
  14. }
  15. /******************************************************
  16. 函數功能:延時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;      //定時器T1工作方式2
  28.   SCON=0x50;      //串口工作方式1
  29.   PCON=0x00;      //SMOD=0,波特率不倍增
  30.   TH1=0xfd;
  31.   TL1=0xfd;          //根據規定給定時器T1賦初值,即波特率為9600b/s
  32.   TR1=1;          //啟動定時器T1
  33.   ES=1;              //串口中斷允許
  34.   EA=1;              //開啟總中斷
  35.   while(1)
  36.   {
  37.     while(iend == istart)       //等待數據緩沖區出現新數據
  38.       ;
  39.     for(j=0;j < dat_size[istart & (ILEN-1)];j++)  //根據顯示數據長度取出數據
  40.     {
  41.       P1=display_data[istart & (ILEN-1)][j];   //送顯示數據
  42.       delay_nms(500);
  43.     }
  44.     istart++;          //為下次從緩沖區取出一組顯示數據做好準備
  45.   }
  46. }
  47. /******************************************************
  48. 函數功能:串口中斷接收服務函數
  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;             //從緩沖寄存器中取出數據
  57.      RI=0;               //軟件清零
  58.      if(istart+ILEN !=iend )   //判斷緩沖區是否以存滿
  59.      {
  60.        if(c!=0xff)              //判斷接收的數據是否是結束標志數據
  61.        {
  62.          display_data[iend & (ILEN-1)][i++]=c;    //緩沖區接收數據
  63.        }
  64.        else                      //一組顯示數據接收完成
  65.        {
  66.          dat_size[iend & (ILEN-1)]=i;     //同時存儲該組數據的長度
  67.          iend++;            //為接收下組數據做好準備
  68.          i=0;
  69.        }
  70.      }  
  71.    }
  72. }
復制代碼

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


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品久久久一区二区三区 | 天天射网站 | 一区二区三区在线 | 日韩欧美亚洲 | 亚洲综合婷婷 | 国产精品久久久久久久久 | 成人av电影天堂 | 欧美一区二区在线 | 99久久国产综合精品麻豆 | 成人免费观看视频 | 99久久精品免费看国产高清 | 成年人在线观看视频 | 99re在线视频观看 | 羞羞视频网页 | 91精品国产欧美一区二区 | 91精品国产综合久久久久久 | 欧美 日韩 国产 成人 | 中文字幕精品一区 | 婷婷久久一区 | 成人亚洲片 | 免费黄色片在线观看 | av片免费| 欧美在线看片 | 在线日韩精品视频 | 国产视频一区二区 | 精品亚洲视频在线 | 中文字幕视频在线 | 免费看国产精品视频 | 一本色道精品久久一区二区三区 | 一区二区三区不卡视频 | 国产综合久久久久久鬼色 | 亚洲成人一级片 | 国产精品久久久久久久久久三级 | 亚洲一区二区三区免费在线观看 | 黄视频网站在线 | 久久最新 | 久久免费福利 | 91精品国产一区二区在线观看 | 亚洲天堂影院 | 欧美一级全黄 | 中文字幕视频在线看5 |