按键控制字符串在数码管上移动显示

发布者:真情相伴最新更新时间:2016-09-23 来源: eefocus关键字:按键控制  字符串  数码管  移动显示 手机看文章 扫描二维码
随时随地手机看文章
//---------------------------------

//按键控制字符串在数码管上移动显示
//1、P30控制移动方向
//2、P31加速度
//3、P32减速度
//4、每移动完整一次蜂鸣器响一下;
//
//
 

#include
#define uint unsigned int
#define uchar unsigned char
uchar code dula[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
      0x07,0x7f,0x6f,0x00,0x40};
uchar wula[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0,0,0};
uchar table[6]={1,2,0,0,4,8};//要显示的字符串
uchar temp[6]={10,10,10,10,10,10};//显示缓冲区
sbit arrow=P3^0;//30控制移动方向
sbit jia=P3^1;//P31加速度
sbit jian=P3^2;//P32减速度
sbit beep=P1^5;//每移动完整一次蜂鸣器响一下;
uchar num1,num2,miao,flag5ms,flag100ms,flag1s,i,N,flagbeep;
bit flagarrow;
void delay(uint z);
void display();
void tinic();
void main()
{  N=5;
   tinic();
  while(1)
   {
      if(arrow==0)
   delay(100);
   if(arrow==0)
   {while(arrow==0);
   flagarrow=~flagarrow; miao=0;
   for(i=0;i<6;i++)//按一次变动方向,要对显示缓冲区清空
   temp[i]=10; //不显示
           }
  if(jia==0)
   delay(100);
   if(jia==0)
   {while(jia==0);if(N<2) N=1;else N--;}
   if(jian==0)
   delay(100);
   if(jian==0)
   {while(jian==0);N++;if(N>10) N=10;}
   display();
      if(flagbeep=1)
    {flagbeep=0;
   if(miao<1)
    beep=0;
             else beep=1;}
    
    }

}

//-------------------
void timer0() interrupt 1
{
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
num1++;
flag5ms=1;
if(num1==20)
  {
  num1=0;
  num2++;
  flag100ms=1;
  if(num2==N)
       {num2=0;
        miao++;
    
       if(miao>5)
        {miao=0;flagbeep=1;
  for(i=0;i<6;i++)//移动完一次要对显示缓冲区清空
  temp[i]=10;}//不显示
  flag1s=1;} 
 }
}

//----------------------
void tinic()
{
TMOD=0x01;
ET0=1;
EA=1;
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
TR0=1;
}

void delay(uint z)
{
 uint x,y;
 for(x=0;x  for(y=0;y<112;y++);

}
//=
void display()
{      
   uchar j;
   if(flagarrow==1)
   switch(miao)
 {
 case 0:temp[0]=table[5];break;
 case 1:temp[0]=table[4];
        temp[1]=table[5];break;
 case 2:temp[0]=table[3];
        temp[1]=table[4];
     temp[2]=table[5];break;
    case 3:temp[0]=table[2];
        temp[1]=table[3];
     temp[2]=table[4];
     temp[3]=table[5];break;
 case 4:temp[0]=table[1];
        temp[1]=table[2];
     temp[2]=table[3];
     temp[3]=table[4];
     temp[4]=table[5];break;
 case 5:temp[0]=table[0];
        temp[1]=table[1];
     temp[2]=table[2];
     temp[3]=table[3];
     temp[4]=table[4];
     temp[5]=table[5];break;
 }
 
   if(flagarrow==0)
 
    switch(miao)
 {
 case 0:temp[5]=table[0];break;
 case 1:temp[4]=table[0];
        temp[5]=table[1];break;
 case 2:temp[3]=table[0];
        temp[4]=table[1];
     temp[5]=table[2];break;
    case 3:temp[2]=table[0];
        temp[3]=table[1];
     temp[4]=table[2];
     temp[5]=table[3];break;
 case 4:temp[1]=table[0];
        temp[2]=table[1];
     temp[3]=table[2];
     temp[4]=table[3];
     temp[5]=table[4];break;
 case 5:temp[0]=table[0];
        temp[1]=table[1];
     temp[2]=table[2];
     temp[3]=table[3];
     temp[4]=table[4];
     temp[5]=table[5];break;
 }
    for(j=0;j<6;j++)  
 {P0=dula[temp[j]];
 P2=wula[j];
 delay(5);
 }
 }

关键字:按键控制  字符串  数码管  移动显示 引用地址:按键控制字符串在数码管上移动显示

上一篇:简单的加法计算器单片机c程序设计
下一篇:向24C02中写入当前的时间

推荐阅读最新更新时间:2024-03-16 15:11

1寸数码管时钟+12C5A60S2单片机+自动亮度+时间温度轮流显示
描述: 4位共阳1寸数码管时钟,显示88:88样式,正常走时的时候,“:”1秒亮灭1次;调时间的的时候冒号熄灭 调时:按KEY1按键第1次分钟位闪烁,再按KEY2一次分钟加1,按KEY3一次分钟减1,长按连加连减; 按KEY1按键第2次小时位闪烁,再按KEY2一次小时加1,按KEY3一次小时减1,长按连加连减; 按KEY1按键第3次,秒从零开始累加,时钟回到正常走时; 校时的时候先调好时、分,分钟要比参考时间的分钟加1分, 再看参考时间的秒数到了59再按KEY1按键的第3次,这样对时就比较准了,因为KEY1按键按第3次后秒会清零。 加备用电池,掉电走时 KEY2键
[单片机]
1寸<font color='red'>数码管</font>时钟+12C5A60S2单片机+自动亮度+时间温度轮流<font color='red'>显示</font>
【跟着江科大学Stm32】GPIO_按键控制LED_光敏传感器控制蜂鸣器
一、按键控制LED 用两个按键来分别控制两个LED的状态,初始状态两灯均熄灭,按下1次点亮,再按下熄灭 因为江科大的套餐抢不到 我就自己看着图和利用现有的东西配了一套,结果是一样的,会比较乱 LED.H #ifndef __LED_H #define __LED_H void LED_Init(void); void LED1_ON(void); void LED1_OFF(void); void LED2_ON(void); void LED2_OFF(void); #endif LED.c #include stm32f10x.h // Device header void LED_
[单片机]
【跟着江科大学Stm32】GPIO_<font color='red'>按键</font><font color='red'>控制</font>LED_光敏传感器<font color='red'>控制</font>蜂鸣器
51单片机实验4:静态数码管
开发板数码管模块电路图如下: 开发板数码管共阴连接,P0口通过输出阳极电平来控制段选,74ls138译码器通过控制8个数码管的阴极电平来控制位选。 实验任务:点亮第一个数码管并使其显示数字0; P2^2,P2^3,P2^4口置0,使138译码器译码为1000 0000,即第一个数码管阴极电平为0,其他7个数码管阴极电平为1。 P0口置为0x3f,即:0011 1111,(二极管a b c d e f亮,构成数字0) 代码如下: #include reg52.h #include intrins.h #define uc unsigned sbit lsa=P2^2; sbit lsb=P2^3; sb
[单片机]
51单片机实验4:静态<font color='red'>数码管</font>
ARM开发(4)基于STM32的矩阵键盘按键控制TM1629A LED显示
一 矩阵键盘按键控制TM1629ALED显示原理: 1.1 本实验实现矩阵键盘按键控制TM1629ALED显示 1.2 实验思路:共阴极数码管,掌握数码管段选位选原理 熟悉TM1629A芯片手册 1.3 开发环境 : MDK5 库函数版本开发 JLINK仿真 二 实验步骤: 2.1 keyled.h代码: #ifndef __KEYLED_H #define __KEYLED_H #include sys.h #define SEG_NUM 16 //段选,2个8段 #define GRID_NUM 8 //位选 #define WRITE_DATA_MODE_A
[单片机]
89C51单片机按键控制数码管动态显示0~9
1.preteus仿真图 2.keli代码 #include reg51.h sbit key1=P3^0; int CC_num ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; int CC_I=0; void delay_ms(int ms) { int i,j; for(i=0;i ms;i++) for(j=0;j 110;j++); } void key1_exam() { if(key1 == 0) { //按钮延时去抖动 delay_ms(20); if(key1 =
[单片机]
89C51单片机<font color='red'>按键</font><font color='red'>控制</font><font color='red'>数码管</font>动态<font color='red'>显示</font>0~9
基于51单片机 红绿灯数码管程序
#include reg52.h //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义 #define DataPort P0 //定义数据端口 程序中遇到DataPort 则用P0 替换 #define CtrlPort P1 //定义控制端口 unsigned char code DuanMa ={0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8,0x80,0x90};// 显示段码值0~9 unsigned char code WeiMa ={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//分别对应相应的数码管点亮,即位码 un
[单片机]
武林教你学PIC32(二)按键控制
我们先看板上的两个按键的电路连接:按键1对应PORTA.6;按键2对应PORTA.7。默认状态为0,当键按下去时为1。我们就不断查询按键的值,来点亮不同的灯,主要介绍如何读端口。 程序代码如下: int main(void) { unsigned int key1=0,key2=0; led_init(); while(1) { key1=KEY1_VALUE; key2=KEY2_VALUE; if(key1==(1 6)) LED1_ON(); else
[单片机]
武林教你学PIC32(二)<font color='red'>按键</font><font color='red'>控制</font>
瑞萨单芯片彩色TFT LCD驱动器
  瑞萨科技在东京宣布,推出一种支持单晶硅宽屏QVGA(WQVGA:240×432像素)、彩色TFT LCD模块的单芯片LCD驱动器R61517。R61517进一步扩展了瑞萨在移动电话等移动设备LCD驱动器的阵容。R61517的样品于最近在日本开始交付。    产品背景   最近几年,移动电话市场中支持移动电视、录像和播放等多媒体应用的服务和功能需求正在迅速增加。与此同时,视频显示器越来越千变万化,对动态图像的平滑、高速显示,以及更大、更高分辨率屏幕的需求正在不断增长。   另一方面,加大的屏幕尺寸或更大的分辨率则容易缩短电池的供电时间。因此,结合了大屏幕尺寸和高分辨率,同时又可以降低功耗并改善画面质量的LCD显示模块的市场
[新品]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved