单片机c语言应用实例,单片机C语言和编应用实例20-26.doc

单片机C语言和编应用实例20-26

20. 数字钟﹝★﹞

1. 实验任务

(1. 开机时,显示12:00:00的时间开始计时;

(2. P0.0/AD0控制“秒”的调整,每按一次加1秒;

(3. P0.1/AD1控制“分”的调整,每按一次加1分;

(4. P0.2/AD2控制“时”的调整,每按一次加1个小时;

2. 电路原理图

图4.20.1

3. 系统板上硬件连线

(1. 把“单片机系统”区域中的P1.0-P1.7端口用8芯排线连接到“动态数码显示”区域中的A-H端口上;

(2. 把“单片机系统:区域中的P3.0-P3.7端口用8芯排线连接到“动态数码显示”区域中的S1-S8端口上;

(3. 把“单片机系统”区域中的P0.0/AD0、P0.1/AD1、P0.2/AD2端口分别用导线连接到“独立式键盘”区域中的SP3、SP2、SP1端口上;

4. 相关基本知识

(1. 动态数码显示的方法

(2. 独立式按键识别过程

(3. “时”,“分”,“秒”数据送出显示处理方法

5. 程序框图

7. C语言源程序#include unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};unsigned char dispbitcode[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};unsigned char dispbuf[8]={0,0,16,0,0,16,0,0};unsigned char dispbitcnt;unsigned char second;unsigned char minite;unsigned char hour;unsigned int tcnt;unsigned char mstcnt;unsigned char i,j;void main(void){TMOD=0x02;TH0=0x06;TL0=0x06;TR0=1;ET0=1;EA=1;while(1){if(P0_0==0){for(i=5;i>0;i--)for(j=248;j>0;j--);if(P0_0==0){second++;if(second==60){second=0;}dispbuf[0]=second%10;dispbuf[1]=second/10;while(P0_0==0);}}if(P0_1==0){for(i=5;i>0;i--)for(j=248;j>0;j--);if(P0_1==0){minite++;if(minite==60){minite=0;}dispbuf[3]=minite%10;dispbuf[4]=minite/10;while(P0_1==0);}}if(P0_2==0){for(i=5;i>0;i--)for(j=248;j>0;j--);if(P0_2==0){hour++;if(hour==24){hour=0;}dispbuf[6]=hour%10;dispbuf[7]=hour/10;while(P0_2==0);}}}}void t0(void) interrupt 1 using 0{mstcnt++;if(mstcnt==8){mstcnt=0;P1=dispcode[dispbuf[dispbitcnt]];P3=dispbitcode[dispbitcnt];dispbitcnt++;if(dispbitcnt==8){dispbitcnt=0;}}tcnt++;if(tcnt==4000){tcnt=0;second++;if(second==60){second=0;minite++;if(minite==60){minite=0;hour++;if(hour==24){hour=0;}}}dispbuf[0]=second%10;dispbuf[1]=second/10;dispbuf[3]=minite%10;dispbuf[4]=minite/10;dispbuf[6]=hour%10;dispbuf[7]=hour/10;}}

21. 拉幕式数码显示技术

1. 实验任务

用AT89S51单片机的P0.0

实例 54-2:测量负脉冲宽度...........................................................................41 实例 55:方式 0 控制流水灯循环点亮............................................................42 实例 56-1:数据发送程序...............................................................................43 实例 56-2:数据接收程序...............................................................................44 实例 57-1:数据发送程序...............................................................................45 实例 57-2:数据接收程序...............................................................................46 实例 58:单片机向PC发送数据......................................................................47 实例 59:单片机接收PC发出的数据 ..............................................................48 数码管显示.....................................................................................................49 实例 60:用LED数码显示数字 5 ....................................................................49 实例 61:用LED数码显示器循环显示数字 0~9 ..............................................49 实例 62:用数码管慢速动态扫描显示数字"1234"...........................................50 实例 63:用LED数码显示器伪静态显示数字 1234.........................................51 实例 64:用数码管显示动态检测结果 ............................................................51 实例 65:数码秒表设计..................................................................................53 实例 66:数码时钟设计..................................................................................55 实例 67:用LED数码管显示计数器T0 的计数值.............................................58 实例 68:静态显示数字“59”.........................................................................59 键盘控制 ........................................................................................................60 实例 69:无软件消抖的独立式键盘输入实验..................................................60 实例 70:软件消抖的独立式键盘输入实验.....................................................60 实例 71:CPU控制的独立式键盘扫描实验.....................................................61 实例 72:定时器中断控制的独立式键盘扫描实验 ..........................................64 实
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值