?? reseive.c
字號:
//*
//名稱:無線發(fā)射模塊程序
//創(chuàng)建時間:2007-1-4
//編寫人:ghj
//cpu at89c55 主頻11.0593
//ad cs5460 采樣頻率 4.096
//波特率9600 8位 無奇偶
//*/
#include <reg52.h>
#include <send.h>
#include <intrins.h> //_nop_();
#include <absacc.h>
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main(void)
{
Lcd_init();
led = 1 ;
EA = 1 ; //開總中斷
ET1 = 0 ; //close定時器1中斷控制位
ET0 = 1 ;
TMOD = 0x21 ; //定時器1工作在方式2
TH1 = 0xfd ;
TL1 = 0xfd ;
TH0 = 0x00 ;
TL0 = 0x01 ;
TR0 = 0 ;
TR1 = 1 ; //啟動定時器1
SCON = 0x40 ;//串行口工作在方式1
PCON = 0x00 ;
ES = 1 ; //串行口中斷允許
REN = 1 ;
LCMprint(0x0010,01,"%s","低壓變比測量");
LCMprint(0x0610,01,"%s","高壓變比測量");
LCMprint(0x0218,01,"%s","保定朗信電");
LCMprint(0x0400,02,"%s","!#\"\"&@'\/");
//Display_mainmenu();
while(1)
{
;
}
}
void timer0(void) interrupt 1
{
led = !led ;
}
void serial(void) interrupt 4
{ TR0 = 1 ;
if(RI)
{
RI = 0 ;
EA = 0 ;
SerialData = SBUF ;
EA = 1 ;
TR0 = 0 ;
timernum = TL0 -1 ;
TH0 = 0x00;
TL0 = 0x01;
//timernum = 0;
//timernum = 0 ;
}
}
void Delay5us(void)
{
uchar i;
for(i=5;i>0;i--);
_nop_();
}
/* the function for lcm*/
void WrL_cmd(void) //write left command
{
Cs1 = 0 ;
Cs2 = 1 ;
Rs = 0 ;
Rw = 1 ;
P0 = 0xff ;
Enb = 1 ;
Rs = 0 ;
Rw = 0 ;
P0 = Com ;
Enb = 1 ;
Delay5us() ;
Enb = 0 ;
}
void WrR_cmd(void) //write right command
{
Cs1 = 1 ;
Cs2 = 0 ;
Rs = 0 ;
Rw = 1 ;
P0 = 0xff ;
Enb = 1 ;
Rs = 0 ;
Rw = 0 ;
P0 = Com ;
Enb = 1 ;
Delay5us() ;
Enb = 0 ;
}
void WrL_data(void) //write left data
{
Cs1 = 0 ;
Cs2 = 1 ;
Rs = 0 ;
Rw = 1 ;
P0 = 0xff ;
Enb = 1 ;
Rs = 1 ;
Rw = 0 ;
P0 = Dat ;
Enb = 1 ;
Delay5us() ;
Enb = 0 ;
}
void WrR_data(void) //write right data
{
Cs1 = 1 ;
Cs2 = 0 ;
Rs = 0 ;
Rw = 1 ;
P0 = 0xff ;
Enb = 1 ;
Rs = 1 ;
Rw = 0 ;
P0 = Dat ;
Enb = 1 ;
Delay5us() ;
Enb = 0 ;
}
void Lcd_init(void) //init lcd
{
Res = 0 ;
Delay5us();
Res = 1 ;
Com = 0xC0 ;
WrL_cmd();
WrR_cmd();
Com = 0x3f ;
WrL_cmd();
WrR_cmd();
Clear_lcd();
}
void Clear_lcd(void) //clear lcd
{
uchar i,j;
for(i=0;i<8;i++)
{
Com = i | 0xb8 ;
WrL_cmd();
WrR_cmd();
Com = 0x3f ;
WrL_cmd();
WrR_cmd();
for(j=0;j<64;j++)
{
Dat = 0x00 ;
WrL_data();
WrR_data();
}
}
}
void Display_oneChinese(uchar a[],uchar x,uchar y) //display one chinese
{
uchar i ;
uchar row ;
row = y ;
for( i = 0 ; i < 32 ; i++ )
{
if( i==16)
{
x = x + 1 ;
}
else
{
;
}
if( i >15)
{
row = y + i -16 ;
}
else
{
row = i + y ;
}
Com = 0xB8 | x ; //set X reg for lcd
WrL_cmd() ;
WrR_cmd() ;
Com = row & 0x3f ; //set Y reg For lcd
Com = Com | 0x40 ;
WrL_cmd() ;
WrR_cmd() ;
if( row >= 64 )
{
Dat = a[i] ;
WrR_data() ;
}
if( row < 64 )
{
Dat = a[i] ;
WrL_data() ;
}
}
}
uchar LCMprint(uint display_adr,uchar displayType,char *fmt,...)
{
va_list arg_ptr;
char data c1,c2;
uchar uLen,i=0,j=0,x,y;
char idata tmpBuf[32];
va_start(arg_ptr,fmt);
uLen=(uchar)vsprintf(tmpBuf,fmt,arg_ptr);
va_end(arg_ptr);
x = display_adr >> 8 ;
y = display_adr & 0xff ;
while(i<uLen)
{
c1 = tmpBuf[i];
c2 = tmpBuf[i+1];
if(displayType == 01)
{
for(j=0;j<sizeof(GB_16)/sizeof(GB_16[0]);j++)
{
if(c1 == GB_16[j].Index[0] && c2 == GB_16[j].Index[1])
break ;
}
if(j<sizeof(GB_16)/sizeof(GB_16[0]))
{
Display_oneChinese(GB_16[j].Msk,x,y);
y = y + 0x10 ;
i = i + 1 ;
}
}
if(displayType == 02)
{
for(j=0;j<sizeof(ascm)/sizeof(ascm[0]);j++)
{ c2 = ascm[j].Index[0];
if(c1 == ascm[j].Index[0])
break;
}
if(j<sizeof(ascm)/sizeof(ascm[0]))
{
Display_oneAsscii(ascm[j].Msk,x,y);
y = y + 8 ;
}
}
i = i + 1 ;
}
return 0 ;
}
void Display_oneAsscii(uchar a[],uchar x,uchar y) //display one number
{
uchar i ;
uchar row ;
for( i = 0 ; i < 16 ; i++ )
{
if( i==8)
{
x = x + 1 ;
}
else
{
;
}
if( i >7)
{
row = y + i -8 ;
}
if( i <= 7 )
{
row = i + y ;
}
Com = 0xB8 | x ;
WrL_cmd() ;
WrR_cmd() ;
Com = row & 0x3f ;
Com = Com | 0x40 ;
WrL_cmd() ;
WrR_cmd() ;
if( row >= 64 )
{
Dat = a[i] ;
WrR_data() ;
}
if( row < 64 )
{
Dat = a[i] ;
WrL_data() ;
}
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -