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