datasheet

单片机码表的驱动程序

2019-08-15来源: eefocus关键字:单片机  码表  驱动程序


#include

#include "./delay/delay.h"

 

#define SEGPORT P0

 

sbit start = P1^0;

sbit end = P1^1;

sbit seg_select = P2^1;        

sbit bit_select = P2^0;          

 

unsigned char flag = 1;

unsigned char duanma[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};               

unsigned char weima[8] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; 

unsigned char TempData[8];

 

unsigned char shi = 0, fen = 0, miao = 0;

 

void display()

{

  static unsigned char i = 0;

  SEGPORT = 0x0;

  seg_select = 1;

  seg_select = 0;

  

  SEGPORT = 0xff;

  bit_select = 1;

  bit_select = 0;

  SEGPORT = TempData[i];

  seg_select = 1;

  seg_select = 0;

  

  SEGPORT = weima[i];

  bit_select = 1;

  bit_select = 0;

  

i++;

  if(8 == i)

{

i = 0;

    }  

}

 

void time0_init(void)

{

  EA = 1;             

  TMOD |= 0x01;

  TH0 = (65536 - 2000) / 256;

  TL0 = (65536 - 2000) % 256;   

  ET0 = 1;           

  TR0 = 1;

   

 

}

 

void time0_isr() interrupt 1

{

static unsigned char i = 0;

    TH0 = (65536 - 200) / 256;

  TL0 = (65536 - 200) % 256;    

  i++;

  

if(flag)

{

if(50 == i)

{

i = 0;

miao++;

if(60 == miao)

{

 

miao = 0;

fen++;

if(60 == fen)

{

fen = 0;

shi++;

if(24 == shi)

{

shi = 0;

}

}

}

}

}

TempData[0] = duanma[shi / 10];

TempData[1] = duanma[shi % 10];

TempData[2] = 0x40;

TempData[3] = duanma[fen / 10];

TempData[4] = duanma[fen % 10];

TempData[5] = 0x40;

TempData[6] = duanma[miao / 10];

TempData[7] = duanma[miao % 10];

}

 

void time1_init(void)

{

    EA = 1;                               

  TMOD |= 0x10;                        

  TH1 = (65536 - 2000) / 256;

  TL1 = (65536 - 2000) % 256;          

  ET1 = 1;                            

  TR1 = 1;                             

 

}

 

void time1_isr() interrupt 3             

{

    TH1 = (65536 - 2000) / 256;

  TL1 = (65536 - 2000) % 256; 

    

  display();

}

                

 

void main()

{

  time1_init();

time0_init();

  

  while(1)

{

  

if(0 == start)

{

  while(!start);    //È¥¶¶¶¯

delay_ms(10);

while(!start);

if(0 == flag)

{

flag = 1;

}

else

{

flag = 0;

}

}

if(0 == end)

{

while(!end);         //È¥¶¶¶¯

delay_ms(10);

while(!end);

shi = 0;

fen = 0;

miao = 0;

}

}

}

 

/*****delay.c***********/

void delay_us(unsigned char t)

{

while(--t);

}

 

void delay_ms(unsigned char t)

{

while(t--)

{

delay_us(245);

delay_us(245);

}

}

 

void delay_s(unsigned char t)

{

    while(t--)

{

        delay_ms(200);

delay_ms(200);

  delay_ms(200);

delay_ms(200);

  delay_ms(200);

}

}

 

/****delay.h*******/

#ifndef _DELAY_H_

#define _DELAY_H_

 

extern void delay_us(unsigned char t);

extern void delay_ms(unsigned char t);

extern void delay_s(unsigned char t);

 

#endif


关键字:单片机  码表  驱动程序

编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic471221.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:51单片机串口通信的驱动程序
下一篇:单片机之矩阵键盘的驱动程序

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

矩阵键盘扫描原理详解——单片机

键盘扫描方法是:行线P10~P13为输出线,列线P14~P17为输入线。一开始单片机将行线(P10~P13)全部输出低电平,此时读入列线数据,若列线全为高电平则没有键按下,当列线有出现低电平时调用延时程序以此来去除按键抖动。延时完成后再判断是否有低电平,如果此时读入列线数据还是有低电平,则说明确实有键按下。最后一步确定键值。现在我们以第二行的S5键为例,若按下S5后我们应该怎么得到这个键值呢?当判断确实有键按下之后,行线轮流输出低电平,根据读入列线的数据可以确定键值。首先,单片机将P10输出为低电平,其它P11~P13输出高电平,此时读取列线的数据全为高电平,说明没有在第一行有键按下;其次,单片机将P11输出低电平,其它P10
发表于 2019-08-16

单片机读入4*4矩阵键盘

一、什么是矩阵键盘矩阵键盘是单片机外部设备中所使用的排布类似于矩阵的键盘组,由于电路设计时需要更多的外部输入,单独的控制一个按键需要浪费很多的IO资源,所以就有了矩阵键盘,常用的矩阵键盘有4*4和8*8,其中用的最多的是4*4。网上搜了两张实物图,大家可以看看看上图就知道,4*4键盘还是很多地方用到的吧^_^二、矩阵键盘的原理矩阵键盘又称为行列式键盘,它是用4条I/O线作为行线,4条I/O线作为列线组成的键盘。在行线和列线的每一个交叉点上,设置一个按键。这样键盘中按键的个数是4×4个。这种行列式键盘结构能够有效地提高单片机系统中I/O口的利用率。由于单片机IO端口具有线与的功能,因此当任意一个按键按下时,行和列都有一根线被线与,通
发表于 2019-08-16
单片机读入4*4矩阵键盘

利用单片机的数码管模拟时钟的显示时间

#include <reg52.h> #define SEGPORT P0sbit seg_select = P2^1;        sbit bit_select = P2^0;           unsigned char duanma[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};               unsigned char
发表于 2019-08-15

单片机之利用按键来使数码管上两位示数增加

#include <reg52.h>#include "./delay/delay.h" sbit seg_select = P2^1;sbit bit_select = P2^0;sbit key1 = P1^0;  #define SEGPORT  P0  unsigned char segdata[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};unsigned char bitdata[8] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,
发表于 2019-08-15

单片机之矩阵键盘的驱动程序

timer0_isr(void) interrupt 1    //中断服务程序{ TH0 = (65536 - 2000) / 256;   TL0 = (65536 - 2000) % 256;   display();   }  unsigned char key_scan(void){ unsigned char keyvalue;   KEYPORT = 0xf0;   if(0xf0 != KEYPORT)               
发表于 2019-08-15

Nordic Semiconductor多协议SoC应用于GPS码表

挪威奥斯陆– 2018年1月11日 – Nordic Semiconductor宣布中国上海的大不自多将Nordic的nRF52832多协议低功耗蓝牙 (Bluetooth® Low Energy /Bluetooth LE) / ANT+™系统级芯片(SoC)集成到其智能GPS码表。 这个GPS码表命名为“XOSS SPRINT”,可以为骑行爱好者提供丰富的功能,包括专业训练数据记录和分析、离线全球地图以及强大的GPS路线导航。Nordic SoC支持的低功耗蓝牙无线连接允许用户通过iOS或安卓智能手机上的APP同步和设置骑行数据。现时大不自多旗下 “行者APP”应用程序的注册用户已经接近1000万人。 
发表于 2018-01-11
Nordic Semiconductor多协议SoC应用于GPS码表

小广播

何立民专栏

单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved