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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2942|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

求教STC12C2052AD單片機(jī)芯片程序的問題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:214223 發(fā)表于 2019-7-23 12:40 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
描述一下想要實現(xiàn)的功能:按下K1鍵,串口發(fā)送字符串,通過另一片芯片接收并顯示在1602上。
問題:按K1鍵不會發(fā)送,反而按復(fù)位鍵才會發(fā)送。1602也不會實時顯示,只有在接收時按復(fù)位鍵才會顯示,我覺得是串口設(shè)置的問題,但是我看了看51的配置,我覺得沒有毛病呀,是這塊芯片不一樣嗎?所以來問問,程序如下:
  1. #include "F:\C51\C51\INC\STC\STC12C2052AD.h"

  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. //#define jz   11059200                 /*使用11.0592M晶體*/         
  5. //#define bt   9600                     /*波特率定義為9600*/

  6. sbit K1=P3^7;
  7. sbit rs=P3^3;
  8. sbit rw=P3^4;
  9. sbit en=P3^5;
  10.                                                                                  
  11. uchar Redata[64];
  12. uchar i=0;
  13. uchar Temp;

  14. /***************延時***************/
  15. void delay(uint n)                              
  16. {
  17.      uint x,y;
  18.      for(x=n;x>0;x--)
  19.              for(y=110;y>0;y--);
  20. }

  21. /***************寫命令***************/
  22. void lcd_wcom(uchar com)                  
  23. {
  24.      rs=0;
  25.      rw=0;
  26.      P1=com;
  27.      delay(5);
  28.      en=1;
  29.      en=0;
  30. }

  31. /***************寫數(shù)據(jù)***************/
  32. void lcd_wdat(uchar dat)               
  33. {
  34.      rs=1;
  35.      rw=0;
  36.      P1=dat;
  37.      delay(5);
  38.      en=1;
  39.      en=0;
  40. }

  41. /***************LCD初始化***************/
  42. void lcd_init()                     
  43. {
  44.          lcd_wcom(0x38);            
  45.          lcd_wcom(0x0c);           
  46.          lcd_wcom(0x06);            
  47.          lcd_wcom(0x01);            
  48. }


  49. /***************設(shè)置顯示位置**************************/
  50. void lcd_wz( uchar x, uchar y )
  51. {
  52. uchar address;
  53. if (y == 1)
  54.      address = 0x80 + x;
  55. else
  56.       address =0xc0+ x;
  57.    lcd_wcom(address);
  58. }


  59. /***************顯示字符串函數(shù)***************/
  60. void lcd_distr(uchar x,uchar y,uchar *pData)
  61. {
  62.        lcd_wz( x, y );
  63.        while (*pData != '\0')  
  64.        {
  65.          lcd_wdat(*pData);  
  66.                  pData++;
  67.        }
  68. }


  69. /***************串口初始化***************/
  70. void uart_init(void)                              
  71. {
  72.          
  73.     TMOD = 0x20;  /*step 2: 根據(jù)串口通信方式 確定是否設(shè)置波特率*/   
  74.         SCON = 0x40;
  75.         PCON = 0x00;   
  76.     TH1  = 0xfd;      
  77.     TL1  = 0xfd;      
  78.          
  79.     TR1  = 1;     /*step 3 :啟動*/      
  80.   
  81.    
  82.         EA = 1;       /*step 4: 是否啟用中斷函數(shù)*/      
  83.     ES = 1;     

  84. }


  85. /***************發(fā)送字節(jié)***************/
  86. void send(uchar Sedate)                  //發(fā)送一個字節(jié)的數(shù)據(jù),即為待發(fā)送數(shù)據(jù)。
  87. {
  88. SBUF=Sedate; //將數(shù)據(jù)寫入到串口緩沖
  89. while(!TI);
  90. TI = 0; //等待發(fā)送完畢
  91. }


  92. /***************發(fā)送字符串***************/
  93. void sendzfc(uchar *pdate)
  94. {
  95. while((*pdate)!='\0') //發(fā)送字符串,直到遇到0才結(jié)束
  96. {
  97.   send(*pdate); //發(fā)送一個字符
  98.   pdate++;  //移動到下一個字符
  99. }
  100. }

  101. /***************接收字節(jié)***************/
  102. uchar receive(void)
  103. {
  104. uchar redate;
  105. while(!RI);
  106. RI = 0;
  107. redate=SBUF;
  108. return redate;
  109. }


  110. /***************接收字符串***************/
  111. uchar recezfc(void)
  112. {
  113. uchar *qdate;
  114. while((*qdate)!='\0') //發(fā)送字符串,直到遇到0才結(jié)束
  115. {
  116.   receive(); //發(fā)送一個字符
  117.   qdate++;  //移動到下一個字符
  118. }
  119. return *qdate;
  120. }


  121. /***************主函數(shù)***************/
  122. void main()
  123. {

  124.           uart_init();
  125.         
  126.     while(1)
  127.         {
  128.         
  129.         lcd_init();

  130. if(K1==0){
  131.          delay(200);
  132.                   if(K1==0)
  133.                 {
  134.                 sendzfc("OK")  ;
  135.                 }
  136.                 }


  137. //Redata[i]=recezfc() ;


  138. if(Redata[0]==0x4F && Redata[1]==0x4B)
  139.    {
  140.         lcd_distr(0,1,"    ESD Test   ");
  141.         
  142.         lcd_distr(6,2,"OK");

  143.          delay(200);
  144.    }

  145.         }                                                                                                                  
  146.    
  147. }


  148. /***************中斷函數(shù)***************/
  149. void uart_rx() interrupt 4
  150. {
  151. if(RI) //判斷是接收中斷產(chǎn)生
  152. {
  153. Temp = SBUF;  
  154. Redata[i] = Temp;
  155. i++;
  156. RI=0;
  157. }
  158. if(TI)
  159. TI = 0;

  160. }


復(fù)制代碼
希望大家提供寶貴的意見,十分感謝!


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

使用道具 舉報

沙發(fā)
ID:214223 發(fā)表于 2019-7-23 13:09 | 只看該作者
把SCON 改為 0x50 也于事無補(bǔ),頭大,按鍵無論放在哪都無法識別
回復(fù)

使用道具 舉報

板凳
ID:214223 發(fā)表于 2019-7-23 13:11 | 只看該作者
復(fù)位時SCON會全部置為0,這和問題有聯(lián)系嗎?
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 黄色片免费看视频 | 91视频免费观看 | 天天干天天玩天天操 | 毛片免费在线观看 | 久久国产精品-久久精品 | 韩日在线视频 | 久久久久久色 | 久久久久久久久久久久一区二区 | 日韩在线精品视频 | 在线精品一区 | 日韩影院在线观看 | 中文字幕一区二区三区在线观看 | 国产成人99久久亚洲综合精品 | 日韩色综合 | 欧美99| 中文字幕在线不卡 | 99精品视频在线观看免费播放 | 国产在线视频在线观看 | 在线观看涩涩视频 | 美日韩精品 | 免费不卡一区 | 国内精品久久久久 | 欧美激情综合 | 99爱免费| 男人的天堂久久 | 午夜精品一区二区三区在线观看 | 国产精品日韩欧美一区二区三区 | 午夜电影网站 | 天天看天天操 | 天堂一区二区三区四区 | com.国产| 欧美精品综合在线 | 成人在线免费观看视频 | 免费在线观看一区二区三区 | 成人在线影视 | 免费看国产a | 日韩国产在线 | 久久乐国产精品 | 免费看爱爱视频 | 国产精品电影在线观看 | 亚洲人成人一区二区在线观看 |