欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
16位二進制數轉十進制數顯示_共陽數碼管單片機程序
[打印本頁]
作者:
myhj
時間:
2019-7-26 21:24
標題:
16位二進制數轉十進制數顯示_共陽數碼管單片機程序
對于初學者來說,通過本程序,可以將16位二進制數轉換成十進制并顯示出來,對于高位數據的無效零,還進行了消零處理。
單片機源程序如下:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code DIG_CODE[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //共陽段碼值0~9
unsigned char DisplayData[8]; //用來存放要顯示的8位數的值
sbit DS =P1^0; //串行數據輸入DS
sbit RCLK =P1^1; //輸出鎖存器控制脈沖ST_CP
sbit SCLK =P1^2; //移位時鐘脈沖SH_CP
void smgxs(uchar date,uchar dres);
void delayms(unsigned int x);
void Btobcd(unsigned int myhj);
main()
{
uchar i,hj,tem;
Btobcd(0xFEEF); //給定一個16位的INT類型數
while(1)
{
tem=0x80; //位碼初值
for(i=0;i<8;i++) smgxs(DisplayData[i],tem>>i); //先送段碼,即高位數據,再送位碼
}
}
void smgxs(uchar date,uchar dres) //595寫數據程序
{
uchar i;
for (i=0;i<8;i++) //寫段碼數據
{
SCLK=0;
DS=date<<i & 0x80; //取最高位
SCLK=1; //移位端給上升沿
}
for (i=0;i<8;i++) //寫位碼數據
{
SCLK=0;
DS=dres<<i & 0x80; //這樣取最高位
SCLK=1; //移位端給上升沿
}
RCLK=0; //鎖存數據,并在數碼管上顯示
RCLK=1;
}
void delayms(unsigned int x) //延時子程序
{
unsigned int hi,hj;
for(hi=0;hi<x;hi++)
for(hj=0;hj<112;hj++);
}
void Btobcd(unsigned int myhj) //對16位int型數據進行BCD譯碼并存入數組
{
DisplayData[0]=DIG_CODE[myhj%100000000/10000000];
if(DisplayData[0]==0xc0) DisplayData[0]=0xFF; //無效0消隱
DisplayData[1]=DIG_CODE[myhj%10000000/1000000];
if(DisplayData[0]==0xc0| DisplayData[1]==0xc0 )
DisplayData[1]=0xFF;
DisplayData[2]=DIG_CODE[myhj%1000000/100000];
if(DisplayData[0]==0xc0| DisplayData[1]==0xc0 |
DisplayData[2]==0xc0 ) DisplayData[2]=0xFF;
DisplayData[3]=DIG_CODE[myhj%100000/10000];
if(DisplayData[0]==0xc0| DisplayData[1]==0xc0 |
DisplayData[2]==0xc0 | DisplayData[3]==0xc0 )
DisplayData[3]=0xFF;
DisplayData[4]=DIG_CODE[myhj%10000/1000];
if(DisplayData[0]==0xc0| DisplayData[1]==0xc0 |
DisplayData[2]==0xc0 | DisplayData[3]==0xc0 |
DisplayData[4]==0xc0 ) DisplayData[4]=0xFF;
DisplayData[5]=DIG_CODE[myhj%1000/100];
if(DisplayData[0]==0xc0| DisplayData[1]==0xc0 |
DisplayData[2]==0xc0 | DisplayData[3]==0xc0 |
DisplayData[4]==0xc0 | DisplayData[5]==0xc0 )
DisplayData[5]=0xFF;
DisplayData[6]=DIG_CODE[myhj%100/10];
if(DisplayData[0]==0xc0| DisplayData[1]==0xc0 |
DisplayData[2]==0xc0 | DisplayData[3]==0xc0 |
DisplayData[4]==0xc0 | DisplayData[5]==0xc0 |
DisplayData[6]==0xc0) DisplayData[6]=0xFF;
DisplayData[7]=DIG_CODE[myhj%10/1];
}
復制代碼
所有資料51hei提供下載:
16位二進制數轉十進制數顯示_共陽數碼管.rar
(28.34 KB, 下載次數: 8)
2019-7-26 21:21 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
admin
時間:
2019-7-27 02:58
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1