有個問題必須先核實,這個16位二進位制數是有符號數還是無符號數?這個問題影響到電路的具體設計,因為你需要一個除法器,關於除法器的設計自行去搜索,最簡單的是原碼加減交叉除法器。 有了除法器,下面開始轉換。 一,16位二進位制數除以10,將得到的餘數取低四位,得到第一個BCD碼。 二,將上次除法運算的商再除以10,取餘數低4位,得到第二個BCD碼。 依次類推,直到商小於10,除法就做完了。16位二進位制能表示的最大數是65535,所以你需要進行五次除法運算。結果是五個bcd碼,一共有20位。因為你只顯示兩個BCD,所以將高12位的訊號用或門連起來,作為溢位訊號,輸出給bcd碼led,當溢位訊號為1時,led顯示E,表示錯誤。 說了老半天,想起你可能是說的軟體實現。其實基本過程差不多,就是做除法。至於如何壓縮BCD碼,你可以用表示高位的bcd碼乘以16或左移4位,然後與表示低位的BCD碼做按位或運算,就能得到壓縮的BCD碼。 在軟體中如何顯示壓縮的BCD碼呢?得設計一個譯碼模組,先將的壓縮BCD碼擴充套件成8位一個,過程與上面相反。弄好後,然後和00110000做按位或運算,就能得到這個BCD碼的ASCII碼。
有個問題必須先核實,這個16位二進位制數是有符號數還是無符號數?這個問題影響到電路的具體設計,因為你需要一個除法器,關於除法器的設計自行去搜索,最簡單的是原碼加減交叉除法器。 有了除法器,下面開始轉換。 一,16位二進位制數除以10,將得到的餘數取低四位,得到第一個BCD碼。 二,將上次除法運算的商再除以10,取餘數低4位,得到第二個BCD碼。 依次類推,直到商小於10,除法就做完了。16位二進位制能表示的最大數是65535,所以你需要進行五次除法運算。結果是五個bcd碼,一共有20位。因為你只顯示兩個BCD,所以將高12位的訊號用或門連起來,作為溢位訊號,輸出給bcd碼led,當溢位訊號為1時,led顯示E,表示錯誤。 說了老半天,想起你可能是說的軟體實現。其實基本過程差不多,就是做除法。至於如何壓縮BCD碼,你可以用表示高位的bcd碼乘以16或左移4位,然後與表示低位的BCD碼做按位或運算,就能得到壓縮的BCD碼。 在軟體中如何顯示壓縮的BCD碼呢?得設計一個譯碼模組,先將的壓縮BCD碼擴充套件成8位一個,過程與上面相反。弄好後,然後和00110000做按位或運算,就能得到這個BCD碼的ASCII碼。