89C51单片机课程设计之秒表设计实验报告 - 图文(2)
2.2软件方案设计
此次选用C51来编程,首先要有初始化程序,通过初始化程序,将对主程序所用到的变量、常量以及各个参数和所调用的子函数定义。其次还有显示程序、按键扫描及处理程序、时钟程序和倒计时程序,系统软件流程图图如图 3所示:
图3
按键的扫描及处理 数码管显示选择 While 开始 系统初始化 3 程序编写的流程及课程设计效果 3.1 源程序及注释
/*----------------------------------------------- 名称:数码管显示,按键控制秒表 论坛:www.doflye.net 编写:shifang 日期:2009.5 修改:无
内容:中断按键控制,数码管显示,中断0控制计时和停止,中断1清零 ------------------------------------------------*/
#include
unsigned int msecond,second;//定义全局变量 bit GoFlag;//定义停止,计时标志
#define DataPort P0 //定义数据端口 程序中遇到DataPort 则用P0 替换 sbit LATCH1=P2^2;//定义锁存使能端口 段锁存 sbit LATCH2=P2^3;// 位锁存 sbit KEY=P3^2; unsigned
char
code
dofly_DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 显示段码值0~9 unsigned
char
code
dofly_WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分别对应相应的数码管点亮,即位码
unsigned char TempData[8]; //存储显示值的全局变量
void DelayUs2x(unsigned char t);//函数声明 void DelayMs(unsigned char t);
void Display(unsigned char FirstBit,unsigned char Num); void Init_Timer0(void); void CLR(void);
/*------------------------------------------------ 主函数
------------------------------------------------*/
void main (void) {
unsigned char num=0;
EX0=1; //外部中断0开 IT0=1; //IT1=0表示边沿触发 EX1=1; //外部中断1开 IT1=1; //IT1=1表示边沿触发 Init_Timer0();
while (1) //主循环 {
TempData[0]=dofly_DuanMa[second/10];//分解显示信息,如要显示68,则
68/10=6 68=8
TempData[1]=dofly_DuanMa[second];
TempData[2]=0x40;// \
TempData[3]=dofly_DuanMa[msecond/10];//分解显示信息,如要显示68,则
68/10=6 68=8
TempData[4]=dofly_DuanMa[msecond];
//主循环中添加其他需要一直工作的程序
} }
/*------------------------------------------------ 显示函数,用于动态扫描数码管
输入参数 FirstBit 表示需要显示的第一位,如赋值2表示从第三个数码管开始显
示
如输入0表示从第一个显示。
Num表示需要显示的位数,如需要显示99两位数值则该值输入2 ------------------------------------------------*/ void Display(unsigned char FirstBit,unsigned char Num) {
static unsigned char i=0;
DataPort=0; //清空数据,防止有交替重影
LATCH1=1; //段锁存 LATCH1=0;
DataPort=dofly_WeiMa[i+FirstBit]; //取位码 LATCH2=1; //位锁存 LATCH2=0;
DataPort=TempData[i]; //取显示数据,段码 LATCH1=1; //段锁存 LATCH1=0;
i++;
if(i==Num) }
/*------------------------------------------------ 定时器初始化子程序
i=0;
------------------------------------------------*/ void Init_Timer0(void) {
TMOD |= 0x01; 器时不受影响
//使用模式1,16位定时器,使用\符号可以在使用多个定时
//TH0=0x00; //给定初值 //TL0=0x00;
EA=1; //总中断打开 (总中断控制开关) ET0=1; //定时器中断打开 (允许中断0的发生) TR0=1; //定时器开关打开 (定时器T0开始工作) }
/*------------------------------------------------ 定时器中断子程序
------------------------------------------------*/ void Timer0_isr(void) interrupt 1 {
static unsigned char num; TH0=(65536-2000)/256; TL0=(65536-2000)%6;
Display(0,8); if(GoFlag) { num++; if(num==5) {
num=0;
//重新赋值 2ms
msecond++;
if (msecond==100)//100进1
…… 此处隐藏:744字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [互联网资料]2022年厦门大学机电工程系824机械设计
- [互联网资料]东南大学2022年硕士研究生拟录取名单公
- [互联网资料]能源调研报告(精选多篇)
- [互联网资料]初三英语下学期 中考英语 语法填空训练
- [互联网资料]2022内蒙古选调生行测常识备考:新事物
- [互联网资料]自驾必备!在新西兰租什么样的车自驾游
- [互联网资料]佛教素食菜谱44页未完
- [互联网资料]盈利能力分析外文翻译
- [互联网资料]2022年南昌航空大学音乐学院736马克思
- [互联网资料]优选外贸跟单实习报告总结(精品版)
- [互联网资料]银行新员工培训总结
- [互联网资料]2_year_visa_new_guidance_190316
- [互联网资料]天津市五校宝坻一中静海一中杨村一中芦
- [互联网资料]2007--2008学年第一学期高三数学宁波市
- [互联网资料]Chromatic framework for vision in ba
- [互联网资料]幼儿园大班上学期美术教案《心愿树》含
- [互联网资料]2022年华中农业大学信息学院820微型计
- [互联网资料]硬盘坏道的表现 __硬盘使用久了
- [互联网资料]江苏省2016年会计从业资格考试《会计基
- [互联网资料]公共场所卫生监督试卷全解
- 高级英语第一册所有修辞方法及例子总结
- 综合交通枢纽规划与城市发展
- 沃尔玛的企业文化案例分析
- 美国Thanksgiving Day 感恩节 介绍
- PEP六年级英语上册Unit6How do you fee
- 最齐全的中国大型商场购物中心名单
- 数据结构实验报告八—哈夫曼编译码
- 杭州市余杭区人民政府(通知)
- 七年级语文成语运用专项训练
- 微观经济学第三章 消费者行为 课后习题
- 对_钱学森之问_的思考
- Excel_三级联动_下拉菜单
- 办公用品需求计划申请表
- 对外汉语教材必须要知道的发展史
- 挑战杯大学生学术科技作品竞赛作品申报
- 举办民办教育培训机构应具备下列条件
- 太阳能路灯项目设计方案
- 2013年八年级上最新人教版新教材Unit3I
- 【历史】 6-4 《近代科学之父牛顿》 课
- 高中生物《第四章 第二节 探讨加酶洗衣




