欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 如果數(shù)碼管段選單片機(jī)IO口是不規(guī)則的,怎么輸出呢? [打印本頁]

作者: mosqu    時(shí)間: 2018-11-9 11:01
標(biāo)題: 如果數(shù)碼管段選單片機(jī)IO口是不規(guī)則的,怎么輸出呢?
最近接觸IAP15w4K61S4的芯片,做一個(gè)數(shù)碼管相關(guān)的實(shí)驗(yàn)。芯片的IO口有點(diǎn)散亂,我連好數(shù)碼管寫著程序的時(shí)候,發(fā)現(xiàn)8位段選IO口是不規(guī)則的

P2.5,P2.6,P2.7,P7.4                                                //數(shù)碼管位控制IO
P0.4,P0.3,P0.2,P0.1,P0.0,P4.6,P4.5,P7.7                //數(shù)碼管段控制IO


我連的是這樣,求教一下這樣怎么輸出數(shù)碼管,找了挺久,都是P0直接查表的,求教大神!!!

作者: jennyli010    時(shí)間: 2018-11-9 12:15
按位操作唄。如果分著寫亂,就做成子函數(shù)或者結(jié)構(gòu)體
作者: yy3900636    時(shí)間: 2018-11-9 13:07
按位選擇輸出
作者: mosqu    時(shí)間: 2018-11-9 13:41
jennyli010 發(fā)表于 2018-11-9 12:15
按位操作唄。如果分著寫亂,就做成子函數(shù)或者結(jié)構(gòu)體

嗯嗯,就是有點(diǎn)亂閑麻煩
作者: pcf2000    時(shí)間: 2018-11-9 13:58
這個(gè)好辦,段和位各做一個(gè)表,每個(gè)表的每一個(gè)值對(duì)應(yīng)你想要輸出的數(shù)據(jù)(這個(gè)數(shù)據(jù)要根據(jù)你自己的IO情況編制),查表輸出就可以了 。
作者: pcf2000    時(shí)間: 2018-11-9 14:01
仔細(xì)看了一下,你這個(gè)IO配置確實(shí)有點(diǎn)亂,
作者: qilanjie    時(shí)間: 2018-11-9 14:01
同意樓上
作者: ahshmj    時(shí)間: 2018-11-9 14:15
這個(gè)簡單,你按照你的段輸出重新重新定位即可。根據(jù)你給出的段輸出IO,P0.4是小數(shù)點(diǎn),P0.3是“8”字的中間一橫,你以此類推。你所謂的P7.7,大概是P4.7吧?

例如顯示“1” ,是P4.7和P4.5(不知道你是高電平還是低電平有效)是10100000,16進(jìn)制就是0A0H(0Xa0)。
作者: XiaoBQ    時(shí)間: 2018-11-9 14:29
在頭文件宏定義吧,比如#define  DUAN_1 P0.4   #define DUAN_2  P0.3,這樣就有規(guī)律了  
作者: jackcfan    時(shí)間: 2018-11-9 14:33
剛接觸單片機(jī),我也有這個(gè)疑問,網(wǎng)上搜索的碼表和自己的情況不同,因?yàn)榇蠹襂O角映射是不一樣的,把別人的拿來用不一定適合自己,實(shí)際上只要搞懂了原理,針腳是可以亂插的,我自己寫了html工具,就可以亂插針腳(自己配置段碼和IO針腳映射),然后自動(dòng)計(jì)算碼表。但是我還沒實(shí)際實(shí)驗(yàn),有空的時(shí)候?qū)嶒?yàn)下。



  1. <html>
  2. <head>
  3. <meta charset="utf-8">
  4. <style type="text/css">
  5.         table.gridtable {
  6.                 font-family: verdana,arial,sans-serif;
  7.                 font-size:11px;
  8.                 color:#333333;
  9.                 border-width: 1px;
  10.                 border-color: #666666;
  11.                 border-collapse: collapse;
  12.         }
  13.         table.gridtable th {
  14.                 border-width: 1px;
  15.                 padding: 8px;
  16.                 border-style: solid;
  17.                 border-color: #666666;
  18.                 background-color: #dedede;
  19.         }
  20.         table.gridtable td {
  21.                 border-width: 1px;
  22.                 padding: 8px;
  23.                 border-style: solid;
  24.                 border-color: #666666;
  25.                 background-color: #ffffff;
  26.         }
  27.         table.gridtable caption {
  28.                 border-width: 1px 1px 0px 1px;
  29.                 padding: 8px;
  30.                 border-style: solid;
  31.                 border-color: #666666;
  32.                 font-weight: bold;
  33.                 background-color: #dedede;
  34.         }
  35. pre {
  36.   background:#f5f5f5;
  37.   color:#333;
  38.   padding:10px;
  39.   border: 1px solid #ccc;
  40.   font-size: 13px;
  41.   line-height: 1.4;
  42.   font-family: Menlo,Monaco,Consolas,"Courier New",monospace;
  43.   border-radius: 4px;
  44.   overflow: auto;
  45. }
  46. </style>
  47. <script src="https://cdn.bootcss.com/jquery/2.2.4/jquery.min.js"></script>
  48. </head>
  49. <body>
  50. <table class="gridtable" name="pin">
  51.         <caption>數(shù)碼管配置</caption>
  52.         <tr>
  53.                 <th>段碼</th><th>段腳</th><th>IO腳</th>
  54.         </tr>
  55.         <tr>
  56.                 <td>a</td> <td>1</td>
  57.                 <td><select value="0" name="a"></select></td>
  58.         </tr>                                          
  59.         <tr>                                          
  60.                 <td>b</td> <td>2</td> <td><select value="1" name="b"></select></td>
  61.         </tr>                                          
  62.         <tr>                                          
  63.                 <td>c</td> <td>4</td> <td><select value="2" name="c"></select></td>
  64.         </tr>                                          
  65.         <tr>                                          
  66.                 <td>d</td> <td>5</td> <td><select value="3" name="d"></select></td>
  67.         </tr>                                          
  68.         <tr>                                          
  69.                 <td>e</td> <td>6</td> <td><select value="4" name="e"></select></td>
  70.         </tr>                                          
  71.         <tr>                                          
  72.                 <td>f</td> <td>7</td> <td><select value="5" name="f"></select></td>
  73.         </tr>                                          
  74.         <tr>                                          
  75.                 <td>g</td> <td>9</td> <td><select value="6" name="g"></select></td>
  76.         </tr>                                          
  77.         <tr>                                          
  78.                 <td>p</td><td>10</td><td><select value="7" name="p"></select></td>
  79.         </tr>
  80. </table>
  81. <br/>
  82. 字符與段碼映射表:<input type="button" value="計(jì)算" id="calc"></input><br/><br/>
  83. <textarea style="height:100px;" id="code_map">
  84. 0:abcdef
  85. 1:bc
  86. 2:abged
  87. 3:abgcd
  88. 4:fgcb
  89. 5:afgcd
  90. 6:afeddcg
  91. 7:abc
  92. 8:abcdefg
  93. 9:gfabcd
  94. A:efabcg
  95. b:fedcg
  96. C:afed
  97. D:gcde
  98. E:afedg
  99. F:afeg
  100. </textarea>
  101. <pre id="code">

  102. </pre>
  103. <script>
  104. var template = "{7}{6}{5}{4}{3}{2}{1}{0}";

  105. var option = "";
  106. for(var i=0;i<8;i++){
  107.         option += '<option value="'+i+'">'+i+'</option>';
  108. }
  109. $("table[name=pin] select").each(function(idx, ele){
  110.         $(ele).html(option);
  111.         $(ele).val(idx);
  112. });

  113. function parse(){
  114.         var code_map_list = $("#code_map").val().split("\n");
  115.         var pin_map = {};
  116.         $("table[name=pin] select[name]").each(function(){
  117.                 var _this = $(this);
  118.                 pin_map[_this.attr('name')] = _this.val();
  119.         });
  120.         var table_positive = [];
  121.         var table_negative = [];
  122.         var char_positive = [];
  123.         var char_negative = [];
  124.         $.each(code_map_list,function(idx,code_map){
  125.                 code_map = $.trim(code_map);
  126.                 var split_idx = code_map.indexOf(":");
  127.                 if(code_map == "" || split_idx == -1){return;}
  128.                 var _c = code_map.split(":");
  129.                 var _char = _c[0];
  130.                 var _map_list = _c[1].split("");
  131.                 var bin_positive = template;//共陽極,低電平有效
  132.                 var bin_negative = template;//共陰極,高電平有效
  133.                 $.each(_map_list,function(_idx, _map){
  134.                         var pin = pin_map[_map];
  135.                         if(pin == undefined){alert("錯(cuò)誤的段碼:"+_map);throw "錯(cuò)誤的段碼:"+_map;}
  136.                         bin_positive = bin_positive.replace("{"+pin+"}",0);
  137.                         bin_negative = bin_negative.replace("{"+pin+"}",1);
  138.                 });
  139.                 bin_positive = bin_positive.replace(/\{\d\}/g,1);
  140.                 bin_negative = bin_negative.replace(/\{\d\}/g,0);
  141.                 var _p = parseInt(bin_positive,2).toString(16);
  142.                 var _n = parseInt(bin_negative,2).toString(16);
  143.                 table_positive.push(_p);
  144.                 table_negative.push(_n);
  145.                 char_positive.push({c:_char,hex:_p});
  146.                 char_negative.push({c:_char,hex:_n});
  147.         });
  148.        
  149.         var text = "//共陽碼表\nchar code table_positive[] = {";
  150.         $.each(table_positive,function(idx,hex){
  151.                 text += idx == 0 ? "0x" + hex : ", 0x" + hex;
  152.         });
  153.         text += "};\n";
  154.        
  155.         text += "//共陰碼表\nchar code table_negative[] = {";
  156.         $.each(table_negative,function(idx,hex){
  157.                 text += idx == 0 ? "0x" + hex : ", 0x" + hex;
  158.         });
  159.         text += "};\n\n";
  160.        
  161.         $.each(char_positive,function(idx,char_map){
  162.                 text += "char code positive_"+char_map['c'] + " = 0x" + char_map['hex'] + ";\n";
  163.         });
  164.         text += "\n";
  165.        
  166.         $.each(char_negative,function(idx,char_map){
  167.                 text += "char code negative_"+char_map['c'] + " = 0x" + char_map['hex'] + ";\n";
  168.         });
  169.        
  170.         console.info(text);
  171.         $("pre#code").text(text);
  172. }

  173. parse();

  174. $("#calc").click(parse);
  175. </script>
  176. </body>
  177. </html>
復(fù)制代碼

作者: mosqu    時(shí)間: 2018-11-9 14:39
pcf2000 發(fā)表于 2018-11-9 14:01
仔細(xì)看了一下,你這個(gè)IO配置確實(shí)有點(diǎn)亂,

嘿嘿嘿,配置的難受現(xiàn)在,不過先做著

  1.         j = LedOut[3];               
  2.         for(i = 0; i < 8; i++)               
  3.         {
  4.                 k[i] = j & 0x01;               
  5.                 j = j >> 1;                               
  6.         }
  7.         duanxuan(k[8]);                               
  8.        
  9.         j = LedOut[2];               
  10.         for(i = 0; i < 8; i++)
  11.         {
  12.                 k[i] = j & 0x01;
  13.                 j = j >> 1;
  14.         }
  15.         duanxuan(k[8]);

  16.        
  17. }
  18. void duanxuan(uchar code k[8])               
  19. {
  20.         sd1 = k[0];
  21.         sd2 = k[1];
  22.         sd3 = k[2];
  23.         sd4 = k[3];
  24.         sd5 = k[4];
  25.         sd6 = k[5];
  26.         sd7 = k[6];
  27.         sd8 = k[7];       
  28. }
復(fù)制代碼


現(xiàn)在寫成這樣,sd對(duì)應(yīng)段選IO,這樣做可以不,再做2個(gè)表會(huì)不會(huì)麻煩一點(diǎn)的
作者: zh223344    時(shí)間: 2018-11-9 15:21
建個(gè)位域結(jié)構(gòu),把端口號(hào)填進(jìn)去。應(yīng)該能直接可以干死的。簡單。
作者: 499923    時(shí)間: 2018-11-9 15:22
按位操作輸出
作者: wulin    時(shí)間: 2018-11-9 15:57
//定義數(shù)碼管段控制IO口和數(shù)碼管段碼數(shù)組
sbit code0=P0^4;                                       
sbit code1=P0^3;
sbit code2=P0^2;
sbit code3=P0^1;
sbit code4=P0^0;
sbit code5=P4^6;
sbit code6=P4^5;
sbit code7=P7^7;       
uchar  code table[]={//0~F
        0x3f,0x06,0x5b,0x4f,
        0x66,0x6d,0x7d,0x07,
        0x7f,0x6f,0x77,0x7c,
        0x39,0x5e,0x79,0x71};
//寫一個(gè)8位數(shù)據(jù)函數(shù)
void PX(uchar i)
{   
    code0=i&0x01;i>>=1;       
    code1=i&0x01;i>>=1;
    code2=i&0x01;i>>=1;
    code3=i&0x01;i>>=1;
    code4=i&0x01;i>>=1;
    code5=i&0x01;i>>=1;
    code6=i&0x01;i>>=1;
    code7=i&0x01;
}
//調(diào)用時(shí)PX(table[X]);就是對(duì)控制IO口賦值
作者: 1xiaosun    時(shí)間: 2018-11-9 16:02

P77=ACC7
P45=ACC6
P46=ACC5
P00=ACC4
P01=ACC3
P02=ACC2
P03=ACC1
P04=ACC0

作者: mosqu    時(shí)間: 2018-11-9 16:31
我上一條回復(fù)是被吃了嗎,2個(gè)小時(shí)了
作者: yzwzfyz    時(shí)間: 2018-11-10 17:08
本來就不需要規(guī)則!
否則PCB排版難度加大。通常是任意排放!
而你自己必須明白,再輸入顯示時(shí),要做一個(gè)就換程序,將規(guī)則的字庫等變換成符合LED排列陣列,而后再送顯。




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1