资源简介
本设计是按键数码管显示proteus仿真和C程序,本设计是按键数码管显示proteus仿真和C程序,本设计是按键数码管显示proteus仿真和C程序

代码片段和文件信息
#include
#define DATAP0 P0 //定义数据端口
#define KeyPort P3
sbit LOCK1=P2^0;//定义数码管锁存使能端口
unsigned char code mcuend_DuanMa[]={
0x3f0x060x5b0x4f
0x660x6d0x7d0x07
0x7f0x6f0x770x7c
0x390x5e0x790x71};// 显示段码值0~F
unsigned char TempData[8]; //存储显示值的全局变量
void DelayUs2x(unsigned char t);//us级延时函数声明
void DelayMs(unsigned char t); //ms级延时
void Display(unsigned char FirstBitunsigned char Num);//数码管显示函数
unsigned char KeyScan(void);//键盘扫描
unsigned char KeyPro(void);
void Init_Timer0(void);//定时器初始化
/*
主函数
*/
void main (void)
{
unsigned char numi;
unsigned char temp[8];
Init_Timer0();
while (1) //主循环
{
num=KeyPro();
if(num!=0xff)
{
temp[i]=mcuend_DuanMa[num];
TempData[i]=temp[i];
}
}
}
/*------------------------------------------------
uS延时函数,含有输入参数 unsigned char t,无返回值
unsigned char 是定义无符号字符变量,其值的范围是
0~255 这里使用晶振12M,精确延时请使用汇编大致延时
长度如下 T=tx2+5 uS
------------------------------------------------*/
void DelayUs2x(unsigned char t)
{
while(--t);
}
/*------------------------------------------------
mS延时函数,含有输入参数 unsigned char t,无返回值
unsigned char 是定义无符号字符变量,其值的范围是
0~255 这里使用晶振12M,精确延时请使用汇编
------------------------------------------------*/
void DelayMs(unsigned char t)
{
while(t--)
{
//大致延时1mS
DelayUs2x(245);
DelayUs2x(245);
}
}
/*------------------------------------------------
显示函数,用于动态扫描数码管
输入参数 FirstBit 表示需要显示的第一位,如赋值2表示从第三个数码管开始显示
如输入0表示从第一个显示。
Num表示需要显示的位数,如需要显示99两位数值则该值输入2
------------------------------------------------*/
void Display(unsigned char FirstBitunsigned char Num)
{
static unsigned char i=0;
DATAP0=0; //清空数据,防止有交替重影
LOCK1=1; //段锁存
LOCK1=0;
DATAP0=TempData[i]; //取显示数据,段码
LOCK1=1; //段锁存
LOCK1=0;
i++;
if(i==Num)
i=0;
}
/*------------------------------------------------
定时器初始化子程序
------------------------------------------------*/
void Init_Timer0(void)
{
TMOD |= 0x01; //使用模式1,16位定时器,使用“|“符号可以在使用多个定时器时不受影响
//TH0=0x00; //给定初值
//TL0=0x00;
EA=1; //总中断打开
ET0=1; //定时器中断打开
TR0=1; //定时器开关打开
}
/*------------------------------------------------
定时器中断子程序
------------------------------------------------*/
void Timer0_isr(void) interrupt 1
{
TH0=(65536-2000)/256; //重新赋值 2ms
TL0=(65536-2000)%256;
Display(08); // 调用数码管扫描
}
/*------------------------------------------------
按键扫描函数,返回扫描键值
------------------------------------------------*/
unsigned char KeyScan(void) //键盘扫描函数,使用行列逐级扫描法
{
unsigned char Val;
KeyPort=0xf0;//高四位置高,低四位拉低
if(KeyPort!=0xf0)//表示有按键按下
{
DelayMs(10); //去抖
if(KeyPort!=0xf0)
{ //表示有按键按下
KeyPort=0xfe; //检测第一行
if(KeyPort!=0xfe)
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-05-28 16:59 lab2\
文件 6467 2018-05-28 16:43 lab2\lab_digital pipe
文件 5040 2018-05-28 16:43 lab2\lab_digital pipe.c
文件 106211 2018-05-28 16:59 lab2\lab_digital pipe.DSN
文件 1905 2018-05-28 16:43 lab2\lab_digital pipe.hex
文件 64 2018-05-28 16:43 lab2\lab_digital pipe.lnp
文件 9733 2018-05-28 16:43 lab2\lab_digital pipe.LST
文件 11022 2018-05-28 16:43 lab2\lab_digital pipe.M51
文件 7429 2018-05-28 16:43 lab2\lab_digital pipe.OBJ
文件 826 2018-05-28 16:43 lab2\lab_digital pipe.plg
文件 1052 2018-05-28 16:59 lab2\lab_digital pipe.PWI
文件 55250 2018-05-28 16:56 lab2\lab_digital pipe.uvopt
文件 0 2018-05-28 16:25 lab2\lab_digital pipe.uvproj
文件 0 2018-05-28 16:25 lab2\lab_digital pipe_uvproj.bak
文件 92033 2018-05-27 16:38 lab2\Last Loaded lab_digital pipe.DBK
- 上一篇:ArcGIS中添加图廓和坐标
- 下一篇:中国一级河流gis
相关资源
- 单片机音乐倒数定时器的设计
- STC15F
- 51单片机通信采样proteus仿真方波转化
- 51 单片机 红外避障小车 大集合136
- STC8951系列单片机中方指南
- 基于MCS_51单片机的工业屏柜散热方案
- MCS_51单片机与8255A的接口设计
- 飞思卡尔单片机MC9S12XS12G128驱动(硬件
- 51单片机PWM程序,占空比、周期可调整
- 单片机和adc0809数字电压表
- PIC单片机完成的电子密码锁
- 单片机、ADC0808809设计简易数字电压表
- 51单片机多功能自行车测速仪
- 单片机做的6位时分秒数字钟
- 单片机电子时钟 闹钟 日历
- 音乐代码转换软件 单片机编程时用
- 单片机课程设计 篮球计分器
- 00
- 用51单片机实现G代码翻译
- 简易的电阻电容测量电路
- DAS1302蜂鸣 独立按键 闹钟设定 IIC存储
- 单片机与温度传感器DS18B20的程序设计
- 51单片机基于protues的几个仿真实例
- 基于52单片机的直流电压测量
- 38k单片机红外发送代码、keil
- 51单片机PCB设计图
- PC -- 单片机的串口数据传输系统设计
- 51单片机控制舵机程序
- 武汉理工大学 单片机课程设计 16*16点
- 51单片机读取温度数据存储到SD卡中并
评论
共有 条评论