待选题目如下:
1、数字钟 要求:24小时制时间显示,可随时进行时间校对调整,整点报时及闹钟功能。
单片机源程序如下:
#include #include //****************************宏定义******************************** typedef unsigned char uchar; typedef unsigned int uint; //****************************位声明******************************** sbit key1=P1^0; sbit key2=P1^1; sbit key3=P1^2; sbit key4=P1^3; sbit beep=P3^0; //************************数码管显示的数值************************** uchar code table[]= { 0x3f,0x06,0x5b,0x4f,0x66,0x6d, 0x7d,0x07,0x7f,0x6f,0x40,0x00 }; //****************************函数声明****************************** void jia(); void jian(); //********************数组定义,数组内含有8个数值****************** uchar table1[8],table2[8],table3[8],table4[8]; //**************************时间显示初始值************************** uchar shi=12,fen=0,miao=0; //**************************定义全局变量**************************** uchar shi1,fen1,miao1,shi2,fen2,miao2,shi3,fen3,miao3; uchar shi4,fen4,miao4; uchar flag, flag1, wss, cnt, cnt1, alm1, alm2, alm3; // 1秒 等时 位闪 次数 校时 闹1 闹2 闹3 uint flag2; // 蜂鸣 //*********************延时函数,用于动态扫描数码管***************** void delay(uchar i) { uchar x,y; for(x=i;x>0;x--) for(y=120;y>0;y--); } //*******************************初始化函数************************* void init() { TMOD=0x01; //工作方式1 TH0=0x3c; //定时时间为:50ms (65536-50000)/256 TL0=0x0b0; //(65536-50000)%256 EA=1; //开总中断 ET0=1; //打开定时器 TR0=1; //启动定时器 beep=0; } //********************显示子函数,用于显示时间数值***************** void display() { uchar i,j; if(cnt!=10||wss==0) { table1[0]=miao%10; //分离秒的个位与十位 table1[1]=miao/10; } else table1[0]=table1[1]=11; if(cnt!=11||wss==0) { table1[3]=fen%10; //分离分的个位与十位 table1[4]=fen/10; } else table1[3]=table1[4]=11; if(cnt!=12||wss==0) { table1[6]=shi%10; //分离时的个位与十位 table1[7]=shi/10; } else table1[6]=table1[7]=11; table1[2]=table1[5]=10; j=0xfb; for(i=0;i<=7;i++) //从秒到时的扫描 { P2=j; P0=table[table1[i]]; //显示数值 delay(10); j=_cror_(j,1); //循环右移 } } //*******************显示子函数,用于显示定时1时间***************** void display1() { uchar i,j; if(alm1==0) { if(cnt!=1||wss==0) { table2[0]=miao1%10; //以下含义同上 table2[1]=miao1/10; } else table2[0]=table2[1]=11; if(cnt!=2||wss==0) { table2[3]=fen1%10; table2[4]=fen1/10; } else table2[3]=table2[4]=11; if(cnt!=3||wss==0) { table2[6]=shi1%10; table2[7]=shi1/10; } else table2[6]=table2[7]=11; } else table2[0]=table2[1]=table2[3]=table2[4]=table2[6]=table2[7]=10; table2[2]=table2[5]=10; j=0xfb; for(i=0;i<=7;i++) { P2=j; P0=table[table2[i]]; delay(10); j=_cror_(j,1); } } //********************显示子函数,用于显示定时2时间****************** void display2() { uchar i,j; if(alm2==0) { if(cnt!=4||wss==0) { table3[0]=miao2%10; //以下含义同上 table3[1]=miao2/10; } else table3[0]=table3[1]=11; if(cnt!=5||wss==0) { table3[3]=fen2%10; table3[4]=fen2/10; } else table3[3]=table3[4]=11; if(cnt!=6||wss==0) { table3[6]=shi2%10; table3[7]=shi2/10; } else table3[6]=table3[7]=11; } else table3[0]=table3[1]=table3[3]=table3[4]=table3[6]=table3[7]=10; table3[2]=table3[5]=10; j=0xfb; for(i=0;i<=7;i++) { P2=j; P0=table[table3[i]]; delay(10);
上一篇:51单片机使用DAC0832编程输出方波,锯齿波,三角波,正弦波
下一篇:基于51单片机的多功能时钟温度计 DS1302+LCD1602
设计资源 培训 开发板 精华推荐
- L5963Q评估板
- OM15020: 面向ZigBee的JN5169 USB Dongle
- 使用 Microchip Technology 的 MIC2774L-XXBM5 的参考设计
- 附开发全流程#100米±2mm高精度激光测距仪
- PAM8013 3W单声道D类音频放大器典型应用
- MC33072ADR2G 快速建立逆变器的典型应用
- LTC1099 ADC 使基于 PC 的数据采集板能够在 DC-20kHz 范围内工作
- 使用 Allegro MicroSystems 的 A8501 的参考设计
- AL8806EV2,基于 AL8806 12VAC LED 驱动器的评估板
- RDR-201 - 6W恒定电压(CV)适配器
- 新突破!超高速内存,为英特尔至强6性能核处理器加速
- 将vRAN站点整合至单服务器,助力运营商降低总体拥有成本
- Allegro MicroSystems 在 2024 年德国慕尼黑电子展上推出先进的磁性和电感式位置感测解决方案
- 左手车钥匙,右手活体检测雷达,UWB上车势在必行!
- 狂飙十年,国产CIS挤上牌桌
- 神盾短刀电池+雷神EM-i超级电混,吉利新能源甩出了两张“王炸”
- 浅谈功能安全之故障(fault),错误(error),失效(failure)
- 智能汽车2.0周期,这几大核心产业链迎来重大机会!
- 美日研发新型电池,宁德时代面临挑战?中国新能源电池产业如何应对?
- Rambus推出业界首款HBM 4控制器IP:背后有哪些技术细节?