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

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

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3515|回復(fù): 9
打印 上一主題 下一主題
收起左側(cè)

怎樣修改一下單片機(jī)代碼,可以不用38譯碼器進(jìn)行位定義?求大佬指點(diǎn)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:841280 發(fā)表于 2021-11-14 01:54 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
150黑幣

單片機(jī)代碼奉上:
  1. #include "reg52.h"
  2. #include "intrins.h"
  3. typedef unsigned int u16;
  4. typedef unsigned char u8;
  5. #define GPIO_KEY P1
  6. u8 smgduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

  7. u8 t0,KeyVal,Display[8],flag,flag1,flag2,flag3;
  8. u16 hour,minute,second;                                   
  9. //38譯碼器                                         
  10. sbit LSA=P2^2;
  11. sbit LSB=P2^3;
  12. sbit LSC=P2^4;

  13. //數(shù)碼管顯示函數(shù)
  14. void Showsmg();
  15. //延時(shí)函數(shù)
  16. void Delay(u16 i);
  17. //初始化函數(shù)
  18. void Init();
  19. //按鍵檢測(cè)
  20. void KeyDown();
  21. //按鍵處理
  22. void Keypross();
  23. //數(shù)據(jù)處理
  24. void Datapross();
  25. //按鍵數(shù)字處理
  26. void Numpross(u8 dat);
  27. //Up功能處理
  28. void Uppross();
  29. //Down功能處理
  30. void Downpross();
  31. //Func功能處理
  32. void Funcpross();
  33. //Enter功能處理
  34. void Enterpross();
  35. //Back功能處理
  36. void Backpross();


  37. void main(){
  38.         Init();
  39.         while(1){
  40.                 KeyDown();
  41.                 Keypross();
  42.                 Datapross();
  43.                 Showsmg();
  44.         }
  45. }

  46. //數(shù)碼管顯示函數(shù)
  47. void Showsmg(){      
  48.         u8 i;
  49.         for(i=0;i<8;i++)
  50.         {
  51.            switch(7-i)          //位選
  52.            {
  53.                   case 0: LSA=0;LSB=0;LSC=0;break;
  54.                   case 1: LSA=1;LSB=0;LSC=0;break;
  55.                   case 2: LSA=0;LSB=1;LSC=0;break;
  56.                   case 3: LSA=1;LSB=1;LSC=0;break;
  57.                   case 4: LSA=0;LSB=0;LSC=1;break;
  58.                   case 5: LSA=1;LSB=0;LSC=1;break;
  59.                   case 6: LSA=0;LSB=1;LSC=1;break;
  60.                   case 7: LSA=1;LSB=1;LSC=1;break;
  61.            }
  62.           P0=Display[i];
  63.           Delay(1);
  64.           P0=0x00;
  65.         }
  66. }
  67. //延時(shí)函數(shù)
  68. void Delay(u16 i)   //11.0592 1ms
  69. {
  70.         while(i--){
  71.                 unsigned char i, j;

  72.                 _nop_();
  73.                 i = 2;
  74.                 j = 199;
  75.                 do
  76.                 {
  77.                         while (--j);
  78.                 } while (--i);
  79.         }
  80. }
  81. //初始化函數(shù)
  82. void Init(){
  83.         //參數(shù)初始化
  84.         hour=0;
  85.         minute=0;
  86.         second=0;
  87.         t0=0;
  88.         flag=0;
  89.         flag1=0;
  90.         flag2=0;
  91.         //定時(shí)器0初始化
  92.         TMOD=0x01;
  93.         TH0=(65536-9174)/256;   //10ms
  94.         TL0=(65536-9174)%256;
  95.         EA=1;
  96.         ET0=1;
  97.         TR0=0;
  98. }
  99. //按鍵檢測(cè)
  100. void KeyDown(){
  101.         char a=0;
  102.         GPIO_KEY=0x0f;
  103.         if(GPIO_KEY!=0x0f){
  104.                 Delay(10);
  105.                 if(GPIO_KEY!=0x0f){
  106.                         GPIO_KEY=0x0f;
  107.                         switch(GPIO_KEY){
  108.                                 case 0x07 : KeyVal=0;flag3=1;break;
  109.                                 case 0x0b : KeyVal=1;flag3=1;break;
  110.                                 case 0x0d : KeyVal=2;flag3=1;break;
  111.                                 case 0x0e : KeyVal=3;flag3=1;break;
  112.                         }
  113.                         GPIO_KEY=0xf0;
  114.                         switch(GPIO_KEY){
  115.                                 case 0x70 : KeyVal=KeyVal;break;
  116.                                 case 0xb0 : KeyVal=KeyVal+4;break;
  117.                                 case 0xd0 : KeyVal=KeyVal+8;break;
  118.                                 case 0xe0 : KeyVal=KeyVal+12;break;
  119.                         }
  120.                 }
  121.                 while((a<150) && (GPIO_KEY!=0xf0)){
  122.                         Delay(1);
  123.                         a++;
  124.                 }
  125.         }
  126. }
  127. //按鍵處理
  128. void Keypross(){
  129.         if(flag3==1){
  130.                 flag3=0;
  131.                 switch(KeyVal){
  132.                         case 0:Numpross(7);break;
  133.                         case 1:Numpross(8);break;
  134.                         case 2:Numpross(9);break;
  135.                         case 3:Uppross();break;
  136.                         case 4:Numpross(4);break;
  137.                         case 5:Numpross(5);break;
  138.                         case 6:Numpross(6);break;
  139.                         case 7:Downpross();break;
  140.                         case 8:Numpross(1);break;
  141.                         case 9:Numpross(2);break;
  142.                         case 10:Numpross(3);break;
  143.                         case 11:Funcpross();break;
  144.                         case 12:Numpross(0);break;
  145.                         case 13:break;
  146.                         case 14:Backpross();break;
  147.                         case 15:Enterpross();break;
  148.                         
  149.                 }
  150.         }
  151. }
  152. //數(shù)據(jù)處理
  153. void Datapross(){
  154.         if(flag2==1){
  155.                 flag2=0;
  156.                 second--;
  157.                 if(second>59){
  158.                         if(minute>59){
  159.                                 if(hour>23){
  160.                                         second=0;
  161.                                         minute=0;
  162.                                         hour=0;
  163.                                         TR0=0;
  164.                                 }
  165.                                 else{
  166.                                         hour--;
  167.                                         minute=59;
  168.                                 }
  169.                         }
  170.                         else{
  171.                                 minute--;
  172.                                 second=59;
  173.                         }        
  174.                 }        
  175.         }
  176.         Display[0]=smgduan[hour/10];
  177.         Display[1]=smgduan[hour%10];
  178.         Display[2]=0x40;
  179.         Display[3]=smgduan[minute/10];
  180.         Display[4]=smgduan[minute%10];
  181.         Display[5]=0x40;
  182.         Display[6]=smgduan[second/10];
  183.         Display[7]=smgduan[second%10];
  184. }
  185. //按鍵數(shù)字處理
  186. void Numpross(u8 dat){
  187.         u8 tp;
  188.         if(flag==1){
  189.                 switch(flag1){
  190.                         case 0:tp=hour%10;hour=tp+dat*10;break;
  191.                         case 1:tp=hour/10;hour=tp*10+dat;break;
  192.                         case 2:tp=minute%10;minute=tp+dat*10;break;
  193.                         case 3:tp=minute/10;minute=tp*10+dat;break;
  194.                         case 4:tp=second%10;second=tp+dat*10;break;
  195.                         case 5:tp=second/10;second=tp*10+dat;break;
  196.                 }
  197.         }
  198. }
  199. //Up功能處理
  200. void Uppross(){
  201.         if(flag==1){
  202.                 flag1++;
  203.                 if(flag1>5){
  204.                         flag1=0;
  205.                 }
  206.         }
  207. }
  208. //Down功能處理
  209. void Downpross(){
  210.         if(flag==1){
  211.                 flag1--;
  212.                 if(flag1<0)
  213.                         flag1=5;
  214.         }
  215. }
  216. //Func功能處理
  217. void Funcpross(){
  218.         TR0=0;        //停止計(jì)時(shí)
  219.         flag=1; //允許設(shè)置時(shí)間
  220. }
  221. //Enter功能處理
  222. void Enterpross(){
  223.         flag=0;                //清零,不允許設(shè)置時(shí)間
  224.         flag1=0;
  225.         if(hour>23)
  226.                 hour=23;
  227.         if(minute>59)
  228.                 minute=59;
  229.         if(second>59)
  230.                 second=59;
  231.         TR0=1;                //開(kāi)始計(jì)時(shí)
  232. }
  233. //Back功能處理
  234. void Backpross(){
  235. //暫無(wú)功能
  236. }

  237. void Timer0() interrupt 1{
  238.         TH0=(65536-9174)/256;   //重置
  239.         TL0=(65536-9174)%256;
  240.         t0++;
  241.         if(t0==100){
  242.                 t0=0;
  243.                 flag2=1;
  244.         }
  245. }
復(fù)制代碼

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:230742 發(fā)表于 2021-11-14 07:10 | 只看該作者
生搬硬套。哈哈。
回復(fù)

使用道具 舉報(bào)

板凳
ID:230742 發(fā)表于 2021-11-14 11:18 | 只看該作者
坐沙發(fā),等大佬解答。
回復(fù)

使用道具 舉報(bào)

地板
ID:213173 發(fā)表于 2021-11-14 21:12 | 只看該作者
軟件都是基于硬件條件編寫(xiě)的。樓主找的程序只適合普中的開(kāi)發(fā)板,不能直接套用到這個(gè)板子上。這個(gè)截圖根本看不清管腳標(biāo)注,也就搞不清連接關(guān)系。亂猜沒(méi)有實(shí)際意義。
回復(fù)

使用道具 舉報(bào)

5#
ID:624769 發(fā)表于 2021-11-14 21:57 | 只看該作者
樓主的代碼,讓我想起前兩天那個(gè)DS1302的帖子……,那個(gè)是38譯碼器的高低位不明。
你這個(gè)代碼雖然和那個(gè)如出一轍。 但是從你的電路圖看,你板子上壓根沒(méi)有38譯碼器阿……
回復(fù)

使用道具 舉報(bào)

6#
ID:96682 發(fā)表于 2021-11-15 06:40 來(lái)自手機(jī) | 只看該作者
買(mǎi)開(kāi)發(fā)板得用它配套的程序這是共識(shí),隨便拿個(gè)程序來(lái)修改
回復(fù)

使用道具 舉報(bào)

7#
ID:523803 發(fā)表于 2021-12-13 00:07 | 只看該作者
為啥不用38譯碼器,難道你要直接用IO口嗎
回復(fù)

使用道具 舉報(bào)

8#
ID:155507 發(fā)表于 2021-12-13 09:49 | 只看該作者
樓主用天祥的單片機(jī)學(xué)習(xí)板 一個(gè)用的鎖存器驅(qū)動(dòng)位碼,
找的程序只適合普中的開(kāi)發(fā)板  一個(gè)用的38譯碼器驅(qū)動(dòng)位碼,
你程序直接移過(guò)去,絕對(duì)是跑不起來(lái)的。
回復(fù)

使用道具 舉報(bào)

9#
ID:883242 發(fā)表于 2021-12-13 11:32 | 只看該作者
三八譯碼器是用三根線擴(kuò)展成八根線,主要更改在硬件上面,你不貼硬件的圖貼軟件真讓人摸不到頭腦。
回復(fù)

使用道具 舉報(bào)

10#
ID:991571 發(fā)表于 2021-12-13 12:27 | 只看該作者
用多的端口來(lái)代替38譯碼器的所有輸出管腳
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 人成在线视频 | 激情91| 精产国产伦理一二三区 | 中文字幕精品一区久久久久 | 精品福利视频一区二区三区 | 天天插天天操 | 久久涩涩 | 亚洲精品区 | 国产在线观看一区二区三区 | 欧美高清视频一区 | 黄色免费观看网站 | 亚洲国产精品一区 | 国产中文字幕av | 亚洲欧美日韩系列 | 国产在线小视频 | 国产在线一区二区 | 国产成人精品一区二区三区在线 | 一区二区av在线 | 国产精品久久久久久网站 | 成人日韩av | 91伦理片 | 国产在线不卡视频 | 日韩一区二区三区在线 | 欧美精品在线一区 | 国产精品无码久久久久 | 激情五月婷婷在线 | 中文二区 | 久久久久久久av | 麻豆久久久9性大片 | 在线色网| 91.xxx.高清在线 | 亚洲欧美激情精品一区二区 | 日韩欧美在线视频一区 | 91av免费观看 | 天天干成人网 | 国产精品久久久久久久久婷婷 | 亚洲三区在线观看 | 国产精品日韩欧美 | 天天操 夜夜操 | 99爱在线 | 成人在线观 |