您当前的位置:五五电子网电子知识单片机-工控设备STC单片机(STC12C5410AD AD的测试LCD12864显示程序 正文
STC12C5410AD AD的测试LCD12864显示程序

STC12C5410AD AD的测试LCD12864显示程序

点击数:7178 次   录入时间:03-04 11:54:00   整理:http://www.55dianzi.com   STC单片机(

/*--  文字:  ’  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x10,0x16,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  //43

/*--  文字:  ,  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xB0,0x70,0x00,0x00,0x00,0x00,0x00, //44

/*--  文字:  .  --45*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00, //45

/*--  文字:  /  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x00,0x00,0x80,0x60,0x18,0x04,0x00,0x60,0x18,0x06,0x01,0x00,0x00,0x00, //46

/*--  文字:  :  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00, //47


/*--  文字:  Q  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x07,0x08,0x10,0x10,0x10,0x08,0x07,0x00,0xF0,0x18,0x24,0x24,0x1C,0x0A,0xF2,0x00  //48
};
//---------------------------------------
//名称: 延时函数    
//----------------------------------------- 
void delay(unsigned int t)
{
 unsigned int i,j;
 for(i=0;i<t;i++)
 {
  for(j=0;j<10;j++);  
 }
}
//---------------------------------------
//名称: 写一个命令字节到LCD函数    
//----------------------------------------- 
void write_com(unsigned char cmdcode)
{

 Rs=0;
 RW=0;
 Lcd_Bus=cmdcode;
 delay(0);
 Ce=1;
 delay(0);
 Ce=0;
}
//---------------------------------------
//名称: 写一个数据字节到LCD函数   
//----------------------------------------- 
void write_data(unsigned char Rsspdata)
{

 Rs=1;
 RW=0;
 Lcd_Bus=Rsspdata;
 delay(0);
 Ce=1;
 delay(0);
 Ce=0;

//---------------------------------------
//名称: 清屏函数    
//----------------------------------------- 
void Clr_Scr(void)
{
 unsigned char j,k;
 Cs1=1;
 Cs2=1;
 write_com(Page_Add+0);
 write_com(Col_Add+0);

 for(k=0;k<8;k++)
 {
  write_com(Page_Add+k);
  for(j=0;j<64;j++)write_data(0x00);
 }

//---------------------------------------
//名称: 写入地址函数   
//----------------------------------------- 
void werite_x_y(unsigned char x,unsigned char y)
{
 y=y&0x7f;
 x=x&0x07;
 if(y<64)
 {
  Cs1=1;
  Cs2=0;
  write_com(Col_Add+y);
 }
 else
 {
  Cs1=0;
  Cs2=1;
  y&=0x3f;
  write_com(Col_Add+y); 
 }
 write_com(Page_Add+x); 
}
//---------------------------------------
//名称: 指定位置写16*16汉字函数     

//----------------------------------------- 

void write_chinese(unsigned char x,unsigned char y, unsigned char Hz)
{
 unsigned char j=0,i=0; 
 for(j=0;j<2;j++)
 {
  werite_x_y(x+j,y);
  for(i=0;i<16;i++) write_data(han[hz*32+16*j+i]);
 }
}

 
//---------------------------------------
//名称: 写一个字符到LCD函数(8*16点阵)
//参数:x,y:写入字符的地址 c: 写入字符在shuzi表格中的位置 
//----------------------------------------- 
 void write_zifu(unsigned char x,unsigned char y, unsigned char zi)
{
 unsigned char j=0,i=0; 
 for(j=0;j<2;j++)
 {
  werite_x_y(x+j,y);
  for(i=0;i<8;i++) write_data(shuzi[zi*16+8*j+i]);   //   
 }
}
//---------------------------------------
//名称: 初始化12864函数   
//----------------------------------------- 
void init_lcd(void)
{    

 Cs1=1;
 Cs2=1; 
 delay(250);
 write_com(Rssp_Off);
 write_com(Page_Add+0);
 write_com(Start_Line+0);
 write_com(Col_Add+0);
 write_com(Rssp_On);
}  
//---------------------------------------
//名称: 延时约1毫秒函数 
//----------------------------------------- 
void delay1ms()
{
  unsigned int k;
 for(k=0;k<12000;k++);
}
//---------------------------------------
//名称: 模数转换函数(8位)   
//----------------------------------------- 
void adpro()
{
  ADC_DATA = 0;               //清A/D转换结果寄存器 
 adbuf=0;     
 ADC_CONTR = ADC_CONTR|0x08; //0000,1000ADCS = 1,启动转换
 delay1ms();
 do{ ; }    
    while((ADC_CONTR&0x10)==0);   //0001,0000等待A/D转换结束
 ADC_CONTR = ADC_CONTR&0xE7; //1110,0111清ADC_FLAG位,停止A/D转换
 adbuf = ADC_DATA;  
}
//---------------------------------------
//名称: 初始化函数函数 
//----------------------------------------- 
void init()
{
  P1M0=0x01;     //设置P1.0为高阻输入,以准备AD
 P1M1=0x00;
    ADC_CONTR = ADC_CONTR|0x80; //1000,0000打开A/D转换电源     
 delay1ms();
 delay1ms();
 ADC_CONTR = ADC_CONTR&0xe0; //1110,0000 清ADC_FLAG,ADC_START位和低3位

//---------------------------------------
//名称: AD值转电压值函数 
//----------------------------------------- 
unsigned int dianya_zhuanhuan()
{
 unsigned int k;
 float i_val, f_val; 
 i_val=(float)adbuf;
 i_val=i_val/255;
 i_val=i_val*500;
 f_val = modf(i_val, &i_val);
 if(i_val>999) i_val=999;
 k=(int)i_val;
 return k;    
}
//---------------------------------------
//名称: 主函数   
//作者:huangjianxin
//邮箱:hjx5548@163.com
//日期:2009-12-9 
//----------------------------------------- 
void main()
{
 unsigned int dianyabuf;
 init();
 init_lcd();       //初始化液晶

上一页  [1] [2] [3] [4]  下一页


本文关键字:程序  STC单片机(单片机-工控设备 - STC单片机(