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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1641|回復: 0
收起左側

TX-1C開發板--Proteus平臺下單片機動態數碼管掃描之計數器程序

[復制鏈接]
ID:496489 發表于 2020-3-5 17:03 | 顯示全部樓層 |閱讀模式
  教材上面的程序好像不能實現數碼管59s計數的功能,經過一些資料查詢,修改了教材上的程序,比較好的實現數碼管的計數。(消影!!!)
  程序自己寫的。因為仿真平臺不是我自己搭的,所以不能分享出來哈(不能侵權嘻嘻!)
  希望幫助到有需要的人哈!!
1583398897(1).jpg

單片機源程序如下:
  1. #include<reg51.h>
  2. #include<intrins.h>

  3. #define uint unsigned int
  4. #define uchar unsigned char

  5. sbit DULA = P2^6;
  6. sbit WELA = P2^7;
  7. sbit Led1 = P1^0;

  8. /*字符編碼0-F共16個*/
  9. uchar code table[]={
  10. 0x3f,0x06,0x5b,0x4f,
  11. 0x66,0x6d,0x7d,0x07,
  12. 0x7f,0x6f,0x77,0x7c,
  13. 0x39,0x5e,0x79,0x71
  14. };
  15. /*數碼管位編碼*/
  16. uchar code tablewe[]={
  17. 0xfe,0xfd,0xfb,0xf7,0xef,0xdf
  18. };

  19. /*變量聲明和初始化*/
  20. uint shi,ge,num0,num1,num;

  21. /*延時函數聲明*/
  22. void delay_ms(uint xms); // 實現延時xms毫秒
  23. /*數碼管顯示函數*/
  24. void display(uint shi,uint ge);

  25. void main(void)   
  26. {        
  27.   /*寄存器初始化*/
  28.         TMOD = 0x11; // 設置定時器0/1的工作方式
  29.         TH0 = (65536-45872)/256; // 計數器的初值
  30.         TL0 = (65536-45872)%256;
  31.         TH1 = (65536-45872)/256;
  32.         TL1 = (65536-45872)%256;
  33.         EA = 1; // 使能總中斷
  34.         ET0 = 1; // 開啟定時器中斷
  35.         ET1 = 1;
  36.         TR0 = 1; // 啟動定時器
  37.         TR1 = 1;
  38. //        WELA=1;
  39. //        P0=0xfc;
  40. //        WELA=0;
  41. //        DULA=1;
  42. //        P0=0x3f;
  43. //        DULA=0;
  44.         
  45.         
  46.   while(1)
  47.         {               
  48. //                        WELA=1;
  49. //                        P0=0xfe;
  50. //                        WELA=0;
  51. //                                
  52. //                        P0=0xff;                        
  53. //               
  54. //                        DULA=1;
  55. //                        P0=0x3f;
  56. //                        DULA=0;
  57. //                        
  58. //                        P0=0xff;                        
  59. //                        
  60. //                        delay_ms(1);
  61. //                        
  62. //                        WELA=1;
  63. //                        P0=0xfd;
  64. //                        WELA=0;
  65. //               
  66. //                        P0=0xff;                                
  67. //               
  68. //                        DULA=1;
  69. //                        P0=table[ge];
  70. //                        DULA=0;
  71. //                        
  72. //                        P0=0xff;                                

  73. //                        delay_ms(1);
  74.                         display(shi,ge);        

  75.         }        
  76. }

  77. void delay_ms(uint xms)
  78. {
  79.         uint i,j;
  80.         for(i=xms;i>0;i--)
  81.          for(j=110;j>0;j--); // 通過斷點測試,該語句執行完約1ms
  82. }

  83. void display(uint shi,uint ge)
  84. {
  85.         /*第一個數碼管顯示十位*/
  86.         WELA = 1;
  87.         P0 = tablewe[0];
  88.         WELA = 0;               
  89.         
  90.         P0 = 0xff; // “消影”
  91.         
  92.         DULA = 1;
  93.         P0 = table[shi];
  94.         DULA = 0;
  95.         
  96.         P0 = 0xff; // “消影”
  97.         
  98.         delay_ms(5);
  99.         
  100.         /*第一個數碼管顯示個位*/
  101.         WELA = 1;
  102.         P0 = tablewe[1];
  103.         WELA = 0;        
  104.         
  105.         P0 = 0xff; // “消影”
  106.         
  107.         DULA = 1;
  108.         P0 = table[ge];
  109.         DULA = 0;
  110.         
  111.         P0 = 0xff; // “消影”

  112.         delay_ms(5);        
  113. }

  114. void Tim0() interrupt 1
  115. {
  116.         TH0 = (65536-45872)/256; // 重裝初值
  117.         TL0 = (65536-45872)%256;  
  118.         
  119.         num0++;
  120.         if(num0 == 4)
  121.         {
  122.           num0 = 0;
  123.                 Led1 = ~Led1;
  124.         }
  125. }

  126. void Tim1() interrupt 3
  127. {
  128.   TH1 = (65536-45872)/256; // 重裝初值
  129.         TL1 = (65536-45872)%256;
  130.         
  131.         num1++;
  132.         if(num1 == 20)
  133.         {
  134.           num1 = 0;
  135.                 num++;
  136.                 if(num == 60)
  137.                         num = 0;
  138.                
  139.                 shi = num/10;
  140.                 ge = num%10;
  141.         }
  142. }
復制代碼

所有資料51hei提供下載:
text_TimerAndInterrupt.rar (28.02 KB, 下載次數: 5)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品区一区二 | 国产成人福利视频在线观看 | 国产精品久久99 | 91精品国产欧美一区二区成人 | 国产成人高清在线观看 | 亚洲欧美日韩网站 | 亚洲精品视频一区 | 日日操夜夜操天天操 | 成人区精品一区二区婷婷 | 瑟瑟免费视频 | 国产在线麻豆精品入口 | 亚洲高清三级 | 在线免费毛片 | 国内精品成人 | 亚洲国产高清高潮精品美女 | 人人叉| 国产精品亚洲一区二区三区在线 | 日韩中文一区 | 国产精品久久精品 | 日本不卡高清视频 | 一区二区免费在线 | 日韩一区在线播放 | 精品影院 | 欧美日韩亚洲国产 | 亚洲国产免费 | 在线一区二区三区 | 狠狠干天天干 | 国产精品久久久久久久7777 | 视频一区二区中文字幕 | 欧美一区二区三区免费在线观看 | 激情久久网| 免费国产一区二区 | 免费国产视频在线观看 | 午夜欧美| 亚洲码欧美码一区二区三区 | 久久成人一区 | 亚洲精品久久久久久一区二区 | 国外成人免费视频 | 亚洲电影专区 | 台湾佬久久 | 黄色片网站国产 |