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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

[求助]編寫一個單片機(jī)接收上位機(jī)發(fā)送的數(shù)據(jù)并將該數(shù)據(jù)顯示在靜態(tài)數(shù)碼管上面,自己編的程序找不到問題所在,求教

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:36225 發(fā)表于 2012-3-14 09:00 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
先貼上我的程序,請大家?guī)臀艺乙幌掠矀?br/>#include<reg51.h>

#define uchar unsigned char
#define uint unsigned int

sbit DAT=P3^0;
sbit CLK=P3^1;

uchar code table[]={0x77,0x14,0xb3,0xb6,0xd4,0xe6,0xe7,0x34,0xf7,0xf6};
uchar string[]={"12345678"}; //存儲從上位機(jī)讀出的數(shù)據(jù)
void _get_uchar_SerialPort(uchar);


void _init_SerialPort(void)
{
  SCON=0x50;  //設(shè)置串行口控制寄存器,方式1,多機(jī)通訊關(guān)閉,允許接收位   
  TMOD=0x20;  //啟動定時器1為波特率發(fā)生器,工作于方式2—自動填裝8位計(jì)數(shù)器;啟動計(jì)數(shù)器0,方式0,13位計(jì)數(shù)器 
  
   TH1=0xFD;
     TL1=0xFD; //設(shè)置波特率為9600
   TR1=1; //啟動計(jì)數(shù)器1
   EA=1; //開中斷
   TI=0;//初始化中斷,傳送過程中為1,需要軟件清零
}

  void delay(uint z)
  {
    uint x,y;
    for(x=0;x<z;x++)
    for(y=0;y<170;y++);
}





void _get_string_SerialPort(uchar *str,uint strlen)
{
   uint k=0;
  do
    {
        _get_uchar_SerialPort(*(str+k));
         k++;
    }
while(k < strlen);
}

void _get_uchar_SerialPort(uchar temp)
  {
    temp=SBUF;
    while(TI==0);
    TI=0;
}





void _disp_(uchar digit) //靜態(tài)數(shù)碼管顯示函數(shù)
{
  uint Count;
  char CK;
  CK=table[digit];
for(Count=0;Count<8;Count++)
{
 
  CLK=0;
  DAT=CK&0x01;
  CLK=1;
  CK>>=1;

  }  
}



int main(void)
{


    uint i;
uchar h;
    _init_SerialPort(); //初始化串口函數(shù);

for(i=0;i<8;i++)
   {
    _get_string_SerialPort(string,8);//從串口接收數(shù)據(jù);

  }
   for(i=0;i<8;i++)
{
   h=string;
     h=h-48;
        _disp_(h);
}
while(1);
}
百思不得其解,快惡心死了!
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:34608 發(fā)表于 2012-3-14 09:19 | 只看該作者

你出現(xiàn)的是什么問題啊,是不顯示還是上位機(jī)不能傳啊??

還有的你的數(shù)碼管靜態(tài)顯示怎么是那樣的函數(shù)啊,怎么是串行輸出數(shù)據(jù)啊,數(shù)碼管不上并行接收數(shù)據(jù)嗎,所以你應(yīng)該把你的原理圖也寫上!!

回復(fù)

使用道具 舉報(bào)

板凳
ID:36225 發(fā)表于 2012-3-14 12:48 | 只看該作者

奧,我解釋一下,是這樣子的,我剛剛改了一下我的程序,接收函數(shù)我使用了中斷函數(shù)來代替上面我的兩個函數(shù),然后在上位機(jī)發(fā)個0,小燈亮,發(fā)個1,小燈滅,但是我是想在上位機(jī)上發(fā)一串?dāng)?shù)(上位機(jī)是我用C#編的,調(diào)試正常),并且至少是得用數(shù)碼管甚至是液晶屏顯示的,所以我的中斷函數(shù)是這么寫的:(補(bǔ)充,2L問我數(shù)碼管函數(shù)的問題,我的靜態(tài)數(shù)碼管是74HC164串并轉(zhuǎn)換的,所以只需要兩根線,一根時鐘一根DAT,這個不是關(guān)鍵的,關(guān)鍵的是串口接收這兒)

void serial (void) interrupt 4
 {
  uint i;
  uchar temp;
  if(RI==1)
  {  
    RI=0;
    temp=SBUF;//上位機(jī)數(shù)據(jù),送到temp 中
     if(temp == '1')  LED = 1;//如果上位機(jī)發(fā)了個1,那么小燈滅
     if(temp == '0')  LED = 0;//如果上位機(jī)發(fā)了個0,那么小燈亮
   for(i=0;i<8;i++)
    {
   string=SBUF;//將從接收緩沖區(qū)得到的數(shù)據(jù)全部存在事先定義好的數(shù)組里面,然后把這個數(shù)組發(fā)到我的靜態(tài)數(shù)碼管的顯示函數(shù)里面去
    }
 
  }
 
}

[此貼子已經(jīng)被作者于2012-3-14 12:58:36編輯過]
回復(fù)

使用道具 舉報(bào)

地板
ID:34608 發(fā)表于 2012-3-16 21:56 | 只看該作者

你的中斷函數(shù)里面, if(temp == '1')  則要確保你上位機(jī)發(fā)的是字符1,不是數(shù)字1;

還有 for(i=0;i<8;i++)
    {
   string=SBUF;
    }
這個循環(huán)是什么意思,你是想把SBUF重復(fù)的存8遍嗎??你是想把接收到的數(shù)據(jù)放到string數(shù)組里面吧,

我覺得應(yīng)該這樣做把i定義成全局變量,然后用string[i++]=SBUF代替你的for循環(huán),試試看!!

 

回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产在线中文字幕 | 在线观看av中文字幕 | 久久精品国产99国产精品 | 99国产视频| av黄色片| 国产.com | 三级在线免费 | 欧美一区二区三区一在线观看 | 国产成人精品一区二区三区在线 | 国产精品区一区二 | 有码在线 | 亚洲a一区 | 亚洲精品电影 | 国产在线高清 | 四虎影院在线免费观看 | 小川阿佐美pgd-606在线 | 人人叉 | 一级毛片免费视频观看 | 日韩免费视频一区二区 | 一级黄色绿像片 | 色综合久久久久 | 免费久| 国产精品二区三区 | 久草精品视频 | 精品国产乱码久久久久久闺蜜 | 欧产日产国产精品v | 激情 婷婷| 亚洲图片一区二区三区 | 国产福利在线 | 亚洲第一在线 | 久久久精品一区 | 亚洲成人久久久 | 国产视频久久 | 日韩久久久久久久 | 福利网站导航 | 欧美日韩综合一区 | 九九热在线免费观看 | а天堂中文最新一区二区三区 | 免费观看一级毛片 | 日韩在线视频一区二区三区 | 亚洲精品久久久 |