RS485串行口模拟仿真通讯,课程设计
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
单片机源程序如下:
- #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)
|