wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

基于單片機的數碼管按鍵計算器程序

作者:胡琴   來源:本站原創   點擊數:  更新時間:2013年11月16日   【字體:

這是一個51hei論壇版主測試成功的程序。用的是stc單片機,電路比較簡單就不畫出來了 按鍵接在P2口
數碼管的位選口是:
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
數碼管的段選口是P0
還有一個led燈p1.4 一個喇叭P1.6
/*
 * Easy calculator
 *
 * K4:+ K8:- K12:* K16:/ K14:Clear K15:=
 *數碼管按鍵計算器程序
*/
#include <reg52.h>
typedef   unsigned char  uint8;
typedef   unsigned int   uint16;
typedef   unsigned long  uint32;
typedef   char  int8;
typedef   int   int16;
typedef   long  int32;
sbit KeyIn1 = P2^4;
sbit KeyIn2 = P2^5;
sbit KeyIn3 = P2^6;
sbit KeyIn4 = P2^7;
sbit KeyOut1 = P2^3;
sbit KeyOut2 = P2^2;
sbit KeyOut3 = P2^1;
sbit KeyOut4 = P2^0;
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;
sbit BUZZ  = P1^6;
#define FADD 10
#define FSUB 11
#define FMUL 12
#define FDIV 13
#define FRES 14
#define FEQU 15
#define KEY_DELAY 300
#define BUZ_DELAY 80
code uint8 Ledcode[13]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf,0x86};
uint8 Led_n=0;
uint8 Led_buf[6];
float Tmp1=0, Tmp2=0;
int8 C_flag=0;
/*
 * 延時
*/
void delay(uint16 n)
{
 while (n--);
}
/*
 * 蜂鳴器發聲
*/
void buzzer_sound(void)
{
 uint16 i;
 for (i=0; i<BUZ_DELAY; i++)
 {
  BUZZ = ~BUZZ;
  delay(100);
 }
 BUZZ = 1;
}
/*
 * 按鍵掃描
*/
int8 scan_key(void)
{
 int8 val=-1;
 KeyOut1 = 0;
 KeyOut2 = 1;
 KeyOut3 = 1;
 KeyOut4 = 1;
 if (KeyIn1 == 0)
 {
  delay(KEY_DELAY);
  if (KeyIn1 == 0)
   val = 1;
 }
 if (KeyIn2 == 0)
 {
  delay(KEY_DELAY);
  if (KeyIn2 == 0)
   val = 2;
 }
 if (KeyIn3 == 0)
 {
  delay(KEY_DELAY);
  if (KeyIn3 == 0)
   val = 3;
 }
 if (KeyIn4 == 0)
 {
  delay(KEY_DELAY);
  if (KeyIn4 == 0)
   val = FADD;
 }
 while ((KeyIn1 == 0)||(KeyIn2 == 0)||(KeyIn3 == 0)||(KeyIn4 == 0));
 KeyOut1 = 1;
 KeyOut2 = 0;
 KeyOut3 = 1;
 KeyOut4 = 1;
 if (KeyIn1 == 0)
 {
  delay(KEY_DELAY);
  if (KeyIn1 == 0)
   val = 4;
 }
 if (KeyIn2 == 0)
 {
  delay(KEY_DELAY);
  if (KeyIn2 == 0)
   val = 5;
 }
 if (KeyIn3 == 0)
 {
  delay(KEY_DELAY);
  if (KeyIn3 == 0)
   val = 6;
 }
 if (KeyIn4 == 0)
 {
  delay(KEY_DELAY);
  if (KeyIn4 == 0)
   val = FSUB;
 }
 while ((KeyIn1 == 0)||(KeyIn2 == 0)||(KeyIn3 == 0)||(KeyIn4 == 0));
 KeyOut1 = 1;
 KeyOut2 = 1;
 KeyOut3 = 0;
 KeyOut4 = 1;
 if (KeyIn1 == 0)
 {
  delay(KEY_DELAY);
  if (KeyIn1 == 0)
   val = 7;
 }
 if (KeyIn2 == 0)
 {
  delay(KEY_DELAY);
  if (KeyIn2 == 0)
   val = 8;
 }
 if (KeyIn3 == 0)
 {
  delay(KEY_DELAY);
  if (KeyIn3 == 0)
   val = 9;
 }
 if (KeyIn4 == 0)
 {
  delay(KEY_DELAY);
  if (KeyIn4 == 0)
   val = FMUL;
 }
 while ((KeyIn1 == 0)||(KeyIn2 == 0)||(KeyIn3 == 0)||(KeyIn4 == 0));
 KeyOut1 = 1;
 KeyOut2 = 1;
 KeyOut3 = 1;
 KeyOut4 = 0;
 if (KeyIn1 == 0)
 {
  delay(KEY_DELAY);
  if (KeyIn1 == 0)
   val = 0;
 }
 if (KeyIn2 == 0)
 {
  delay(KEY_DELAY);
  if (KeyIn2 == 0)
   val = FRES;
 }
 if (KeyIn3 == 0)
 {
  delay(KEY_DELAY);
  if (KeyIn3 == 0)
   val = FEQU;
 }
 if (KeyIn4 == 0)
 {
  delay(KEY_DELAY);
  if (KeyIn4 == 0)
   val = FDIV;
 }
 while ((KeyIn1 == 0)||(KeyIn2 == 0)||(KeyIn3 == 0)||(KeyIn4 == 0));
 if (val > 0)
  buzzer_sound();
 return val;
}
/*
 * 驗證數據有效性
*/
bit check_num(float f_num)
{
 if (f_num >= 100000)
  return 1;
 return 0;
}
/*
 * 制作數碼管錯誤標志
*/
void make_led_error(void)
{
 int8 i;
 for (i=0; i<5; i++)
  Led_buf[i] = Ledcode[10];
 Led_buf[5] = Ledcode[12];
}
/*
 * 制作數碼管整數數據
*/
void make_led_inumber(int32 i_num)
{
 bit s_flag=0;
 int16 sit;
 int8 i;
 if (i_num < 0)
 {
  s_flag = 1;
  i_num = -i_num;
 }
 
 ET0 = 0;
 for (i=4, sit=10000; i>=1; i--, sit/=10)
 {
  if (i_num >= sit)
   break;
  Led_buf[i] = Ledcode[10];
  i_num -= i_num/sit*sit;
 }
 for (;i>=1; i--, sit/=10)
 {
  Led_buf[i] = Ledcode[i_num/sit];
  i_num -= i_num/sit*sit;
 }
 Led_buf[0] = Ledcode[i_num] & 0x7F;
 if (s_flag)
  Led_buf[5] = Ledcode[11];
 else
  Led_buf[5] = Ledcode[10];
 ET0 = 1;
}
/*
 * 制作數碼管浮點數據
*/
void make_led_fnumber(float f_num)
{
 bit s_flag=0;
 int32 num;
 int16 sit;
 int8 i, decimal, dot_sit=0;

 if (f_num < 0)
 {
  s_flag = 1;
  f_num = -f_num;
 }
 
 num = (int32)(f_num*10000+0.5);
 for (decimal=4; decimal>0; decimal--)
 {
  if (num % 10 != 0)
   break;
  num /= 10;
 }
 
 dot_sit = decimal;
 if (f_num >= 10000)
  dot_sit = 0;
 else if (f_num >= 1000)
  if (decimal >= 1)
   dot_sit = 1;
 else if (f_num >= 100)
  if (decimal >= 2)
   dot_sit = 2;
 else if (f_num >= 10)
  if (decimal >= 3)
   dot_sit = 3;
 for (i=0; i<dot_sit; i++)
  f_num *= 10;
 num = (int32)(f_num+0.5);
 ET0 = 0;
 for (i=4, sit=10000; i>=1; i--, sit/=10)
 {
  if (num >= sit)
   break;
  if (i == dot_sit)
   break;
  Led_buf[i] = Ledcode[10];
  num -= num/sit*sit;
 }
 for (;i>=1; i--, sit/=10)
 {
  Led_buf[i] = Ledcode[num/sit];
  num -= num/sit*sit;
 }
 Led_buf[0] = Ledcode[num];
 Led_buf[dot_sit] &= 0x7F;
 if (s_flag)
  Led_buf[5] = Ledcode[11];
 else
  Led_buf[5] = Ledcode[10];
 ET0 = 1;
}
/*
 * 數碼管顯示
*/
void show_num(uint8 *buf)
{
 ENLED = 1;
 switch (Led_n)
 {
  case 0:
   ADDR0 = 0;
   ADDR1 = 0;
   ADDR2 = 0;
   P0 = buf[0];
   break;
  case 1:
   ADDR0 = 1;
   ADDR1 = 0;
   ADDR2 = 0;
   P0 = buf[1];
   break;
  case 2:
   ADDR0 = 0;
   ADDR1 = 1;
   ADDR2 = 0;
   P0 = buf[2];
   break;
  case 3:
   ADDR0 = 1;
   ADDR1 = 1;
   ADDR2 = 0;
   P0 = buf[3];
   break;
  case 4:
   ADDR0 = 0;
   ADDR1 = 0;
   ADDR2 = 1;
   P0 = buf[4];
   break;
  case 5:
   ADDR0 = 1;
   ADDR1 = 0;
   ADDR2 = 1;
   P0 = buf[5];
   break;
 }
 ENLED = 0;
 if (Led_n >= 5)
  Led_n = 0;
 else
  Led_n++;
}
/*
 * 計算程序
*/
void calculate(int8 key_val)
{
 float ans;
 bit err=0;
 if ((key_val >= FADD) && (key_val <= FDIV))
 {
  C_flag = key_val;
 }
 else if (key_val == FEQU)
 {
  switch (C_flag)
  {
   case FADD:  ans = Tmp1+Tmp2; break;
   case FSUB:  ans = Tmp1-Tmp2; break;
   case FMUL:  ans = Tmp1*Tmp2; break;
   case FDIV:  if (Tmp2 == 0)
      {
       err = 1;
       break;
      }
      else
      {
       ans = Tmp1/Tmp2;
       break;
      }
  }
  if (check_num(ans))
   err = 1;
  if (err)
   make_led_error();
  else
   make_led_fnumber(ans);
  C_flag = 0;
  Tmp1 = 0;
  Tmp2 = 0;
 }
 else if (key_val == FRES)
 {
  make_led_fnumber(0);
  C_flag = 0;
  Tmp1 = 0;
  Tmp2 = 0;
 }
 else
 {
  if (C_flag == 0)
  {
   ans = Tmp1;
   ans *= 10;
   ans += key_val;
   if (check_num(ans))
    return;
   else
    Tmp1 = ans;
   make_led_inumber(Tmp1);
  }
  else
  {
   ans = Tmp2;
   ans *= 10;
   ans += key_val;
   if (check_num(ans))
    return;
   else
    Tmp2 = ans;
   make_led_inumber(Tmp2);
  }
 }
}
 
main()
{
 int8 key_val;
 ADDR3 = 1;
 ENLED = 0;
 make_led_inumber(0);
    TMOD = 0x01;
    TH0 = 0xF8;     
    TL0 = 0xCC;
    TR0 = 1;
 ET0 = 1;
 EA = 1;
 while (1)
 {
  key_val = scan_key();
  if (key_val == -1)
   continue;
  calculate(key_val);
 }
}

void time0() interrupt 1
{
 TR0 = 0;
 TH0 = 0xF8;
 TL0 = 0xCC;
 show_num(Led_buf);
 TR0 = 1;
}

關閉窗口

相關文章

欧美日韩国产在线观看网站| 亚洲成人综合网站| 国产极品模特精品一二| 国产在线观看精品一区| 国产图片综合| 中文天堂在线播放| 特大黑人巨人吊xxxx| 国产一级大片免费看| 国产在线视频欧美| 日韩中文字幕精品| 欧美日韩免费高清一区色橹橹 | 欧美激情久久久久久久| 午夜精品久久久内射近拍高清| 99久久久精品免费观看国产| 色七七影院综合| 7777女厕盗摄久久久| 国产精品久久久久久久第一福利 | 亚洲人成电影在线| 色综合久久综合中文综合网| 国产欧美一区视频| 久久精品久久99精品久久| 99久久www免费| 亚洲天堂av资源在线观看| av电影免费在线观看| 国产大片免费看| 亚洲网中文字幕| 青青草国产精品视频| 久久久久久久久久久一区| 欧美在线观看日本一区| 综合欧美国产视频二区| 日韩精品影音先锋| 日本久久精品电影| 亚洲精品国产高清久久伦理二区| 成人午夜电影久久影院| 热久久久久久久| 亚洲人体偷拍| 欧美不卡视频| 人人狠狠综合久久亚洲婷| 综合欧美亚洲| 国产精品66| 最新日韩精品| 偷拍自拍在线看| 国产一线二线在线观看| 在线激情小视频| 一起操在线观看| 午夜在线免费视频| 肥女人的一级毛片| 成人影院在线观看视频| 女人被狂躁到高潮的免费 | 在线观看亚洲大片短视频| 亚洲免费观看在线| xxx国产在线观看| 国产男女在线观看| 免费看日本毛片| 男人天堂网站在线| 亚洲精品中文字幕在线| 色就是色欧美| 日韩福利二区| 亚洲精品一区二区三区四区五区| 欧美精品国产精品久久久| 国产一区二区三区无遮挡| 国产精品污www一区二区三区| 国产精品网红福利| 91精品国产自产在线观看永久| 日本三级韩国三级久久| 国产成人精品一区二区在线| 欧洲美女免费图片一区| 国产精品av电影| 国产精品成人av在线| 国产成人精品电影| 91精品久久久久久久久久久久久久| 国产精品三级美女白浆呻吟| 国产欧美日韩高清| 成人激情免费在线| 国产激情一区二区三区在线观看 | 无码国产伦一区二区三区视频| 一级黄色片在线观看| 在线观看亚洲国产| 国产成人av免费看| 日本xxxxwww| 九九久久久2| 国产成人va亚洲电影| 免费午夜一级| 成片免费观看视频| 在线观看一级片| 自拍视频在线播放| 91资源在线观看| 久久天堂影院| 欧洲亚洲视频| 中文字幕av亚洲精品一部二部| 妖精视频成人观看www| 蜜臀久久99精品久久久久宅男| 国产麻豆欧美日韩一区| 久久综合久久综合九色| 亚洲欧美色综合| 日本韩国欧美国产| 亚洲成人动漫在线播放| 最近中文字幕日韩精品| 欧美一级大片在线观看| 999视频在线观看| 亚洲综合视频一区| 日本成人在线免费视频| 污片免费在线观看| 亚洲国产123| 一区二区久久精品66国产精品| 亚欧洲精品视频| jizzjizz丝袜老师| 国产中文字幕在线观看| 黄色污污视频在线观看| 伊人久久大香伊蕉在人线观看热v 伊人久久大香线蕉综合影院首页 伊人久久大香 | 免费大片在线观看www| caoporn视频在线| 久久在线观看| 9191国语精品高清在线| 男人的天堂亚洲一区| 91欧美激情一区二区三区成人| 亚洲一区二区三区小说| 欧美一区欧美二区| 欧美夫妻性生活xx| 国产99在线播放| 日韩成人激情在线| 色爱av美腿丝袜综合粉嫩av| 国产大片精品免费永久看nba| 美女被啪啪一区二区| 国产日产欧美视频| 国产一区二区三区精品在线| 国产性猛交普通话对白| 四虎精品一区二区三区| 天天舔夜夜操| 伊人电影在线观看| 丝袜久久网站| 男男视频亚洲欧美| 亚洲猫色日本管| 精品少妇一区二区三区视频免付费| 久久99久国产精品黄毛片入口| 91九色视频在线观看| 亚洲精品久久久久久久蜜桃臀| 日本一二三四区视频| 久久久久久久久久综合| 天堂在线观看av| 成人午夜影院| 松下纱荣子在线观看| 日韩高清一级| 国内成+人亚洲+欧美+综合在线| 亚洲免费资源在线播放| 亚洲男人天堂2024| 91亚洲永久免费精品| 国产女主播自拍| 刘亦菲国产毛片bd| 五月婷婷深深爱| 日韩欧美亚洲一区| 成人福利片在线| 99热精品在线观看| 一区二区三区在线高清| 在线电影av不卡网址| 91精品国产一区二区三区动漫 | 欧美野外性xxxxfeexxxx| 香蕉视频在线网站| 国产精品1区在线| 奇米影视7777精品一区二区| 午夜视频久久久久久| 另类视频在线观看| 亚洲国产一区二区精品视频 | av官网在线| 爱福利一区二区| 免费成人高清| 国产原创一区| 日韩综合一区二区| 亚洲国产三级在线| 精品少妇v888av| 懂色av一区二区三区四区五区| 性欧美一区二区| 波多野结衣久久高清免费| www.91在线| 久久成人综合| 国产精品不卡在线| 日韩有码视频在线| 精品一区二区三区毛片| 麻豆视频在线免费看| 国产chinese男男gaygay网站| 欧美黄色视屏| 99日韩精品| 在线视频综合导航| 国产精品嫩草影院久久久| 免费看黄色一级大片| 最近中文字幕在线免费观看| 久久综合色播| 老司机在线精品视频| 久久久亚洲精品石原莉奈| 亚洲欧美国产精品久久久久久久| 日本精品一区二区| 疯狂撞击丝袜人妻| 免费在线观看h| av日韩久久| 97超碰欧美中文字幕| 在线播放国产一区二区三区| 2025韩国大尺度电影| 久久久久久久久久久网| 国产专区中文字幕| 日韩av三区| 亚洲人成网站色在线观看| 久久久亚洲网站| 亚洲国产精品毛片av不卡在线| 一区二区精品视频在线观看| 懂色av中文在线| 亚洲二区精品| 欧美一级xxx| 日本一区二区高清视频| 黄页网站免费观看| а√天堂www在线а√天堂视频| 亚洲日本三级| 亚洲高清在线视频| 亚洲伊人成综合成人网| 中文字幕国产专区| 亚洲日本精品视频| 韩国18福利视频免费观看| 欧美gay视频| 成人午夜激情视频| 欧美大尺度在线观看| 亚洲国产高清av| 蝴蝶中文综合娱乐网| 日本不卡一二三| 99久久免费精品高清特色大片| 久久精品成人欧美大片古装| 久久久精品在线视频| 特级丰满少妇一级aaaa爱毛片| av中文字幕电影在线看| 国产成人精品亚洲午夜麻豆| 视频在线一区二区| 久久婷婷综合色| 欧美jizzhd欧美精品巨大| 电影一区中文字幕| 亚洲老司机在线| 成人欧美一区二区三区视频| 全程偷拍露脸中年夫妇| www污污在线| 亚洲精品一级| 亚洲人成免费电影| 久久久国产欧美| 国产丝袜自拍| 自拍自偷一区二区三区| 欧美亚洲一区三区| 伊人久久av导航| 精品国产av一区二区| 亚洲高清黄色| 亚洲免费观看高清在线观看| 成人av蜜桃| 自拍偷拍18p| 国产拍在线视频| 国产亚洲一区二区三区在线观看| 欧美孕妇与黑人孕交| 中文字幕第二区| 亚洲裸体视频| 麻豆国产精品一区二区三区| 欧美精品一本久久男人的天堂| 欧美xxxxx精品| 色影视在线视频资源站| 久久免费国产| 菠萝蜜影院一区二区免费| 亚洲成年人av| 操碰在线免费| 麻豆精品国产传媒mv男同| 久久91精品国产91久久跳| 国产黄色网址在线观看| 免费看成年人视频在线观看| 日韩高清在线一区| 9.1国产丝袜在线观看| 天美传媒免费在线观看| 青青国产在线| 国产麻豆成人传媒免费观看| 国产成一区二区| 日本少妇在线观看| rebdb初裸写真在线观看| 国产精品久久久久一区二区三区 | 一区二区三区四区在线观看视频| 亚洲色图偷拍视频| 天天爽夜夜爽| 免费一级欧美片在线播放| 欧美成人午夜免费视在线看片| 少妇按摩一区二区三区| 青青草在线视频免费观看| 草草在线视频| ...xxx性欧美| 亚洲一区二区三区加勒比| 无码精品视频一区二区三区| 哺乳一区二区三区中文视频 | 91啪九色porn原创视频在线观看| 91热福利电影| 97成人免费视频| 一区二区三区四区精品视频| 日韩欧美一区二区在线视频| 中文字幕 日韩 欧美| 全网国产福利在线播放| 国产精品一级片在线观看| 91精品中文在线| 精品国自产在线观看| 亚洲精品进入| 亚洲香蕉成视频在线观看| 中文字幕被公侵犯的漂亮人妻| 黄色在线播放网站| 亚洲精品视频在线| www.日本三级| jizzjizzwww| 精品在线播放午夜| 成人免费在线一区二区三区| 天天色综合久久| 综合精品久久| 欧美高清性猛交| 综合激情网五月| 国产精品一级在线观看| 亚洲成人精品av| 国产特黄级aaaaa片免| 好操啊在线观看免费视频| 亚洲一区二区中文在线| 免费无遮挡无码永久视频| 99热在线免费观看| 成人一区二区三区视频在线观看| 国产一区高清视频| 精品久久亚洲一级α| 日韩精品91亚洲二区在线观看| 成人黄色免费网站在线观看| 成人午夜免费在线观看| 欧美福利在线| 人人澡人人澡人人看欧美| 91久久精品国产91性色69| 国产欧美日韩免费观看| 欧美成人激情视频| 成人免费一级片| 成人三级视频| 欧美重口另类videos人妖| 国产特黄一级片| 国产精品啊啊啊| 国产精品免费视频xxxx| 婷婷av一区二区三区| 亚洲三级免费| 91亚洲一区精品| 精品国产一区二区三区久久久狼牙 | 欧美成人精品在线播放| 久久久久久久久黄色| 制服丝袜日韩| 97免费在线视频| 亚洲精华国产精华精华液网站| 亚洲国产精品成人| 国产视频观看一区| 人善交vide欧美| 国产一区二区剧情av在线| 亚洲7777| 免费人成短视频在线观看网站| 中文字幕第一区综合| 日韩一级免费在线观看| 久久bbxx| 欧美一区二区三区四区视频| 波多野结衣久久久久| www.丝袜精品| 欧美一区二区三区免费观看| 日本免费网站在线观看| 日韩在线播放一区二区| 欧美日韩三区四区| 含羞草激情视频| 亚洲成人资源在线| 一本加勒比北条麻妃| 国产精品视频一区二区三区综合| 美日韩精品视频免费看| 免费国产黄色片| 老司机一区二区| av久久久久久| av影片免费在线观看| 91麻豆精品国产自产在线| 日日骚一区二区三区| 欧美精品色图| 亚洲一区中文字幕在线观看| www.黄在线| 亚洲精品菠萝久久久久久久| 女~淫辱の触手3d动漫| 国产极品模特精品一二| 国产精品久久久久久搜索| 日本午夜精华| 亚洲女人小视频在线观看| 欧美肉大捧一进一出免费视频| 国产高清亚洲| 全球成人中文在线| 深夜免费福利视频| 亚洲日本一区二区三区| 久久久亚洲av波多野结衣| 6080亚洲理论片在线观看| 国产成人啪精品视频免费网| 91香蕉视频在线观看| 亚洲色图制服丝袜| 一色道久久88加勒比一| 香蕉久久99| 丁香五月网久久综合| 一级毛片免费视频| 欧美婷婷六月丁香综合色| 久久久久久激情| 亚洲精品1区| 黄色影视在线观看| 午夜羞羞小视频在线观看| 在线激情影院一区| 亚洲欧美精选| 国产精品久久久久永久免费观看 |