#include"reg51.h"
#defineuchar unsigned char
uchardisplay_code[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
uchartime[]={0,0,0,0};
voiddelay05ms(void)
{
uchar i;
for(i=250;i>0;i--);
}
voiddisplay()
{
uchar i,k;
k=0x80;
for(i=0;i<8;i++)
{
P2=0;
P0=display_code[time[i]/10];
P2=k;
k=k>>1;
delay();
P0=display_code[time[i]%10];
P2=k;
k=k>>1;
delay();
}
P2=0;
}
voidcalc()
{
time[2]++;
if(time[2]>59)
{
time[2]=0;
time[1]++;
if(time[1]>59)
{
time[1]=0;
time[0]++;
if(time[0]>23)
{
time[0]=0;
}
}
}
voidmain(void)
{
uchari;
while(1)
{
for(i=0;i<250;i++)
{
display();
}
calc();
}
}
简易电子时钟。。
追问这个不错,是51单片机的吗,如果能解释下代码就好了,抱歉,我是小白
追答#include"reg51.h" //包含的库文件
#define uchar unsigned char //定义常量 uchar代表unsigned char
uchardisplay_code[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
//上面这行定义是共阳极数码管显示0-9,A-F
uchartime[]={0,0,0,0}; //定义中间就是,用于计算时分秒
voiddelay05ms(void) // 这个函数定义0.5s左右的时间
{
uchar i;
for(i=250;i>0;i--);
}
voiddisplay() //这是显示的程序
{
uchar i,k;
k=0x80; //
for(i=0;i>1;//移到下一位显示,以下类同
delay();
P0=display_code[time[i]%10];
P2=k;
k=k>>1;
delay();
}
P2=0;
}
voidcalc()//这是上电后计算时分秒之关系
{
time[2]++;//秒加1
if(time[2]>59)//当秒大于59时
{
time[2]=0;//秒等于0
time[1]++;//分钟加1
if(time[1]>59) //分大于59时
{
time[1]=0;//分钟为0
time[0]++;//小时加1
if(time[0]>23) //小时大于23时,
{
time[0]=0;//小时为0
}
}
}
voidmain(void) //主函数
{
uchari;
while(1)
{
for(i=0;i<250;i++)
{
display(); //调用显示程序
}
calc();//调用计算函数
}
}
我是小白,就像楼上的就好
求个简单的单片机程序,最好能有电路图
include"reg51.h"defineuchar unsigned char uchardisplay_code[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};uchartime[]={0,0,0,0};voiddelay05ms(void){ uchar i;for(i=250;i>0;i--);} voiddisplay(){ uchar i,k;k=0x80...
如何自己做一个最简单的单片机?希望各位大神能把制作要用的元器件的个...
复位电路:上电复位对于单片机来说是必不可少的,复位电路只需要一个10uf电解电容以及一个10k下拉电阻,如果测试时需要手动复位的机制可以加一个轻触开关,RST端接单片机的RST引脚即可,电路图如下:晶振电路:晶振电路也很简单,即一个无源晶体振荡器加上两个起振电容,起振电容的大小根据晶振的频率决定,...
求写程序!89C52单片机,按按键1点亮LED,按按键2熄灭LED,两个按键另一...
求写程序!我的是89C52单片机,想用两个按键和一个LED来实现,按下按键1点亮LED,按下按键2熄灭LED,两个按键另一端是接5V,LED另一端也是接5V。最好配上原理图。感激不尽 提醒一下:两个按键另一端接5V地!!!电路参考如下:代码参考如下:include<reg52.h> sbit LED = P2^7;define ON0 ...
求一个用单片机设计测量电阻电容的电路图
如果是51单片机,最简单但切实可行的电路图方案如下:测电阻:接一个参考电容到p0.0和地之间,待测电阻一头接p1.0,另一头接p0.0,测电容阻:接一个参考电阻到p0.1和p1.1地之间,待测电容一头接p0.1,另一头接地。
单片机数字时钟程序及电路图
_delay_ms(1);LCD_Write_Command(0x0c);\/\/显示模式设置:显示开,无光标,光标不闪烁 _delay_ms(1);LCD_Write_Command(0x01);\/\/清屏幕指令,将以前的显示内容清除 _delay_ms(1);} \/ 函数名称:LCD_POS 输 入:uchar pos 输 出:无 功 能:字符显示位置 \/ void LCD_POS(uchar pos)...
求一个简单的单片机用数码管显示计时60秒的C语言程序,程序一定要带有解...
\/***程序仿真用89c52 数码管用共阳极数码管 P0口段选,P3.0和P3.1位选 定时器2用法见百度“T2CON”***\/ include<reg52.h> define uint unsigned int define uchar unsigned char uchar code num[12]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf}; \/\/共阳极...
...控制步进电机正反转,简单易懂的C语言程序,最好带注释,步进电机部分...
第1行设置由输入端X1作为启动,Y1输出3万个脉冲,脉冲频率600赫兹(每秒600个脉冲的频率),由于只有Y1输出脉冲,没有设置方向输出端,所以电机正转。第3、4行由X2同时启动两行作为反转,Y1输出3万个脉冲,频率为800赫兹,Y1输出脉冲的同时方向输出端Y2同时输出方向信号,因此,电机反转。反转的3万个...
求用C语言编写一个单片机89C51电子时钟程序,有时,分,秒,还有电路图
uchar starts_time[7]={0x00,0x10,0x22,0x20,0x05,0x04,0x10}; \/\/初始化后设置uchar Sec;uchar Cent;uchar Hour;uchar Year;uchar Day;uchar Week;uchar Month;\/***\/ \/\/根据选择调整相应项目void Set(uchar sel,uchar sel_1) { uchar address,time; uchar max,min; if(sel==1)...
AT89S51单片机c语言程序单片机最小系统的硬件原理接线图
为深入理解AT89S51单片机的硬件原理与接线图,本篇将逐一解析关键步骤,以助于构建单片机最小系统。首先,电源接线至关重要。VCC引脚(PIN40)应接入电源正极,GND引脚(PIN20)则连接至电源地线,确保单片机正常供电。为避免电源纹波对系统性能造成干扰,建议在VCC与GND之间并联一个0.1uF的退耦电容,有效滤...
求一个关于单片机的蜂鸣器的C语言程序,如果好,可行的话有追加分~
6. 报警产生器 1. 实验任务 用P1.0输出1KHz和500Hz的音频信号驱动扬声器,作报警信号,要求1KHz信号响100ms,500Hz信号响200ms,交替进行,P1.7接一开关进行控制,当开关合上响报警信号,当开关断开告警信号停止,编出程序。2. 电路原理图 图4.6.1 3. 系统板上硬件连线 (1. 把“单片机...