標題: 【轉帖】基于51單片機的串并變換 [打印本頁]
作者: Ameya360 時間: 2017-7-4 15:38
標題: 【轉帖】基于51單片機的串并變換
51單片機串行口在方式0下,串行口的SBUF是作為同步移位寄存器用的,此時串行口有兩種不同的用處:一種是把串行口設置成“并入串出”的輸出口,另一種是把串行口設置成“串入并出”的輸入口。當串行口作輸出口時,SBUF(發送)相當于一個“并入串出”的移位寄存器,因而通常需要外接一片8位串/并轉換移位寄存器。
**1 ** 硬件設計
當51單片機的串行口工作在方式0時,RXD端用來輸出串行數據,TXD端用來輸出移位脈沖。利用51單片機的串行口外接一片串/并轉換芯片74LS164,再連接8只LED發光二極管,做成一個流水燈,如下圖所示。
在桌面上雙擊圖標,打開ISIS 7 Professional窗口(本人使用的是v7.4 SP3中文版)。單擊菜單命令“文件”→“新建設計”,選擇DEFAULT模板,保存文件名為“CB.DSN”。在器件選擇按鈕中單擊“P”按鈕,或執行菜單命令“庫”→“拾取元件/符號”,添加如下表所示的元件。
51單片機AT89C51 一片
晶體CRYSTAL 12MHz 一只
瓷片電容CAP 22pF 二只
電解電容CAP-ELEC 10uF 一只
電阻RES 10K 一只
電阻RES 300R(Ω) 八只
TTL芯片 74LS164.IEC 一片
發光二極管 LED-YELLOW 八只
若用Proteus軟件進行仿真,則上圖中的晶振和復位電路以及U1的31腳,都可以不畫,它們都是默認的。
在ISIS原理圖編輯窗口中放置元件,再單擊工具箱中元件終端圖標,在對象選擇器中單擊POWER和GROUND放置電源和地。放置好元件后,布好線。左鍵雙擊各元件,設置相應元件參數,完成電路圖的設計。
**2 ** 軟件設計
將51單片機的串行口方式0用于擴展并行輸出的流水燈,其流程圖如下所示。
將51單片機的串行口方式0用于擴展并行輸出的流水燈,其詳細的C51程序如下。
/*********************************************
*串/并轉換控制八只發光二極管的流水燈,12M晶振
*********************************************/
#include "reg51.h"
#define uchar unsigned char
#define uint unsigned int
/****延時函數*******************************/
void delayms(uint t)
{
uint i,j;
for(i=0;i<t;i++)
for(j=0;j<120;j++)
;
}
main()
{
uchar k,l;
SCON=0X00; //串行口初始化為方式0
while(1)
{
k=0x7f;
for(l=0;l<8;l++)
{
SBUF=k;
delayms(200);
k=(k>>1)|0x80;
}
}
}
打開Keil程序(本人使用的是Keil8.05中文版),執行菜單命令“工程”→“新建工程”創建“串并”項目,并選擇單片機型號為AT89C51。執行菜單命令“文件”→“新建”創建文件,輸入C語言源程序,保存為“CB.C”。在Project Workspace窗口中右擊源代碼組1,選擇“添加文件到組‘源代碼組 l’”將源程序“CB.C”添加到項目中。
在Keil中執行執行菜單命令“工程”→“創建目標”(或點擊“創建目標”快捷按鈕),編譯源程序。如果編譯成功,則在“Output Window”的“創建”窗口中顯示沒有錯誤,并創建了“CB.HEX”文件。
**3 ** 仿真與調試
關于Proteus與Keil的聯合仿真調試,可參見我以前所寫的博文或其它參考資料。需注意Proteus的ISIS與Keil的μVision3中“CB.HEX”的路徑要一致。
啟動Proteus的ISIS,并將其放在屏幕的右上角(可將原理圖放大到合適大小);再啟動Keil的μVision3,并將其放在屏幕的左下角。
在Keil的μVision3中執行菜單命令“調試”→“啟動/停止調試”,或直接單擊圖標,進入Keil的μVision3調試環境。同時,在Proteus ISIS的窗口中可看出Proteus也進入了程序調試狀態。
在Keil的μVision3代碼編輯窗口中設置相應斷點,斷點的設置方法:在需要設置斷點語句前雙擊鼠標左鍵,可設置斷點;再次雙擊,可取消該斷點。
在Keil的μVision3中按F5鍵(或點擊“運行”快捷按鈕)運行程序。首先,并行數據0X7F由SBUF串行輸出,再由74LS164將其轉換為并行數據,從而點亮D1發光二極管,等待200ms后并行數據0XBF由SBUF串行輸出,再由74LS164將其轉換為并行數據,從而D1熄滅同時點亮D2發光二極管,再次等待200ms后并行數據0XDF由SBUF串行輸出,再由74LS164將其轉換為并行數據,從而D2熄滅并點亮D3發光二極管……,點亮D8發光二極管等待200ms熄滅后,再次點亮D1發光二極管……如此循環。或可以點擊單步、運行到光標處、全速運行等快捷按鈕,以及同時觀察工程窗口寄存器頁面、存儲器窗口等,來進行仿真調試。
歡迎光臨 (http://www.zg4o1577.cn/bbs/) |
Powered by Discuz! X3.1 |
主站蜘蛛池模板:
精品久久99
|
成人免费视频网站在线观看
|
国产成人精品网站
|
a在线视频观看
|
国产一区二区三区免费观看在线
|
欧美福利视频
|
欧美不卡一区二区三区
|
手机看片在线播放
|
国产精品高清一区二区三区
|
www中文字幕|
99综合网|
亚洲欧美精品在线观看
|
国产成人91|
国产欧美精品一区二区
|
国产四虎
|
久久99精品久久久久久秒播九色
|
午夜三级在线观看
|
日韩精品一
|
一区二区三区在线免费观看
|
国产精品久久久久久久久久
|
欧美日韩视频一区二区
|
国产激情视频在线
|
国产农村妇女毛片精品久久麻豆
|
久久不射网
|
精精国产xxxx视频在线播放7
|
午夜性色a√在线视频观看9
|
91免费在线看
|
伊人精品在线视频
|
在线区|
欧美亚洲日本
|
在线观看免费黄色片
|
国产精品九九九
|
成人精品久久日伦片大全免费
|
亚洲成人av
|
在线欧美一区二区
|
视频一区在线观看
|
狠狠插天天干
|
亚洲综合区
|
亚洲国产成人精品女人久久久野战
|
国产一级片
|
欧美不卡网站
|