⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1602c.c.bak

📁 简单的aduc834定时计数器测试小程序
💻 BAK
字号:
#include<ADI/ADuC834.h>    //包含头文件,这个嘛,就不用多说了~~ 
#define uint unsigned int  //预定义一下 
#define uchar unsigned char 
sbit rs=P2^3;    //1602的数据/指令选择控制线 
sbit rw=P2^4;        //1602的读写控制线 
sbit en=P2^5;        //1602的使能控制线 
/*P2口接1602的D0~D7,注意不要接错了顺序,我以前可在这上面吃过亏~*/ 
uchar n,m,TCcount=0;
uchar code table[]="LCD1602 check ok"; //要显示的内容1放入数组tablel 
uchar code table1[]="study up";             //要显示的内容2放入数组table1 
void delay(uint n)       //延时函数                       
{ 
    uint x,y; 
    for(x=n;x>0;x--) 
        for(y=110;y>0;y--); 
} 
//中断初始化**************************************************************************************
void sys_init(void)
{
	ET0=1;
	EA=1;
}
//定时计数器初始化**************************************************************************************
void TC_init(void)
{
	TMOD|=0x01;
	TH0=0;
	TL0=0;
	TR0=1;
}
void lcd_wcom(uchar com)  //1602写命令函数                 
{ 
    rs=0;            //选择指令寄存器 
    rw=0;            //选择写 
    P0=com;            //把命令字送入P2 
    delay(5);            //延时一小会儿,让1602准备接收数据 
    en=1;           //使能线电平变化,命令送入1602的8位数据口 
    en=0; 
} 
void lcd_wdat(uchar dat)        //1602写数据函数       
{ 
    rs=1;        //选择数据寄存器 
    rw=0;        //选择写 
    P0=dat;        //把要显示的数据送入P2 
    delay(5);        //延时一小会儿,让1602准备接收数据 
    en=1;        //使能线电平变化,数据送入1602的8位数据口 
    en=0; 
} 
void lcd_init()              //1602初始化函数       
{ 
    lcd_wcom(0x38);       //8位数据,双列,5*7字形       
    lcd_wcom(0x0F);      //开启显示屏,关光标,光标不闪烁 
    lcd_wcom(0x06);    //显示地址递增,即写一个数据后,显示位置右移一位 
    lcd_wcom(0x01);    //清屏 
} 
void T0_int() interrupt 1 //定时器0中断
{
	ET0=0;
	TH0=0;
	TL0=0;
	TCcount++;
	if(TCcount==10)
	{        	
	  lcd_wcom(0x80);
	  for(n=0;n<8;n++)   //将table1[]中的数据依次写入1602显示 
    {     
      lcd_wdat(table1[n]); 
      delay(1); 
    }
  }
  if(TCcount==20)
  {
  	lcd_wcom(0x80+0x44);
  	for(m=0;m<16;m++)     //将table[]中的数据依次写入1602显示 
    { 
      lcd_wdat(table[m]);           
      delay(1); 
    }
  }
  if(TCcount==30)
  {
  	lcd_wcom(0x80);
  	for(m=0;m<16;m++)     //将table[]中的数据依次写入1602显示 
    { 
      lcd_wdat(table[m]);           
      delay(1); 
    }
  }
  if(TCcount==40)
	{  
		TCcount=0;      	
	  lcd_wcom(0x80+0x44);
	  for(n=0;n<8;n++)   //将table1[]中的数据依次写入1602显示 
    {     
      lcd_wdat(table1[n]); 
      delay(1); 
    }
  }
   ET0=1;
}
void main()            //主函数 
{       
    sys_init();
    TC_init();
    lcd_init();                 //液晶初始化 
    lcd_wcom(0x80);   //显示地址设为80H(即00H,)上排第一位       
    for(m=0;m<16;m++)     //将table[]中的数据依次写入1602显示 
    { 
            lcd_wdat(table[m]);           
            delay(1); 
    } 
    lcd_wcom(0x80+0x44); //重新设定显示地址为0xc4,即下排第5位 
    for(n=0;n<8;n++)   //将table1[]中的数据依次写入1602显示 
    {     
            lcd_wdat(table1[n]); 
           delay(1); 
    } 
    while(1);        //动态停机 
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -