📄 test.c
字号:
/*************************************************************************************************
* PROJECT CODE:MCS_51 Experiment Board Test Program *
*`CREATE DATE :2004.12.20 *
* CREATED BY :Wan Wen Lue ,ChongQing Institute of Technology *
* MODEIFY DATE:2005.6.2 *
* DOCUMENT :None *
* OTHER :None *
*************************************************************************************************/
#include <reg51.H>
#include<absacc.h>
#define WR_COM XBYTE[0x4000]
#define RD_STA XBYTE[0x4001]
#define WR_DAT XBYTE[0x4002]
#define RD_DAT XBYTE[0x4003]
char code CGRAM_TABLE[]={0x08,0x0F,0x12,0x0F,0x0A,0x1F,0x02,0x02,// ;年
0x0F,0x09,0x0F,0x09,0x0F,0x09,0x11,0x00, //;月
0x0F,0x09,0x09,0x0F,0x0,0x09,0x0F,0x00}; // ;日
char code TABLE1[]={'C','Q','I','T',' ','M','C','S','-','5','1',' ','E','M','U',' '};//,'V','1','.','0'};//{0x44,0x50,0x2D,0x35,0x31,0x48};//;DP-51H
char code TABLE2[]={'V','1','.','0'};//;空格
char code TABLE3[]={0x5A,0x4C,0x47,0x32,0x30,0x30,0x33,0x00,0x37,0x01,0x31,0x32,0x02};
//; Z l G 2 0 0 3 年 7 月 1 2 日
char code TABLE4[]="Designed By WWL";
void printf_lcd(unsigned char StartPosition,char *string,char len);
void init_cgram();
void init_lcd();
void test_lcd();
void clr_lcd();
sbit CS=P1^0;
sbit CLK=P1^1;
sbit DIO=P1^2;
sbit AD_OK=P3^2;
char KeyCode;
char dispbuff[8];
char adconvert(char channel);
char ReadKB();
void sent(unsigned char sent_buf);
void delay(unsigned char time);
void display();
char TICK;
char ADresult;
/*************************************************************************************************
* FUNCTION NAME:void Timer0 interrupt *
*`CREATE DATE :2004.12.20 *
* CREATED BY :Wan Wen Lue ,ChongQing Institute of Technology *
* MODEIFY DATE :2005.6.2 *
* INPUT :None *
* OUTPUT :None *
* RETURN :None *
* Global Variable:unsigned TICK *
*************************************************************************************************/
void Timer0() interrupt 1
{
TMOD=0x01;
TH0=0x3c;
if(TICK==5)
{
display();
TICK=0;
ADresult=adconvert(0);
}
TICK++;
}
/*************************************************************************************************
* FUNCTION NAME:void KeyBoard() interrupt 2 *
*`CREATE DATE :2004.12.20 *
* CREATED BY :Wan Wen Lue ,ChongQing Institute of Technology *
* MODEIFY DATE :2005.6.2 *
* INPUT :None *
* OUTPUT :None *
* RETURN :None *
* Global Variable:KeyCode *
*************************************************************************************************/
void KeyBoard() interrupt 2
{
KeyCode=ReadKB();
if(KeyCode==0x0f)
printf_lcd(0x80,TABLE4,15);
if(KeyCode==0x0e)
{
clr_lcd();
test_lcd();}
}
main()
{
EX1=1;
EA=1;
CS=1;
IT1=1;
TMOD=0x01;
TH0=0x3c;
TL0=0xb0;
ET0=1;
TR0=1;
TICK=0;
init_lcd();
init_cgram();
test_lcd();
clr_lcd();
test_lcd();
while(1)
{
dispbuff[0]=KeyCode/16;
dispbuff[1]=KeyCode%16;
dispbuff[6]=(ADresult/16)&0x0f;
dispbuff[7]=(ADresult%16)&0x0f;
}
}
/*************************************************************************************************
* FUNCTION NAME:char ReadKB() *
*`CREATE DATE :2004.12.20 *
* CREATED BY :Wan Wen Lue ,ChongQing Institute of Technology *
* MODEIFY DATE :2005.6.2 *
* INPUT :None *
* OUTPUT :None *
* RETURN :KeyCode *
* Global Variable:KeyCode *
*************************************************************************************************/
char ReadKB()
{ char kb=0,i;
CS=1;
CLK=0;
delay (50);
sent(0x15);//发送读键盘指令
delay(10);
DIO=1;
CLK=1;
delay(50);
for(i=0;i<8;i++)
{CLK=0;
kb=kb*2+(char)DIO;//读1位数据
delay(10);
CLK=1;
delay(10);
}
CS=1;
return(kb);}
/*************************************************************************************************
* FUNCTION NAME:void sent(unsigned char sent_buf) *
*`CREATE DATE :2004.12.20 *
* CREATED BY :Wan Wen Lue ,ChongQing Institute of Technology *
* MODEIFY DATE :2005.6.2 *
* INPUT :sent_buf *
* OUTPUT :sent sent_buf to SPI interface *
* RETURN :None *
* Global Variable:None *
*************************************************************************************************/
void sent(unsigned char sent_buf)
{
char i;
CLK=0; /*置SPI时钟线为低*/
CS=0; /*置SPI片选线为低*/
delay (50); /*延时50us*/
for(i=0;i<8;i++) /*发送8位数据*/
{
sent_buf=sent_buf<<1; /*从数据最高位开始,将要发发送的数据位移入进位位CY*/
DIO=CY; /*数据位送数据线*/
CLK=1; /* 置SPI时钟线为高*/
delay (10); /*延时10us*/
CLK=0; /* 置SPI时钟线为低,发送完1位数据*/
delay (10);/*延时10us*/
}
DIO=0;
}
/*************************************************************************************************
* FUNCTION NAME:void delay(unsigned char time) *
*`CREATE DATE :2004.12.20 *
* CREATED BY :Wan Wen Lue ,ChongQing Institute of Technology *
* MODEIFY DATE :2005.6.2 *
* INPUT :unsigned char time *
* OUTPUT :Delay some times *
* RETURN :None *
* Global Variable:None *
*************************************************************************************************/
void delay(unsigned char time)
{
unsigned char i;
for(i=0;i<time;i++);
}
/*************************************************************************************************
* FUNCTION NAME:void delay(unsigned char time) *
*`CREATE DATE :2004.12.20 *
* CREATED BY :Wan Wen Lue ,ChongQing Institute of Technology *
* MODEIFY DATE :2005.6.2 *
* INPUT :char channel *
* OUTPUT :None *
* RETURN :ADresult *
* Global Variable:ADresult *
*************************************************************************************************/
char adconvert(char channel)
{
char result;
char xdata *adport;
adport=0x0000+channel; //AD转换通道选择
*adport=0; // 启动转换
while(AD_OK==1); //等待转换结束
result=*adport; // 读转换结果
return result;
}
/*************************************************************************************************
* FUNCTION NAME:void delay(unsigned char time) *
*`CREATE DATE :2004.12.20 *
* CREATED BY :Wan Wen Lue ,ChongQing Institute of Technology *
* MODEIFY DATE :2005.6.2 *
* INPUT :char channel *
* OUTPUT :None *
* RETURN :ADresult *
* Global Variable:ADresult *
*************************************************************************************************/
void display()
{
char i;
for(i=0;i<8;i++)
{
CS=1;
sent(0xc8+i);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -