1樓:做而論道
如果採用串列埠方式
復0來驅制動74164,就要用:
rxd連線bai 74164的序列dudat;
txd連線 74164的序列clk。
因為這種方式是用rxd輸出數zhi據,daotxd輸出移位脈衝。
電路可見:
關於51微控制器串列埠工作方式0 外接74ls164的問題
2樓:匿名使用者
不是的,串列埠傳送資料時,不需要對txd專門處理,只要設定好串列埠工作方式,將資料送入到sbuf之後,就自動將資料傳送出去了。
3樓:匿名使用者
你提出的問題應該是通過串列埠向74ls164同步傳送資料的問題吧,串列埠工作方式版0時,txd用於傳送同步脈衝,權rxd用於傳送資料,你只要將資料載入subf之後,時鐘脈衝和資料就會自動出現在微控制器的i/o埠,程式不需要對i/o口再進行干預。但由於51微控制器是準雙向i/o,在使用串列埠通訊時,不能將i/o置0。所以在傳送資料前,應對對i/o口置1進行初始化,以保障微控制器對串列埠的操控。
4樓:匿名使用者
不需要,資料裝入sbuf後 硬體自動 由 p3.1 傳送時鐘脈衝, 由 p3.0 傳送 八位資料.
5樓:
不是的 p3^1是傳送資料口,在正常傳送資料時輸出脈衝訊號。 sbuf中的資料就是通過p3^1傳送出去的!
51微控制器串列埠工作方式0 外接74ls164的問題,ti=0還是ti=1?
6樓:匿名使用者
你所說的 i/o腳,與ti沒有任何關係。
ti是傳送標誌位,是在內部暫存器scon中的一位。
再說:while(ti==0); 這樣寫內就行,不要另加容一對大括號,這是迴圈語句,條件是當ti=0時就迴圈等待,就是當sbuf,即串列埠正在傳送資料時,ti=0,當傳送結束了,ti=1,那就結束迴圈了,向下執行了,再ti=0,是為了下一次的再傳送。
所以,這裡的ti,是傳送資料是否結束的標誌位,與外部引腳i/o沒有一點關係。
51微控制器怎麼通過串列埠傳送小數,51微控制器怎麼通過串列埠傳送小數?
方法多的去了,把數字37.5轉換為字串 37.5 傳送可以,用壓縮bcd碼0x37 0x05傳送也可以,多得是。不一定一定要浮點處理。你自己定一個協議,1次發6個資料,選擇其中的2個作為資料,其他作為驗證碼,另一個微控制器接收到就演算法處理 微控制器不支援浮點運算的,你可以申請兩個變數,把整數和小數...
51微控制器串列埠接收資料十進位制,51微控制器在串列埠問題,我們從串列埠上傳送資料是以16進位制的,在微控制器上接收是10進位制的,
即便是傳送ascii碼形式的字元,也可以傳送數字啊,如1234,mcu將收到4個ascii值,然後在mcu端判斷每個是否 0 9 以確保是數字的ascii碼,如果是就將收到的ascii值減去 0 不就得到它的十進位制值了麼。可以這樣 向微控制器傳送非壓縮bcd碼0x01,0x02,0x03,0x04...
51微控制器,通過串列埠助手向微控制器傳送字串,微控制器將字串逆序傳送回計算機,用C語言程式設計
電腦通過串列埠助手向微控制器傳送字串,微控制器定義一個可以儲存7個字元的陣列,依次儲存接收的字串,當接收到7個字串後,就可以從陣列的最後一個字元向前傳送每一個字元給電腦就可以了。剩下的就是串列埠初始化,串列埠接收和傳送程式了,就比較好寫了。其實,電腦傳送任意的7個字元的字串都可以,微控制器收到後就可...