范文无忧网范文学习范文大全

单片机89c51的电子时钟课程设计

10月25日 编辑 fanwen51.com

[单片机控制的跑马灯课程设计汇编版和c]#include <reg52.h> #define int8 unsigned char #define int16 unsigned int #define Ledout P0 int8 Led[]={0xff,0x7e,0x3c,0x18,0x00}; int8 i; /*延时程序微妙*/ void...+阅读

单片机89c51的电子时钟课程设计

|| #include#include#define uchar unsigned char #define uint unsigned int #define LCD1602_FLAG #define LCD1602_PORT P0 sbit lcd1602_rs=P2^0; sbit lcd1602_e=P2^2; sbit lcd1602_rw=P2^1; sbit lcd1602_busy=P0^7; sbit key_ch=P3^5; sbit key_add=P3^6; sbit key_minus=P3^7; uchar i,sec,min,h,date,month,flag; uint year; uchar *chgstr[7]={" ","sec","min","hour","date","min","year"}; uchar j,k,m,n,o,p; uchar code table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71}; uchar timestr[10],datestr[10]; void init(); void delay(uint); void time_display(); void date_display(); void control(); void time(); /* ************************************ * 函数名称:lcd1602_CheckBusy() * 函数功能:状态查询 ************************************ */ void lcd1602_CheckBusy() { do { lcd1602_busy=1; lcd1602_rs=0; lcd1602_rw=1; lcd1602_e=0; lcd1602_e=1; } while(lcd1602_busy); } /* *************************************** * 函数名称: lcd1602_WriteCmd() * 函数功能:写命令 * 入口参数:命令字 * 出口参数:无 *************************************** */ void lcd1602_WriteCmd(const uchar cmd) { lcd1602_CheckBusy(); lcd1602_rs=0; lcd1602_rw=0; lcd1602_e=1; LCD1602_PORT=cmd; lcd1602_e=0; } /* ******************************************* * 函数名称:lcd1602_WriteData() * 函数功能:写数据 * 入口参数:c--待写数据 * 出口参数:无 ********************************************* */ void lcd1602_WriteData(const uchar c) { lcd1602_CheckBusy(); lcd1602_rs=1; lcd1602_rw=0; lcd1602_e=1; LCD1602_PORT=c; lcd1602_e=0; } /* *********************************************** * 函数名称:lcd1602_Init() * 函数功能:初始化LCD * 入口参数:无 * 出口参数:无 *********************************************** */ void lcd1602_Init() { lcd1602_WriteCmd(0x38); //显示模式为8位2行5*7点阵 lcd1602_WriteCmd(0x0c); //display enable,flag enable,flash enable, lcd1602_WriteCmd(0x06); //flag move to right,screen don't move lcd1602_WriteCmd(0x01); //clear screen } /* ************************************************ * 函数名称:lcd1602_Display() * 函数功能: 字符显示 * 入口参数:ptr--字符或字符串指针 * 出口参数:无 * 说 明:用户可通过以下方式来调用: * 1)lcd1602_Display("Hello,world!"); * 2) INT8U 存储类型 txt[]="要显示的字符串"; * 或者 INT8U 存储类型 txt[]={'t','x','t',..,'\0'}; * INT8U *ptr; * ptr=&txt; * lcd1602_Display(ptr); * 或 lcd1602_Display(txt); * 或 lcd1602_Display(&txt); ************************************************ */ void lcd1602_Display(const uchar *ptr,uchar line,uchar xaddr) { uchar data i=0; uchar *data q; q=ptr; switch(line) { case 0: lcd1602_WriteCmd(0x80+xaddr); while(q!=NULL & (*q!='\0') & i0;y--); } void time_display() { timestr[7]=0x30+sec%10; timestr[6]=0x30+sec/10; timestr[5]=':'; timestr[4]=0x30+min%10; timestr[3]=0x30+min/10; timestr[2]=':'; timestr[1]=0x30+h%10; timestr[0]=0x30+h/10; timestr[8]=0; lcd1602_Display(timestr,1,3); } void date_display() { datestr[9]=0x30+date%10; datestr[8]=0x30+date/10; datestr[7]=':'; datestr[6]=0x30+month%10; datestr[5]=0x30+month/10; datestr[4]=':'; datestr[3]=0x30+year%10; datestr[2]=0x30+year/10%10; datestr[1]=0x30+year/100%10; datestr[0]=0x30+year/1000; lcd1602_Display(datestr,0,2); } void control() { if(!key_ch) { delay(5); if(!key_ch) { flag++; TR0=0; if(flag==7) {flag=0;TR0=1;lcd1602_Init();} lcd1602_Display(chgstr[flag],1,12); } } while(!key_ch); if(flag==1&key_add==0) { while(!key_add); sec++; if(sec==60) sec=0; } if(flag==1&key_minus==0) { while(!key_minus); sec--; if(sec==-1) sec=59; } if(flag==2&key_add==0) { while(!key_add); min++; if(min==60) min=0; } if(flag==2&key_minus==0) { while(!key_minus); min--; if(min==-1) min=59; } if(flag==3&key_add==0) { while(!key_add); h++; if(h==24) h=0; } if(flag==3&key_minus==0) { while(!key_minus); h--; if(h==-1) h=23; } if(flag==4&key_add==0) { while(!key_add); date++; if(date==29) if((year%4!=0)&(month==2)) date=1; if(date==30) if((year%4==0)&(month==2)) date=1; if(date==31) if((month==4)||32313133353236313431303231363533e78988e69d8331333363393039(month==6)||(month==9)...

单片机课程设计

#include #include #define unint unsigned int unint nt=0; void time()interrupt 1 using 1 { TH0=0x3c; TL0=0xb0; nt++; } void main() { unint led=0xfe; TMOD=0x01; TH0=0x3c; TL0=0xb0; EA=1; ET0=1; TR0=1; while

(1) { if(nt%4==0) {P0=led;} eles P0=0; if(nt>40) {led=_crol_(led,1); if(led==0xef) {led=0xfe;} nt=0; }}

输出口为P0口,低电平有效; 可能有些地方有错。 有一条是错了; if(nt%4==0)改为if(nt%8<4)

延伸阅读:

基于单片机的数字时钟怎么做#include#define uchar unsigned char #define uint unsigned int sbit 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...

急基于单片机的数字时钟SECOND EQU 30H ;存储妙 MINITE EQU 31H ;存储分 HOUR EQU 32H ;存储时 SPEAKER BIT P3.7 HOURK BIT P3.2 ;时键 MINITEK BIT P3.3 ;分键 SECONDK BIT P3.0 ;妙键 FLAG BIT 00H FL...

基于单片机的时钟计数器设计89C51 LED电子钟 参考链接: *APPLICATION NOTE E6000 ICEXPLORER *************** * Title: FOR colk_time * * Version: 00 * * Last Updated: * * MCU: AT89C91 * * FOR: W...

利用单片机DS1302芯片编制数字时钟程序:能计算2100之前的秒我也是用ds1302芯片来做电子钟的#include#include#define uchar unsigned char#define uint unsigned intsbit sda=P1^0;sbit clk=P1^1;sbit rst=P1^2;sbit rs=P2^0;sbit rw...

求AT89S5152单片机基于DS1302的数码管实时数字时钟c程序可调#include //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#include sbit SCK=P3^6;//时钟sbit SDA=P3^4;//数据sbit RST = P3^5;// DS1302复位sbit LS138A=P2^...

单片机中实时时钟系统时钟 CPU时钟什么区别通常的理解, 实时时钟是指给日期及时间计数器累加的时钟,通常是32768Hz, 系统时钟是指单片机内部的主时钟,给各个模块提供工作时钟的基础, CPU时钟是指经过CPU的PLL后将系统时钟...

单片机实验设计单片机实验设计,初学51单片机有什么好的视频教程大神推荐一下:;------------------------------------- ;下列程序,经过编译、仿真,符合要求: ;---------------------------------...

C51单片机数字电子时钟课程设计C51单片机数字电子时钟课程设计,单片机课程设计电子时钟程序:#include<reg52.h>#include<absacc.h>#include<intrins.h>#define unit unsigned int#define uchar unsigned cha...

80C51单片机智能频率计课程设计80C51单片机智能频率计课程设计,单片机课程设计:首先明确一下,频率计设计不需要传感器,频率计接转速传感器可以测量转速。 设计思路: 1、信号调理是关键 如果输入信号不是太复杂,...

推荐阅读
图文推荐
栏目列表