51单片机时钟秒表课程设计

发布者:雅致小筑最新更新时间:2015-07-10 来源: 51hei关键字:51单片机  时钟秒表  课程设计 手机看文章 扫描二维码
随时随地手机看文章
这个是我写的作业的方案,单片机课程结课作业,以下是我写的设计方案,写的不咋滴 欢迎拍砖。。

一、详细功能设计

1、基于51单片机倒计时秒表,最大值为9999秒,计时单位为0.1秒;

2、计时的初始值为组员学号后4位,键盘启动/停止计时;

3、设计多个按键,使用键盘选择不同成员的学号作为初始值。
二、8031最小系统设计

1、最小系统设计原理图如图1.0所示:

 
 

2、8031最小系统概述;

   8031最小系统包含晶振电路与复位电路。 晶振选择12MHZ晶振,晶振电容使用30pf电容瓷片电容。复位电路选择上电复位。
三、硬件设计

1、数码管电路

   在本设计中,使用7段共阴极数码管,选择数码管的型号为7SEG-MPX6-CC;

2、数码管片选电路;

   由于本设计需要显示五位数字,同时为了驱动数码管,使用了74HC154芯片。与此同时,使用74HC154芯片还可以扩展数码管显示数字的个数。
三、软件设计

1、程序流程图如图3.0所示:


 

图3.0 程序流程图

2、程序流程说明

   数码管显示和扫描键盘子函数放在0.1秒的定时器中断里,而主函数的while(1)函数向数码管显示数据变量送数据。数码管显示函数接受键盘状态,根据状态执行开始计时、暂停、选择学号等功能。
四、调试说明

1、仿真调试如图4.0所示:



图4.0 proteus 仿真效果

2、按下以组员的名字命名的按键时,可以选择相应同学的学号的后四位为倒计时的初始值,如不设置初始值为0336,若按下“张洪荣”按键,初始值为0337;按下“开始”按键时开始倒计时;按下“暂停”按键时,计时停止;
附录:源代码下载:http://www.51hei.com/f/szgg.rar

1,程序源码;

#include

#include

#include

int num =03;         //我们学号的班别 03

int stu_num0 =36;        //学号后两位

int stu_num1 =37;

int stu_num2 =42;

int stu_num3 =11;

int stu_num4 =22

int num_count = 36;         //将学号吼两位选择的值赋给 num_count,初始值为36

sbit start = P1^0;        //开始按键

sbit stop  = P1^1;        //停止按键

sbit key0 = P1^2;        //选择同学

sbit key1 = P1^3;        //选择同学

sbit key2 = P1^4;         //选择同

sbit key3 = P1^5;        //选择同学

sbit key4 = P1^6;        //选择同学

sbit key5 = P1^7;                 

unsigned int T1msc;

unsigned char Ledc;

unsigned char Leds[]={8,6,0x13,5,1,2,3,4};                   

bit isStart;

int temp=9;  //0.1秒存储变量 初始值 9

code char LEDTAB[]=

{

  0x3f,0x06,0x5b,0x4f,0x66,

  0x6d,0x7d,0x07,0x7f,0x6f,

  0x00,

};[page]

void Delayms(int ms)

{

  while(ms)

  {

    unsigned char i;

    ms--;

    for (i=0; i<240; i++);

  }

}

void display()

{

  char v,c;

  P3=0x11;

  v=Leds[Ledc];

  c=LEDTAB[v & 0x0f];

  if (v&0x10)   c|=0x80;           

  P2=c;

  P3=Ledc;

  Ledc++;

  if (Ledc>=8) Ledc=0;

}

void readkey()                  //读按键

{

       if(start==0)         isStart = 1;        //真为开始

           if(stop==0)         isStart = 0;        //假为停止

           if(key0 == 0)   num_count = stu_num0; //选择曾路荣

           if(key1 == 0)   num_count = stu_num1;//选择张洪荣

           if(key2 == 0)   num_count = stu_num2;

           if(key3 == 0)   num_count = stu_num3;

           if(key4 == 0)   num_count = stu_num4;

           if(key5 == 0)   num_count = stu_num5;

}

void t0int() interrupt 1 //1ms定时器中断服务函数

{

  TH0=(-1000)>>8;

  TL0=-1000;

  display();

  readkey();

  T1msc++;

  if (isStart)          //开始倒计时

  {

     if ((T1msc%100)==0) //满 0.1秒

         {

                   temp--;

                 if(temp==-1)

                 {

                   num_count--;

                   temp = 10;         //0.1秒恢复9

                 }

         }          

         if(num_count == -1)   //

         {

           num_count  = 99;

           num--;

           if(num == -1) num = 99;

         }

   }

  if (T1msc>=1000)

  {

      T1msc=0;

  }

}

void NumToLeds()

{

          Leds[1]=num/10%10;

          Leds[2]=num%10;

          Leds[3]=num_count/10%10;

          Leds[4]=num_count%10+0x10;

          Leds[5]=temp;         //0.1秒显示

}

void main()

{

          Delayms(10);

          TMOD=0x01;

          TR0=1;

          ET0=1;

          EA=1;

          while(1)

          {

             NumToLeds();        //送数据

          }

}

关键字:51单片机  时钟秒表  课程设计 引用地址:51单片机时钟秒表课程设计

上一篇:单片机闪烁灯流水灯汇编代码大全
下一篇:单片机串口通信源码

推荐阅读最新更新时间:2024-03-16 14:24

51单片机入门教程(1)——点亮一个LED灯
一、什么是单片机 单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。 以上是百度百科上的词条,随便看看就行了,下面说一下我对单片机的理解: 我们都知道,我们的电脑是由CPU、内存、磁盘、IO设备等组成的,而单片机简而言之,就是一个微型电脑,它在
[单片机]
<font color='red'>51单片机</font>入门教程(1)——点亮一个LED灯
51单片机C语言延时函数怎么定义和使用
C语言定义延时函数主要通过无意义指令的执行来达到延时的目的。C程序中可使用不同类型的变量来进行延时设计。经实验测试,使用unsigned char类型具有比unsigned int更优化的代码,在使用时应该使用unsigned char作为延时变量。   以某晶振为12MHz的单片机为例,晶振为12MHz即一个机器周期为1us。现在定义一个延时xms毫秒的延时函数。 void delay(unsigned int xms) // xms代表需要延时的毫秒   {   unsigned int x,y;   for(x=xms;x =0;x--)   for(y=110;y =0;y--);   }
[单片机]
8051单片机教程第四课:第一个小程序
上一次我们的程序实在是没什么用,要灯亮还要重写一下片子,下面我们要让灯不断地闪烁,这就有一定的实用价值了,比如可以把它当成汽车上的一个信号灯用了。怎样才能让灯不断地闪烁呢?实际上就是要灯亮一段时间,再灭一段时间,也就是说要P10不断地输出高和低电平。怎样实现这个要求呢?请考虑用下面的指令是否可行: SETBP10 CLRP10…… 这是不行的,有两个问题,第一,计算机执行指令的时间很快,执行完SETBP10后,灯是灭了,但在极短时间(微秒级)后,计算机又执行了CLRP10指令,灯又亮了,所以根本分辨不出灯曾灭过。第二,在执行完CLRP10后,不会再去执行SETBP10指令,所以以后再也没有机会让灭了。 为了解决这两
[单片机]
C51单片机学习笔记(六)——液晶显示屏的使用
1.LCD1602的认识 液晶显示屏简称液晶、LCD。各种型号的液晶通常是按显示字符的行数或液晶点阵的行、列进行命名的。1602的意思就是每一行显示16个字符,共可以显示2行,常见的液晶还有0801、0802、1601等,这类液晶是字符型液晶,只能显示ASCII码字符。而LCD12864属于图形型液晶,由128*64个像素点构成,可以显示各种图形包括汉字。 LCD1602可显示2行ASCII码字符,每行包括16个5*10点阵(像素),有16个引脚,其实物图如下所示: 2.LCD1602的引脚及其功能 3.LCD模块的内部结构 LCD1602模块的内部结构分为三部分:LCD控制器、LCD驱动器、LCD显示器 LCD控制器
[单片机]
C<font color='red'>51单片机</font>学习笔记(六)——液晶显示屏的使用
基于51单片机的D/A & A/D 与单片机接口原理
D/A :数字 (digit)到模拟(analog) 就是把数字信息转换成模拟量 单片机属于数字芯片内部只有0和1表示的。无法表达一个模拟量。电压值 模拟量是随意变化的。数字量就2种变化没有变化表示。 如果是一个8位 D/A芯片 这里是并行口 8跟线跟单片机连接 就是 从0到255 0 0 0 0 0 0 0 0 ---- 1 1 1 1 1 1 1 1 全部送 1就是最大的表示范围 。如果是5V 那么最小的变化范围就是5V / 255 约等 0.0196. 一、D/A转换器的原理 T型电阻网络 D/A 转换器(如图): 工作原理: Vref 是参考电压的输入端,下面的 D0---D7是数字控制端上面的开
[单片机]
基于<font color='red'>51单片机</font>的D/A & A/D 与单片机接口原理
一个简易的51单片机串口接收和发送程序
/********************* 程序功能:接收上位机发过来的一个字符串,然后把该字符串发送给上位机, 字符串必须以!结尾 **********************/ #include reg52.h #define uchar unsigned char #define uint unsigned int sbit LED = P2^7; uchar flag = 0; uchar index = 0; uchar data c ; void Delay_ms(uint n) { uchar i; while(n--) for(i = 0;i 120;i++); } void Send_strin
[单片机]
51单片机PWM直流电机PID控制转速源程序
AT89C51单片机PWM直流电机转速PID控制源程序,重点介绍利用MCS-51系列单片机控制PWM信号从而实现对直流电机转速进行控制的方法。设计中采用了专门的芯片组成了PWM信号的发生系统并且对PWM信号的原理、产生方法以及如何通过软件编程对PWM信号占空比进行调节从而控制其输入信号波形等均作了详细的阐述。另外本系统中使用了红外对管对直流电机的转速进行测量,经过整形电路后将测量值送到单片机,并且最终作为反馈值输入到单片机进行PID运算从而实现了对直流电机速度的控制。在软件方面,文章中详细介绍了PID运算程序初始化程序等的编写思路和具体的程序实现。 1 单片机最小系统:单片机最小系统由51单片机,晶振电路,复位电路,电源组成。
[单片机]
基于51单片机温度采集及无线发送
0 引言 随着数字化脚步的加快,越来越多的数字化产品取代了原有的机械式仪表,从而大大提高了数据的准确率。然而,多数情况下,温度的采集过程只在现场实时显示,在增加了工作量的同时,也可能会造成很多不便,如进入危险区域。因此,将无线网络应用在工业生产中,不仅能大大提高工作效率,同时也在一定程度上降低了劳动强度。 本设计基于以上两点,将工业生产中常用到的温度进行数字化,并通过无线模块将数据发送出去,在接收方利用无线接收设备接收实时的数据,从而大大降低劳动强度。 1 系统组成 系统由单片机、温度传感器、串口通信模块和无线传输模块等几部分组成。测温系统将测得的温度通过单片机在数码管上实时显示,同时,通过串口通信部分和无线模块将数
[单片机]
基于<font color='red'>51单片机</font>温度采集及无线发送
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved