使ç¨æ¹æ³ï¼
1.é¿æSETEN(P3.3,(S3))é®1.5sï¼è¿å
¥æ¶é´è®¾ç½®ç¶æ, é¦å
ç§ä½ä¼éªå¨
2.ææ¶é´+1ï¼P3.4,(S6)ï¼ï¼æè
æ¶é´-1ï¼P3.5,(S9)ï¼ æ¥å¯¹éªå¨çé¨åè¿è¡æ¶é´è®¾ç½®
3.åæSETENé®ï¼è°æ´åéï¼åéä½ä¼éªçï¼éå¤æ¥éª¤2ï¼è®¾ç½®å¥½åéã
4.åæSETENé®ï¼è°æ´å°æ¶ï¼å°æ¶ä½ä¼éªçï¼éå¤æ¥éª¤2ï¼è®¾ç½®å¥½å°æ¶ã
5.åæSETENé®ï¼åè¿å
¥å°æ¥éª¤2ï¼å¦æ¤å¾ªç¯ã
6.å½è®¾ç½®å¥½æ¶é´ï¼åé¿æSETENé®ï¼å³å¯éåºè°æ´ç¶æï¼æ£å¸¸åè½å·¥ä½ã
注æï¼å¦æå¨æé®æä½ä¸ï¼æé®ä¸ç®¡æ¯é¿æè¿æ¯æ£å¸¸æä¸ï¼é½è¦å¨æé®éæ¾æ¶ï¼åçæºæä¼å»æ§è¡ç¸åºçæä½ãå¦ååçæºä¸ç´çå¾
æé®çéæ¾ã
#include "reg52.h"
#define uchar unsigned char
#define uint unsigned int
#define nokey 0xFF
sbit SetEN = P3^3; //(S3)1. æ¶é´è®¾ç½®ä½¿è½; 2. æ¶é´ä½åæ¢
sbit ADDT = P3^4; //(S6)æ¶é´+
sbit DECT = P3^5; //(S9)æ¶é´-
bit Bicker_Floag; //è°æ´æ¶é´çæ¶å,éªçæ å¿ä½
bit Set_Floag; //设置ç¶ææ å¿ä½
uchar Count; //50ms计æ°å¨
uchar Key_Time; //æé®æä¸æ¶é´è®¡æ°å¨
uchar Time_item; //æ¶é´é¡¹æ å¿ 0:ç§ 1:å 2:å°æ¶
uchar time_reg[3];
uchar code LEDcode[11]={
0xFC, /*0*/
0x60, /*1*/
0xDA, /*2*/
0xF2, /*3*/
0x66, /*4*/
0xB6, /*5*/
0xBE, /*6*/
0xE0, /*7*/
0xFE, /*8*/
0xF6, /*9*/
0x00};//å
±é´æ代ç
void ini()
{
Time_item = 0;
Count = 0;
Key_Time = 0;
Bicker_Floag = 0;
Set_Floag = 0;
time_reg[0] = 0; //ç§ç¼å²åºæ¸
é¤
time_reg[1] = 0; //åç¼å²åºæ¸
é¤
time_reg[2] = 0; //æ¶ç¼å²åºæ¸
é¤
TMOD = 0x01;
TH0 = 0x4C;
TL0 = 0x00;
TR0 = 1;
ET0 = 1;
EA = 1;
}
void delay(uint ms)
{
uchar i;
for(;ms>0;ms--)
{
i=150;
while(i--);
}
}
void display()
{
uchar i,j;
j=0xF8;
for(i=0; i<3; i++)
{
P0 = LEDcode[time_reg[i]%10]; // ä½ä½
P2 &= j; //æå¼ä½ç
if(Bicker_Floag==1 && Time_item==i) P2 |= 0x07; //å
³éæ¾ç¤º
delay(2);
P2 |= 0x07; //å
³éæ¾ç¤º
j++;
P0 = LEDcode[time_reg[i]/10]; // é«ä½
P2 &= j;
if(Bicker_Floag==1 && Time_item==i) P2 |= 0x07; //å
³éæ¾ç¤º
delay(2);
P2 |= 0x07;
j++;
}
}
uchar keyscanf()
{
uchar i,key;
Key_Time = 0;
i = P3;
i &= 0x78;
if(i == 0x78) return(nokey);
display(); //å»æå¨
i = P3;
i &= 0x78;
if(i == 0x78) return(nokey);
key = i;
while(i!=0x78) //çå¾
éæ¾æé®
{
i = P3;
i &= 0x78;
display();
if(++Key_Time==255) Key_Time=100;
display();
}
switch(key)
{
case 0x70: return(1);
case 0x68: return(2);
case 0x58: return(3);
case 0x38: return(4);
default: return(nokey);
}
}
void Settime(uchar sn)
{
uchar i;
if(sn==1)
{
if(Key_Time<=20) goto a;
Set_Floag = 1; //è¿å
¥è®¾ç½®æ¶é´æ å¿ä½
while(1)
{
do
{
i=keyscanf();
display();
}
while(i==nokey);
if(i==1)
{
if(Key_Time>=20) break;
if(++Time_item == 3) Time_item =0;
}
if(i==2)
{
if(Time_item == 2)
{
if(++time_reg[Time_item]==24) time_reg[Time_item]=0;
}
else if(++time_reg[Time_item]==60) time_reg[Time_item]=0;
}
if(i==3)
{
if(time_reg[Time_item]==0)
{
if(Time_item==2) time_reg[Time_item]=24;
else time_reg[Time_item]=60;
}
time_reg[Time_item]--;
}
}
a: Set_Floag = 0; //éåºè®¾ç½®æ¶é´æ å¿ä½
Bicker_Floag = 0; //æ°ç 管æ¾ç¤ºéªçæ å¿ä½å
³
}
}
void TIMER0() interrupt 1
{
TR0 = 0;
TH0 = 0x4C;
TL0 = 0x00;
TR0 = 1;
if(!Set_Floag)
{
if(++Count==20)
{
Count = 0;
if(++time_reg[0]==60)
{
time_reg[0] = 0;
if(++time_reg[1] == 60)
{
time_reg[1] = 0;
if(++time_reg[2] == 24)
time_reg[2] = 0;
}
}
}
}
else
{
Count++;
if(Count==1) Bicker_Floag = 0;
if(Count==10) Bicker_Floag = 1; //亮æ¶é´
if(Count==12) Count = 0; //çæ¶é´
}
}
void main()
{
ini();
while(1)
{
display();
Settime(keyscanf());
}
}
温馨提示:内容为网友见解,仅供参考
STC89c52单片机设计6位数码管电子钟时钟
{s1num=0;write_com(0x0c);TR0=1;}
stc89c52是stc的哪种型号?
STC89C52RC是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K字节系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但是做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的...
求STC89c52详细介绍。说说它与51的区别,以及STC系列单片机的特点,优点...
与51的主要区别是:51只有4K程序存储空间,52有8K51只有128字节数据存储空间,52有256个51只有2个定时器,52有3个。STC单片机是以51内核为主的系列单片机,STC单片机是宏晶生产的单时钟\/机器周期的单片机,是高速、低功耗、超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8—12倍,内...
...如stc89c52,这样子,麻烦大神帮我一一列一下吧
STC的单片机,FLASH存储器最大可达62K,你这么点小程序算是小菜一碟了。STC89系列的就有62K的,不过,你用不了这么大,也不用买这么大的内存的。如下图,可选一款吧。还是STC89系列,什么也不用改,头文件也不用改,只要你愿意花钱买一片就行。画红圈那一项,就是FLASH内部。不过,你既然选STC...
跪求!!!STC89C52单片机,用八个按键控制分别控制八个LED灯的代码(C语言...
检测端口电平并做如下判断{case 0xfe:P0=dofly_table[1];LED0=0;break;\/\/0xfe = 1111 1110,\/\/说明连接在P3.0端口的按键被按下,显示对应的数字然后跳出循环case 0xfd:P0=dofly_table[2];LED1=0;break;\/\/调用表中的第三个\/\/元素 0xa4 下标 0 才表示数组中的第一个元素case 0xfb:P0=...
【求单片机C语言程序】STC89C52通过两个外部中断P3.2和P3.3,来控制P1....
void INT0_ROUTING() interrupt 0\/\/外部中断0子程序 { P0=0xfe;\/\/LED0点亮 while((P3|0xfb)==0xff);\/\/等待外部中断0口(P3^2松开)delay(10);\/\/延时去抖动 P0=0xff;\/\/LED0熄灭 } void INT0_ROUTING() interrupt 2 { P0=0xfd;\/\/LED1点亮 while((P3|0xf7)==0xff);\/\/等待外部...
寒假打算学习一下单片机,不知道哪个单片机开发板好?
吴鉴鹰单片机开发板 资源介绍 1、一个CH340的USB转UART芯片,实现USB下载程序,为无串口的笔记本电脑提供下载方便。2、板子上电源入口有一个自恢复保险丝,可以有效的保护您的电脑主板和开发板。加上这个保险,作为初学的你,即使不小心短路了,也不会烧主板和单片机。3、板子自带单片机,一个STC89C52RC,...
STC89C52单片机USB转串口下载这个问题怎么解决?望高手帮忙!虽字有点...
1.冷启动:冷启动就是,你先插上串口USB线,先点STC-ISP的程序下载,再按下电源开关;如果已经接通了电源,就按电源关闭MCU供电,再开一次就行了。2.单片机出厂时内部的程序,在你下载程序的时候,可以不用管它的,单片机烧入程序的时候都是从起始地址开始写的,也就是说会把原来的程序覆盖掉,对...
单片机的 分类
(4)OTPROM型\/EPROM型\/FLash ROM型 硬件特征 (1)单片机的体积比较小, 内部芯片作为计算机系统,其结构简单,但是功能完善,使用起来十分方便,可以模块化应用。(2)单片机有着较高的集成度,可靠性比较强,即使单片机处于长时间的工作也不会存在故障问题。(3) 单片机在应用时低电压、低能耗,是人们...
单片机按键程序,按一下让LED点亮几秒,再按一下点亮的时间更长
sbit LED=P1^1;unsigned char SZ[]={3,5,7,9,11,13,15} delay1s();void main(){ while(1){ if(K1==0){LED=0,TR1=1};delay1s();LED=1;} } delay1s(){ while(LED=0){ for(i=0;i<k;i++){ TMOD=0x10;TH1=0x3c;TL1=0xb0;while(!TF1);TF1=0;} } } 思路仅供参考...