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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

控制燈的亮滅,可以實現串口通信以及電腦控制單片機

[復制鏈接]
跳轉到指定樓層
樓主
ID:304041 發表于 2018-4-29 08:41 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
此程序思路是,前提知道這三位數為X.XX,而且不能連續發送,寫的不好還請大神指教

單片機源程序如下:
  1. /*********************該程序可實現燈的亮滅**可以實現串口通信以及電腦控制單片機*********************************/
  2. /*該程序寫的比較好*//*通過兩個不同的標志位實現,非常棒*/
  3. //只能發送一次,不能連續發送
  4. #include <STC15f2k60s2.h>

  5. #define u16 unsigned int
  6. #define u8  unsigned char

  7. u16 pwm_value;

  8. unsigned char UART_buff;//串口的接收和發送(只能是單個字符的使用)
  9. unsigned char receive[50];//用于接收所發出來的字符串
  10. unsigned char i;
  11. int xianshi;
  12. double shuju;
  13. bit New_rec = 0, Send_ed = 1, Money = 0; //定義的一些標記位
  14. unsigned char code DSY_CODE[]=
  15. {
  16. 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90
  17. };//這是時鐘所用到的數
  18. /*******用于一毫秒的延時****************/
  19. void delayms(unsigned int xms)
  20. {
  21. unsigned int i,j;
  22. for(i=xms;i>0;i--)
  23. for(j=110;j>0;j--);
  24. }
  25. /*數碼管顯示程序2*/
  26. void display1(int h)
  27. {
  28. P2=0xfe;
  29. P0=DSY_CODE[h/100];
  30. delayms(1);
  31. P2=0xff;
  32. P0=0xff;
  33. P2=0xfd;
  34. P0=DSY_CODE[h%100/10];
  35. delayms(1);
  36. P2=0xff;
  37. P0=0xff;
  38. P2=0xfb;
  39. P0=DSY_CODE[h%100%10];
  40. delayms(1);
  41. P2=0xff;
  42. P0=0xff;
  43. }

  44. //========================================================================
  45. // 函數: UpdatePwm(u8 PCA_id, u16 pwm_value)
  46. // 描述: 更新PWM值.
  47. // 參數: PCA_id: PCA序號. 取值 PCA0,PCA1,PCA2,PCA_Counter
  48. //                 pwm_value: pwm值, 這個值是輸出高電平的時間.
  49. // 返回: none.
  50. // 版本: V1.0, 2012-11-22
  51. //========================================================================
  52. void        UpdatePwm(u16 uart_date)
  53. {
  54.     pwm_value=uart_date/2;
  55.         if(pwm_value == 0)
  56.         {
  57.                 CCAP0H =0xff;       
  58.         }
  59.         else
  60.         {
  61.                 CCAP0H = (u8)(256 - pwm_value);
  62.         }               
  63. }

  64. //----------------------------------------------  
  65. void main (void)  
  66. {  
  67.    AUXR |= 0x40;   //設置1T
  68.    AUXR &= 0xfe;   //設置定時器1為串口1波特率發生器
  69.    PCON &= 0x7f;   //不加倍
  70.    TMOD = 0x20;   //定時器1工作方式2
  71.    TH1 = 0xdc;
  72.    TL1 = 0xdc;
  73.    SM0 = 0;
  74.    SM1 = 1;
  75.    REN = 1;
  76.    TR1 = 1;
  77.    ES = 1;
  78.    EA = 1;   
  79.   
  80.     while(1)  
  81.         {
  82.       while(i>=2)         //串口發送數字的位數如2.00
  83.       {
  84.       shuju=(double)(receive[0])+(double)(receive[1])/10+(double)(receive[2])/100; //把輸入的每一個數轉化為輸入的數
  85.       xianshi=shuju*100;   //乘100為數碼管顯示方便
  86.       display1(xianshi);

  87.          //  PCA0初始化
  88.             AUXR1 &= ~0x30;
  89.             AUXR1 |= 0x10;        //切換IO口, 0x00: P1.2 P1.1 P1.0 P3.7,  0x10: P3.4 P3.5 P3.6 P3.7, 0x20: P2.4 P2.5 P2.6 P2.7
  90.             CCAPM0   = 0x42;        //工作模式 PWM
  91.             PCA_PWM0 = (PCA_PWM0 & ~0xc0) | 0x00;        //PWM寬度, 0x00: 8bit, 0x40: 7bit,  0x80: 6bit
  92.             CMOD  = (CMOD  & ~0xe0) | 0x08;        //選擇時鐘源, 0x00: 12T, 0x02: 2T, 0x04: Timer0溢出, 0x06: ECI, 0x08: 1T, 0x0A: 4T, 0x0C: 6T, 0x0E: 8T
  93.             CR = 1;
  94.             UpdatePwm(xianshi);
  95.       }
  96.       if ((New_rec == 1) && (Send_ed == 1))  
  97.           {  //如果收到新數據及發送完畢  
  98.         New_rec = 0;  
  99.         Send_ed = 0;  
  100.       }
  101.         }  
  102. }  
  103. //----------------------------------------------  
  104. void ser_int (void) interrupt 4   
  105. {  
  106.     if(RI == 1)
  107.     {  //如果收到.  
  108.       RI = 0;      //清除標志.  
  109.       New_rec = 1;//表明收到了信息了
  110.       if((SBUF >= '0') && (SBUF <= '9'))
  111.       {
  112.       receive[i]=SBUF-'0';//將字符串按字節放入到數組當中,起到一定的緩存作用
  113.       i++;
  114.       }
  115.       UART_buff = SBUF;  //接收.只支持字符,不支持字符串  
  116.       SBUF=UART_buff;//這個用于電腦串口的接收,也就是發送
  117.       TI = 0;      //清除標志.  
  118.       Send_ed = 1;                        
  119.     }  
  120.     else  {        //如果送畢.  
  121.       TI = 0;      //清除標志.  
  122. ……………………

  123. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
15電腦串口控制單片機電壓精美版.zip (32.79 KB, 下載次數: 24)


評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:390650 發表于 2018-8-28 14:51 | 只看該作者
資料不錯,先收起來了
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久精品国产久精国产 | 亚洲精品久久久9婷婷中文字幕 | 精品福利在线 | 超级乱淫av片免费播放 | 久久久精品在线 | 欧美日韩国产一区二区三区 | 国产精品99一区二区 | 久久中文字幕视频 | 日韩精品在线观看一区二区 | 蜜臀久久 | 国产激情精品一区二区三区 | 美国一级片在线观看 | 国产视频一区二区 | 免费污视频 | 亚洲成人av在线播放 | 美女视频一区二区 | 一区二区三区日韩 | 色爱综合网| 久草视频观看 | 欧州一区二区三区 | 亚洲最新在线视频 | 国产免费拔擦拔擦8x高清 | 综合国产第二页 | 欧美性大战久久久久久久蜜臀 | 午夜国产一区 | 国产精品一区二区在线观看 | 久久网一区二区三区 | 欧美美女爱爱视频 | 亚洲视频一区 | 色综合久 | av中文在线播放 | 亚洲精品久久久久久宅男 | 一区二区三区四区毛片 | 亚洲欧美综合 | 91精品国产91久久久久久 | 小视频你懂得 | 91高清在线观看 | 一级片在线观看视频 | 亚洲一一在线 | 国产综合久久 | 国产亚洲精品美女久久久久久久久久 |