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

📄 main.c

📁 可以显示年月日,时间等,也可以设置闹钟,设定时间
💻 C
字号:
/*-----------------------------------------------------*
*工 程 名:Lcd.prj                                      *
*硬件连接: 1.LCD的DB0-7与MCU的B口的PTB0-7连接          *
*          2.LCD的RS,R/W,E与MCU的PTC0,PTC1,PTC2连接    *
*功能:1.初始显示:"Wait Receiving.." "Soochow 2005.08"  *
*     2.等待接收字符,当收到32个字符时显示,重复此功能   *
*----------《嵌入式应用技术基础教程》教学实例---------*/
/*[头文件]*/
#include "SCI.h"       //串行通信子程序头文件
#include "GP32C.h"        //包含头文件
#include "KB.h"               //键盘中断头文件
/*[函数声明]*/
extern void lcdshow(unsigned char *str1,unsigned char *str2);
extern void SCIInit(void);
extern void Akey(void);
void sys_init(unsigned char time[],unsigned int data[],unsigned char alart[] );         //闹钟时间日期的显示的初始化
void Timer1init(void);
/*[主程序]*/
#define TSTOPBit   5      //定时器计数停止位
#define TOFBit     7      //定时器溢出标志位
unsigned char time[3], *str1,*str2,alart[2];      //存放时、分、秒
unsigned int  data[3]={1,7,2007};      //存放日,月,年
unsigned char clockstr[],datestr[],naozhong=0,KB_valve=0;
void main()
 {   
     unsigned char i; 
	 unsigned char j;
	 DDRA=0x0ff;  //定义pta口为输出
     PTA=0x00;   // 初值是0
 	 asm("SEI");               //关总中断             
 	 KB_Init();                 //键盘初始化
 	 SCIInit();             //调串行口初始化子程序
 	 Timer1init();             //调定时器1初始化子程序
 	 SCC2|=(1<<5);             //令SCC2.5=1,允许接收中断
 	 INTKBSCR&= ~(1<<IntBit); //开放键盘中断(IMASKk=1)
	 asm("CLI");               //开总中断
	 i=time[0];
	 while(1)
	{ 
	  j=time[0];    
	  if (i!=j)                      //数组已经更新
	     {  sys_init( time, data, alart ); 
	     lcdshow((unsigned char *)datestr,(unsigned char *)clockstr); i=j;} //发送新数据
	   if(naozhong==1)
	   {   
	      while(1)
	      {   naozhong=0;
	          if(KB_valve=='0')break;
	      }
	    }
	   if( KB_valve== 'A')Akey();
	   
	   
     }
  }
/*[内部直接调用子程序存放处]*/
/*Timer1init:定时器1初始化子程序-----------------------*
*功能:对定时器1初始化                                  *
*参数:无                                               *
*返回:无                                               *
*-----------------------------------------------------*/
void Timer1init(void)
 {
     //允许溢出中断、不启动计数、分频因子=64
     T1SC=0b01100110;
     //计数寄存器初值=0x0000
     T1CNTH=0x00; T1CNTL=0x00;           
     //1秒产生1次溢出中断,计数寄存器=1×(2457600/64)=9600
     T1MODH=0x96; T1MODL=0x00;
     //允许定时器1计数寄存器计数
     T1SC&=~(1<<TSTOPBit);
 }
 
//if(((time[0]==0)&&(time[1]==0))||((time[1]==alart[0])&&(time[2]==alart[0])))PTA=!PTA;  //闹钟及整点报时
	 // else {PTA=0x00;}

⌨️ 快捷键说明

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