单片机c语言电子时钟 - (刘遇星)(6)

2019-03-28 17:35

程序初使化N判断时加键thour是否按下,P1.2=0?判断标志flag是否为0,flag=0?输出时钟时个位加1,dat1[6]++,延时.YYdat1[6]>9?N判断分加键盘tminute是否按下,P1.1=0?NNY输出闹钟时个位加1,alarms[6]++,延时alarms[6]>9?输出时钟时十位加1,dat1[7]++,延时Y判断标志flag是否为0,flag=0?YN输出闹钟时十位加1,alarms[7]++,延时输出闹钟分个位加1,alarms[3]++,延时NNYNdat1[7]>2?Y输出时钟分个位加1,dat1[3]++,延时.alarms[3]>9?NYdat1[3]>9?输出闹钟分十位加1,alarms[4]++,延时Nalarms[4]>2?Yalarms[7]>2?时十位归零,dat1[7]=0Y时十位归零,alarms[7]=0.输出时钟分十位加1,dat1[4]++,延时Ndat1[4]>2?Y分十位归零,dat1[4]=0Y分十位归零,alarms[4]=0.

图3-4按键程序流程图 图3-5为进入中断和清零图,程序中通过扫描来判断按键是否按下进行执行相应的中断来事实现相应的功能。

24

判断分加键tminute是否按下,p1.1=0 N 判断秒表miaobiao1是否按下 N 判断清零键miaobiao2是否按下,p1.3=0 Y Y 进入秒表中断,执行秒表中断程序 返回上级主程序 N 清零所有的计数器,各个显示的字码

图3-5 中断和清零程序流程图 25

§3.3控制电路的C语言源程序

根据流程图,经过认真分析得出控制电路的源程序如下: #include

#define uchar unsigned char #define uint unsigned int #define delay_time 3/*宏定义*/ uchar k,dat[]={0,0,0,0,0,0,0,0}; uint tcount,t,u;

uchar dat1[]={0,0,0,0,0,0,2,1}; uchar dat2[]={0,0,0,0,0,0,0,0}; uchar alarms[]={0,0,0,0,0,0,0,0}; uchar

dis_bit[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};

unsigned char code SEG7[11]={0xC0,/*0*/

0xF9,/*1*/ 0xA4,/*2*/

0xB0,/*3*/ 0x99,/*4*/

0x92,/*5*/ 0x82,/*6*/ 0x90,/*9*/ 0xBF,/*-*/ };/*数字显示数组*/ sbit miaobiao1=P1^0; sbit tminute=P1^1; sbit thour=P1^2; sbit miaobiao2=P1^3;

26

0xF8,/*7*/ 0x80,/*8*/

sbit alarm=P1^4; sbit P0_0=P0^0; sbit P1_5=P1^5; sbit P1_6=P1^6;

sbit P1_7=P1^7;/*端口定义*/ uchar ms=0; uchar flag=0; uchar sec=0; uchar minit=0; struct

time{uchar

second;uchar

hour;}time1; uchar n,i; void delay(n) {while(n--)

{

for(i=120;i>0;i--); } }

/*延时子程序*/ void modify(void) { EA=0; if(thour==0) {

if(flag==0) {

dat1[6]++;delay(280);

minute;uchar

27

if(dat1[6]>9)

{ dat1[6]=0; dat1[7]++; } else if((dat1[7]>1)&&(dat1[6]>3)) {dat1[7]=0; dat1[6]=0; } }

if(flag==1) {

alarms[6]++;delay(300);

if(alarms[6]>9) {

alarms[6]=0;alarms[7]++;

if(alarms[7]>2) { alarms[7]=0;

} }

dat[6]=alarms[6];

dat[7]=alarms[7]; }

}

if(tminute==0) {

if(flag==0) {

28


单片机c语言电子时钟 - (刘遇星)(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:壮语泰语和汉语的斯瓦迪士207个核心词对比

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: