📄 tcys.c
字号:
/*=========================================================================================
本程序为在DOS环境下,用微机控制KY系列智能液晶终端最简单的程序。
在Turbo C 2.0 环境中编译并运行通过.
本程序运行结果:清屏,初始化后分20行显示120组"1234567 ".
使用COM1, 波特率:9600Hz
输出数据格式:8个数据位,1个停止位,校验位恒0
本程序仅供KY系列智能液晶终端的用户参考.
北京金创业科技开发中心
===========================================================================================*/
int ck=0; /* ck=0:com1 ck=1:com2 */
/*===将指定的16位波特率因子输出到指定串口的波特率因子寄存器================================*/
set_baudrate(unsigned int baud)
{
int portaddr;
unsigned char lcr,lsb,msb;
lsb=baud;
msb=baud>>8;
portaddr=(ck==0)?0x3f8:0x2f8;
lcr=inportb(portaddr+3);
outportb(portaddr+3,0x80);
outportb(portaddr+0,lsb);
outportb(portaddr+1,msb);
outportb(portaddr+3,lcr);
}
/*===根据数据位,停止位,校验位写指定串口====================================================*/
set_format(unsigned char data,unsigned char stop,unsigned char parity)
{ outportb((ck==0)?0x3f8:0x2f8+3,data|stop|parity); }
/*=====sc1zj()输出1字节到串口 ==============================================================*/
sc1zj(unsigned char s)
{
unsigned int ckdz;
ckdz=(ck==0)?0x3f8:0x2f8;
while(1){if(((inportb((ckdz+6))&0x10))==0x10){break;}}
/* ckdz+6为MODEM状态寄存器,D4位为CTS状态 */
/* 等待终端发出的"忙"BUSY信号,如BUSY=1则循环等待.BUSY经RS232板电平转换后,接微机串口的CTS端.*/
outportb(ckdz,s);
/* 将数据送"发送保持寄存器" */
while(1){if(((inportb((ckdz+5))&0x40))==0x40){break;}}
/* ckdz+5为线路状态寄存器,D6=1:表示"发送保持寄存器"和"发送移位寄存器"都处于空闲状态,如不空则等待 */
}
/*==========================================================================================*/
/*==========================================================================================*/
main()
{
unsigned char i,btl;
ck=0; /* ck=0:com1 ck=1:com2 */
btl=12; /* 600Hz:btl=192 2400Hz:btl=48 9600:btl=12 19200:btl=6 38400:btl=3 */
set_baudrate(btl); /*设置波特率 */
set_format(0x03,0x0,0x38); /*8个数据位,1个停止位,校验为恒0 */
sc1zj(0); /*无效数据 */
sc1zj(0x1b); /*1B 51 0 清为黑屏 */
sc1zj(0x51);
sc1zj(0);
sc1zj(0x1b); /*1B 40 初始化 */
sc1zj('@');
for(i=1;i<121;i++) /*输出121组 */
{
sc1zj(0x31); sc1zj(0x32); sc1zj(0x33); sc1zj(0x34);
sc1zj(0x35); sc1zj(0x36); sc1zj(0x37); sc1zj(0x20);
if(i%6==0) /* 每6组发“回车,换行” */
{
sc1zj(0x0d);
sc1zj(0x0a);
}
}
printf("\n------END-------\n");
return 0;
}
/*==========================================================================================*/
#define RXD 0 /* 接收数据寄存器 */
#define TXD 0 /* 发送保持寄存器 */
#define LSB 0 /* 波特率因子低位 */
#define MSB 1 /* 波特率因子高位 */
#define IER 1 /* 中断允许寄存器 */
#define IIR 2 /* 中断标识寄存器 */
#define LCR 3 /* 线路控制寄存器 */
#define MCR 4 /* MODEM控制寄存器 */
#define LSR 5 /* 线路状态寄存器 */
#define MSR 6 /* MODEM状态寄存器 */
/*==========================================================================================
北京金创业科技开发中心 孙刚
==========================================================================================*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -