当前位置:文档之家› 数字时钟c语言代码

数字时钟c语言代码

数字时钟c语言代码
数字时钟c语言代码

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY SECOND1 IS

PORT(CLKS,CLR:IN STD_LOGIC;

SECS,SESG:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);

COUT1:OUT STD_LOGIC);

END SECOND1;

ARCHITECTURE S OF SECOND1 IS

BEGIN

PROCESS(CLKS,CLR)

V ARIABLE SS,SG:STD_LOGIC_VECTOR(3 DOWNTO 0);

V ARIABLE CO:STD_LOGIC;

BEGIN

IF CLR='1' THEN SS:="0000";SG:="0000";

ELSIF CLKS'EVENT AND CLKS='1' THEN

IF (SS="0101") AND (SG="1001") THEN

SS:="0000";SG:="0000";CO:='1';

ELSIF SG<"1001" THEN

SG:=SG+1;CO:='0';

ELSIF SG="1001" THEN

SG:="0000";SS:=SS+1;CO:='0';

END IF;

END IF;COUT1<=CO;

SECS<=SS;

SESG<=SG;

END PROCESS;

END S;

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY MIN1 IS

PORT(CLKM,CLR:IN STD_LOGIC;

MINS,MING:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);

ENMIN,ALARM:OUT STD_LOGIC);

END MIN1;

ARCHITECTURE M OF MIN1 IS

BEGIN

PROCESS(CLKM,CLR)

V ARIABLE MS,MG:STD_LOGIC_VECTOR(3 DOWNTO 0);

V ARIABLE SO,ALM:STD_LOGIC;

BEGIN

IF CLR='1' THEN MS:="0000";MG:="0000";

ELSIF CLKM'EVENT AND CLKM='1' THEN

IF (MS="0101") AND (MG="1001") THEN

MS:="0000";MG:="0000";SO:='1';ALM:='1';

ELSIF MG<"1001" THEN

MG:=MG+1;SO:='0';ALM:='0';

ELSIF MG="1001" THEN

MG:="0000";MS:=MS+1;SO:='0';ALM:='0';

END IF;

END IF;

ALARM<=ALM;

ENMIN<=SO;

MINS<=MS;

MING<=MG;

END PROCESS;

END M;

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY HOUR1 IS

PORT(CLKH,CLR:IN STD_LOGIC;

HOURS,HOURG:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END HOUR1;

ARCHITECTURE H OF HOUR1 IS

BEGIN

PROCESS(CLKH,CLR)

V ARIABLE HS,HG:STD_LOGIC_VECTOR(3 DOWNTO 0);

BEGIN

IF CLR='1' THEN HS:="0000";HG:="0000";

ELSIF CLKH'EVENT AND CLKH='1' THEN

IF (HS="0010") AND (HG="0011") THEN

HS:="0000";HG:="0000";

ELSIF HG<"1001" THEN

HG:=HG+1;

ELSIF HG="1001" THEN

HG:="0000";HS:=HS+1;

END IF;

END IF;

HOURS<=HS;

HOURG<=HG;

END PROCESS;

END H;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY JIAOFEN IS

PORT(EN,CLK,SECIN,M1:IN STD_LOGIC;

MINSET:OUT STD_LOGIC);

END JIAOFEN;

ARCHITECTURE F OF JIAOFEN IS

BEGIN

PROCESS(EN,M1)

BEGIN

IF EN='1' THEN

IF M1='1' THEN

MINSET<=CLK;

ELSE MINSET<=SECIN;

END IF;

ELSE MINSET<=SECIN;

END IF;

END PROCESS;

END F;

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY JIAOSHI IS

PORT(EN,CLK,MININ,H1:IN STD_LOGIC;

HOURSET:OUT STD_LOGIC);

END JIAOSHI;

ARCHITECTURE J OF JIAOSHI IS

BEGIN

PROCESS(EN,H1)

BEGIN

IF EN='1' THEN

IF H1='1' THEN

HOURSET<=CLK;

ELSE HOURSET<=MININ;

END IF;HOURSET<=MININ;

END IF;

END PROCESS;

END J;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_ARITH.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY TOP IS

PORT(CLKS,CLK,CLR,EN,M1,H1:IN STD_LOGIC;

BAO,ALARM:OUT STD_LOGIC;

SECS,SESG,MINS,MING,HOURS,HOURG:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0));

END TOP;

ARCHITECTURE ONE OF TOP IS

COMPONENT SECOND1

PORT(CLKS,CLR:IN STD_LOGIC;

SECS,SESG:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);

COUT1:OUT STD_LOGIC );

END COMPONENT;

COMPONENT MIN1

PORT(CLKM,CLR:IN STD_LOGIC;

MINS,MING:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);

ENMIN,ALARM:OUT STD_LOGIC );

END COMPONENT;

COMPONENT HOUR1

PORT(CLKH,CLR:IN STD_LOGIC;

HOURS,HOURG:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0) );

END COMPONENT;

COMPONENT JIAOFEN

PORT(EN,M1,CLK,SECIN:IN STD_LOGIC;

MINSET:OUT STD_LOGIC );

END COMPONENT;

COMPONENT JIAOSHI

PORT(EN,H1,CLK,MININ:IN STD_LOGIC;

HOURSET:OUT STD_LOGIC );

END COMPONENT;

SIGNAL A,B,C,D:STD_LOGIC;

BEGIN

U1:SECOND1 PORT MAP(CLR=>CLR,SECS=>SECS,SESG=>SESG,CLKS=>CLK,COUT1=>A);

U2:MIN1 PORT MAP(CLR=>CLR,ALARM=>ALARM,MINS=>MINS,MING=>MING,CLKM=>B,ENMIN=>C );

U3:HOUR1 PORT MAP(CLR=>CLR,HOURS=>HOURS,HOURG=>HOURG,CLKH=>D);

U4:JIAOFEN PORT MAP(EN=>EN,M1=>M1,CLK=>CLK,SECIN=>A,MINSET=>B);

U5:JIAOSHI PORT MAP(EN=>EN,H1=>H1,CLK=>CLK,MININ=>C,HOURSET=>d); PROCESS(CLKS,CLK)

BEGIN

IF CLKS'EVENT AND CLKS='1' THEN

IF (SECS="0000")AND(SESG="0000")AND(MINS="0000")AND(MING="0000") THEN

BAO<=CLK ;

ELSE BAO<='0';END IF;

END IF;END PROCESS;

end one;

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY JIAOMIAO IS

PORT(EN,CLK,O1:IN STD_LOGIC;

MIAOSET:OUT STD_LOGIC);

END JIAOMIAO;

ARCHITECTURE O OF JIAOMIAO IS

BEGIN

PROCESS(EN,O1)

BEGIN

IF EN='1' THEN

IF O1='1' THEN

MIAOSET<=CLK;

END IF;END IF;

END PROCESS;

END O;

51 数字时钟 89C52 单片机C语言程序

数字时钟89C52 单片机C语言程序 STC89C52| /************** 【数字时钟】****************/ /****【功能】1、时间显示2、秒表3、闹钟4、日期显示都可以设置****/ #include /*包含器件配置文件*/ #define uchar unsigned char /*宏定义字符型数据整型数据*/ #define uint unsigned int uchar code H[] = {0x0f, 0x07, 0x0b, 0x0d, 0x0e}; /*按键【P3】端口断码用于按键*/ char Code[10] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f}; /*显示【0 1 2 3 4 5 6 7 8 9】数字的数码管的段码*/ uchar code C[] = {0x0, 0xFE, 0xFD, 0xFB, 0xF7, 0xEF, 0xDF, 0xBF, 0x7F}; /*列扫描控制LED1位2位3位4位5位6位7位8位*/ uchar MON[]={0,31,28,31,30,31,30,31,31,30,31,30,31}; uchar A; uchar BIN=0; /* 【BIN】作为倒计时开始的标志*/ uchar hour = 0; /* 定义[时][分][秒] */ uchar min = 0; uchar sec = 0; uint shi=12; uint fen=30; uchar Mmin=0; uchar Msec=30; uchar M0=0; uchar m=0; uchar year=9; uchar month=7; uchar month2; uchar day=19; uchar set1 = 1; /* set1=1 是调节时分秒set1=2时时调节年月日set=3时事调节闹钟*/ uchar set2 = 1; /* set2=1时是调节【时】位set2=2时事调节【分】位*/ uint x = 0; /* x 每【0.01s】自加一*/ void Delay(uint k);

数字万年历简易C语言程序源代码

#include"reg52.h" #define uchar unsigned char #define uint unsigned int sbit rs=P2^0; // lcd 控制端 sbit en=P2^2; // lcd 控制端 sbit all=P2^1; // lcd 控制端 sbit s0=P1^5; //时间调节 sbit s1=P1^6; sbit s2=P1^7; sbit voice=P2^7; int nt; sbit DQ=P2^6; sbit DS1302_CLK = P2^3; //实时时钟时钟线引脚sbit DS1302_IO = P2^4; //实时时钟数据线引脚sbit DS1302_RST = P2^5; //实时时钟复位线引脚sbit ACC0 = ACC^0; sbit ACC7 = ACC^7; unsigned char time; #define ads_y 0 #define ads_mo 3 #define ads_d 6 #define ads_w 9 #define ads_h 65 #define ads_m 68 #define ads_s 71 #define DS1302_SECOND 0x80 //写入ds地址宏定义 #define DS1302_MINUTE 0x82 #define DS1302_HOUR 0x84 #define DS1302_WEEK 0x8A #define DS1302_DAY0x86 #define DS1302_MONTH 0x88 #define DS1302_YEAR 0x8C

数字时钟c语言代码

LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY SECOND1 IS PORT(CLKS,CLR:IN STD_LOGIC; SECS,SESG:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); COUT1:OUT STD_LOGIC); END SECOND1; ARCHITECTURE S OF SECOND1 IS BEGIN PROCESS(CLKS,CLR) V ARIABLE SS,SG:STD_LOGIC_VECTOR(3 DOWNTO 0); V ARIABLE CO:STD_LOGIC; BEGIN IF CLR='1' THEN SS:="0000";SG:="0000"; ELSIF CLKS'EVENT AND CLKS='1' THEN IF (SS="0101") AND (SG="1001") THEN SS:="0000";SG:="0000";CO:='1'; ELSIF SG<"1001" THEN SG:=SG+1;CO:='0'; ELSIF SG="1001" THEN SG:="0000";SS:=SS+1;CO:='0'; END IF; END IF;COUT1<=CO; SECS<=SS; SESG<=SG; END PROCESS; END S; LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY MIN1 IS PORT(CLKM,CLR:IN STD_LOGIC; MINS,MING:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0); ENMIN,ALARM:OUT STD_LOGIC); END MIN1; ARCHITECTURE M OF MIN1 IS BEGIN PROCESS(CLKM,CLR) V ARIABLE MS,MG:STD_LOGIC_VECTOR(3 DOWNTO 0); V ARIABLE SO,ALM:STD_LOGIC; BEGIN IF CLR='1' THEN MS:="0000";MG:="0000";

模拟时钟行走 C语言程序

模拟时钟行走 课程设计总体要求 采用模块儿化程序设计; 鼓励可视化编程; 源程序中有足够的注释; 学生可自行增加新功能模块儿; 必须上机调试通过; 注重算法运用,优化存储效率与运算效率; 需提交源程序及相关文件; 目录 1 课程任务书 2 系统设计 3 模块设计 3.1 总体结构 3.2 流程图 3.3 使用的主要函数 4 调试及测试 1、调试过程中的问题 2、调试结果 5 设计总结 6 心得体会及致谢 7 答辩记录 8 教师意见

一、课程设计任务书 在屏幕上显示一个活动时钟;能模拟机械钟表行走;准确地利用数字显示日期和时间;按任意键时程序退出。 二、系统设计 总体结构:在绘图窗口中先画出表盘后获取系统的时间,利用得到的系统时间计算表针的位置,并将时间在屏幕上输出。每隔一秒读取一次时间,直到键盘有输入为止。 流程图 开始 初始化绘画窗口 画表盘 否 获取系统时间 结束 使用的主要函数: setlinestyle 设置画线 setcolor 设置颜色

line(int x1,int y1,int x2,int y2)画直线 circle(int x,int y,int r)画圆 outtextxy(int x,int y,char *textstring)在指定位置输出字符 initgraph(int x, int y); 初始化绘图窗口 setwritemode( ); 设置绘图模式 kbhit() 检查是否有键盘输入 GetLocalTime(&ti); 获取当前时间 sleep() 程序暂停若干时间 三、模块设计 主要模块功能、源代码及注释: 1.计算表针的位置并画出表针 void Drawzhizhen(int hour, int minute, int second) { double a_hour, a_min, a_sec; // 时、分、秒针的弧度值 int x_hour, y_hour, x_min, y_min, x_sec, y_sec; // 时、分、秒针的位置 a_sec = second * 2 * PI / 60; // 计算时、分、秒针的弧度值 a_min = minute * 2 * PI / 60 + a_sec / 60; a_hour= hour * 2 * PI / 12 + a_min / 12; x_sec = int(120 * sin(a_sec)); y_sec = int(120 * cos(a_sec)); ///计算时、分、秒针的位置 x_min = int(100 * sin(a_min)); y_min = int(100 * cos(a_min)); x_hour= int(70 * sin(a_hour)); y_hour= int(70 * cos(a_hour)); setlinestyle(PS_SOLID, NULL, 10); // 画时针 setcolor(BLUE); line(300 + x_hour, 240 - y_hour, 300, 240 );

基于C51单片机的数字时钟课程设计(C语言带闹钟)

单片机技术课程设计 数字电子钟 学院: 班级: 姓名: 学号: 教师:

摘要 电子钟在生活中应用非常广泛,而一种简单方便的数字电子钟则更能受到人们的欢迎。所以设计一个简易数字电子钟很有必要。本电子钟采用AT89C52单片机为核心,使用12MHz 晶振与单片机AT89C52 相连接,通过软件编程的方法实现以24小时为一个周期,同时8位7段LED数码管(两个四位一体数码管)显示小时、分钟和秒的要求,并在计时过程中具有定时功能,当时间到达提前定好的时间进行蜂鸣报时。该电子钟设有四个按键KEY1、KEY2、KEY3、KEY4和KEY5键,进行相应的操作就可实现校时、定时、复位功能。具有时间显示、整点报时、校正等功能。走时准确、显示直观、运行稳定等优点。具有极高的推广应用价值。 关键词: 电子钟 AT89C52 硬件设计软件设计

目录 NO TABLE OF CONTENTS ENTRIES FOUND. 一、数字电子钟设计任务、功能要求说明及方案介绍 1.1 设计课题设计任务 设计一个具有特定功能的电子钟。具有时间显示,并有时间设定,时间调整功能。 1.2 设计课题的功能要求说明 设计一个具有特定功能的电子钟。该电子钟上电或按键复位后能自动显示系统提示符“d.1004-22”,进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从12时59分0秒开始运行,进入时钟运行状态;按电子钟S5键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按S5键再次进入时钟运行状态。 1.3 设计课的设计总体方案介绍及工作原理说明 本电子钟主要由单片机、键盘、显示接口电路和复位电路构成,设计课题的总体方案如图1所示:

51单片机数码管显示时钟(C语言)

//以下程序都是在VC++6.0 上调试运行过的程序,没有错误,没有警告。 //单片机是STC89C52RC,但是在所有的51 52单片机上都是通用的。51只是一个学习的基础平台,你懂得。 //程序在关键的位置添加了注释。 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////以下是主文件main.c 的内容 /****************************************************************************** * * 实验名: 万年历实验 * 使用的IO : * 实验效果:1602显示时钟 * 注意: ******************************************************************************* / #include #include"ds1302.h" //数码管IO #define DIG P0 sbit LSA=P2^2; sbit LSB=P2^3; sbit LSC=P2^4; unsigned char code DIG_CODE[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; unsigned char Num=0; unsigned int disp[8]={0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f}; void LcdDisplay(); void Timer0Configuration(); /****************************************************************************** * * 函数名: main * 函数功能: 主函数 * 输入: 无 * 输出: 无 ******************************************************************************* / void main() {

钟表源程序代码

钟表源程序代码 采用了easyx图形库 作者:转角梦覃飞絮 #include #include #include #include #include #define PI 3.1415926 //自定义函数声明 void draw_biaozhen(int x,int y,int second,int minute,int hour);//画表针函数 void numbertime(int year,int month,int day,char week,int second,int minute,int hour);//显示数字时间 void draw_biaopan(int x,int y);//画表盘 void huaxian(); //画心形线 void main() { initgraph(640,480); srand((unsigned)time(NULL)); int x=320,y=240; //设定表盘圆心位置 SYSTEMTIME time; //定义变量保存当前时间 //画心形线 outtextxy(20,40,"稍后进入钟表界面..."); huaxian(); cleardevice(); setwritemode(R2_XORPEN); //设置XOR绘图模式 //画表盘 draw_biaopan( x, y); while(!kbhit()){ //有用户键就退出 GetLocalTime(&time); numbertime(time.wYear ,time.wMonth,time.wDay ,time.wDayOfWeek ,time.wSecond ,time. wMinute,time.wHour); //画指针 draw_biaozhen(x,y,time.wSecond ,time.wMinute ,time.wHour ); Sleep(1000); //擦表针

基于单片机C语言电子时钟完整版(闹钟,整点报时)

《单片机技术》课程设计说明书 数字电子钟 系、部:电气与信息工程学院 学生姓名: 指导教师:职称 专业: 班级: 完成时间:2013-06-07

摘要 电子钟在生活中应用非常广泛,而一种简单方便的数字电子钟则更能受到人们的欢迎。所以设计一个简易数字电子钟很有必要。本电子钟采用ATMEL公司的AT89S52单片机为核心,使用12MHz 晶振与单片机AT89S52 相连接,通过软件编程的方法实现以24小时为一个周期,同时8位7段LED数码管(两个四位一体数码管)显示小时、分钟和秒的要求,并在计时过程中具有定时功能,当时间到达提前定好的时间进行蜂鸣报时。该电子钟设有四个按键KEY1、KEY2、KEY3、KEY4和KEU5键,进行相应的操作就可实现校时、定时、复位功能。具有时间显示、整点报时、校正等功能。走时准确、显示直观、运行稳定等优点。具有极高的推广应用价值。 关键词电子钟;AT89S52;硬件设计;软件设计

ABSTRACT Clock is widely used in life, and a simple digital clock is more welcomed by people. So to design a simple digital electronic clock is necessary.The system use a single chip AT89S52 of ATMEL’s as its core to control The crystal oscillator clock,using of E-12MHZ is connected with the microcontroller AT89S52, through the software programming method to achieve a 24-hour cycle, and eight 7-segment LED digital tube (two four in one digital tube) displays hours, minutes and seconds requirements, and in the time course of a timing function, when the time arrived ahead of scheduled time to buzz a good timekeeping. The clock has four buttons KEY1, KEY2, KEY3,KEY4 and KEY5 key, and make the appropriate action can be achieved when the school, timing, reset. With a time display, alarm clock settings, timer function, corrective action. Accurate travel time, display and intuitive, precision, stability, and so on. With a high application value. Key words Electronic clock;;AT89S52;Hardware Design;Software Design

时钟显示设计c语言

时钟显示设计 1 功能:实现时钟的实时显示与定时 2 基本要求: (1)画出表盘时钟,时、分、秒针填充不同的颜色(自选)。(2)数字同步显示时间信息。 (3)整点报时。 (4)通过键盘输入闹铃时间,实现闹铃功能。 3 相关知识:图形操作、按键操作、时间函数等 4 功能扩充:1)实现秒表功能 2)给出其它国家的时钟同步信息

目录 一、题目介绍: (3) 二、小组成员信息:........................................................................................... 错误!未定义书签。 三、总体设计: (3) 四、模块划分: (3) 五、算法说明: (3) 六、各模块函数功能及流程图: (1) 七、程序测试: (5) 八、结论: (9) 九、体会及建议:............................................................................................... 错误!未定义书签。 十、参考文献:................................................................................................... 错误!未定义书签。附录:源程序清单. (9)

题目介绍: 时钟显示设计可以实现时钟的实时显示与定时,并且具有整点报时与闹铃的功能,具有动态效果,能够激发学生学习c语言的兴趣与热情。在设计过程中会遇到没有学过的知识,这需要自己查阅资料来完成,所以还是有一定难度的。 总体设计: 本程序设计分为三步: 1 是对时钟程序做全面的分析,即对程序要使用的编写方法功能,运行方式进行分析,并做出正确的解决方案。 2 是程序的编写。由于该程序所涉及的信息比较广泛,所以程序的编写也有些复杂。程序编写是一项困难的任务,完成此项目必须运用大量的知识,而且要有清晰的思路和较强的语言组织能力。 3 是对程序的检查和系统的调用。当程序运行时,会显示出一个时钟,并且具有一定的功能。 模块划分: 1 计算时分秒针的弧度值和末端位置, 2 画时针,分针,秒针, 3 绘制表盘,刻度, 4 设定闹钟,整分钟报时功能, 5 画表针,擦表针。 算法说明: 主函数:运用for,if等语句,执行对应的函数。 Void DrawDial 函数:画表盘。 Void DrawHand 函数:画时针,分针,秒针。

基于51单片机的电子钟C语言程序

基于51单片机的电子钟C语言程序 #include #include #define uchar unsigned char #define uint unsigned int /*七段共阴管显示定义*/ uchar code dispcode[ ]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F, 0xBF,0x86,0xCB,0xCF,0xEF,0xED,0xFD,0x87,0xFF,0xDF}; /*定义并初始化变量*/ uchar seconde=0; uchar minite=0; uchar hour=12; uchar mstcnt=0; sbit P1_0=P1^0; // second 调整定义 sbit P1_1=P1^1; //minite调整定义 sbit P1_2=P1^2; //hour调整定义 /*函数声明*/ void delay(uint k ); //延时子程序 void delay1(uchar h ); void time_pro( ); //时间处理子程序 void display( ); //显示子程序 void keyscan( ); //键盘扫描子程序 /*****************************/ /*延时子程序*/ /****************************/ void delay1 (uchar h) { uchar j; while((h--)!=0) { for(j=0;j<125;j++) {;} } } void delay (uint k) { uint a,b,c; for(c=k;c>0;c--)

C语言模拟时钟转动课设报告-附代码

模拟时针转动程序 姓名: 学号: 完成日期:2012年12月

设计目的 加深对讲授内容的理解,尤其是一些语法规定。通过课程设计,自然地、熟练地掌握。熟悉所用的计算机系统的操作方法,也就是熟悉语言程序开发的环境。学会上机调试程序。熟悉C语言图形模式下的编程,掌握利用C语言相关函数开发电子时钟的基本原理。 能模拟机械钟表行走;要准确地利用数字显示时间;在屏幕上显示一个活动时钟;程序界面设计合理,色彩得体大方,显示正确;各指针运动规律正确;数字式时钟的时间显示与指针式时钟显示一致。 总体设计 电子时钟的功能描述

电子时钟流程图 模块描述 动画处理模块在屏幕上显示sin和cos型的动态函数图像,显示运动的问候语。 转时针动处理模块指针式的时钟表盘为椭圆形并且圆周上有分布均匀的12个刻度刻度显示清楚钟面上有长度不相同的指针即时针、分针、秒针指针的运动具有规律性为顺时针。 数字时钟处理模块数字钟显示时间的格式是年月日时分秒小时为24进制,分钟和秒是60进制,指针式的时钟和数字式的时钟显示的时间同步且两个时钟所显示的时间与计算机的系统时间一致。 详细设计 time结构体 strume time { usigned char ti_min; usigned char ti_hour; usigned char ti_hud; usigned char ti_sec; }; time 结构体定义在dos.h文件中,可以保存系统的当前时间。

double h,m,s;这三个变量分别保存小时,分钟,秒。 double x,y,x1,y1,x2,y2;保存数字时钟中小时分钟秒在屏幕中显示的位置。 struct time t[1];定义一个time结构类型的数组。 函数功能的描述 1.def() 函数原型: void def() def()函数是用来输出一组彩带的,通过输入位置和颜色的变化来输出sin型的彩带,且在整个函数中保留结果。 2. abc() 函数原型: void abc() abc()函数是用来在退出系统是输出运动的问候语,函数类型单一且比较简单。 3 .digitclock() 函数原型:void digitclock() digitclock函数用于在(x,y)位置显示clock值,clock值为时分秒。 4. clockhandle() 函数原型:void clockhandle() clockhandle()函数用于完成时针转动和数字时钟的显示,包括时针转动角度的运算,还有对声音的输出。

C语言课程设计——图形时钟

《C语言程序设计》课程设计 实验报告 题目:图形时钟 班级:电气工程及其自动化1401 学号: 姓名: 指导教师: ——2015 .1 . 8

目录 §1. 系统功能要求﹣﹣﹣﹣P3 §2. 程序结构(画流程图) ﹣﹣﹣P3-4 §3. 概要设计﹣﹣﹣P4 §4. 试验结果﹣﹣﹣P6 §5.体会﹣﹣﹣P6 §6.参考文献﹣﹣﹣P6 §7.附录:源程序﹣﹣﹣P7-8

§1. 系统功能要求 在屏幕上显示一个图形时钟(用程序绘制一个与时钟样式相似即可),时间与系统时间一致,且要随着时间的走动准确的走动。 §2.程序设计

§3. 概要设计 (1)void init() /*划时钟边框函数*/ int i,l,x1,x2,y1,y2; circle(320,240,200);/*以(320,240)为圆心,200为半径画圆*/ circle(320,240,199);/*以(320,240)为圆心,199为半径画圆*/ circle(320,240,201);/*以(320,240)为圆心,201为半径画圆*/ circle(320,240,1,);/*以(320,240)为圆心,1为半径画圆*/ circle(320,240,2,)/*以(320,240)为圆心,2为半径画圆*/ circle(320,2403,);/*以(320,240)为圆心,3为半径画圆*/ for(i=0;i<60;i++) /*划钟点上的短线*/ { if(i%5==0) l=15; else l=5; x1=200*sin(i*6*pi/180)+320/*画线函数*/ y1=200*cos(i*6*pi/180)+240; x2=(200-l)*sin(i*6*pi/180)+320; y2=(200-l)*cos(i*6*pi/180)+240; line(x1,y1,x2,y2); } (2) void DrawHand 函数 /*画指针*/ void DrawHand(int x,int y,float th,int l,int color) { int x1,y1;

数字时钟c语言程序

本人为单片机初学者,这是本人制作的一个简单的数字时钟程序,程序比较繁琐,只适合初学者学习参考使用,因为程序都是一步步来的,没有跳跃。只要将此程序复制到keil,然后编译生成hex文件,连到单片机(实物)就可以直接显示了。希望对有些人有帮助 #include//头文件 #define uchar unsigned char #define uint unsigned int//宏定义 uchar count; uint hour,minute,second; uint hour1=0,minute1=0; sbit dula=P2^6; sbit wela=P2^7;

sbit key1=P3^0; sbit key2=P3^1; sbit key3=P3^2; sbit key4=P3^3; sbit key5=P3^4; sbit key6=P3^5; sbit key7=P3^6; sbit BEEP=P1^2; uchar code duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d ,0x07,0x7f,0x6f,0x40};//0-9,横杆 uchar code wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x 7f}; //扫描 void delay(uint z)//延时函数 { uchar x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); }

void init()//初始化中断 { TMOD=0x10; //定时器1以方式1定时TH1=(65536-50000)/256; TL1=(65536-50000)%256; EA=1;//总中断打开 ET1=1;//打开定时中断 TR1=1;//打开定时器 } void time1() interrupt 3 { TH1=(65536-50000)/256; TL1=(65536-50000)%256; count++; if(count==20)//1秒累加一次 { count=0; second++;

基于c语言的数字电子钟设计

一、功能要求 整体上要考虑:结构简单大方、布局美观合理、操作方便易懂、尽量避免各元器件之间的相互影响。 1、以AT89C51单片机进行实现秒分时上的正常显示和进位, 其中显示功能由单片机控制共阴极数码管来实现,数码管进行动态显示。 2、具有校时功能,按键控制电路其中时键、分键、秒键三个键分 别控制时分秒时间的调整。按秒键秒加1;按分键分加1;按时键时加1. 二、硬件设计 1、整体设计框图 2、管脚功能描述 (1)XTAL1(19 脚)和XTAL2(18 脚):振荡器输入输出端口,外接晶振电路。

(2)RST/Vpd(9 脚)为复位输入端口,外接电阻电容组成的复位电路。 (3)P0口8个端口依次和LED显示器的A、B、C、D、E、F、G和Dp端口对应连接,实现对显示器的片选功能。 (4)P2.0~P2.5依次与LED显示器的1、2、3、4、5、6一一连接,实现对显示器的为选功能。 (5)P3.0~P3.2依次与按键电路的秒、分、时三个按键相连接。通过按键实现对时间的调试功能。 3、整体原理设计 其计时周期为24小时,显示满刻度为23时59分59秒,另外还有校时功能。整个设计图由晶振电路、复位电路、AT89C51单片机、键盘控制电路组成。 显示电路将“时”、“分”、“秒”通过七段显示器显示出来,6个数码管的段选接到单片机的P0口,位选接到单片机的P2口。数码管按照数码管动态显示的工作原理工作。 把定时器定时时间设为50ms,则计数溢出20次即得时钟计时最小单位秒,而20次计数可用软件方法实现,每累计60秒进1分,每累计60分钟,进1小时。时采用24进制计时器,可实现对一天24小时的累计。 校时电路时用来对“时”、“分”、“秒”显示数字进行校对调整,时分秒三个控制键分别接单片机的p3.2、p3.1、p3.0进行控制。按一下秒键秒单元就加1 ,按一下分键分就加1,按一下时键时就加1。

基于C单片机的数字时钟课程设计C语言带闹钟

班级:姓名:学号:教师:

摘要 电子钟在生活中应用非常广泛,而一种简单方便的数字电子钟则更能受到人们的欢迎。所以设计一个简易数字电子钟很有必要。本电子钟采用AT89C52单片 ,

目录 一、数字电子钟设计任务、功能要求说明及方案介绍 (4) 4 4 4 5 5 5 6 6 6 7 7 7 9 9 10 12 12 13 13

一、数字电子钟设计任务、功能要求说明及方案介绍 1.1 设计课题设计任务 设计一个具有特定功能的电子钟。具有时间显示,并有时间设定,时间调整功能。 1.2 设计课题的功能要求说明 设计一个具有特定功能的电子钟。该电子钟上电或按键复位后能自动显示系统提示符“d.1004-22”,进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从12时59分0秒开始运行,进入时钟运行状态;按电子钟S5键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按S5键再次进入时钟运行状态。 1.3 设计课的设计总体方案介绍及工作原理说明 本电子钟主要由单片机、键盘、显示接口电路和复位电路构成,设计课题的总体方案如图1所示: 图1-1总体设计方案图 本电子钟的所有的软件、参数均存放在AT89C52的Flash ROM和内部RAM 中,减少了芯片的使用数量简化了整体电路也降低了整机的工作电流。键盘采用

动态扫描方式。利用单片机定时器及计数器产生定时效果通过编程形成数字钟效果,再利用数码管动态扫描显示单片机内部处理的数据,同时通过端口读入当前外部控制状态来改变程序的不同状态,实现不同功能。 二、设计课题的硬件系统的设计 2.1硬件系统各模块功能简要介绍 2.1.1 AT89C52简介 (1) 兼容MCS51指令系统; (2)8kB可反复擦写(大于1000次)Flash ROM; (3)32个双向I/O口; (4)256x8bit内部RAM; (5)3个16位可编程定时/计数器中断; (6)时钟频率0-24MHz; (7)2个串行中断,可编程UART串行通道; (8)2个外部中断源,共8个中断源; (9)2个读写中断口线,3级加密位; (10)低功耗空闲和掉电模式,软件设置睡眠和唤醒功能; (11)有PDIP、PQFP、TQFP及PLCC等几种封装形式,以适应不同产品的需求。 它的价格便宜,功能强大,能耗低。很大程度上减少总电路的复杂性,提高了所设计系统的稳定性。其芯片引脚图如图2-1所示。 图2-1 单片机AT89S52引脚图

单片机电子钟c语言程序

单片机电子钟程序设计实习报告 单片机LCD1602电子钟毕业论文 这次嵌入式系统综合实习已经结束了,哎..... 在网络发现很多计算机专业的毕业生都是以电子钟为题的毕业论文,个人感觉做一个电子钟程序设计的技术含量,技术水平都不高。呵呵个人还是比较偏向于软件开发的,比较喜欢vc++开发。 一、引言 1.1课题的背景及目的 随着计算机科学与技术的飞速发展,计算机的应用已经渗透到国民经济与人们生活的各个角落,正在日益改变着传统的人类工作方式和生活方式,而单片机技术又作为计算机技术中的一个独立分支,有着性价比高,集成度高,体积小,可靠性高,控制功能强大,低功耗,低电压,便于生产,便于携带等特点,所以得到越来越广泛的应用,特别是在工业控制和仪表仪器智能化中起极其重要的作用.本文利用单片机强大的控制功能和内部定时器重要部件,设计了一款自行对时间进行调整以及把时、分、秒用LCD显示的电子钟。 电子钟从原理上讲是一种典型的数字电路,其中包括了组合逻辑电路和时序电路。因此,我们此次设计与制做数字钟就是为了了解数字钟的原理,从而学会制作数字钟.而且通过数字钟的制作进一步的了解各种在制作中用到的中小规模集成电路的作用及实用方法.且由于数字钟包括组合逻辑电路和时叙电路.通过它可以进一步学习与掌

握各种组合逻辑电路与时序电路的原理与使用方法 1.2课题的内容要求及研究方法 ①时间以24小时为一个周期; ②显示时、分、秒; ③具有校时功能,可以分别对时及分进行单独校时,使其校正到标准时间; 本文先按照设计的一般步骤,先选定用单片机实现的方案,了解设计要求,再分别从硬件系统设计和软件系统设计两个宏观方面着手.然后大量阅读相关资料,硬件方面,熟练单片机工作基本原理,查出相关元器件的参数,八个八段数码管,继电器等性能.然后画出系统框图和单元电路原理图,再对系统工作原理按照单元电路作简单的说明。软件方面,熟悉编程语言,查找相关子程序.熟悉使用Keil uVision2开发软件及STC-ISP下载软件.把原器件按电路原理图安装.最后再对硬件和软件系统进行调试和仿真。课题的内容是要求设计一款电子钟,而且要求计时准确,显示直观,清晰,时能够精确到秒。最后设计出来的产品,要求电路简洁,稳定性好。 二、课题设计 1、基本原理 本设计基于单片机技术原理,以单片机芯片A T89C52作为核心控制器,通过硬件电路的制作以及软件程序的编制,设计制作出一个多功能数字时钟系统。单片机扩展的LCD显示器用来显示秒、分、时计数单元中的值。整个设计包括两大部分: 硬件部分和软件部分,

基于单片机的数字时钟C语言设计

基于单片机的数字时钟C 语言设计 樊清海 1,2 刘培培2 耿娟平 2 (1.河北工业大学,天津300130; 2.北华航天工业学院,河北廊坊065000) 摘 要:本文利用ST C89C52单片机的16位定时器做成电子时钟。单片机控制1602液晶器不仅能够准确显示年、月、日、星期、时、分、秒的数值,还能够实现时间校正、闹钟报警、断电自动保护数据的功能。关键词:时钟电路;单片机;C 语言 中图分类号:T P333 文献标识码:A 文章编号:1673-7938(2010)06-0004-03 收稿日期:2010-09-13 作者简介:樊清海(1964-),男,高级工程师,河北固安人,主要从事电子信息与通信传输研究。 0 引 言 随着科学技术的飞速发展,电子技术的产业结构调整,人们生活水平的提高,人们对具备报时、日历、闹钟等多功能的智能电子时钟的需求越来越大,传统时钟已不能满足人们的需求。现代的电子设计将数字电路、模拟电路、单片机技术相结合,增加了电子时钟的智能化功能。本文以51系列单片机芯片STC89C52为核心,设计了一个智能电子钟。单片机扩展的1602液晶显示器用来显示年、月、日、星期、时、分、秒计数单元中的数值,不仅能够准确的显示标准时间,还可以对时间进行校正、设置闹钟报警功能、实现断电自动保护显示数据的功能。 整个时钟系统的设计包括两大部分:硬件部分和软件部分。硬件部分是整个系统设计的基础,软件部分则要合理、充分地支持和使用系统的硬件资源,从而完成整个系统所要完成的任务[1] 。 1 数字时钟的硬件设计 整个时钟系统的硬件设计可分为:单片机主控制部分、晶振产生部分、复位电路部分、矩阵键盘、液晶显示、EEPROM 存储芯片、蜂鸣器报警等七部分内容。单片机芯片STC89C52作为控制核心部分,实现整个外围电路的控制。该系统模块结构框图如图1所示: 本系统的计时设计方案是:利用单片机STC89C52芯片的内部16位定时 计数器进行中断 定时,配合软件延时程序实现对数字时钟年、月、日、星期、时、分、秒的计时。整个系统的控制方案是:上电后系统自动进入初始液晶显示状态,然后从EEP ROM 芯片AT24C02中读取存储的数据,从存储的时间数据开始计时;通过按下时间功能选择键S1一次,系统停止计时,进入到时间设定状态,系统保持原有的显示,光标在秒的数值上闪烁;按下S1二次,光标在分数值处闪烁;按下S1三次,光标在时数值处闪烁;随着S1按键按下,光标接着顺序在星期、日、月、年处显示,当光标在不同位置闪烁时,可以设置数值增大键S2和数值减小键S3,分别对光标闪烁的不同位置的数值进行加减操作完成时间的校正,并将校正的时间存入到AT24C02中;当再次按下S1时(即第八次按下),系统重新在校正的时间上计时显示,光标也停止闪烁;再重新按下S1,按键功能按照上面的顺序依次循环下去;按下闹钟设置 启闹 停闹[2] S4键一次,进入闹钟设置状态,设置完闹钟时间后,按下S4键二次,启动定时闹钟功能,当定时时间一到,蜂鸣器就鸣叫,直到再次按下S4键闹钟停闹;系统扩展了EEPROM 存储芯片AT24C02实现断电自动保护显示数据的功能,随着每秒时间数值的更新以及校正时间的设置,存储到AT24C02中的数值也要不断更新,当断电后再次上电时,时钟会接着断电前的时间数据继续运行。 基于系统上述的控制要求,本文是在T X 1C 单片机开发板上完成的,时钟系统设计主要模块与STC89C52单片机芯片的硬件电路[3] 连接如图2所 示: 第20卷第6期 2010年12月 北华航天工业学院学报 Journal of North China Institute of Aerospace Engineer ing Vol 20No 6 Dec 2010

DS1302时钟C语言编程完整实例

1 DS130 2 简介: DS1302是美国D ALLAS 公司推出的一种高性能、低功耗的实时时钟芯片,附加31字节静态R AM,采用S PI 三线接口与C PU 进行 同步通信,并可采用突发方式一次传送多个字节的时钟信号和R AM 数据。实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。工作电压宽达2.5~ 5.5V。采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后背电源进行涓细电流充电的能力。DS1302的外部 引脚分配如图1所示及内部结构如图2所示。DS1302用于数据记录,特别是对某些具有特殊意义的数据点的记录上,能实现数据与出现该数据的时间同时记录,因此广泛应用于测量系统中。 图1 DS1302的外部引脚分配 图2 DS1302的内部结构 各引脚的功能为: V cc1:主电源;Vcc2:备份电源。当V cc2>Vcc1+0.2V 时,由Vcc2向D S1302供电,当V cc2< Vcc1时,由V cc1向D S1302供电。 SCLK:串行时钟,输入,控制数据的输入与输出; I/O:三线接口时的双向数据线; CE:输入信号,在读、写数据期间,必须为高。该引脚有两个功能:第一,CE 开始控制字访问移位寄存器的控制逻辑;其次,

CE 提供结束单字节或多字节数据传输的方法。 DS1302有下列几组寄存器: ① D S1302有关日历、时间的寄存器共有12个,其中有7个寄存器 (读时81h ~8Dh ,写时80h ~8Ch ),存放的数据格式为 BCD 码形式, 如图3所示。 图 3 DS1302有关日历、时间的寄存器 小时寄存器(85h 、84h )的位7用于定义 D S1302是运行于12小时 模式还是24小时模式。当为高时,选择 12小时模式。在12小时模式时, 位5是 ,当为1时,表示 PM 。在24小时模式时,位5是第二个10小时 位。 秒寄存器(81h 、80h )的位7定义为时钟暂停标志(CH )。当该 位置为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位置为 0时,时钟开始运行。 控制寄存器(8Fh 、8Eh )的位7是写保护位(WP ), 其它7位均置 为0。在任何的对时钟和 R AM 的写操作之前,WP 位必须为0。当 WP 位为1时,写保护位防止对任一寄存器的写操作。 ②DS1302有关 R AM 的地址 DS1302中附加31字节静态 R AM 的地址如图4所示。 图4 ③ D S1302的工作模式寄存器 所谓突发模式是指一次传送多个字节的时钟信号和 R AM 数据。 突发模式寄存器如图5所示。

相关主题
文本预览
相关文档 最新文档