仿真圖proteus7.8及以上
程序編譯器:keil 4/keil 5
編程語言:C語言
設計編號:S0074
1. 主要功能:
1.實現(xiàn)主單片機分別與3個從單片機的串行通信;
2.通過分別按下按鍵從機1,從機2,從機3來選擇主機與對應的從機進行串行通信;
3.當從機黃色LED點亮,表示主機與相應的從機連接成功;該從機的8個綠色LED閃亮,表示主機與從機在進行串行數(shù)據(jù)通信;
4.如果斷開按鍵,則主機與相應從機的串行通信中斷。
需注意仿真中51單片機芯片是兼容的,AT89C51,AT89C52是51單片機的具體型號,內核是一樣的。相同的原理圖里,無論stc還是at都一樣,引腳功能都是一樣的,程序是兼容的,芯片可以替換為STC89C52/STC89C51/AT89C52/AT89C51等51單片機芯片。
以下為本設計資料展示圖:
2. 講解視頻:
講解視頻包含仿真運行講解和代碼講解。
3. 仿真
打開仿真工程,雙擊proteus中的單片機,選擇hex文件路徑,然后開始仿真。
按下主機的從機1按鍵,從機1接收到數(shù)據(jù)燈光閃爍,其他從機燈光熄滅。
按下主機的從機2按鍵,從機2接收到數(shù)據(jù)燈光閃爍,其他從機燈光熄滅。
按下主機的從機3按鍵,從機3接收到數(shù)據(jù)燈光閃爍,其他從機燈光熄滅。
4. 程序代碼
使用keil4或者keil5編譯,代碼有注釋,可以結合視頻理解代碼含義。
主機代碼:
#include <reg51.h>
#include <math.h>
sbit switch1=P0^0;
sbit switch2=P0^1;
sbit switch3=P0^2;
void delay_ms(unsigned int i)
{
unsigned char j;
for(;i>0;i--)
for(j=0;j<125;j++)
;
}
void main()
{
EA=1; //總中斷打開
TMOD=0x20; //定時器1 工作方式2 自動裝載 用于串口設置波特率
TL1=0xfd;
TH1=0xfd; //波特率設為9600
PCON=0x00; //不加倍 0x80 為加倍
SCON=0xd0; //SM2設為0, TB8設為0
TR1=1; //定時器1 打開
ES=1;
SBUF=0xff;
while(TI==0);
TI=0;
while(1)
{
delay_ms(100);
if(switch1==1)
{
TB8=1;//將發(fā)送寄存器的第九數(shù)據(jù)位(TB8)設置為1。這在9位UART通信模式中使用。
SBUF=0x01;//將串行緩沖寄存器(SBUF)加載值0x01(二進制00000001),一旦開始傳輸,這個字節(jié)將作為串行數(shù)據(jù)發(fā)出。
while(TI==0);
//在循環(huán)中等待,直至發(fā)送中斷標志(TI)置位。當SBUF中的整個數(shù)據(jù)字節(jié)被完全發(fā)送出去后,硬件會自動置位TI。
TI=0;//清除發(fā)送中斷標志(TI),準備下一次的數(shù)據(jù)發(fā)送。
TB8=0;//重置第九數(shù)據(jù)位(TB8)為0,以便發(fā)送下一個字節(jié)。
SBUF=0x00;//向SBUF加載下一個數(shù)據(jù)字節(jié),在本例中是0x00(二進制00000000)。
while(TI==0);//再次等待前一個字節(jié)的傳輸完成,并清除TI標志以準備后續(xù)的傳輸操作。
TI=0;
//led=1;
}
if(switch2==1)
{
TB8=1;//將發(fā)送寄存器的第九數(shù)據(jù)位(TB8)設置為1。這在9位UART通信模式中使用。
SBUF=0x02;//將串行緩沖寄存器(SBUF)加載值0x02(二進制00000010),一旦開始傳輸,這個字節(jié)將作為串行數(shù)據(jù)發(fā)出。
while(TI==0);
//在循環(huán)中等待,直至發(fā)送中斷標志(TI)置位。當SBUF中的整個數(shù)據(jù)字節(jié)被完全發(fā)送出去后,硬件會自動置位TI。
TI=0;//清除發(fā)送中斷標志(TI),準備下一次的數(shù)據(jù)發(fā)送。
TB8=0;//重置第九數(shù)據(jù)位(TB8)為0,以便發(fā)送下一個字節(jié)。
SBUF=0x00;//向SBUF加載下一個數(shù)據(jù)字節(jié),在本例中是0x00(二進制00000000)。
while(TI==0);//再次等待前一個字節(jié)的傳輸完成,并清除TI標志以準備后續(xù)的傳輸操作。
TI=0;
//led=1;
}
if(switch3==1)
{
TB8=1;//將發(fā)送寄存器的第九數(shù)據(jù)位(TB8)設置為1。這在9位UART通信模式中使用。
SBUF=0x03;//將串行緩沖寄存器(SBUF)加載值0x03(二進制00000011),一旦開始傳輸,這個字節(jié)將作為串行數(shù)據(jù)發(fā)出。
while(TI==0);
//在循環(huán)中等待,直至發(fā)送中斷標志(TI)置位。當SBUF中的整個數(shù)據(jù)字節(jié)被完全發(fā)送出去后,硬件會自動置位TI。
TI=0;//清除發(fā)送中斷標志(TI),準備下一次的數(shù)據(jù)發(fā)送。
TB8=0;//重置第九數(shù)據(jù)位(TB8)為0,以便發(fā)送下一個字節(jié)。
SBUF=0x00;//向SBUF加載下一個數(shù)據(jù)字節(jié),在本例中是0x00(二進制00000000)。
while(TI==0);//再次等待前一個字節(jié)的傳輸完成,并清除TI標志以準備后續(xù)的傳輸操作。
TI=0;
//led=1;
}
}
}
5. 設計報告
5229字設計報告,內容包括硬件設計、軟件設計、軟硬件框圖、調試、結論等
在現(xiàn)代工業(yè)生產(chǎn)線上,單片機被廣泛應用到各種控制器中,通過精確調控設備運行參數(shù),確保生產(chǎn)線高效穩(wěn)定運作;在智能家居場景中,單片機集成于家電產(chǎn)品內部,使得家居設備能夠實現(xiàn)遠程操控、聯(lián)動協(xié)同等功能,極大提升了生活便利性與舒適度;而在物聯(lián)網(wǎng)領域,無數(shù)搭載單片機的智能終端形成龐大的信息交互網(wǎng)絡,實現(xiàn)了對環(huán)境狀態(tài)、設備性能等海量數(shù)據(jù)的實時采集與傳輸。
多機之間的串行通信則是連接這些智能化單元的核心紐帶之一,它為分散的單片機設備提供了高效便捷的信息交換途徑。這種通信方式允許多個設備通過一條共享的數(shù)據(jù)通道進行有序的數(shù)據(jù)傳遞,有效節(jié)約了物理接口資源,簡化了系統(tǒng)布線,降低了設計復雜度,并且保證了數(shù)據(jù)傳輸的可靠性。
6. 設計資料內容清單&&下載鏈接
資料設計資料包括仿真,程序代碼、講解視頻、功能要求、設計報告、軟硬件設計框圖等。
0、常見使用問題及解決方法–必讀?。。?!
1、程序
2、proteus仿真
3、功能要求
4、軟硬件流程圖
5、開題報告
6、設計報告
7、講解視頻
Altium Designer 安裝破解
KEIL+proteus 單片機仿真設計教程
KEIL安裝破解
Proteus安裝
Proteus簡易使用教程
單片機學習資料
相關數(shù)據(jù)手冊
答辯技巧
設計報告常用描述
鼠標雙擊打開查找嘉盛單片機51 STM32單片機課程畢業(yè)設計.url
資料下載鏈接:
https://docs.qq.com/doc/DS2REbFJkWlZvc0dR