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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機(jī)程序怎么把共陰數(shù)碼管程序改成共陽的

[復(fù)制鏈接]
ID:196319 發(fā)表于 2017-5-10 22:11 | 顯示全部樓層 |閱讀模式

  1. #include<reg51.h>
  2. #define uchar unsigned char         
  3. #define uint unsigned int
  4. //數(shù)碼管位端口定義
  5. sbit w1=P2^0;
  6. sbit w2=P2^1;
  7. sbit w3=P2^2;
  8. sbit w4=P2^3;
  9. sbit w5=P2^4;
  10. ////////按鍵/////////////////////
  11. sbit key1=P3^0;//設(shè)置時(shí)間
  12. sbit key2=P3^1;//加
  13. sbit key3=P3^2;//減        
  14. sbit key4=P3^3;//鬧鐘
  15. sbit beep=P1^0;//蜂鳴器
  16. /////共陰數(shù)碼管段信號編碼////////
  17. uchar code table[10]=//0---9
  18. {0xFC,0x60,0xDA,0xF2,0x66,
  19. 0xB6,0xBE,0xE0,0xFE,0xF6};//
  20. uchar num,miao,fen,shi;//計(jì)時(shí)  時(shí)分秒變量
  21. uchar fen1,shi1;//鬧鐘變量
  22. uchar d1,d2,d3,d4;//顯示拆分?jǐn)?shù)據(jù)
  23. void delay(uint ms)//1ms  延時(shí)函數(shù)   數(shù)據(jù)保持用的
  24. {
  25.         uchar x;
  26.         for(ms;ms>0;ms--)
  27.                 for(x=110;x>0;x--);
  28. }
  29. void display()//顯示函數(shù)
  30. {
  31.         d1=shi/10;//小時(shí)
  32.         d2=shi%10;//
  33.         d3=fen/10;//
  34.         d4=fen%10;//分鐘
  35.         w1=0;P0=table[d1];delay(10);//第1位顯示數(shù)據(jù)
  36.         P0=0x00;w1=1;//關(guān)閉顯示消除動態(tài)掃描陰影
  37.         w2=0;P0=table[d2]|0x01;delay(10);//第2位顯示數(shù)據(jù)
  38.         P0=0x00;w2=1;//關(guān)閉顯示消除動態(tài)掃描陰影
  39.         w3=0;P0=table[d3];delay(10);//第3位顯示數(shù)據(jù)
  40.         P0=0x00;w3=1;//關(guān)閉顯示消除動態(tài)掃描陰影
  41.         w4=0;P0=table[d4]|0x01;delay(10);//第4位顯示數(shù)據(jù)
  42.         P0=0x00;w4=1;//關(guān)閉顯示消除動態(tài)掃描陰影


  43. }
  44. void disp_set()//顯示函數(shù)
  45. {
  46.         d1=shi1/10;//小時(shí)
  47.         d2=shi1%10;//
  48.         d3=fen1/10;//
  49.         d4=fen1%10;//分鐘
  50.         w1=0;P0=table[d1];delay(10);//第1位顯示數(shù)據(jù)
  51.         P0=0x00;w1=1;//關(guān)閉顯示消除動態(tài)掃描陰影
  52.         w2=0;P0=table[d2]|0x01;delay(10);//第2位顯示數(shù)據(jù)
  53.         P0=0x00;w2=1;//關(guān)閉顯示消除動態(tài)掃描陰影
  54.         w3=0;P0=table[d3];delay(10);//第3位顯示數(shù)據(jù)
  55.         P0=0x00;w3=1;//關(guān)閉顯示消除動態(tài)掃描陰影
  56.         w4=0;P0=table[d4]|0x01;delay(10);//第4位顯示數(shù)據(jù)
  57.         P0=0x00;w4=1;//關(guān)閉顯示消除動態(tài)掃描陰影

  58. }
  59. void keyscan()//調(diào)時(shí)按鍵掃描函數(shù)
  60. {
  61. uchar k_flag,set_flag;
  62.         if(key1==0)//按鍵按下           一下所有按鍵執(zhí)行的模式都是一樣的
  63.         {
  64.                 delay(10);//延時(shí)消除按鍵抖動
  65.                 if(key1==0)//確定按鍵按下
  66.                 {
  67.                         k_flag=1;                        
  68.                 }
  69.                 while(key1==0)display();//等待按鍵松手
  70.         }
  71.         while(k_flag==1)//開始調(diào)整小時(shí)數(shù)據(jù)
  72.         {
  73.                 display();
  74.                 if(key1==0)
  75.                 {
  76.                         delay(10);//延時(shí)消抖
  77.                         if(key1==0)
  78.                         {
  79.                                 k_flag=2;
  80.                         }
  81.                         while(key1==0)display();
  82.                 }
  83.                 if(key2==0)
  84.                 {
  85.                         delay(10);
  86.                         if(key2==0)
  87.                         {
  88.                                 shi++;
  89.                                 if(shi==24)shi=0;
  90.                         }
  91.                         while(key2==0)display();
  92.                 }
  93.                 if(key3==0)
  94.                 {
  95.                         delay(10);
  96.                         if(key3==0)
  97.                         {
  98.                                 if(shi==0)shi=24;  
  99.                                 shi--;        
  100.                         }
  101.                                   while(key3==0)display();
  102.                 }        
  103.         }
  104.         while(k_flag==2)//開始調(diào)整分鐘數(shù)據(jù)
  105.         {
  106.                 display();
  107.                 if(key1==0)
  108.                 {
  109.                         delay(10);//延時(shí)消抖
  110.                         if(key1==0)
  111.                         {
  112.                                 k_flag=3;
  113.                         }
  114.                         while(key1==0)display();
  115.                 }
  116.                 if(key2==0)
  117.                 {
  118.                         delay(10);
  119.                         if(key2==0)
  120.                         {
  121.                                 fen++;
  122.                                 if(fen==60)fen=0;
  123.                         }
  124.                         while(key2==0)display();
  125.                 }
  126.                 if(key3==0)
  127.                 {
  128.                         delay(10);
  129.                         if(key3==0)
  130.                         {
  131.                                 if(fen==0)fen=60;  
  132.                                 fen--;        
  133.                         }
  134.                         while(key3==0)display();
  135.                 }        
  136.         }

  137. ///////設(shè)置定時(shí)時(shí)間///////////////////////////////////////////////
  138.         if(key4==0)
  139.         {
  140.                 delay(10);
  141.                 if(key4==0)
  142.                 {
  143.                         set_flag=1;
  144.                 }
  145.                 while(key4==0)disp_set();
  146.                 }
  147.         while(set_flag==1)
  148.         {
  149.                 disp_set();
  150.                 if(key2==0)
  151.                 {
  152.                         delay(10);
  153.                         if(key2==0)
  154.                         {        
  155.                                 shi1++;
  156.                                 if(shi1==24)shi1=0;
  157.                         }
  158.                         while(key2==0)disp_set();
  159.                 }
  160.                 if(key3==0)
  161.                 {
  162.                         delay(10);
  163.                         if(key3==0)
  164.                         {        
  165.                                 if(shi1==0)shi1=24;
  166.                                 shi1--;
  167.                         }
  168.                         while(key3==0)disp_set();
  169.                 }
  170.                 if(key4==0)
  171.                 {
  172.                         delay(10);
  173.                         if(key4==0)
  174.                         {        
  175.                                 set_flag=2;
  176.                         }
  177.                         while(key4==0)disp_set();
  178.                 }        
  179.         }
  180.         while(set_flag==2)
  181.         {
  182.                 disp_set();
  183.                 if(key2==0)
  184.                 {
  185.                         delay(10);
  186.                         if(key2==0)
  187.                         {        
  188.                             fen1++;
  189.                                 if(fen1==60)fen1=0;
  190.                         }
  191.                         while(key2==0)disp_set();
  192.                 }
  193.                 if(key3==0)
  194.                 {
  195.                         delay(10);
  196.                         if(key3==0)
  197.                         {
  198.                                 if(fen1==0)fen1=60;
  199.                                 fen1--;
  200.                         }
  201.                         while(key3==0)disp_set();
  202.                 }
  203.                 if(key4==0)
  204.                 {
  205.                         delay(10);
  206.                         if(key4==0)
  207.                         {  
  208.                                 set_flag=0;
  209.                         }
  210.                         while(key4==0)disp_set();
  211.                 }        
  212.         }
  213. }

  214. void main()
  215. {
  216.         TMOD=0x01;//定時(shí)器0  16位計(jì)時(shí)模式
  217.         TH0=(65536-50000)/256; //50ms定時(shí)
  218.         TL0=(65536-50000)%256; //50ms定時(shí)
  219.         EA=1;//開啟總中斷
  220.         ET0=1;//開啟定時(shí)器中斷
  221.         TR0=1;//開啟定時(shí)器
  222.         w5=1;
  223.         while(1)
  224.         {        
  225.             w5=~w5;
  226.                 display();//顯示函數(shù)
  227.                 keyscan();//按鍵掃描函數(shù)
  228.         }
  229. }
  230. void T0_time() interrupt 1
  231. {
  232.         TH0=(65536-50000)/256; //50ms定時(shí)
  233.         TL0=(65536-50000)%256; //50ms定時(shí)
  234.         num++;//加一次50ms定時(shí)
  235.         if(num==20)//1S
  236.         {
  237.                 num=0;
  238.                 miao++;
  239.                 if(miao==60)
  240.                 {
  241.                         miao=0;
  242.                         fen++;
  243.                         if(fen==60)
  244.                         {
  245.                                 fen=0;
  246.                                 shi++;
  247.                                 if(shi==24)shi=0;
  248.                         }
  249.                 }
  250.         }
  251. }

復(fù)制代碼

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

ID:196319 發(fā)表于 2017-5-10 22:18 | 顯示全部樓層
突然發(fā)現(xiàn)這段函數(shù)和平時(shí)的共陰數(shù)碼管函數(shù)好像不一樣,突然不會改了   數(shù)碼管1號口接的是P0.7
/////共陰數(shù)碼管段信號編碼////////
uchar code table[10]=//0---9
{0xFC,0x60,0xDA,0xF2,0x66,
0xB6,0xBE,0xE0,0xFE,0xF6};//
有人會修改嗎?
回復(fù)

使用道具 舉報(bào)

ID:183046 發(fā)表于 2017-5-10 23:10 | 顯示全部樓層
下個(gè)這個(gè)軟件就好了可以給你算數(shù)組
無標(biāo)題.png
回復(fù)

使用道具 舉報(bào)

ID:111634 發(fā)表于 2017-5-10 23:37 | 顯示全部樓層
關(guān)鍵是先改電路。光改程序是改不好的。程序是配合電路的。一上來就貼出冗長程序,說明你思路錯(cuò)了,理解錯(cuò)了。
回復(fù)

使用道具 舉報(bào)

ID:123289 發(fā)表于 2017-5-10 23:46 | 顯示全部樓層
說明你并未真正地了解LED驅(qū)動的原理。
回復(fù)

使用道具 舉報(bào)

ID:192523 發(fā)表于 2017-5-11 14:27 | 顯示全部樓層
如果是io口直接驅(qū)動的數(shù)碼管程序的話只要把輸出取反就可以了,如果是用7段譯碼器就不一樣了
回復(fù)

使用道具 舉報(bào)

ID:199559 發(fā)表于 2017-5-11 15:13 | 顯示全部樓層
io口直接驅(qū)動的數(shù)碼管程序的話只要把輸出取反就可以了
回復(fù)

使用道具 舉報(bào)

ID:111634 發(fā)表于 2017-5-11 18:39 | 顯示全部樓層
io口直接驅(qū)動,若是共陰LED,怎么直接驅(qū)動?20uA,會亮么?
回復(fù)

使用道具 舉報(bào)

ID:196319 發(fā)表于 2017-5-12 00:15 | 顯示全部樓層
zl2168 發(fā)表于 2017-5-10 23:37
關(guān)鍵是先改電路。光改程序是改不好的。程序是配合電路的。一上來就貼出冗長程序,說明你思路錯(cuò)了,理解錯(cuò)了 ...

我修改過線路,然后稍微改了程序,發(fā)現(xiàn)只能顯示出0000  按下功能按鍵毫無反應(yīng),所以來求助了
回復(fù)

使用道具 舉報(bào)

ID:196319 發(fā)表于 2017-5-12 00:15 | 顯示全部樓層
maidezhu 發(fā)表于 2017-5-10 23:10
下個(gè)這個(gè)軟件就好了可以給你算數(shù)組

我去下載試試,謝謝提醒
回復(fù)

使用道具 舉報(bào)

ID:196319 發(fā)表于 2017-5-12 00:35 | 顯示全部樓層
joeky 發(fā)表于 2017-5-11 15:13
io口直接驅(qū)動的數(shù)碼管程序的話只要把輸出取反就可以了

試過直接取反,沒有用
回復(fù)

使用道具 舉報(bào)

ID:196319 發(fā)表于 2017-5-12 00:37 | 顯示全部樓層
zl2168 發(fā)表于 2017-5-11 18:39
io口直接驅(qū)動,若是共陰LED,怎么直接驅(qū)動?20uA,會亮么?

共陰是直接驅(qū)動,共陽加上245芯片
回復(fù)

使用道具 舉報(bào)

ID:196319 發(fā)表于 2017-5-12 00:38 | 顯示全部樓層
桂木桂馬 發(fā)表于 2017-5-11 14:27
如果是io口直接驅(qū)動的數(shù)碼管程序的話只要把輸出取反就可以了,如果是用7段譯碼器就不一樣了

io直接驅(qū)動,但是直接取反沒效果
回復(fù)

使用道具 舉報(bào)

ID:111634 發(fā)表于 2017-5-12 09:02 | 顯示全部樓層
本帖最后由 zl2168 于 2017-5-12 19:14 編輯

給你各介紹幾個(gè)共陰和共陽的掃描顯示案例,你自己去研讀改進(jìn)吧!
共陰動態(tài)顯示:
實(shí)例57  74LS139選通4LED數(shù)碼管動態(tài)顯示
實(shí)例57 74LS139選通4位共陰LED數(shù)碼管動態(tài)顯示.rar (48.12 KB, 下載次數(shù): 13)
139.jpg
實(shí)例58  74LS138選通8LED數(shù)碼管動態(tài)顯示
實(shí)例58 74LS138選通8位LED動態(tài)顯示.rar (44.76 KB, 下載次數(shù): 5)
138.jpg
實(shí)例59  74LS595串行選通8LED數(shù)碼管動態(tài)顯示

實(shí)例59 74LS595×2選通8位LED動態(tài)顯示.rar (45.12 KB, 下載次數(shù): 4)
595.jpg
共陰靜態(tài)顯示:
實(shí)例53 CC4511 BCD碼驅(qū)動3LED數(shù)碼管靜態(tài)顯示
實(shí)例53 CC4511 BCD碼驅(qū)動3位LED靜態(tài)顯示.rar (43.76 KB, 下載次數(shù): 4)
實(shí)例53  CC4511 BCD碼驅(qū)動3位LED靜態(tài)顯示.jpg

共陽動態(tài)顯示:
實(shí)例53 CC4511 BCD碼驅(qū)動3位LED數(shù)碼管靜態(tài)顯示
實(shí)例56 PNP晶體管選通3位LED動態(tài)顯示.rar (47.41 KB, 下載次數(shù): 6)
pnp.jpg
共陽靜態(tài)顯示:
實(shí)例52 74LS377并行輸出3位LED靜態(tài)顯示
實(shí)例52 74LS377并行輸出3位LED靜態(tài)顯示.rar (42.73 KB, 下載次數(shù): 3)
實(shí)例52  74LS377并行輸出3位LED靜態(tài)顯示.jpg





實(shí)例54 74LS164串行擴(kuò)展3LED數(shù)碼管靜態(tài)顯示




實(shí)例54 74LS164串行擴(kuò)展3位LED靜態(tài)顯示.rar (57.84 KB, 下載次數(shù): 4)
實(shí)例54  74LS164串行擴(kuò)展3位LED靜態(tài)顯示.jpg
實(shí)例55 CC4094串行擴(kuò)展3位LED數(shù)碼管靜態(tài)顯示
實(shí)例55 CC4094串行擴(kuò)展3位LED靜態(tài)顯示.rar (37.46 KB, 下載次數(shù): 3)
實(shí)例55  CC4094串行擴(kuò)展3位LED靜態(tài)顯示.jpg
實(shí)例56 74LS595串行擴(kuò)展3位LED數(shù)碼管靜態(tài)顯示
實(shí)例56 74LS595串行擴(kuò)展3位LED靜態(tài)顯示.rar (39.7 KB, 下載次數(shù): 4)
實(shí)例56  74LS595串行擴(kuò)展3位LED靜態(tài)顯示.jpg
Proteus仿真一下,確認(rèn)有效。
以上摘自張志良編著《80C51單片機(jī)仿真設(shè)計(jì)實(shí)例教程——基于Keil CProteus》清華大學(xué)出版社ISBN 978-7-302-41682-1,內(nèi)有常用的單片機(jī)應(yīng)用100案例,用于仿真實(shí)驗(yàn)操作,電路與程序真實(shí)可靠可信可行書中電路和程序設(shè)計(jì)有詳細(xì)說明,程序語句條條有注解。
仿真電路和Hex文件能在清華出版社網(wǎng)站免費(fèi)下載,程序源代碼只能到書上看了。到圖書館借,或到新華書店翻閱,或到網(wǎng)上書店打折購買。


回復(fù)

使用道具 舉報(bào)

ID:191441 發(fā)表于 2017-5-12 14:02 | 顯示全部樓層
共陰編碼 改成共陽編碼
回復(fù)

使用道具 舉報(bào)

ID:191441 發(fā)表于 2017-5-12 14:04 | 顯示全部樓層
code&nbsp;unsigned&nbsp;char&nbsp;tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};&nbsp;//共陽數(shù)碼管&nbsp;0-9
回復(fù)

使用道具 舉報(bào)

ID:196319 發(fā)表于 2017-5-12 15:36 | 顯示全部樓層
zl2168 發(fā)表于 2017-5-12 09:02
給你各介紹幾個(gè)共陰和共陽的掃描顯示案例,你自己去研讀改進(jìn)吧!
共陰動態(tài)顯示:
實(shí)例57  74LS139選通4位 ...

恩,我多看看,謝謝
回復(fù)

使用道具 舉報(bào)

ID:200002 發(fā)表于 2017-5-12 16:36 | 顯示全部樓層
換一個(gè)芯片
回復(fù)

使用道具 舉報(bào)

ID:111634 發(fā)表于 2017-5-13 08:37 | 顯示全部樓層
啊啊啊12138 發(fā)表于 2017-5-12 15:36
恩,我多看看,謝謝

給你9個(gè)案例了,共陰共陽、靜態(tài)動態(tài)、串行并行,都有。
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日本三级电影在线看 | 日韩视频在线一区 | 99精品久久久久久 | 夜夜骑首页 | 亚洲欧美一区二区三区1000 | av在线电影网站 | 无码一区二区三区视频 | www.国产91| 欧美精品在线一区二区三区 | 亚洲欧美日韩高清 | 玖玖久久 | 99精品在线观看 | 欧美精品在线播放 | 91在线视频免费观看 | 成人看片在线观看 | 一本大道久久a久久精二百 国产成人免费在线 | 亚洲视频欧美视频 | 欧美一级欧美三级在线观看 | 超碰美女在线 | 国产在线观看一区 | 在线永久看片免费的视频 | 99精品在线观看 | 国产精品视频免费观看 | 久久久国产精品入口麻豆 | 精品亚洲一区二区 | 日韩午夜 | 日本一二三区高清 | 中文字幕亚洲精品 | 日韩欧美精品一区 | 精品国产乱码久久久久久蜜臀 | 亚洲成av人片在线观看 | 久久综合激情 | 国产日韩一区二区三区 | 成人妇女免费播放久久久 | 免费网站国产 | 国产高清在线观看 | av一二三区| 色婷婷综合久久久久中文一区二区 | 天天躁日日躁狠狠的躁天龙影院 | 中文字幕在线剧情 | 日本精品一区二区三区四区 |