12864的时钟,采用stc15w4k58s4芯片
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
单片机代码:
- #include<stc15.h>
- #include<intrins.h>
- #include<gpio.h>
- #define uchar unsigned char
- #define uint unsigned int
- uchar numbuf;
- uchar con1s;
- //uchar flash;
- uchar clkey;
- uchar secp,secd,minp,mind,hou,houp,houd;
- #include<LCD12864.h>
- uchar mip,mid,hop,hod;
- uchar dis[]={0x02,0x03,0x05,0x06,0x02,0x06};
- uchar alarm1[]={0x02,0x03,0x05,0x08};
- uchar temp_num[]={0x00,0x00,0x00,0x00};
- #include<scan_1286.h>
- #include<alarm_scan.h>
- #include<flag.h>
- #include<keyscan.h>
- #include<alarm.h>
- void Timer0Init(void) //50毫秒@11.0592MHz
- {
- AUXR &= 0x7F; //定时器时钟12T模式
- TMOD &= 0xF0; //设置定时器模式
- TL0 = 0x00; //设置定时初值
- TH0 = 0x4C; //设置定时初值
- TF0 = 0; //清除TF0标志
- TR0 = 1; //定时器0开始计时
- ET0=1;
- }
- void fuzhi()
- {
- secp=(dis[5]);
- secd=(dis[4]);
- minp=(dis[3]);
- mind=(dis[2]);
- houp=(dis[1]);
- houd=(dis[0]);
- mip=(alarm1[3]);
- mid=(alarm1[2]);
- hop=(alarm1[1]);
- hod=(alarm1[0]);
-
-
- }
- void main()
- {
- gpio();
- Timer0Init();
- fuzhi();
- Init_lcd();
- Clr_Scr();
- EA=1;
- while(1)
- { keyscan();
- alarm();
- scan_1286(2);
- fla();
- }
- }
- void time0(void) interrupt 1
- {
- con1s++;
- if(con1s==20)
- {
- con1s=0;
- secp++;//秒计时计数-个位
- if(secp>=10)
- {
- secp=0;
- secd++; //秒计时-十位
- if(secd>=6)
- {
- secd=0;
- minp++;//分计时-个位
- if(minp>=10)
- {
- minp=0;
- mind++; //分计时十位
- if(mind>=6)
- {
- mind=0;
- houp++;
- if(houd<2)
- {
- if(houp>=10)
- houp=0;
- houd++;
- if(houd>=3)
- houd=0;
- }
- else if(houd>=2)
- {if(houp>=4)
- {houp=0;houd=0;}}
- }
- }
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
12864.zip
(74.7 KB, 下载次数: 47)
|