文档库 最新最全的文档下载
当前位置:文档库 › 简易秒表,3个按键控制,C语言源程序

简易秒表,3个按键控制,C语言源程序

简易秒表,3个按键控制,C语言源程序
简易秒表,3个按键控制,C语言源程序

简易秒表,用2位数码管实现显示00~59,并用三个独立按键实现启动,停止,复位功能。

C语言源程序:

#include

unsigned char mes,sec=0;

unsigned char code LED[]=

{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

sbit Key1=P3^2;

sbit Key2=P3^3;

sbit Key3=P3^5;

void delay(unsigned char i)

{

unsigned char j,k;

for(j=0;j

for(k=0;k<255;k++);}

void main()

{

TMOD=0x01;

TH0=0x3c;

TL0=0xb0;

TH1=0xff;

TL1=0xfe;

EA=1;

EX0=1;

EX1=1;

ET0=1;

ET1=1;

TR1=1;

while(1)

{

P3=0xfe;

P2=LED[sec%10];

delay(10) ;

P3=0xfd;

P2=LED[sec/10];

delay(10) ;}}

void T0_int() interrupt 1

{

TH0=0x3c;

TL0=0xb0;

mes++;

if(mes==20)

{

mes=0;

sec++;

if(sec==60)

{sec=0; }}}

void intr0() interrupt 0 //开始{

TR0=1;

}

void intr2() interrupt 2 //暂停{

TR0=0;

}

void intr3() interrupt 3 //清零{ TH1=0xff;

TL1=0xfe;}

if(Key3==0)

{

sec=0;

TR0=0;

TH0=0x3c; TL0=0xb0; }

单片机秒表设计..

郑州科技学院 单片机课程设计 题目 学生姓名 专业班级 学号 院(系) 指导教师 完成时间 2015年1月9日

郑州科技学院 单片机课程设计任务书 专业11电科班级 1班学号 201131006 姓名李军 一、设计题目电子秒表 二、设计任务与要求 基本功能: 1.使用A T89C51单片机的定时器/计数器定时和记数的原理,使秒表其能精确计时。 2.能够稳定显示并能准确计时,计时精度达到0.01秒,最大计时59-59-99。 3.能够实现开始、暂停、清零、保存、读取的功能 三、主要参考文献 [1] 艾运阶.单片机项目教程.北京:北京理工大学出版社,2011 [2] 李泉溪.单片机原理与实例仿真.北京:北京航空航天大学出版社,2009 [3] 江世明.基于Protues的单片机应用技术.北京:电子工业出版社,2009 [4] 李朝青.单片机原理及接口技术(第3版).北京:北京航空航天大学出版社,2006 [5] 孙育才.MCS-51 系列单片微型计算机及其应用.广东:东南大学出版社,2009 四、设计时间 2014 年12 月29日至2015 年1月9 日 指导教师签名: 年月日

目录 前言 (1) 1 课程设计的目的及要求 (2) 1.1 课程设计的目的 (2) 1.2 课程设计的任务 (2) 1.3 课程设计的要求 (2) 2 设计的方案及论证 (2) 2.1 方案设计 (2) 2.2 方案选择 (3) 2.3 方案确定 (4) 3 硬件电路设计 (5) 4 软件设计 (5) 4.1 主要模块流程图 (6) 4.2 程序的主要模块 (6) 5 电路仿真 (7) 6 电路的焊接与调试 (8) 6.1 电路的焊接 (8) 6.2 电路的调试 (9)

C语言课程设计报告——贪吃蛇源程序

C 语言课程设计(小游戏贪吃蛇的程序设计报告) 设计人: 班级: 201 年月号

目录一:概述 1:研究背景及意义 2:设计的任务与需要知识点3:具体完成设计内容 二:需求分析 1:功能需求 2:操作方法 三:总体设计 1:模块划分 2:数据结构设计 四:详细设计 1:主空摸块设计 2:绘制游戏界面 3:游戏的具体过程 4:游戏的结束处理 5:显示排行榜信息模块 五:程序的调试与测试1:动画与音乐同步 2:蛇的运行 3:终止程序 六:结论 七::结束语 八:程序清单 九:参考文献

一. 概述 本课程设计以软件工程方法为指导,采用了结构化,模块化的程序设计方法,以C语言技术为基础,使用Turbo C++3、0为主要开发工具,对贪吃蛇游戏进行了需求分析,总体设计,详细设计,最终完成系统的实现与测试。 1、1 研究的背景及意义 随着社会的发展,人们生活的节奏日益加快,越来越多的人加入了全球化的世界。人们不再拘泥与一小块天地,加班,出差成了现代人不可避免的公务。而此时一款可以随时随地娱乐的游戏成为了人们的需要。此次课程设计完成的贪吃蛇小游戏,正就是为了满足上述需求而设计出来的。贪吃蛇游戏虽小,却设计诸多的知识点。通过开发贪吃蛇游戏系统,可使读者初步了解使用软件工程的与那个发,技术与工具开发软件的过程,进一步掌握结构化,模块化的程序设计方法与步骤,进一步掌握总体数据结构设计,模块划分方法,掌握局部变量,全局变量,结构体,共用体,数组,指针,文件等数据结构的使用方法,掌握图形,声音,随机数等多种库函数的使用方法,学习动画,音乐,窗口,菜单,键盘等多项编程技术,进一步学会软件调试,测试,组装等软件测试方法,为后续课程的学习与将来实际软件开发打下坚实的基础。 1、2 设计的任务与需要的知识点 1、2、1 课程设计主要完成的任务 1)、通过编写“贪吃蛇游戏”程序,掌握结构化,模块块化程序设计的思想,培养解决实际问题的能力。 2) 有同步播放动画,声音效果。 3) 设计好数组元素与蛇,食物的对应关系。 4) 随机产生食物。 5) 有分数统计,排行榜,分数存储等功能。 通过此次课程设计,希望使读者能更深入的理解与掌握课程教学中的基本概念,培养读者应用基本技术解决实际问题的能力,从而进一步提高分析问题与解决问题的能力。 1、2、2需要掌握与运用的知识点 1、2、3本次课程设计需要掌握与运用如下的知识点: 1) 数组的应用。 2) 全局变量的使用。 3) 按键处理。 4)结构体的应用。 5)图形,音乐与动画的有关知识。 6)随即函数的使用。 7)文件的基本出操作。 8) 结构化,模块化的设计方法。

51单片机课程设计秒表

微控制器技术课程 设计报告 设计题目:秒表 专业:供用电技术 班级:供电141 学号:140315143 姓名:王晨铭 指导教师:李昊 设计时间:2016.6.21

微控制器技术课程设计任务书 设计题目:秒表 设计时间:2016.6.20 设计任务: 在单片机开发板或软件仿真,编制程序,实现以下功能 1、利用定时器实现秒表功能,精确到0.1S; 2、数码管显示当前计时时间; 3、设定三个键,计时开始,停止计时和复位清零。 背景资料:1、单片机原理与应用 2、检测技术 3、计算机原理与接口技术 进度安排: 1、第1天,领取题目,熟悉设计内容,分解设计步骤和任务; 2、第3天,规划设计软硬件,编制程序流程、绘制硬件电路。 3、第5天,动手制作硬件电路,或编写软件,并调试。 4、第7天,中期检查。 5、第9天,完善设计内容,书写设计报告。 6、第13天,提交设计报告,整理设计实物,等待答辩。 7、第14天,设计答辩。

目录 一、设计任务和要求 (3) (1)设计任务 (3) (2)设计要求 (3) 二、设计方案与论证 (3) 三、单元电路设计与参数计算 (4) (1)时钟电路 (4) (2)按钮电路 (4) (3)显示电路 (5) (4)单片机 (5) 四、原理图及器件清单 (6) ( 1 )总原理图 (6) (2)PCB图 (7) (3)Proteus仿真图 (7) (4)元器件清单 (8) 五、安装与调试 (8) (1)安装 (8) (2)调试 (8) 六、性能测试和分析 (9) 七、结论和心得 (9) 八、参考文献 (9)

题目:秒表 二、方案设计与论证 本设计分为时钟电路、按钮电路、显示电路和单片机四大部分,这些模块中单片机占主控地位。其模块电路如图2-1所示。时钟电路常用的有内部时钟方式和外部时钟方式,但因为本设计中只需要一片单片机,所以采用内部时钟方式比较简单。按钮电路中的“复位”按钮是按键手动复位,它有电平和脉冲两种方式,比较电路的复杂程度,本设计选择了按钮电平复位电路,其他几个按钮则是通过单片机判断高低电平的不同来控制按钮。显示电路所用的数码管有共阴和共阳之分,不管使用何种数码管,P0口作为I/O使用时都是需要上拉电阻才能驱动数码管。另外,因为单片机的4个并行I/O口的输出电流一般是1mA,短路电流为4mA左右,而数码管的最少驱动电流也需要10mA,因而不管在使用共阴数码管时,单片机输出口也必须使用上拉电阻提高输出电流,才能驱动数码管。为了使电路简单化,本设计选用共阳数码管。但根据显示方式的不同选择,我们可以有几种方案: 方案一:使用静态显示方式。静态显示方式下的数码管的显示字符一经确定,相应锁存器锁存的断码输出將维持不变,直到送入另一个字符的断码为止。因而此设计中使用的显示位数使用了三个8位并行I/0口。如果另外想扩展单片机功能,则能使用的输出管脚很是有限。 方案二:使用动态显示方式。这个显示方式是将所有显示位的段码线的相应段并联在一起,由一个8位I/O口控制,而各位的共阴或共阴极分别由相应的I/O线控制,形成各位的分时选通。这种显示方式,简化了硬件电路,特别在多位数码管显示时尤为突出。 本小组尝试了各种方案,在此报告中以静态显示方式为例说明。(动态显示方式省略) 显示电路 单片机 AT89C51 时钟电路 按钮电路

单片机简易秒表课程设计..

单片机课程设计 题目:简易秒表 系部:机电工程系 专业:机电一体化 班级: 0 9 4 班 姓名:张三 学号:2009044056 指导教师:杨富强

目录 一摘要 (1) 二绪论 (2) 2.1单片机的发展 (2) 2.2 MCS-51系列单片机介绍 (4) 三设计任务及要求 (5) 四工作原理 (5) 4.1 七段数码管概述 (5) 4.2 MCS--51的引脚及相关功能 (7) 五简易秒表电路图 (8) 六流程图 (9) 七源程序 (10) 八系统硬件设计 (11) 九总结 (12) 十课程设计心得 (13) 参考文献 (14)

一摘要 单片机自70年代问世以来得到蓬勃发展,目前单片机功能正日渐完善:单片机集成越来越多资源,内部存储资源日益丰富,用户不需要扩充资源就可以完成项目开发,不仅是开发简单,产品小巧美观,同时抗干扰能力加强,系统也更加稳定,使得它更加适合工业控制领域,具有更加广阔的市场前景;提供在线编程能力,加速了产品的开发进程,为企业产品上市赢得宝贵时间。此外单片机具有性能高、速度快、体积小、价格低、稳定可靠、应用广泛、通用性强等突出优点。单片机的设计目标主要是增强“控制”能力,满足实时控制的需要。 本文的主要内容是掌握各种单片机的结构、接口、片上外设的特点,并利用自行制作的单片机最小系统,完成一个简单应用(简易秒表)的设计与软件及硬件设计制作,让读者掌握数字单片机最小系统的设计及单片机系统的应用方法。

二绪论 当前社会信息化建设在各地蓬勃发展,作为信息发布的终端显示设备,LE D显示屏己经广泛应用于工作和生活的各个方面,主要用于显示文字、图像、动画等。L E D显示屏的应用涉及社会的许多领域,主要包括:金融证券、体育场馆、道路交通、邮政电信、商场购物中心等服务领域的业务宣传及信息显示。L ED 是发光二极管的简称(L ig ht Em it ti ng D io de)。由于它具有亮度高、响应速度快、低电压、功耗小、耐震动、寿命长等优点,使其成为室内外信息显示终端的主要发光器件。LE D显示屏是20世纪90年代出现的新型平板显示器件,由于其亮度高、画面清晰、色彩鲜艳,使它在公众多媒体显示领域一枝独秀,因此市场空间巨大。LE D显示屏的发展可分为以下几个阶段:第一阶段为1990年到1995年,主要是单色和16级双色图文屏。用于显示文字和简单图片,主要用在车站、金融证券、银行、邮局等公共场所,作为公共信息显示工具。第二阶段是1995年到1999年,出现了64级、256级灰度的双基色视频屏。视频控制技术、图像处理技术、光纤通信技术等的应用将LE D显示屏提升到了一个新的台阶。LE D显示屏控制专用大规模集成电路芯片也在此时由国内企业开发出来并得以应用。第三阶段从1999年开始,红、纯绿、纯蓝LE D大量涌入中国,同时国内企业进行了深入的研发工作,使用红、绿、蓝三原色LE D生产的全彩色显示屏被广泛应用,大量进入体育场馆、会展中心、广场等公共场所,从而将国内的大屏幕带入全彩时代。 2.1单片机的发展 单片机也被称为微控制器(M ic ro co nt r ol le r),是因为它最早被用在工业控制领域。单片机由芯片内仅有CP U的专用处理器发展而来。最早的设计理念是通过将大量外围设备和CP U集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。IN TE L的Z80是最早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的发展便分道扬镳。单片机又称单片微控制器,它不是完成某一个逻辑功能的

简易秒表设计实验报告

实 验 报 告 系别 信工系 专业 班级 姓名 学号 简易秒表设计 实验目的: 1、 熟悉Keil C51软件的使用方法及proteus 仿真软件的使用; 2、 综合运用所学的理论知识(数码管、按键),通过实践加强对所学知识的理解,具备设计单片机应用系统的能力。 3、 通过本次试验,增强自己的动手能力。认识单片机在日常生活中的应用的广泛性,实用性。 设计要求: 制作简易秒表,用三个按键分别实现秒表的启动、停止与复位,利用两位共阴级的数码管显示时间。 设计思路: 硬件设计:数码管部分采用2位共阴极的数码管,在P0口接上拉电阻,公共端低电平扫描。按键电路部分,将按键一侧与单片机任一I/O 口相连。 软件设计:模块化思想,使用定时器T0的工作方式1,编写显示子程序,延时子程序,初始化程序,主程序设计时注意按键消抖。 原理图: XTAL218XTAL119ALE 30EA 31PSEN 29RST 9P0.0/AD0 39P0.1/AD1 38P0.2/AD2 37P0.3/AD3 36P0.4/AD4 35P0.5/AD5 34P0.6/AD6 33P0.7/AD7 32P1.01P1.12P1.23P1.34P1.45P1.56P1.6 7P1.7 8P3.0/RXD 10P3.1/TXD 11P3.2/INT0 12P3.3/INT1 13P3.4/T0 14P3.7/RD 17P3.6/WR 16P3.5/T1 15P2.7/A15 28P2.0/A8 21P2.1/A9 22P2.2/A10 23P2.3/A11 24P2.4/A12 25P2.5/A13 26P2.6/A14 27U1AT89C51C1 1nF C21nF R110k C31uF 234567891 RP1 RESPACK-8 源代码: #include<>

C语言源代码

剪刀石头布源代码 #include #include main() { int d,x; { printf("请输入:1是剪刀,2是石头,3是布"); scanf("%d",&d); x=rand()%3; if(d==x) printf("双方平局"); else if((d==1&&x==2)||(d==2&&x==3)||(d==3&&x==1)) printf("你赢了"); else printf("电脑赢了"); } }

简单计算器 #include main() { int a,b,d=0; char c; while(d==0) { printf("请开始计算,请输入需要运算的数字和运算法则,数字符号数字:"); scanf("%d%c%d",&a,&c,&b); switch(c) { case'+': printf("%d+%d=%d\n",a,b,a+b); break; case'-': printf("%d-%d=%d\n",a,b,a-b); break; case'*': printf("%d*%d=%d\n",a,b,a*b); break; case'/': if(0==b) printf("除法被除数不能为零!\n") ; else printf("%d/%d=%d\n",a,b,a/b); break; } } }

加油站加油问题 #include int main() { double a = 3.25, b = 3.00, c= 2.75; double d = 0.05, e = 0.10, m; int x,y,z; printf("请输入您要的加油量:"); scanf("%d",&x); printf("请输入您要的汽油种类,1-a型汽油售价3.25元/千克,2-b型汽油售价3.00元/千克,3-c型汽油售价2.75元/千克:"); scanf("%d",&y); printf("请输入您要的服务类型,1-自己加服务优惠0.05,2-协助加服务优惠0.10:"); scanf("%d",&z); switch(y) { case 1: y = a;break; case 2: y = b;break; case 3: y = c;break; } if(z == 1) m = (1 - d) * y * x; else if(z == 2) m = (1 - e) * y * x; printf("您需要支付:%f 元,谢谢惠顾,欢迎下次再来",m); return 0; }

电动车控制器C语言源代码

电动车控制器C语言源代码 . #define _E_BIKE_W79E83X_C_ #include "intrins.h" #include "E_BIKE_W79E83X.H" #include"W79E834.h" /******************************************************************** ********* * 主函数 ******************************************************************** * *********/ void main(void) { Init(); // 初始化 Init_IO(); // 初始化端口 H_Sample(); // 霍尔信号采样 Phase_Change(); // 相位变换 AutoHelpEN(1,0x1AA,200); /* 第一个参数设定助力功能允许不否,1为允许,0为禁止 第二个参数设定助力力量(PWM占空比),数值围:0~0x355,数值越大,力量 越大 第三个参数设定助力时间,数值越大,时间越长 */

Keep_SpeedEN(1,0x20,6); /* 第一个参数设定定速巡航功能允许不否,1为允许,0为禁止第二个参数设定定速巡航最低速设置 . . 第三个参数设定在巡航点保持多长时间后才进入巡航 */ Current_Lim(0xB48); /* 过流保护上限值设定 0xB00对应限电流最大大约为2.6A 0xB80对应限流值最大大约为3.8A */ LowVoltage_Lim(0x9B0); /* 欠压保护下限值设定 电池电压为47.9V时ADC采样值为0xB6 ==> 0xB60 推算电池电压为41V时的采样值为0x9B ==> 0x9B0 推算电池电压为40V时的采样值为0x98 ==> 0x980 */ EABS_Set(1,1); /* 第一个参数为滑行充电功能使能,1为允许,0为禁止

单片机的可调秒表时钟程序

#include unsigned char i=0,count,second,minute,hour,key; unsigned char time[8]; unsigned char const dofly[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};// 显示段码值012345679- unsigned char code seg[]={0,1,2,3,4,5,6,7};//分别对应相应的数码管点亮 //////////////////////////////////////////////////////// sbit LED0=P1^0; sbit LED1=P1^1; sbit LED2=P1^2; sbit LED3=P1^3; sbit LED4=P1^4; sbit LED5=P1^5; sbit LED6=P1^6; sbit LED7=P1^7; sbit S1=P3^0; sbit S4=P3^1; sbit S7=P3^2; void Init_Timer0(void) { TMOD |= 0x01; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响 TH0=0x00; //给定初值,这里使用定时器最大值从0开始计数一直到65535溢出TL0=0x00; EA=1; //总中断打开 ET0=1; //定时器中断打开 TR0=1; //定时器开关打开 } void Init_Timer1(void) { TMOD |= 0x10; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响 TH1=0x00; //给定初值,这里使用定时器最大值从0开始计数一直到65535溢出TL1=0x00; EA=1; //总中断打开 ET1=1; //定时器中断打开 TR1=1; //定时器开关打开 } void delay(unsigned int i)//延时函数 {

音量控制M62446的驱动C程序

音量控制M62446的驱动C程序 音量控制M62446 m62446 pdf //------------------------------------------------------------------------- // M62446 drving routines, VER 1.0 // // COPYRIGHT (C) 2000, Enbia Technology Inc. // Target: 8031 // AUTHOR: STEVEN LUO // // Revision History: // 2001/1/5 - Original Version // //------------------------------------------------------------------------- #include #include #include #include extern BOOL PIN_M62446_LATCH; extern BOOL PIN_M62446_DATA; extern BOOL PIN_M62446_CLK; static idata WORD shadow_word00=0; static idata WORD shadow_word01=0; static idata WORD shadow_word10=0; static idata WORD shadow_word11=0; // for storing the control word status // static BOOL bM62446Muted; // Set when 62446 is muted static void Write_M62446_Word(WORD myword); //------------------------------------------------------------------------- // Name: Volume_Validate // Description: // Arguments: // Return value: none //------------------------------------------------------------------------- static BYTE Volume_Validate(char vol){ if(vol<0)vol=0; // negative, should be 0 else if(vol >80) vol=80; // >80, set to 80 return 80 - vol; // Down to Up } //------------------------------------------------------------------------- // Name: Mute_M62446 // Description: // Arguments: // Return value: none //------------------------------------------------------------------------- void Mute_M62446(void){

89C51单片机最小系统设计(电子时钟,秒表,按键计数的单片机设计)

一、电子时钟、秒表和计数器的设计 1、实现的功能: 1)有key0,key1两个功能按键,复位后,数码管会默认显示时钟模式HH.MM 。 (HH表示小时,MM表示分钟), key0短按一次就进入到了秒表模式,数码管显示格式S.SS.S,(分别表示百秒,秒,毫秒) key0再短按一次就进入到了计数器模式,数码管显示格式CCCC(分别为千位百位十位个位)。 key0再短按一次,又进入到了时钟显示模式,就这样由key0控制模式的转换。 2)有RST复位键,本身电路设计有上电自动复位功能,按下RST后,电路复位。 3)有ckey0,ckey1 两个计数按键,按下ckey0,计数加一,按下ckey1,计数减一。 4) 电子时钟和秒表时间计时方法是采用89S52内部计时器0的一种工作方式(详见后面 的代码分析),通过计时器0中断来控制时间的运行。 5)计数器是采用外部中断0和外部中断1这两个外部中断实现加1和减1的操作。 (1)电子时钟模式:(以下“长按”表示按下按键的时间大于1秒,“短按”表示按下的时间小于0.7 秒)1)长按key1一次,会进入到调整分钟的模式,短按key1一次,分钟会加一。 第二次长按key1,会进入到调整小时的模式,短按key1一次,小时加一。 第三次长按key1,重新回到时钟显示模式,这时再短按key1,时间不会变化2)长按key0一次,会进入到显示秒的模式 (2)秒表模式: 1)由key0控制进入秒表模式后,短按key1一次,秒表计时开始,再短按key1一次计时结束 2)长按key1一次,秒表清零 (3)计数器模式 1)按ckey0一下,计数加一,数码管相应的显示的数值加一, 按ckey1一下,计数减一,数码管相应的显示的数值减一, 由于数码管的位数限制,最大只能显示到9999,此时按下ckey0无反应;考虑到 实际计数功能,没有设置负数,所以最小显示0000,这时按下ckey1 ,无反应。 2)长按key1一次计数器清零。 2、电路原理图

51单片机按键控制花样灯

51单片机按键控制花样灯 时间:2018-09-10 13:50:11 来源:51hei 作者: /**************************************************** * 本程序实现用按键控制花样灯。 * * 当K1按下时,灯从0xfe向左跑一遍; * * 当K2按下时,LED灯从0x7f向右跑一遍到了0xfe右跑回到起始位置; * * 当K3键按下时,LED灯从0xfe开始作流水灯形式运行一次,然后再流回来。 * * 当K4键按下时,LED灯先亮前四个,接着再转向亮后四个。 * * 当K5键按下时,结束任意正在进行的程序,使LED灯全部熄灭。 * ******************************************************/ ************************************************* 连接方法:P0接独立按键JP5。P2接LED灯接口JP1 * ***********************************************************/ #include //头文件,函数声明 #include //定义按键所在位 sbit K1=P0^0。 sbit K2=P0^1。 sbit K3=P0^2。 sbit K4=P0^3。 sbit K5=P0^4。 unsigned char led。 unsigned char j。 void delayms(unsigned char ms> // 1ms标准延时 { while(ms--> { for(j=0。j<110。j++>。 //还是无法设置比较标准的延时,如1S等;所以应该用定时器延时才最准确 } } void main(> { //P2=led。 unsigned int i。

基于单片机的简易秒表制作

华中科技大学 单片机原理及应用 课程设计报告 姓名:毅哥 学号:080108031113 学部(系):信息学部 专业年级:08自动化 指导教师:余愿 2011年6 月27日 目录

一.实验目的 (3) 二.实验任务 (3) 三.实现任务 (3) 四.程序流程图 (4) 五.程序 (4) 六.硬件原理图和PCB图 (9) 七.实验器件 (11) 八.参考文献 (12) 九.总结体会 (12)

简易秒表 一.实验目的 1.了解数码管与单片机的连接方式。 2.熟悉定时器.计数器.中断的综合应用技术。 3.熟悉键盘的使用。 二、实验任务 键盘是单片机应用系统中最常用的输人设备,用它输入数据或命令。数码管是单片机应用系统最常见的输出设备,用它显示单片机输出的视觉信息。本次实验制作的简易秒表,是利用按键控制LED数码管的显示,实现简易秒表的启动、停止与复位。 三、实现任务 需要解决如下问题: 1.如何实现计时; 2.如何显示时间; 3.如何利用按键实现对简易秒表的控制。 为此,可以采用单片机内部定时器T0 或Tl 的定时时间作为时钟计时的基准,实现计时。 用两个数码管动态显示时间,时间范围为0-60S,实现时间显示。用三个独立式按键实现秒表 的启动、停止和复位功能,实现控制。 具体实现: 1.实现计时。利用单片机内部T0计时器实现计时,首先给定时器工作方式寄存器TMOD赋值 0x01选定T0定时器工作在方式1。接着确定定时初值TH0=(65536—10000)/256;TL0=(65536—10000)%256实现10ms的定时,利用中断循环100次实现一秒的定时。中断控制条件为EA=1,ET0=1,TR0=1 2.实现时间显示。利用单片机P2端口控制数码管的位选,如:P2=0xfd;DS6时P2=0xfe利用 P0端口控制数码管的段选,如:共阳极时为P0= 0xc0,只要两个数码管位选段选间隔的时间适当,就可以实现动态显示时间。 3.实现按键控制。利用单片机P3复用端口输入按键控制命令,如:定义sbit key1=P3^2,可 以将与P3^2端口相连的按键定义为启动按键,与key2=P3^3为相连定义为暂停按键,与 key3=P3^5相连定义为复位按键。由原理图可知按键未按下时,相应端口为高电平,按下为低电平,因此可由条件key1/key2/key3是否为零来判断是否有键按下,有键按下就执行相应操作,实现按键的控制功能。

C51单片机秒表计时(C语言)

南开大学滨海学院 C51嵌入式软件设计(C语言) 题目:计时秒表 功能描述:本设计实现在99秒内的秒表计时,一个按键实 现开始、暂停、复位。 原理概述:P1接四位七段数码管,P3.2接一按键产生外部中断0, P3.4-P3.7控制扫描显示。计时使用定时器0产生10ms 中断累计。按键不同次序决定了对应的控制功能,因为第一次按键必定为开始计时,所以第二次按键判断为暂停,依次第三次为置零。主程序调用显示程序,显示程序实时显示计时时间。 效果显示

图一(电路总图) 图二(效果显示) 注:第四位显示为单位:S 程序清单 #in clude #in clude unsigned char Tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F }; sbit P37=P3A 7; sbit P36=P3A6; sbit P35=P3A5; sbit P34=P3A4; un sig ned int a=0,cout=0,mm=0;x,y,p,q; /********* void delay() { in t g; for(g=70;g>0;g--); H Ef H pf s II 劭B bg ^rl ry s " ■ U1 ■ ■ 口 HILK. paims^ i^^im Fl.^TD ■k i F JJ SOUI n.Tfflr dgirvi^n PH 1 win fOSAtl FCO A E3 POSAD5 HUMth rnTf^vr riwnrr 、:i ■ 品< rz.v^ 冲护 晒 PTanil 程和W P2J5^L 13 PZB?H Px-TiHIS RET ■nep rn F 目*.曰 '怛屮耐 B USr^.L* fDJMKi RONUn P2则a a ?3*J3 *5.

简易秒表

课程设计 题目简易数字秒表的设计与实现学院信息工程学院 专业通信工程 班级 姓名 指导教师撒继铭 2016 年 6 月26 日

课程设计任务书 学生姓名:专业班级: 指导教师:撒继铭工作单位:信息工程学院 题目: 简易数字秒表的设计与实现 初始条件: 本设计主要使用集成译码器、计数器、定时器、脉冲发生器和必要的门电路等来完成,用一组数码管显示时间计数值。 要求完成的主要任务: (包括课程设计工作量及技术要求,以及说明书撰写等具体要求) 1、课程设计工作量:1周。 2、技术要求: 1)设计一个能测量3名100米跑运动员短跑成绩的数字秒表。要求用一组四位数码管显示时间,格式为00.00s,最大计数时间是99.99秒。 2)秒表设置3个开关输入(清零开关1个、记录开关1个、成绩开关1个)。按下“记录”开关第一次,将记录并储存第一名运动员的成绩,以此类推。当“记录”开关按下3次后,成绩计数结束。3)成绩计数结束之后,连续按动“成绩”开关,可以把3个运动员的成绩循环显示在数码管上。4)确定设计方案,按功能模块的划分选择元、器件和中小规模集成电路,设计分电路,画出总体电路原理图,阐述基本原理。 3、查阅至少5篇参考文献。按《武汉理工大学课程设计工作规范》要求撰写设计报告书。全文用A4纸打印,图纸应符合绘图规范。 时间安排: 1、年月日,布置课设具体实施计划与课程设计报告格式的要求说明。 2、年月日至年月日,方案选择和电路设计。 3、年月日至年月日,电路调试和设计说明书撰写。 4、年月日,上交课程设计成果及报告,同时进行答辩。 指导教师签名:年月日 系主任(或责任教师)签名:年月日

C语言课程设计报告——贪吃蛇源程序

C 语言课程设计 (小游戏贪吃蛇的程序设计报告)

设计人: 班级: 201 年月号

目录一:概述 1:研究背景及意义 2:设计的任务与需要知识点 3:具体完成设计内容 二:需求分析 1:功能需求 2:操作方法 三:总体设计 1:模块划分 2:数据结构设计 四:详细设计 1:主空摸块设计 2:绘制游戏界面 3:游戏的具体过程 4:游戏的结束处理 5:显示排行榜信息模块 五:程序的调试与测试 1:动画与音乐同步 2:蛇的运行 3:终止程序 六:结论 七::结束语 八:程序清单 九:参考文献

一.概述 本课程设计以软件工程方法为指导,采用了结构化,模块化的程序设计方法,以C 语言技术为基础,使用Turbo C++3.0为主要开发工具,对贪吃蛇游戏进行了需求分析,总体设计,详细设计,最终完成系统的实现与测试。 1.1 研究的背景及意义 随着社会的发展,人们生活的节奏日益加快,越来越多的人加入了全球化的世界。人们不再拘泥与一小块天地,加班,出差成了现代人不可避免的公务。而此时一款可以随时随地娱乐的游戏成为了人们的需要。此次课程设计完成的贪吃蛇小游戏,正是为了满足上述需求而设计出来的。贪吃蛇游戏虽小,却设计诸多的知识点。通过开发贪吃蛇游戏系统,可使读者初步了解使用软件工程的和那个发,技术和工具开发软件的过程,进一步掌握结构化,模块化的程序设计方法和步骤,进一步掌握总体数据结构设计,模块划分方法,掌握局部变量,全局变量,结构体,共用体,数组,指针,文件等数据结构的使用方法,掌握图形,声音,随机数等多种库函数的使用方法,学习动画,音乐,窗口,菜单,键盘等多项编程技术,进一步学会软件调试,测试,组装等软件测试方法,为后续课程的学习和将来实际软件开发打下坚实的基础。 1.2 设计的任务和需要的知识点 1.2.1 课程设计主要完成的任务 1). 通过编写“贪吃蛇游戏”程序,掌握结构化,模块块化程序设计的思想,培养解决实际问题的能力。 2) 有同步播放动画,声音效果。 3) 设计好数组元素与蛇,食物的对应关系。 4) 随机产生食物。 5) 有分数统计,排行榜,分数存储等功能。 通过此次课程设计,希望使读者能更深入的理解和掌握课程教学中的基本概念,培养读者应用基本技术解决实际问题的能力,从而进一步提高分析问题和解决问题的能力。 1.2.2需要掌握和运用的知识点 1.2.3本次课程设计需要掌握和运用如下的知识点: 1) 数组的应用。 2) 全局变量的使用。 3) 按键处理。 4)结构体的应用。 5)图形,音乐和动画的有关知识。 6)随即函数的使用。 7)文件的基本出操作。

C语言程序设计50例(经典收藏)

水仙花 #include void main() { int a,b,c,i; for( i=100;i<1000;i++) { a=i/100; b=i%100/10; c=i%10; if(a*a*a+b*b*b+c*c*c==i) { printf("\n"); } } } 【程序1】 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有

的排列后再去掉不满足条件的排列。 2.程序源代码: #include "stdio.h" #include "conio.h" main() { int i,j,k; printf("\n"); for(i=1;i<5;i++) /*以下为三重循环*/ for(j=1;j<5;j++) for (k=1;k<5;k++) { if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/ printf("%d,%d,%d\n",i,j,k); } getch(); } 【程序2】 题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按1 0%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数? 1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。 2.程序源代码:

简易秒表设计唐巧玲

本科学生设计性实验报告 学号:姓名: 学院:**学院专业、班级: 实验课程名称:简易秒表设计 教师:** 老师 开课学期:2013 至2014 学年第二学期填报时间:2014 年 6 月18 日

一、摘要 单片机自70年代问世以来得到蓬勃发展,目前单片机功能正日渐完善:单片机集成越来越多资源,内部存储资源日益丰富,用户不需要扩充资源就可以完成项目开发,不仅是开发简单,产品小巧美观,同时抗干扰能力加强,系统也更加稳定,使得它更加适合工业控制领域,具有更加广阔的市场前景;提供在线编程能力,加速了产品的开发进程,为企业产品上市赢得宝贵时间。此外单片机具有性能高、速度快、体积小、价格低、稳定可靠、应用广泛、通用性强等突出优点。单片机的设计目标主要是增强“控制”能力,满足实时控制的需要。 本文的主要内容是掌握各种单片机的结构、接口、片上外设的特点,并利用自行制作的单片机是最小系统,完成一个简单应用(简易秒表)的设计与软件及硬件设计制作,让读者掌握数字单片机最小系统的设计及单片机系统的应用方法。 关键字:AT89C51;数码管;设计制作; 二、引言 当前社会信息化建设在各地蓬勃发展,作为信息发布的终端显示设备,LED 显示屏已经广泛应用于工作和生活的各个方面,主要用于显示文字、图像、动画等。LED显示屏的应用涉及社会的许多领域,主要包括:金融证券、体育场馆、

道路交通、邮政电信、商场购物中心等服务领域的业务宣传及信息显示。LED 是发光二极管的简称(Light Emitting Diode)。由于它具有亮度高、响应速度快、低电压、功耗小、耐震动、寿命长等优点,使其成为室内外信息显示终端的主要发光器件,由于亮度高、画面清晰、色彩鲜艳,使它在公众多媒体显示领域一枝独秀,因此市场空间巨大。LED显示屏的发展可分为以下几个阶段:第一阶段为1990年到1995年,主要是单色和16级双色图文屏。用于显示文字和简单图片,主要用在车站、金融证券、银行、邮局等公共场所,作为公共信息显示工具。第二阶段是1995年到1999年,出现了64级、256级灰度的双基色视频屏。视频控制技术、图像处理技术、光纤通信技术等的应用将LED显示屏提升到了一个新的台阶。LED显示屏控制专用大规模集成电路芯片也在此时由国内企业进行了深入的研发工作,使用红、绿、蓝三原色LED生产的全彩色显示屏被广泛应用,大量进入体育场馆、会展中心、广场等公共场所,从而将国内的大屏幕带入全彩时代。 三、设计思想 该设计采用89C51单片机制作,P1口控制显示十位和各位,采用共阴极的方法,编写程序通过89C51的并口给单个七段数码管对应引脚提供相应电平,就可以显示内容了,需要注意的是因各段的发光二极管额定电流很小,所以需要限流保护数码管。 四、设计内容 根据生活中秒表的设计结构,可以得到如下整体的外围电路:

一些比较简c语言程序源代码

/**返回的long型的最大值是startLongValue+count-1(产生一个随机数) * param needCount * param count * param startLongValue * return */ public static List randomNoRepeatLongArray(int needCount,int count,long startLongValue){ //这种情况会出现无限循环的 if(needCount>count) return null; Random random = new Random(); int[] ints = new int[count]; for(int i=0;i list = new ArrayList(); while(list.size() #include #include

相关文档
相关文档 最新文档