⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 yjck.c

📁 51单片机模拟串口
💻 C
字号:
//本程序为Franklin/keil  C51源程序,可以在所有51系列(或兼容)单片机中运行。
//完成功能:使用P3.1硬件串行接口,实现对KY系列智能液晶终端进行控制.
//程序中给出了设计方法,通过修改TIMEth使本程序适用于各种晶振及各种波特率.
//本例为:当通讯波特率=9600Hz,单片机晶振=18.432MHz时,TIMEth=246
//        使用P3.1硬件串口,使用P1.2检测"忙"信号.
//本程序在Wave For windows ver 2.80仿真软件编译成功。
//在AT89C51(9600Hz,18.432MHz)中运行通过.运行结果是:每隔1秒,显示3个字母.
//=========================================================================================
#include "reg51.h"
#define  uchar     unsigned char
sbit     ZD_DATA   =P3^1; //向液晶终端输出串行数据
sbit     ZD_BUSY   =P1^2; //接收液晶终端发来的"忙"(BUSY)信号,可以连接于任意一位输入引脚上.
//=========================================================================================
#define  TIMEth    246   //修改TIMEth可使本程序适用于各种晶振及各种波特率.计算方法见文件尾。
//=========================================================================================
void FSsj(uchar A)//发送1字节A
{
  while(ZD_BUSY);       //如果终端"忙",则等待
  SBUF = A;		// 发送一字节
  while( !TI );         // 等待本字节发送完毕
  TI = 0;               // 清除 TI
}
//=========================================================================================
void main(void)//运行后每隔1秒,显示3个字母.
  {
    TH1=TIMEth;PCON=0X80;TMOD=0X20;TCON=0X40;SCON=0XD0;//串口通道工作方式3
    ZD_BUSY=1;
    ZD_DATA=1;
    while(1)
      {
          FSsj('A');    //显示字母A
          FSsj(0x55);   //显示字母U
          FSsj(0xAA);   //显示字母γ
          FSsj(' ');    //空格
          FSsj(0x1B);   //延时1秒
          FSsj('l');
          FSsj(10);
      }
  }
//=========================================================================================
//;============================================================================
//;例1:当通讯波特率F=9.6KHz,单片机晶振Z=18.432MHz时,TIMEth=246
//;/     TIMEth=256-[(Z*1000)/192/F]=256-[(18.432*1000)/192/9.6]=246
//;/-------------
//;/例2:当通讯波特率F=4.8KHz,单片机晶振Z=18.432MHz时:
//;/     TIMEth=256-[(Z*1000)/192]/F=256-[(18.432*1000)/192/4.8]=236
//;/-------------
//;/例3:当通讯波特率F=19.2KHz,单片机晶振Z=18.432MHz时:
//;/     TIMEth=256-[(Z*1000)/192]/F=256-[(18.432*1000)/192/19.2]=251
//;/-------------
//;/例4:当通讯波特率F=96KHz,单片机晶振Z=18.432MHz时:
//;/     TIMEth=256-[(Z*1000)/192]/F=256-[(18.432*1000)/192/96]=255
//;/-------------
//;/例5:当通讯波特率F=9.6KHz,单片机晶振Z=11.0592MHz时:
//;/     TIMEth=256-[(Z*1000)/192]/F=256-[(11.0592*1000)/192/9.6]=250
//;/-------------
//;/例6:当通讯波特率F=38.4KHz,单片机晶振Z=22.1184MHz时:
//;/     TIMEth=256-[(Z*1000)/192]/F=256-[(22.1184*1000)/192/38.4]=253
//;/------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -