久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3307|回復(fù): 10
收起左側(cè)

單片機(jī)每隔1秒計(jì)數(shù)加1,數(shù)碼管顯示 程序

[復(fù)制鏈接]
ID:589336 發(fā)表于 2022-4-5 22:00 | 顯示全部樓層 |閱讀模式
IMG_20220405_215534.jpg

單片機(jī)源程序如下:
  1. #include"reg52.h"
  2. #define uchar unsigned char
  3. #define uint unsigned int

  4. /*****數(shù)碼管位選****/
  5. sbit SMG_A = P2^2;
  6. sbit SMG_B = P2^3;
  7. sbit SMG_C = P2^4;

  8. /****數(shù)碼管碼表****/
  9. uchar code table[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//0~9

  10. /****函數(shù)聲明*****/
  11. void Delay(uchar x);
  12. void Display_SMG();
  13. void Init();

  14. uchar count = 0;//計(jì)數(shù)20,T = 20*50ms = 1s
  15. int number = 0;

  16. /*****主函數(shù)*****/
  17. void main()
  18. {
  19.   Init();
  20.   while(1)
  21.   {
  22.           Display_SMG();  
  23.   }
  24. }

  25. /******初始化函數(shù)********/
  26. void Init()
  27. {
  28.         TMOD = 0x01;//定時(shí)器0,方式1
  29.         TH0 = (65536 - 46080)/256;//裝初值,延時(shí)50ms
  30.         TL0 = (65536 - 46080)%256;
  31.         EA = 1;//開總中斷
  32.         ET0 = 1;//開定時(shí)器中斷
  33.         TR0 = 1;//啟動(dòng)定時(shí)器0         
  34. }

  35. /********數(shù)碼管顯示函數(shù)***********/
  36. void Display_SMG()
  37. {
  38.         uchar ge,shi,bai,qian;
  39.         qian = number / 1000;
  40.         bai = (number / 100)%10;
  41.         shi = (number / 10)%10;
  42.         ge = number % 10;
  43.         
  44.         //*****數(shù)碼管顯示個(gè)位******
  45.         SMG_A = 0;
  46.         SMG_B = 0;
  47.         SMG_C = 0;
  48.         P0 = table[ge];        
  49.         Delay(10);        

  50.         //*****數(shù)碼管顯示十位******
  51.         SMG_A = 1;
  52.         SMG_B = 0;
  53.         SMG_C = 0;
  54.         P0 = table[shi];        
  55.         Delay(10);

  56.          //*****數(shù)碼管顯示百位******
  57.         SMG_A = 0;
  58.         SMG_B = 1;
  59.         SMG_C = 0;
  60.         P0 = table[bai];        
  61.         Delay(10);

  62.         //*****數(shù)碼管顯示千位******
  63.         SMG_A = 1;
  64.         SMG_B = 1;
  65.         SMG_C = 0;
  66.         P0 = table[qian];        
  67.         Delay(10);
  68. }

  69. /********定時(shí)器中斷函數(shù)**********/
  70. void time0() interrupt 1
  71. {
  72.         TH0 = (65536 - 46080)/256;//裝初值,延時(shí)50ms
  73.         TL0 = (65536 - 46080)%256;
  74.         count++;
  75.         if(count == 20)        //延時(shí)1s后
  76.           {
  77.                   count = 0;
  78.                 number++;
  79.                 if(number == 9999)
  80.                   {
  81.                           number = 0;
  82.                   }
  83.           }
  84. }

  85. /*********延時(shí)函數(shù)*********/
  86. void Delay(uchar x)
  87. {
  88.         uchar y,z;
  89.         for(y = 30;y > 0;y--)
  90.            for(z = x;z > 0;z--);
  91. }
復(fù)制代碼


評(píng)分

參與人數(shù) 1黑幣 +30 收起 理由
admin + 30 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:863362 發(fā)表于 2022-4-20 08:35 | 顯示全部樓層
請(qǐng)問一下,初始值46080是怎么計(jì)算出來的?50毫秒不是應(yīng)該就是50000嗎?
回復(fù)

使用道具 舉報(bào)

ID:514317 發(fā)表于 2022-4-20 09:16 | 顯示全部樓層
sonique0371 發(fā)表于 2022-4-20 08:35
請(qǐng)問一下,初始值46080是怎么計(jì)算出來的?50毫秒不是應(yīng)該就是50000嗎?

樓主使用的定時(shí)器中斷來計(jì)時(shí)的    定時(shí)器是向上累加溢出的   所以 定時(shí)=65536--基礎(chǔ)值
回復(fù)

使用道具 舉報(bào)

ID:928284 發(fā)表于 2022-4-21 15:58 | 顯示全部樓層
利用定時(shí)中斷掃描數(shù)碼管位顯示,可以使程序更簡(jiǎn)單明了。
回復(fù)

使用道具 舉報(bào)

ID:863362 發(fā)表于 2022-4-22 08:11 | 顯示全部樓層
lzzasd 發(fā)表于 2022-4-20 09:16
樓主使用的定時(shí)器中斷來計(jì)時(shí)的    定時(shí)器是向上累加溢出的   所以 定時(shí)=65536--基礎(chǔ)值

我問的就是基礎(chǔ)值為什么不是50000,而是46080?
回復(fù)

使用道具 舉報(bào)

ID:65369 發(fā)表于 2022-4-22 09:04 | 顯示全部樓層
用Delay,好占用資源的,同時(shí)在定時(shí)器里面選擇不是更好,一般都是在定時(shí)器里面刷新的
回復(fù)

使用道具 舉報(bào)

ID:71955 發(fā)表于 2022-4-23 12:06 | 顯示全部樓層
本人很菜,請(qǐng)教下各大俠,數(shù)碼管位選為啥只有三個(gè)位?
回復(fù)

使用道具 舉報(bào)

ID:1010435 發(fā)表于 2022-4-24 10:42 | 顯示全部樓層
數(shù)碼管位選用Switch函數(shù)
回復(fù)

使用道具 舉報(bào)

ID:220661 發(fā)表于 2022-4-24 15:38 | 顯示全部樓層
sonique0371 發(fā)表于 2022-4-22 08:11
我問的就是基礎(chǔ)值為什么不是50000,而是46080?

void Timer0Init(void)                //50毫秒@11.0592MHz
{
        AUXR &= 0x7F;                //定時(shí)器時(shí)鐘12T模式
        TMOD &= 0xF0;                //設(shè)置定時(shí)器模式
        TL0 = 0x00;                //設(shè)置定時(shí)初始值
        TH0 = 0x4C;                //設(shè)置定時(shí)初始值
        TF0 = 0;                //清除TF0標(biāo)志
        TR0 = 1;                //定時(shí)器0開始計(jì)時(shí)
}
回復(fù)

使用道具 舉報(bào)

ID:863362 發(fā)表于 2022-4-25 08:11 | 顯示全部樓層
gongnn 發(fā)表于 2022-4-24 15:38
void Timer0Init(void)                //50毫秒@11.0592MHz
{
        AUXR &= 0x7F;                //定時(shí)器時(shí)鐘12T模式

我也是剛搞清楚,如果是11.0592m晶振,初值就是46080,如果是12m晶振,初值就是50000
回復(fù)

使用道具 舉報(bào)

ID:603753 發(fā)表于 2022-4-25 10:06 | 顯示全部樓層
如果是11.0592m晶振,初值就是46080

晶振11.0592M:
11.0592MHz除12為921600Hz,就是一秒921600次機(jī)器周期,50ms=46080次機(jī)器周期。
65536-46080=19456(4c00)
TH0=0x4c,TL0=0x00

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久人人爽人人爽人人片av免费 | 午夜欧美 | 日韩视频91 | 日韩在线大片 | 天天射天天操天天干 | 精品国产一区二区三区av片 | 欧美一区二区三区,视频 | 4hu最新网址 | 久久精品视频91 | 亚洲精品久久久一区二区三区 | 日韩美女在线看免费观看 | 欧美成人h版在线观看 | 成人日韩av | av超碰| 亚洲欧美在线视频 | 欧美极品视频在线观看 | 久久国产一区 | 日韩不卡三区 | 日本淫视频 | 黄色网页在线观看 | 国产精品免费在线 | 放个毛片看看 | 国产精品1区2区 | 国产综合av | 精品在线播放 | 天堂亚洲 | 成人精品视频在线 | 免费黄色在线观看 | 亚洲精品久久久久久久久久久 | 一级做a爰片性色毛片视频停止 | 国产成人精品一区 | 久久久91精品国产一区二区三区 | 自拍第一页 | 精品国产高清一区二区三区 | 免费黄色在线观看 | 久久精品国产免费 | 最近最新中文字幕 | 欧美一区二区久久 | 人人爽日日躁夜夜躁尤物 | 一区二区国产在线 | 国产日韩欧美二区 |