秒表及论文
目 录 1 课程设计的目的... 3 2 课程设计题目描述和要求... 3 2.1实验题目... 3 2.2设计指标... 3 2.3设计要求... 3 2.4增加功能... 3 2.5课程设计的难点... 3 2.6课程设计内容提要... 4 3 课程设计报告内容... 4 3.1设计思路... 4 3.2设计过程... 5 3.3 程序流程及实验效果... 6 3.4 实验效果... 12 4 心得体会... 13
- //12M晶振。4位共阴数码管,P0 段码,P2.0~P2.3 位控
- //显示 00.00~99.99
- //2011 07 07 E:\DPJ_C\00.00\00.00.c
- #include <reg51.h>
- #define uchar unsigned char
- sbit P20=P2^0;
- sbit P21=P2^1;
- sbit P22=P2^2;
- sbit P23=P2^3;
- sbit P27=P0^7;
- sbit KS=P1^0; //开始
- sbit KR=P1^1; //复位
- uchar time,xs,ge,shi,bai,qian;
- uchar code tab[ ]= {
- 0x3F,/*0*/
- 0x06,/*1*/
- 0x5B,/*2*/
- 0x4F,/*3*/
- 0x66,/*4*/
- 0x6D,/*5*/
- 0x7D,/*6*/
- 0x07,/*7*/
- 0x7F,/*8*/
- 0x6F,/*9*/
- };
-
- void delay_ms(unsigned int ms) //1ms延时
- {
- uchar a;
- while(ms--)
- for(a=123;a>0;a--);
- }
-
- void display();
- void T0intinit( ) //定时器T0初始化
- {
- TMOD=0x01;
- TH0=(65536-10000)/256; //10ms定时
- TL0=(65536-10000)%256;
- EA=1;
- ET0=1;
- }
- void main()
- {
- T0intinit( );
- while(1)
- {
- display( );
- while(!KS) //开始/暂停 键
- {
- display( );
- if(KS)
- TR0=!TR0;
- }
-
- while(!KR) //清零键
- {
- display( );
- if(KR)
- TR0=0;
- qian=0;
- bai=0;
- shi=0;
- ge=0;
- }
- if(bai==10)
- {
- bai=0;
- qian++;
- }
- if(qian==10)
- {
- qian=0;
- TR0=0;
- }
- }
- }
- void display( )
- {
- P23=0;
- P0=tab[ge];
- delay_ms(1);
- P23=1;
- P22=0;
- P0=tab[shi];
- delay_ms(1);
- P22=1;
- P21=0;
- P0=tab[bai]|0x80;
- delay_ms(1);
- P21=1;
- P20=0;
- P0=tab[qian];
- delay_ms(1);
- P20=1;
- }
- void T0int( ) interrupt 1 //定时器T0中断 方式1
- {
- TH0=(65536-10000)/256; //重装10ms定时常数
- TL0=(65536-10000)%256;
- ge++;
- if(ge==10)
- {
- ge=0;
- shi++;
- }
- if(shi==10)
- {
- shi=0;
- bai++;
- }
- }
复制代码
仿真工程文件及程序和论文下载:
数字秒表仿真.zip
(20.68 KB, 下载次数: 86)
|