4.999计数器 数码管动态扫描(使用定时器)
来源:互联网 发布:淘宝售后期限是多少天 编辑:程序博客网 时间:2024/05/12 18:27
- /*
- ***********************************************************************************************
- * Cool51
- * 51开发板例程
- *
- *
- * 文件名称:“main.c”
- * 摘 要:999计数器,数码管显示
- * 作 者:Rays_ele
- *
- * 当前版本:1.0
- * 完成日期:2011/04/27
- * 版权所有:Rays - Copyright (C) 2011
- *
- ***********************************************************************************************
- */
- /*包含必要的头文件*/
- #include<reg52.h>//开发51单片机必须包含51单片机的头文件,该文件定义了51单片机内部寄存器的地址
- /*常用宏定义*/
- #define uchar unsigned char
- #define uint unsigned int
- /*程序接口定义*/
- //数码管的段码在原理图上已经和P0口相接,即P0.0对应数码管的a段,P0.1对于b段,依此类推,简单表示如下
- #define LED P0
- //LED_a-------P0.0
- //LED_b-------P0.1
- //LED_c-------P0.2
- //LED_d-------P0.3
- //LED_e-------P0.4
- //LED_f-------P0.5
- //LED_g-------P0.6
- //LED_s-------P0.7
- //下面是数码管的位定义,也就是数码管的公共端,具体电路讲解见Cool51原理图,该引脚为低电平即选通该位数码管
- sbit LED_1=P2^0;//LED_1-------P2.0
- sbit LED_2=P2^1;//LED_2-------P2.1
- sbit LED_3=P2^2;//LED_3-------P2.2
- sbit LED_4=P2^3;//LED_4-------P2.3
- /*全局变量定义部分*/
- unsigned char code LED_Code[12]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xFF,0xBF};//共阳码
- // 0 1 2 3 4 5 6 7 8 9 灭 -
- unsigned int number=0; //全局数据,此数据是多少,数码管自动显示多少,显示程序由中断调用,
- /*
- +---------------------------------------------------------------------------------------+
- |函数名称: Delay_ms |
- |---------------------------------------------------------------------------------------|
- |函数原型: void Delay_ms(uint ms) |
- |函数功能: 普通延时函数 |
- |入口参数: 延时时间,单位毫秒 |
- +---------------------------------------------------------------------------------------+
- */
- void Delay_ms(uint ms)
- {
- uchar t;
- while(ms--)
- {
- t=120;
- while(t--);
- }
- }
- /*
- +---------------------------------------------------------------------------------------+
- |函数名称: ShuMaGuan |
- |---------------------------------------------------------------------------------------|
- |函数原型: void ShuMaGuan(uint dat) |
- |函数功能: 数码管扫描显示程序,随意显示一个9999以内数据大小 |
- |入口参数: 要显示的0000-9999之间的数据,数据是多少,就显示多少 |
- +---------------------------------------------------------------------------------------+
- */
- void ShuMaGuan(uint dat)
- {
- LED=LED_Code[dat/1000];//将dat的千位取出来,用千位数来索引LED_Code的对应段码,再将段码送到对应段码口上
- LED_1=0; //段码送出去后,再选通千位数码管的公共端,此时对应千位数码管会显示
- Delay_ms(3); //将显示延时一段时间,视觉暂留
- LED_1=1;
- LED=LED_Code[dat%1000/100];
- LED_2=0;
- Delay_ms(3);
- LED_2=1;
- LED=LED_Code[dat%100/10];
- LED_3=0;
- Delay_ms(3);
- LED_3=1;
- LED=LED_Code[dat%10];
- LED_4=0;
- Delay_ms(3);
- LED_4=1;
- }
- /*
- +---------------------------------------------------------------------------------------+
- |函数名称: main |
- |---------------------------------------------------------------------------------------|
- |函数原型: void main(void) |
- |函数功能: 数码管扫描显示程序,随意显示一个9999以内数据大小 |
- |入口参数: 无 |
- +---------------------------------------------------------------------------------------+
- */
- void main(void)
- {
- EA = 1; //允许CPU中断
- ET0 = 1; //定时器0中断打开
- TMOD = 0x1; //设定时器0为模式1,16位模式
- TH0=0xE1;
- TL0=0xDF; //设定时值
- TR0 = 1; //启动定时器
- number=0;
- while(1)
- {
- number++;
- if(number>999) //判断number的值是否超过了999,如果超过了,就执行number=0来清零number值
- number=0;
- Delay_ms(50);
- }
- }
- //定时器0中断外理中调用数码管显示程序
- /*
- +---------------------------------------------------------------------------------------+
- |函数名称: Timer0_int |
- |---------------------------------------------------------------------------------------|
- |函数原型: void Timer0_int(void) interrupt 1 |
- |函数功能: 定时器0溢出中断程序 |
- |入口参数: 无 |
- +---------------------------------------------------------------------------------------+
- */
- void Timer0_int(void) interrupt 1
- {
- TH0=0xE1;
- TL0=0xDF;
- TR0=0;
- ShuMaGuan(number); //在这里调用,实时显示number的值
- TR0=1;
- }
0
上一篇:51单片机波特率计算器(可以计算stc啊!)
下一篇:5.简易电子钟 数码管动态扫描(使用定时器) 按键切换
相关热门文章
- 嵌入式ARM系统实战开发...
- Zigbee学习笔记(二)--定时器...
- 从dpdk中发现若干概念
- 定时器的算法分析
- TCP原理学习之 糊涂窗口综合症...
- shell中字符串操作
- shell中的特殊字符
- linux设备驱动归纳总结...
- stagefright与opencore对比
- linux守护进程的几个关键地方...
- 现在的博客积分不会更新了吗?...
- shell怎么读取网页内容...
- ssh等待连接的超时问题...
- curl: (56) Recv failure: Con...
- CACTI 不能安装WINE,怎么办?...
给主人留下些什么吧!~~
评论热议
0 0
- 4.999计数器 数码管动态扫描(使用定时器)
- 51单片机使用定时器进行数码管动态扫描程序
- 5.简易电子钟 数码管动态扫描(使用定时器) 按键切换
- 6.简易电子钟数码管动态扫描(使用定时器)有调时功能
- 3.数码管动态扫描 随意显示9999以内的数(使用定时器)
- 【程序】STM32F103单片机使用定时器DMA进行全自动8位数码管动态扫描
- 数码管动态扫描
- 定时器控制数码管扫描显示
- 数码管动态扫描扩展显示
- 数码管动态扫描显示01234567
- 数码管动态扫描(非堵塞)
- lesson4~数码管的动态扫描
- PIC单片机-利用Timer2定时器的溢出中断实现动态扫描数码管
- 51单片机数码管动态扫描C程序
- 浅谈动态扫描数码管“消抖”、“消影”问题
- FPGA的俩位数码管动态扫描
- 8位数码管动态扫描显示
- FPGA——数码管动态扫描
- Cool51开发板原理图
- 1.简单数码管显示程序
- 2.数码管动态扫描 随意显示9999以内的数
- 3.数码管动态扫描 随意显示9999以内的数(使用定时器)
- 51单片机波特率计算器(可以计算stc啊!)
- 4.999计数器 数码管动态扫描(使用定时器)
- 5.简易电子钟 数码管动态扫描(使用定时器) 按键切换
- 6.简易电子钟数码管动态扫描(使用定时器)有调时功能
- 7.矩阵键盘读取键值 数码管显示
- 8.最简易密码锁 不显示
- 9.全功能密码锁 数码管显示
- 用CXA20106制作2CM-400CM的超声波(已出实物)
- 10.四路抢答器 数码管显示
- 最长回文子串
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
浙江海鲜
爆炒海鲜
海鲜超市
自助海鲜
珍宝海鲜舫
清蒸海鲜
海鲜鱼干
海鲜快餐
海鲜代理
什么是海鲜
冷冻海鲜
大海鲜
南宁海鲜
青岛蒸海鲜
福州海鲜
订做海鲜池
小螺号海鲜
海鲜菠萝饭
冰冻海鲜
学做海鲜
高级海鲜
海鲜粥的做法
感冒能吃海鲜
海鲜不能和什么一起吃
感冒能吃海鲜吗
海鲜菇的做法
感冒可以吃海鲜
吃海鲜不能吃什么东西
感冒可以吃海鲜吗
孕妇能吃海鲜吗
孕妇能吃海鲜
吃海鲜不能吃什么
孕妇可以吃海鲜吗
孕妇可以吃海鲜
海鲜过敏止痒小妙招
青岛市民捡海鲜
所有海鲜名称大全图片
什么海鲜好吃
青岛吃海鲜攻略
青岛吃海鲜哪里好
青岛海鲜市场