本文目录一览

1,单片机课程设计 电子时钟设计

基于AVR单片机Mega16的电子时钟设计摘要】 Mega16是一款采用先进RISC精简指令,内置A/D的8位单片机,可支持低电压联机Flash和EEPROM写入功能;同时还支持Basic和C等高级语言编程。用它设计电子时钟不仅成本低,硬件简单,而且很容易实现系统移植。介绍了如何利用AVR系列单片机Mega16及1602字符液晶来设计电子时钟的方法,同时给出了相应的电路原理及部分语言程序。
给个邮箱

单片机课程设计 电子时钟设计

2,急求单片机课程设计电子时钟

A方案--------------------------外加一颗时钟芯片DS1302(非常准确)。按键为单片机中断。--------------------------1、上电时自动显示时、分、秒;实现方式:上电时单片机去启动DS1202,然后读取里面的时间值,自动显示时、分、秒;2、设置一个控制按键,按下按键,则时钟以秒为单位开始计时;实现方式:将DS1302此时的值暂时保存,最为计时开始的时间。然后不停地读取DS1302里的新的时间值,并将新的时间值 - 计时开始的时间 = 已计时数值3、运行状态下可通过控制按键使时钟暂停,同时显示已计时数值;实现方式:显示步骤2里的已计时数值。4、停止状态下(已上电),按下复位按钮,时钟复位(清零),并进入下一次计时状态。实现方式:计时开始的时间换成当前时间。B方案--------------------------采用单片机内部定时器计时(不准)。按键为单片机中断。--------------------------步骤类似,不用去读DS1302的时间,读自己内部的时间。

急求单片机课程设计电子时钟

3,C51单片机电子时钟设计思路

程序设计思想和相关指令介绍本系统的主程序主要完成时间显示和定时输出判断功能。而年月日显示和各时间单元进位,时间设定时,调定时间设定时等功能全部在中断服务程序中完成。1.数据与代码转换。由前述可知,从P2 口输出位选码,从P0 口输出段选码,LED 就会显示出数字来。但P0口的输出的数据是要BCD 码,各存储单元存储的是二进制数,也就是和要显示出的字符表达的含义是不一致的。可见,将要显示的存储单元的数据直接送到P0 口去驱动LED 数码管显示是不能正确表达的,必须在系统内部将要显示的数据经过BCD 码行转换后,将各个单元数据的段选代码送入P0 口,给CD4511 译码后去驱动数码管显示。具体转换过程如下:我们先将要显示的数据装入累加器A 中,再将A 中的数据转换成高低两位的BCD 码,再放回A 中,然后将A 中的值输出。如:有一个单元存储了45 这样一位数,则需转换成四位的BCD 码:(0100)(0101)然后放入A 中。 A 中BCD 码,高位四位代表?4?低四位代表?5?同时送给两个译码器中,译码后? 45? 字就在两个LED 中显示出来。2.计时功能的实现与中断服务程序时间的运行依靠定时中断子程序对时钟单元数值进位调整来实现的。计数器T0 打开后,进入计时,满100 毫秒后,重装定时。中断一次,满一秒后秒进位,满60 秒后即为1 分钟,分钟单元进位,60 分到了后,时单元进位,24 小时满后,天单元进位。这样然后根据进率,得到年、月、日、时、分、秒存储单元的值,并经译码后,通过扫描程序送LED 中显示出来,实现时钟计时功能。累加是用指令INC 来实现的。进入中断服务程序以后,执行PUSH PSW 和PUSH A 将程序状态寄存器PSW 的内容和累加器A 中的数据保存起来,这便是所谓的? 保护现场? . 以保护现场和恢复现场时存取关键数据的存储区叫做堆栈。在软件的控制之下,堆栈可在片内RAM 中的任一区间设定,而堆栈的数据存取与一般的RAM 存取又有区别,对它的操作,要遵循? 后进先出? 的原则。3 时间控制功能与比较指令系统的另一功能就是实现对执行设备的定时开关控制,其主要控制思想是这样的:先将执行设备开启的时间和关闭时间置入RAM 某一单元,在计时主程序当中执行几条比较指令,如果当前计时时间与执行设备的设定开启时间相等,就执行一条 CLR 指令,将对应的那路P3 置为高电位,开启;如果当前计时时间与执行设备设定的关闭时间相等,就执行SETB对应的P3 置低电位,二极管截止,。实现此控制功能用到的比较指令为CJNE A,#direct,rel,其转移条件是累加器A 中的值与立即数不等则转移。
用定时器,设置定时时间为20毫秒,50次累加=1秒,累加秒数据60次=1分,依次类推。每次中断完成累加和显示(动态,刷新频率50HZ,应该不会闪烁)
到电子爱好者网上找找吧

C51单片机电子时钟设计思路

4,单片机设计数字电子钟的程序

org 00hajmp startorg 03hajmp jiaorg 0bhajmp saomiaoorg 13hajmp jianorg 1bhajmp jishuorg 2bhstart:mov ie,#10001111bmov ip,#00000010bmov tmod,#00100010bmov th1,#6mov tl1,#6mov th0,#88hmov tl0,#88hsetb it1setb it0mov r4,#11111110bmov sp,#30hmov 20h,#00hmov p3,#0ffhmov r0,#00hmov r1,#00hmov r2,#00hmov r3,#00hmov r5,#00hmov dptr,#tablesetb tr1setb tr0loop:mov a,r0mov b,#40div abjz chulimov r0,#00hinc r5mov a,r5mov b,#100div abjz chulicpl 20h.7mov r5,#00hinc r1mov a,r1cpl amov p2,acpl amov b,#60div abjz chulimov r1,#00hinc r2mov a,r2mov b,#60div abjz chulimov r2,#00hinc r3mov a,r3mov b,#24div abjz chulimov r3,#00hchuli:mov a,r2mov b,#10div abmov 10h,bmov 11h,amov a,r3mov b,#10div abmov 12h,bmov 13h,ajb p3.4,loopmov r1,#00hmov 87h,#01hljmp loopjia:push accinc r2mov a,r2mov b,#60div abjz next1mov r2,#00hnext1:lcall ysclr ie0pop accretijian:push accinc r3mov a,r3mov b,#24div abjz next2mov r3,#00hnext2:lcall ysclr ie1pop accretijishu:inc r0retisaomiao:push accmov a,r4rl amov p0,#0ffhd0:cjne a,#11111110b,d1mov p1,amov r4,amov a,11hjnz zcmov a,r4rl amov p1,azc:mov a,10hmovc a,@a+dptrmov p0,asjmp overd1:cjne a,#11111101b,d2mov p1,amov r4,amov a,11hjz overmovc a,@a+dptrmov p0,asjmp overd2:cjne a,#11111011b,d3mov p1,amov r4,amov a,12hmovc a,@a+dptrmov p0,amov c,20h.7mov p0.7,csjmp overd3:cjne a,#11110111b,d4mov p1,amov r4,amov a,13hjz overmovc a,@a+dptrmov p0,asjmp overd4:mov a,#11111110bajmp d0over:pop accretiys:mov 14h,#0ffha0:mov 15h,#0ffha1:djnz 15h,a1djnz 14h,a0rettable:db 0c0hdb 0f9hdb 0a4hdb 0b0hdb 099hdb 092hdb 082hdb 0f8hdb 080hdb 090hend

5,求C51单片机数字电子时钟课程设计

#include<reg52.h>#include<absacc.h>#include<intrins.h>#define unit unsigned int#define uchar unsigned char//#define HZ 12sbit key0=P0^0; // 分钟调整sbit key1=P0^1; // 小时调整sbit P2_0=P2^7; //秒 指示灯sbit MN_RXD=P3^6;sbit MN_TXD=P3^7;uchar data CLOCK[4]=//数码管显示表0-f 灭uchar code TABLE[]=//**********************************//模拟串口发送一个字节数据 函数 //**********************************void SendData(unsigned char senddata) unsigned char i; for(i=0;i<8;i++) if((senddata&0x01)==0) MN_RXD=0; else MN_RXD=1; _nop_(); MN_TXD=0; _nop_(); MN_TXD=1; senddata=senddata>>1; }}//**********************************//显示程序函数//**********************************void display(void)// unsigned int n; uchar temp; temp=CLOCK[1]; temp=temp%10; SendData(TABLE[temp]); temp=CLOCK[1]; temp=temp/10; SendData(TABLE[temp]); temp=CLOCK[2]; temp=temp%10; SendData(TABLE[temp]); temp=CLOCK[2]; temp=temp/10; SendData(TABLE[temp]); temp=CLOCK[3]; temp=temp%10; SendData(TABLE[temp]); temp=CLOCK[3]; temp=temp/10; SendData(TABLE[temp]);/* for(n=0;n<5000;n++); for(n=0;n<6;n++) SendData(TABLE[10]); }*/ }//**********************************//按键控制函数//**********************************void keycan() unsigned int n; EA=0; if(key0==0) // 分钟调整 for(n=0;n<10000;n++); //延时去抖动 while(key0==0); CLOCK[2]=CLOCK[2]+1; if(CLOCK[2]==60) //到一时 CLOCK[2]=0; } display(); } if(key1==0) // 小时调整 for(n=0;n<10000;n++); //延时去抖动 while(key1==0); CLOCK[3]=CLOCK[3]+1; if(CLOCK[3]==24) CLOCK[3]=0; } display(); } EA=1;} //**********************************//T0中断服务函数//**********************************void time0() interrupt 1 //using 1 TH0=0xD8; TL0=0xF0; //重置初值// TH0=0xB1; TL0=0xE0; //时钟处理 CLOCK[0]=CLOCK[0]+1;}//**********************************//主函数//**********************************void main() EA=1; ET0=1; TMOD=0x01; //T0方式1定时 TH0=0xD8; TL0=0xF0; //D8F0 定时10ms// TH0=0xB1; TL0=0xE0; //定时 20ms TR0=1; for(;;) if(CLOCK[0]==100) //到一秒 10ms*100 CLOCK[0]=0; P2_0=~P2_0; CLOCK[1]=CLOCK[1]+1; if(CLOCK[1]==60) //到一分 CLOCK[1]=0; CLOCK[2]=CLOCK[2]+1; if(CLOCK[2]==60) //到一时 CLOCK[2]=0; CLOCK[3]=CLOCK[3]+1; if(CLOCK[3]==24) CLOCK[3]=0; } } } display(); } keycan(); }}

6,单片机c语言设计电子时钟

给你参考参考#include<reg52.h>#define uchar unsigned char #define uint unsigned intsbit dula=P2^6;sbit wela=P2^7;sbit rs=P3^5;sbit lcden=P3^4;sbit s1=P3^0;sbit s2=P3^1;sbit s3=P3^2;sbit rd=P3^7;uchar count,s1num;char miao,shi,fen;uchar code table[]=" 2007-7-30 MON";uchar code table1[]=" 00:00:00";void delay(uint z) uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--);}void write_com(uchar com) rs=0; lcden=0; P0=com; delay(5); lcden=1; delay(5); lcden=0; }void write_date(uchar date) rs=1; lcden=0; P0=date; delay(5); lcden=1; delay(5); lcden=0; }void init() uchar num; dula=0; wela=0; lcden=0;// fen=59;// miao=53;// shi=23; write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x01); write_com(0x80); for(num=0;num<15;num++) write_date(table[num]); delay(5); } write_com(0x80+0x40); for(num=0;num<12;num++) write_date(table1[num]); delay(5); } TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1;}void write_sfm(uchar add,uchar date) uchar shi,ge; shi=date/10; ge=date%10; write_com(0x80+0x40+add); write_date(0x30+shi); write_date(0x30+ge);}void keyscan() rd=0; if(s1==0) delay(5); if(s1==0) while(!s1); if(s1num==1) TR0=0; write_com(0x80+0x40+10); write_com(0x0f); } } if(s1num==2) write_com(0x80+0x40+7); } if(s1num==3) write_com(0x80+0x40+4); } if(s1num==4) s1num=0; write_com(0x0c); TR0=1; }} if(s1num!=0) if(s2==0) delay(5); if(s2==0) while(!s2); if(s1num==1) miao++; if(miao==60) miao=0; write_sfm(10,miao); write_com(0x80+0x40+10);} if(s1num==2) fen++; if(fen==60) fen=0; write_sfm(7,fen); write_com(0x80+0x40+7); } if(s1num==3) shi++; if(shi==24) shi=0; write_sfm(4,shi); write_com(0x80+0x40+4); } } } if(s3==0) delay(5); if(s3==0) while(!s3); if(s1num==1) /* if(miao==0) miao=59; write_sfm(10,miao); write_com(0x80+0x40+10); }*/ miao--; if(miao==-1) miao=59; write_sfm(10,miao); write_com(0x80+0x40+10); } if(s1num==2) fen--; if(fen==-1) fen=59; write_sfm(7,fen); write_com(0x80+0x40+7); } if(s1num==3) shi--; if(shi==-1) shi=23; write_sfm(4,shi); write_com(0x80+0x40+4); } } } }}void main() init(); while(1) keyscan(); }// while(1);}void timer0() interrupt 1 TH0=(65536-50000)/256; TL0=(65536-50000)%256; count++;if(count==18) count=0; miao++; if(miao==60) miao=0; fen++; if(fen==60) fen=0; shi++; if(shi==24) shi=0; } write_sfm(4,shi); } write_sfm(7,fen); } write_sfm(10,miao); } }
单片机电子时钟设计c语言程序资料我提供给你。

7,单片机课程设计电子时钟程序

#include &lt;at89x51.h&gt; //头文件包含#define uchar unsigned char //宏定义#define uint unsigned int#define ON 0 //定义0为打开#define OFF 1 //定义1为关闭#define LEDBus P1 //定义p1口为数码管段码口sbit MIAO =P1^2; //秒点sbit HOU_S=P3^0; //时十位位选sbit HOU_G=P3^1; //时个位位选sbit MIN_S=P3^2; //分十位位选sbit MIN_G=P3^3; //分个位位选sbit H_KEY=P3^4; //时调整键sbit M_KEY=P3^5; //分调整键bit SHAN; //闪烁标志位uchar second,minute,hour; //定义秒、分、时寄存器uchar code LEDTab[]=0x45,0x87,0x25,0x24,0x57,0x04,0x05};void delay(uchar t); //延时函数void init(); //初始化函数void display(); //显示函数void min_tiao(); //分调整函数void hou_tiao(); //时调整函数/***************************************函 数 名:main功 能:主函数说 明:入口参数:无返 回 值:无 ****************************************/void main()init(); //调用初始化函数while(1) //主程序循环 if(!H_KEY) hou_tiao(); //如果时调整键按下(为0),调用时调整函数 if(!M_KEY) min_tiao(); //如果分调整键按下(为0),调用分调整函数 display(); //调用显示函数}}/***************************************函 数 名:init功 能:初始化函数说 明:初始化定时器及中断入口参数:无返 回 值:无 ***************************************/void init()TMOD=1;TH0=0X3C;TL0=0XB0; //定时器0模式1,50毫秒ET0=1;TR0=1;EA=1; //开定时器0中断、启动定时器0、开总中断}/***************************************函 数 名:display功 能:显示函数说 明:入口参数:无返 回 值:无 ***************************************/void display()LEDBus=LEDTab[minute%10]; //分个位送数码管显示MIAO=SHAN; //秒点闪烁MIN_G=ON; //打开分个位位选delay(1); //显示1毫秒MIN_G=OFF; //关闭分个位位选LEDBus=LEDTab[minute/10]; //分十位送数码管显示MIAO=SHAN; //秒点闪烁MIN_S=ON; //打开分十位位选delay(1); //显示1毫秒MIN_S=OFF; //关闭分十位位选LEDBus=LEDTab[hour%10]; //时个位送数码管显示HOU_G=ON; //打开时个位位选delay(1); //显示1毫秒HOU_G=OFF; //关闭时个位位选if(hour/10) //如果时十位为0,不显示十位数字 LEDBus=LEDTab[hour/10]; //时十位送数码管显示 HOU_S=ON; //打开时十位位选 delay(1); //显示1毫秒 HOU_S=OFF; //关闭时十位位选}}/***************************************函 数 名:min_tiao功 能:分调整说 明:入口参数:无返 回 值:无***************************************/void min_tiao()while(!M_KEY) display(); //等待分调整键松开second=0;minute++; //秒清零、分加1if(minute==60) minute=0; //如果分等于60,分变0}/***************************************函 数 名:hou_tiao功 能:时调整说 明:入口参数:无返 回 值:无 ***************************************/void hou_tiao()while(!H_KEY) display(); //等待时调整键松开second=0;hour++; //秒清零,时加1if(hour==24) hour=0; //如果时等于24,时变0}/***************************************函 数 名:delay功 能:延时函数说 明:入口参数:t:延时时间长短返 回 值:无 ***************************************/void delay(uchar t)uchar i; //定义变量for(;t&gt;0;t--) //如果t大于0,t减1(外层循环) for(i=124;i&gt;0;i--); //i等于124,如果i大于0,i减1}/***************************************函 数 名:timer0功 能:定时器0中断函数说 明:入口参数:无返 回 值:无 ***************************************/void timer0() interrupt 1 //定时器0(中断1)uchar tim1,tim2; //定义临时变量TL0=TL0+0XB0;TH0=0X3C; //重装定时器初值tim1++; //每中断一次tim1加1if(tim1==10) //中断10(0.5秒) SHAN=!SHAN; //闪烁标志取反 tim1=0;tim2++; //tim1清零,tim2加1 if(tim2==2) //到了1秒 tim2=0;second++; //tim2清零,秒加1 if(second==60) //如果秒到60 second=0;minute++; //秒变0,分加1 if(minute==60) //如果分到60 minute=0;hour++; //分变0,时加1 if(hour==24) hour=0; //如果时到24,时变0 } } }}}/***************************************program end 程序结束

文章TAG:单片机  电子  课程  课程设计  单片机电子钟课程设计  电子时钟设计  
下一篇