资源简介
本设计是按键数码管显示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
相关资源
- max7219驱动数码管fro stm32
- 基于tm4c1294单片机的打地鼠设计,M4的
- 基于单片机的智能电子钟设计
- 触摸按键设计的注意事项
- 基于单片机的曼彻斯特编码程序
- 51单片机通过GSM模块发送短信控制LE
- 1602+矩阵键盘可输入任意数字0~999999
- 基于单片机的智能电子遥控车位锁设
- 完整的电子时钟万年历LCD12846+DS1302+
- proteus中51单片机控制交通灯的仿真
- 60S2单片机驱动DS18B20温度传感器C程序
- 一看就懂的51单片机RS232串口程序
- 基于STC12C5A16S2单片机电子水平仪设计
- 实验三 开关控制警报器.DSN
- 单片机课程设计数字电压表,有软件
- 51单片机控制两个LED灯分别闪烁
- 基于AT89C52单片机的光功率计的设计
- 基于51单片机的信号发生器-完整电路
- 数字计算器的基本按键音频 含年月日
- 基于AT89S52单片机的多模式带音乐跑马
- 单片机 实现多路任意延时的一种方法
- 数码管显示DHT11
- 单片机控制多个电机程序
- 51单片机ADC0809测电压12864显示程序
- 拼图程序_通过GDI实现图片切割、位移
- 51单片机超声波测距1602显示
- 51单片机16x16点阵程序
- 单片机数字钟+万年历数码管显示
- 基于STC89C51单片机的数字抢答器——毕
- 51单片机智能扫地机器人
评论
共有 条评论