RS485串行口模擬仿真通訊,課程設計
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png (38.04 KB, 下載次數: 43)
下載附件
2018-11-27 03:00 上傳
0.png (13.83 KB, 下載次數: 48)
下載附件
2018-11-27 03:00 上傳
單片機源程序如下:
- #include<AT89X52.H>//AT89X52.h指的就是s或c都可以用。C和S在看門狗、定時器上面有一定的區別,因而實際應用該單片機時要包含對應的頭文件
- #define uchar unsigned char
- #define uint unsigned int
- bit FS_Bit = 0; //發送標志位
- code uchar TEXT0[] = "next\r\n\n";
- code uchar TEXT1[] = "祝老師身體健康\r\n\n";
- void delay(uint i); //延時函數
- void Uart_Char(uchar Value); //發送一個數據
- void Prints(uchar *Value); //發送一組數據
- void main(void)
- {
- TMOD = 0x20; //設置波特率為9600和定時器1工作方式
- TL1 = 0xFD; //設置初始值
- TH1 = 0xFD;
- SCON = 0x50; //設置串行口工作方式
- PCON = 0x00;
- TR1 = 1; //允許發送
- ET0 = 1; //啟動定時器
- ES = 1; //串行中斷允許
- EA = 1;
- //發送數據
- Prints(TEXT0);
- Prints(TEXT1);
-
- delay(60000); //延時
- while(1);
- }
- void INIT_Uart(void) interrupt 4
- {
- if(RI) //如果收到數據
- {
- RI = 0;
- }
- else
- {
- TI = 0; //發送完一個數據
- FS_Bit = 0; //清標志位
- }
- }
- //發送一個數據
- void Uart_Char(uchar Value)
- {
- SBUF = Value; //發送數據
- FS_Bit = 1; //設置發送標志位
- while(FS_Bit);
- }
- //發送一組數據
- void Prints(uchar *Value)
- {
- while((*Value) != '\0') //如果沒有發送完畢
- {
- Uart_Char(*Value); //發送一位數據
- Value++; //指針指向下一位數據
- }
- }
- //延時函數
- void delay(uint i)
- {
- while(--i );
- }
復制代碼
所有資料51hei提供下載:
串行口模擬仿真通訊.zip
(70.22 KB, 下載次數: 87)
2018-11-26 22:51 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|