单片机听课笔记1-8课(金沙滩2024年更新)(3)

2025-06-24

}

cnt++;

if(cnt>= 50) {

cnt = 0;

P0 = ledchar[sec]; sec++; if(sec>= 16) { }

sec = 0;

}

}

}

作业:

1、 熟练掌握单片机定时器的原理和应用方法

2、 通过研究定时器模式1的示意图,自己打开STC89C52RC手册的定时器部分,独立研究模式0,模式1,模式2,

和模式3的示意图,锻炼研究示意图的能力。 3、 使用定时器实现延时,完成左右移动的流水灯程序。 4、 了解数码管的原理,掌握数码管的真值表计算方法。 5、 编程实现数码管静态显示秒表的倒计时。

Lesson 6 中断与数码管动态显示 1、 if语句的用法

(1) if (条件表达式)

{

语句1;

} 只判断一次,只执行一次,然后执行下面的程序。

(2) if (条件表达式)

{ } else { }

(3) if(表达式1) {语句1;} elseif(表达式1) {语句1;}

elseif(表达式1) {语句1;}

else {语句n} 一旦有一个为真,执行完相应语句后,跳出if语句。

2、 switch语句的用法

法一: Switch(表达式) { }

Case 常量表达式n:语句n; Default: 语句n+1;

Case 常量表达式1:语句1; Case 常量表达式2:语句2;

语句2; 语句1;

法二:

Switch(表达式) { }

Case 常量表达式n:语句n;break; Default: 语句n+1;

break;

Case 常量表达式1:语句1; break; Case 常量表达式2:语句2; break;

3、动态显示 利用人肉眼的视觉暂留现象(余晖效应) 10ms以内必须重新刷新同一个数码管。

ENLED ADDR3 选中 ADDR2 ADDR1 ADDR0 切换 4、6位显示的秒表程序(if语句)

#include

sbit ADDR0 = P1^0; sbit ADDR1 = P1^1; sbit ADDR2 = P1^2; sbit ADDR3 = P1^3; sbit ENLED = P1^4;

unsigned char code ledchar[] = {0xc0,0xf9,0xa4,0xb0,

0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83, 0xc6,0xa1,0x86,0x8e};

unsigned char ledbuff[6] = {0xff,0xff,0xff,0xff,0xff,0xff}; //初始值 0XFF

void main() { unsigned int cnt = 0; unsigned long sec = 0; unsigned char i = 0; ENLED = 0; ADDR3 = 1; TMOD = 0X01; TH0 = 0XFC; TL0 = 0X67; TR0 = 1; while(1)

{ if(TF0 == 1) { }

}

}

TF0 = 0; TH0 = 0XFC; TL0 = 0X67; cnt++; if(cnt>=1000) { cnt = 0; sec++; ledbuff[0] = ledchar[sec]; ledbuff[1] = ledchar[sec/10]; ledbuff[2] = ledchar[sec/100]; ledbuff[3] = ledchar[sec/1000]; ledbuff[4] = ledchar[sec/10000]; ledbuff[5] = ledchar[sec/100000]; // } if(i == 0) { ADDR2 = 0; ADDR1 = 0; ADDR0 = 0; i++; P0 = ledbuff[0]; }

else if (i == 1) { ADDR2 = 0; ADDR1 = 0; ADDR0 = 1; i++; P0 = ledbuff[1]; }

else if (i == 2) { ADDR2 = 0; ADDR1 = 1; ADDR0 = 0; i++; P0 = ledbuff[2]; }

else if (i == 3) { ADDR2 = 0; ADDR1 = 1; ADDR0 = 1; i++; P0 = ledbuff[3]; }

else if (i == 4) { ADDR2 = 1; ADDR1 = 0; ADDR0 = 0; i++; P0 = ledbuff[4]; }

else if (i == 5) { ADDR2 = 1; ADDR1 = 0; ADDR0 = 1; i = 0; P0 = ledbuff[5]; }

5、6位显示的秒表程序(switch语句) #include

sbit ADDR0 = P1^0; sbit ADDR1 = P1^1; sbit ADDR2 = P1^2; sbit ADDR3 = P1^3; sbit ENLED = P1^4;

unsigned char code ledchar[] = {0xc0,0xf9,0xa4,0xb0,

0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83, 0xc6,0xa1,0x86,0x8e};

unsigned char ledbuff[6] = {0xff,0xff,0xff,0xff,0xff,0xff}; //初始值 0XFF

void main() { unsigned int cnt = 0; unsigned long sec = 0; unsigned char i = 0; ENLED = 0; ADDR3 = 1; TMOD = 0X01; TH0 = 0XFC; TL0 = 0X67; TR0 = 1; while(1) { if(TF0 == 1) { TF0 = 0; TH0 = 0XFC; TL0 = 0X67; cnt++; if(cnt>=1000) { cnt = 0; sec++; ledbuff[0] = ledchar[sec]; ledbuff[1] = ledchar[sec/10]; ledbuff[2] = ledchar[sec/100]; ledbuff[3] = ledchar[sec/1000]; ledbuff[4] = ledchar[sec/10000]; ledbuff[5] = ledchar[sec/100000]; //


单片机听课笔记1-8课(金沙滩2024年更新)(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:定位销轴的数控加工工艺与程序编制

相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

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