📄 yjck.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 + -