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

📄 main.c

📁 LY-51S c语言 程序
💻 C
字号:
/*------------------------------------------------
                包含头文件
------------------------------------------------*/
#include"keyboard.h"
#include"delay.h"
#include"18b20.h"
#include "ds1302.h"
#include "i2c.h"
#include"uart.h"
#include "pcf8591.h"
#include "LED8x8.h"
#include "timer.h"
#include "1602.h"
#include<stdio.h>
extern unsigned char TempData[8]; //存储显示值的全局变量
/*------------------------------------------------
                   定义端口
------------------------------------------------*/
sbit LATCH1=P2^7;//定义锁存使能端口 段锁存
sbit LATCH2=P2^3;//                 位锁存
/*------------------------------------------------
                   S级延时
------------------------------------------------*/
void DelayS(unsigned char u)
{
 while(u--)
      {
	  DelayMs(250);
	  DelayMs(250);
	  DelayMs(250);
	  DelayMs(250);
	  }
}
/*------------------------------------------------
                   主函数
------------------------------------------------*/
main()
{
 unsigned char doflye=0x55;//用于24c02测试
// unsigned char i;
 unsigned char keynum;     //按键返回值
 int temp;                 //温度值



 Ds1302_Init();   //初始化时钟芯片
 InitUART ();     //初始化串口
 LCD_Init();      //初始化LCD1602
 DelayMs(30);     //稳定
 LCD_Write_String(0,0,"www.doflye.net");//液晶显示测试
 LCD_Write_String(0,1,"LCD1602 test ok!");
 EN_CLR;
 Init_Timer0();

  	   P0=0xff;   //全部点亮
       LATCH1=1;  //段锁存
       LATCH1=0;

       P0=0;      //8位全部选中 
       LATCH2=1;  //位锁存
       LATCH2=0;
 DelayS(1);

 while(1)
     {
          ISendStr(0xae,400,&doflye,1);//写入24c02
		  DelayMs(60);                 //延时为了让24c02自身写入值
		  doflye=0;                    //清零该值,为了验证存储有效性
		  IRcvStr(0xae,400,&doflye,1); //读出doflye的值,并进行如下比较
		  if(doflye==0x55)             //读出与写入值相等,表示操作正确,器件正常
		    printf("1、24c02 测试正常\n");
		  else
		    printf("1、24c02 错误XXXX,请检测杜邦线连接\n");
          DelayS(1);
		  if(2==ADCheck())             //2个电位器调节至中间位置,如果有2路检测到这个数值,表示ADC芯片工作正常,也可以自行添加4路
		    printf("2、ADC 测试正常\n");
		  else
		    printf("2、ADC 错误XXXX,请检测杜邦线连接\n");
          DelayS(1);
		  Ds1302_Write_Time();//写入时间
		  Ds1302_Read_Time(); //读出时间
		  if(time_buf1[1]==10)//判读写入与读出其中之一个数值是否相等,相等表示运行正确
            printf("3、DS1302 测试正常\n");
		  else
		    printf("3、DS1302 测试错误XXXX,请检测杜邦线连接\n");
          DelayS(1);
		  printf("4、检查8位数码管是否全亮\n");
		  DelayS(1);
		  printf("5、J9全部接GND,检查8位LED是否全亮\n");
		  printf("6、J6全部接GND,检查单个共阳数码管是否全亮\n");
		  DelayS(1);

		  printf("7、请插入18B20,请等待!\n");
          DelayS(1);
		  temp=ReadTemperature();//读取温度
          DelayS(1);
          temp=ReadTemperature();//第二次读取温度,以便取得正确值
		  printf("   现在温度 %7.3f 度\n",(float)temp*0.0625);
          DelayS(1);
	      Ds1302_Read_Time(); //读出时间
		  printf("   日期 %02d-%02d-%02d 星期%d\n",(int)time_buf1[1],(int)time_buf1[2],(int)time_buf1[3],(int)time_buf1[7]);//年月周
          printf("   时间 %02d:%02d:%02d\n",(int)time_buf1[4],(int)time_buf1[5],(int)time_buf1[6]);//时分秒
		  DelayS(1);
          printf("8、连接P0口到J24,请按任意矩阵按键!\n");
		  DelayS(1);
		  printf("9、请插入点阵,检查是否全部点亮!\n");
		  printf("   如果正常,请拔掉点阵,防止功耗过大\n");
          
	   while(1)
	        {
          
          keynum=KeyPro(); //读取矩阵键盘的值
          if(keynum!=0xff) //判断是0~15 有效值
		    {
		    printf("矩阵键盘键值是:%02d\n",(int)keynum);//2位数字显示有效值
			Ds1302_Read_Time(); //读出时间
            printf("时间 %02d:%02d:%02d\n",(int)time_buf1[4],(int)time_buf1[5],(int)time_buf1[6]);//时分秒
            DelayMs(50);
			}
			}
	 }
}
/*------------------------------------------------
                 定时器中断子程序
------------------------------------------------*/
void Timer0_isr(void) interrupt 1 
{
 TH0=(65536-2000)/256;		  //重新赋值 2ms
 TL0=(65536-2000)%256;
 
 LED8x8Display();

}

⌨️ 快捷键说明

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