51单片机练习(04)
- 51单片机练习(04) 推荐度:
- 相关推荐
51单片机练习(04)
eg1:使用定时器的方式实现单片机流水灯
#include <REGX52.H>
#include <INTRINS.H>
#define uchar unsigned char
#define uint unsigned int
uchar temp,t0;// 初始化函数
void init(){temp = 0xfe;//第一个发光二级管点亮P1 = temp;// 初始化定时器TMOD = 0x11;TH0 = (65536-50000)/256;TL0 = (65536-50000)%256;EA = 1;ET0 = 1;// 启动定时器TR0 = 1;
}
// 定时器中断函数
void timer0() interrupt 1 {TH0 = (65536-50000)/256;TL0 = (65536-50000)%256;t0 ++;if(t0 == 10){t0 = 1;temp = _crol_(temp,1);P1 = temp;}
}void main(){// 初始化函数调用init();while(1){}}
代码的截图如下所示
单片机课后作业数码管和流水灯显示
#include <REGX52.H>
#include <INTRINS.H>
#define uchar unsigned char
#define uint unsigned int
uchar temp,t0,t1,bai,shi,ge,flag,flag1;
uint shu;
sbit dula = P2^6;
sbit wela = P2^7;
uchar code table[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0x36,0x76,0x38,0x3f,0};// 初始化函数
void init(){shu = 432;temp = 0xfe;//第一个发光二级管点亮P1 = temp;// 初始化定时器TMOD = 0x11;TH0 = (65536-50000)/256;TL0 = (65536-50000)%256;// 初始化定时器1TH1 = (65536-50000)/256;TL1 = (65536-50000)%256;EA = 1;ET0 = 1;// 打开定时器1ET1 = 1;// 启动定时器TR1 = 1;TR0 = 1;
}
// 定时器中断函数
void timer0() interrupt 1 {TH0 = (65536-50000)/256;TL0 = (65536-50000)%256;t0 ++;if(flag != 1){if(t0 == 10){t0 = 1;temp = _crol_(temp,1);P1 = temp;}}else{if(t0%4 == 0){P1 = ~P1;}if(t0 == 60){TR0 = 0;P1 = 0xff;flag1 = 1;}}}// 定时器1的中断函数
void timer1() interrupt 3 {TH1 = (65536-50000)/256;TL1 = (65536-50000)%256;t1 ++;if(t1 == 2){t1 = 0;shu --;// 将我们的bai shi ge 进行分离bai = shu/100;shi = shu%100/10;ge = shu%10;if(shu == 398){TR0 = 0;TH0 = (65536-50000)/256;TL0= (65536-50000)%256;TR0 = 1;flag = 1;t0 = 0;// 关闭led灯P1 = 0xff;TR1 = 0;}} }
// 延时函数
void delay(uint z){uint x,y;for(x = z; x > 0; x --){for(y = 110; y > 0; y--){}}}// 显示子程序
void display(uchar aa , uchar bb , uchar cc ,uchar bai,uchar shi,uchar ge)
{dula = 1;P0 = table[aa];dula = 0;wela = 1;P0 = 0xfe;wela = 0;delay(5);dula = 1;P0 = table[bb];dula = 0;wela = 1;P0 = 0xfd;wela = 0;delay(5);dula = 1;P0 = table[cc];dula = 0;wela = 1;P0 = 0xfb;wela = 0;delay(5);// -------------||-----------------||----------------||---------------||-------------||---------------------||--------------dula = 1;P0 = table[bai];dula = 0;wela = 1;P0 = 0xf7;wela = 0;delay(5);dula = 1;P0 = table[shi];dula = 0;wela = 1;P0 = 0xef;wela = 0;delay(5);dula = 1;P0 = table[ge];dula = 0;wela = 1;P0 = 0xdf;wela = 0;delay(5);}void main(){// 初始化函数调用init();while(1){// 调用函数并赋值形参if(flag != 1){display(7,6,5,bai,shi,ge);}else{display(16,17,18,18,19,20);}}}
最新文章
- 小交换机引起的路由环路故障破解
- IDE模式下安装Win7改回AHCI后蓝屏重启的解决方法
- 简单判断引起电脑花屏故障部位的方法
- 使用proxy把后端返回的图片域名替换成目标域名
- 打破语言壁垒,实现全球商贸:多语言多商户跨境商城源码引领电商新潮流
- 提升自动化测试:Apifox 产品更新全解析!
- 【Mysql】next
- 医疗器械维修工程师必须重视的方面
- 性价比高的台灯推荐,呼声最高的五款护眼台灯推荐
- Angular 模块介绍及使用(二)
- 应用软件安全编程
- 西门子精智屏数据记录U盘插拔问题总结
- 2023数字科技生态展,移远通信解锁新成就
- 工业控制(ICS)学习笔记
- Vue的计算属性
- 【SpringBoot篇】使用Spring Cache高效处理缓存数据
- 教育局档案室智慧档案库房建设方案
- asp.net图书管理系统
- Android Audio实战——音量设置Hal(二十)
- 【Java笔试强训】Day10(CM62 井字棋、HJ87 密码强度等级)