📄 text7.c
字号:
#include <REG938.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
#define ulong unsigned long
#define _Nop() _nop_()
//定义变量
sbit LCDD=P0^5;
sbit LCDC=P0^4;
sbit YANZ1=P1^6;
sbit YANZ2=P1^7;
uchar code byte[20]="gnhjuju";
uchar code byte1[20]="2008";
uchar code byte2[]="ST";
uchar tr_flag=1;
void dally_timer1(uint data ms);
void dally_timer2(uint data us);
void LCD_WRITE1(uchar data TMP1);
void LCD_WRITE(uchar data LCD_COMMAND,uchar data LCD_TMP);
void LCDInit(void);
void lcd12232_zfc(uchar row,uchar tier,uchar *puts);
void clear_lcd(void);
void uart_init(void);
void uart_send(uchar *dat);
uchar uart_read();
//void Light1();
//void Light2();
uchar code AC_TABLE[]={ 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87, //第一行汉字位置
0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97, //第二行汉字位置
0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f, //第三行汉字位置
0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f}; //第四行汉字位置
uchar code lcd_tab[16]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,
0x41,0x42,0x43,0x44,0x45,0x46};
void dally_timer1(uint data ms)
{
uint i;
TR1=1;//启动定时器T1
for(i=ms*25;i>0;i--)
{
while(TF1==0)
{
_Nop();
};
TF1=0;//清除T1溢出标志TF1
}
TR1=0;//关闭定时器T1
}
void dally_timer2(uint data us)
{
do
{
us--;
}
while (us > 0);
}
void LCD_WRITE1(uchar data TMP1)
{
uchar data m,TMP;
for(m=8;m>0;m--)
{
LCDC=0;
TMP=(TMP1&(0x01<<(m-1)))>>(m-1);//取数据的第7-0位
if(TMP==0)
{
LCDD=0; //?i??0,lcd???0
}
if(TMP==1)
{
LCDD=1; //?i??1,lcd???1
}
//lcd?????????
dally_timer2(1);
LCDC=1;
}
}
void LCD_WRITE(uchar data LCD_COMMAND,uchar data LCD_TMP)
{
uchar data TMP1;
TMP1=LCD_COMMAND; //??lcd??
LCD_WRITE1(TMP1);
TMP1=LCD_TMP&0xF0; //??lcd??????4?
LCD_WRITE1(TMP1);
TMP1=(LCD_TMP&0x0F)<<4; //??lcd??????4?
LCD_WRITE1(TMP1);
}
void LCDInit(void)
{
LCD_WRITE(0xf8,0x01);
dally_timer1(40);
LCD_WRITE(0xf8,0x30);
dally_timer1(40);
LCD_WRITE(0xf8,0x02);
dally_timer1(40);
LCD_WRITE(0xf8,0x04);
dally_timer1(40);
LCD_WRITE(0xf8,0x0c);
dally_timer1(40);
LCD_WRITE(0xf8,0x01);
dally_timer1(40);
LCD_WRITE(0xf8,0x80);
dally_timer1(40);
}
void lcd12232_zfc(uchar row,uchar tier,uchar *puts)
{
uchar data tmp;
tmp = AC_TABLE[8*row+tier];
LCD_WRITE(0xf8,tmp);
while(*puts != '\0') //???????????
{
LCD_WRITE(0xfa,*puts); //
puts++;
}
}
void clear_lcd(void)
{
LCD_WRITE(0xf8,0x01);
dally_timer1(40);
}
void uart_init(void)
{
SCON=0x50;//模式1,使能串行接受
SSTAT=0x60;//双缓冲禁止,组合中断禁止,停止位结束产生Tx中断.采用查询方式发送和接收
BRGCON=0;
BRGR0=0xF0;//
BRGR1=0x02;//
BRGCON=0x03;//使能波特率发生器
}
void uart_send(uchar *dat)
{
uint j=0;
while(dat[j] !='\0') // send string
{
SBUF=dat[j]; // start sending one byte
while (!TI); // wait until sent
TI=0;
j++;
}
}
/*void Light1()
{
uchar i;
for(i=0;i<20;i++)
{
YANZ1=1;
dally_timer1(100);
YANZ1=0;
dally_timer1(100);
}
}
void Light2()
{
uchar i;
for(i=0;i<20;i++)
{
YANZ2=1;
dally_timer1(100);
YANZ2=0;
dally_timer1(100);
}
}*/
uchar uart_read()
{
uchar dat1;
while(RI==0);
RI=0;
dat1=SBUF;
return dat1;
}
void main()
{
uint i;
uchar dat11[16]="4326788600007";
P0M1=0x00;
P0M2=0x00;
P1M1=0x00;
P1M2=0x00;
P2M1=0x00;
P2M2=0x00;
P0=0xf8;
P1=0x3f;
P2=0xff;
SP=0x7F;
TMOD=0x20;//T1工作方式2
TAMOD=0x00;
TL1=0x6C;//装入T1初值
TH1=0x6C;
LCDInit();
uart_init();
//IEN0=0x90;
//Light1();
lcd12232_zfc(0,0,dat11);
while(1)
{
for(i=0;i<16;i++)
{
dat11[i]=uart_read();
}
clear_lcd();
lcd12232_zfc(0,0,dat11);
dally_timer1(50);
uart_send(byte);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -