欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

串口程序。電腦發送字母下位機接收顯示流水燈和數碼管顯示

[復制鏈接]
跳轉到指定樓層
樓主
ID:79544 發表于 2015-12-12 18:48 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
電腦發送大寫A下位機顯示流水燈。電腦發送大寫字母B下位機數碼管顯示0-F.
  1. /*******************************************************
  2.         功能  :串口程序。電腦發送字母,下位機(實驗板)
  3.                         顯示流水燈和數碼管顯示0-F
  4.         單片機:STC12C5A60S2
  5.         晶振  :11.0592M(必須用這個頻率的晶振要不會出錯)
  6.         作者  :蘇義江
  7.         時間  ; 20015-12-12
  8.         注釋  :數碼管用P2口通過鎖存器573驅動位和段。
  9.                         位的鎖存端用P0^6控制
  10.                         段的鎖存端用P0^7控制
  11. *******************************************************/
  12. #include<reg52.h>
  13. #define uchar unsigned char
  14. #define uint unsigned int
  15. sbit wei=P0^6;//位使能
  16. sbit duan=P0^7;//段使能
  17. //共陽數碼管段碼
  18. uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,
  19.                                 0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,
  20.                                 0xa1,0x86,0x8e,0x89};
  21. //位碼
  22. uchar code tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

  23. uchar a,i;
  24. void init_uart()//串口初始化
  25. {
  26.         TMOD=0X20;//T1工作在方式2及自動重裝
  27.         TH1=0XFD;//波特率9600
  28.         TL1=0XFD;
  29.         TR1=1;
  30. //        SCON=0X50;        //SCON=0X50也可以寫成SM0=0;SM1=1;
  31.         SM0=0;
  32.         SM1=1;
  33.         REN=1;
  34.         ES=1;  //啟動串口中斷
  35.         EA=1;
  36. }
  37. void delay(uint z)
  38. {
  39.         uint x,y;
  40.         for(x=z;x>0;x--)
  41.         for(y=700;y>0;y--);
  42. }
  43. void liushui()//流水燈
  44. {       
  45.         for(i=0;i<8;i++)
  46.         {
  47.                 P0=tab[i];
  48.                 delay(200);
  49.         }       
  50. }
  51. void diplay()//數碼管顯示0-F
  52. {
  53.         wei=1;  //打開573位碼鎖存端
  54.         P2=0;
  55.         wei=0;        //鎖存數據
  56.         for(i=0;i<16;i++)
  57.         {
  58.                 duan=1;  //打開573段碼鎖存端
  59.                 P2=table[i];
  60.                 duan=0;  //鎖存數據
  61.                 delay(1000);
  62.                 P2=0XFF;  //消隱
  63.         }
  64. }
  65. void main()
  66. {
  67.         init_uart();
  68.         while(1);
  69.        
  70. }
  71. void uate() interrupt 4
  72. {       
  73.         ES=0; //先關閉串口中斷防止出錯
  74.         RI=0;  //發送標志位清零
  75.         a=SBUF;       
  76.         switch(a)
  77.         {
  78.                 case 'A': liushui();break;//電腦發送A實驗板顯示流水燈
  79.                 case 'a': P0=0;  break;//電腦發送a實驗板顯示LED燈全亮
  80.                 case 'B': diplay();break;//電腦發送B實驗板數碼管顯示0-F
  81.         }
  82.         ES=1;//啟動串口中斷,繼續發送
  83. }
復制代碼


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

使用道具 舉報

8#
ID:398208 發表于 2019-4-23 19:12 | 只看該作者
程序有問題把
回復

使用道具 舉報

7#
ID:398208 發表于 2019-4-23 18:51 | 只看該作者
我試試了不可以
回復

使用道具 舉報

6#
ID:79544 發表于 2016-5-6 09:26 | 只看該作者
串口在單片機中還是很重要的。比如藍牙小車的控制就是利用串口發送和接收的。
回復

使用道具 舉報

5#
ID:114742 發表于 2016-5-5 20:27 | 只看該作者
for(i=0;i<16;i++)         {                 duan=1;  //打開573段碼鎖存端                 duan=0;  //鎖存數據                                  P0=table[i];                                 wei=1;  //打開573位碼鎖存端                         wei=0;                 delay(100);                 P0=0XFF;  //消隱         }不然會出現位碼不正確的現象
回復

使用道具 舉報

地板
ID:79544 發表于 2015-12-19 16:31 | 只看該作者
a15616 發表于 2015-12-19 15:02
RI=0;//接收標志位清零;ES=1;//啟動串口中斷,繼續接收。

謝謝你的指正。TI是發送,RI是接收。
回復

使用道具 舉報

無效樓層,該帖已經被刪除
沙發
ID:92873 發表于 2015-12-19 15:02 | 只看該作者
RI=0;//接收標志位清零;ES=1;//啟動串口中斷,繼續接收。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表