C語言數碼值
『壹』 求用c語言寫的八位數碼管動態顯示程序,P0控制段,P2控制位。
#include"reg51.h"
#include "intrins.h" //_nop_();延老拿時函數用
#define uchar unsigned char
#define uint unsigned int
#define SEG_OUT P0 //段碼輸出口
#define BIT_OUT P2 //掃描口
sbit dot=P2^7; //LED小數點控制
uchar code tab[12]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff,0xbf};
/* 共陽LED段碼表 "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "不亮" "-" */
uchar data dis_buff[8]={1,2,0,0,0,0}; //待顯示單元數據,共6個數據
unsigned long temp;
/*************1毫秒延時程序**************/
delay1ms(int t)
{
int i,j;
for(i=0;i<t;i++)
for(j=0;j<侍虧搭120;j++)
;
}
//
/***********LED顯空友示動態掃描函數**********/
display()
{
char k;
char m=0xfe;
for(k=0;k<8;k++) //8位LED掃描控制
{ BIT_OUT=0xff;
SEG_OUT=tab[dis_buff[k]];
BIT_OUT=m;
delay1ms(3);
m=(m<<1)|0x01;
}
dis_buff[0]=temp/10000000;
dis_buff[1]=(temp%10000000)/1000000;
dis_buff[2]=(temp%1000000)/100000;
dis_buff[3]=(temp%100000)/10000;
dis_buff[4]=(temp%10000)/1000;
dis_buff[5]=(temp%1000)/100;
dis_buff[6]=(temp%100)/10;
dis_buff[7]=temp%10;
}
/**************初始化程序****************/
void initiation()
{
TMOD=0x01;
TH0=-10000/256;
TL0=-10000%256; //10MS定時初值(T0計時用)
ET0=1;
TR0=1;
EA=1;
}
/****************定時器0中斷服務程序*****/
void init_timer0(void) interrupt 1
{
TH0=-10000/256;
TL0=-10000%256; //10MS定時初值(T0計時用)
t10ms++;
if(t10ms==100)
{
t10ms=0;
ts++;
if(ts==60)
{
temp++;
ts=0;
}
}
}
/****************主程序******************/
main()
{
initiation();
while(1)
{
display();
}
}
一秒加1
『貳』 單片機數碼管顯示0到999c語言程序怎麼編
#include<reg51.h>
unsigned char xs_d[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned int time=0,s,sz;delay(unsigned int k)
{
unsigned int i,j;
for(i=0;i<k;i++)
for(j=0;j<125;j++);
}INT_0()interrupt 0
{ delay(10);
if(INT0==0){sz++;<br> if(sz>2){sz=0;}
}
}
void T0_int()interrupt 1
{
TH0=(65535-50000)/256;//設置初值
TL0=(65535-50000)%256;
s++;
if(s>首喊20){s=0;<br> if(sz==1)time++;<br> if(time>999){time=0;}
if(sz==0){time=0;//清零<br>伏卜 }
(2)C語言數碼值擴展閱讀:
運算器由運算部件——算術邏輯單元(Arithmetic & Logical Unit,簡稱ALU)、累加器和寄存缺芹穗器等幾部分組成。
ALU的作用是把傳來的數據進行算術或邏輯運算,輸入來源為兩個8位數據,分別來自累加器和數據寄存器。ALU能完成對這兩個數據進行加、減、與、或、比較大小等操作,最後將結果存入累加器。
運算器有兩個功能:
(1) 執行各種算術運算。
(2) 執行各種邏輯運算,並進行邏輯測試,如零值測試或兩個值的比較。
運算器所執行全部操作都是由控制器發出的控制信號來指揮的,並且,一個算術操作產生一個運算結果,一個邏輯操作產生一個判決。
『叄』 用4個動態數碼管顯示,實現0~9999計數功能,延時為1s,用c語言。
/***數顯秒錶,范圍0~9999***/
/***源程序默認硬體環境:52單片機,12MHz晶振,4位共陽數碼管,P0 口段選,P10~P13 高電平位選(NPN三極體驅動),P13為最高位數碼管***/
#include"reg52.h" //包含52頭文件
#define TRUE 1 //定義布爾量'1':真
#define FALSE 0 //定義布爾量'0':假
#define uchar unsigned char //定義 無符號字元型數據 簡稱
#define uint unsigned int //定義 無符號整型數據 簡稱
#define th0 0xfc
#define tl0 0x18 //1ms at 12MHz(定時器工作模式1 狀態)
#define SEG_Num 4 //數碼管位數
#define SEG_Data P0 //數碼管段驅動介面
#define SEG_En P1 //數碼管位驅動介面
#define SEG_AllOff (SEG_En&=0xf0) //關閉所有數碼管(位驅動)
#define DisTimeAt1msCount 4 //單'位'數碼管顯示時間,數碼管刷新頻率f=1/(N×t),其中 N為數碼管位數, t為單'位'數碼管顯示時間
#define T1sAt1msCount 1000 //1秒 計數值漏局(在定時器為1ms 情況下計數)
#define TimesEnd 10000 //顯示內容範圍 0~9999
uchar code SEG_B_List[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //共陽數碼管代碼表"0-9"
uint Sec;
uchar bdata Flag=1;
sbit DisplayFlag=Flag^0; //顯示標志位
sbit TimesUpFlag=Flag^1; //時間更新標志位
void Timer0() interrupt 1 //定時器0中斷函數
{
static uchar t1ms; //定義靜態變數 t1ms 定時計數寄存空間
static uint t1ms_sec;
TL0=tl0;
TH0=th0; //重賦 1ms 定時初值
t1ms=++t1ms%DisTimeAt1msCount; //先纖搜殲計數值加1,後對計數范圍進行限制0~(DisTimeAt1msCount-1)
if(!t1ms) DisplayFlag=TRUE; //若定時計數值歸0,則表示計數值曾到達 單'位'顯示時間(DisTimeAt1msCount),顯示標志 置位
t1ms_sec=++t1ms_sec%T1sAt1msCount; //在 T1sAt1msCount(1000) 范圍內加1
if(!t1ms_sec) TimesUpFlag=TRUE; //若 歸0,則1s 時間到,時間更新標志位 置位
}
void SystemInit() //系統初始化函數
{
TMOD=0x01; //關閉定時器1,開啟定時器0,且工作在模式1(16位定時器)
TH0=th0;
TL0=tl0; //裝定時初值(1ms at 12MHz)
TR0=1; //啟動計時
ET0=1; //允許定時器0中斷
EA=1; //開啟系統中斷功能
}
float Pow_Self(float x,uint y)//自編簡易 x 的 y 次方函數,y只能是 非負整數
{
float sum;
if(x==0 && y==0) return; //0 的 0 次方無意義
else if(x==0) sum=0; //可有可無,y!=0的情況已經包含x=0,不加不影響結果,但影響運算速度
else if(y==0) sum=1; //除上述情況毀沖外,任何數的 0 次方均為 1
else if(y==1) sum=x; //任何數的 1 次方 均為 本身
else if(y>1) sum=Pow_Self(x,--y)*x; //遞歸調用,降冪
return sum; //返回計算結果
}
void TimesUpdata() //時間更新 函數
{
if(TimesUpFlag) //若 時間更新標志 為真
{
Sec=++Sec%TimesEnd; //Sec (秒)在 TimesEnd (0~999) 范圍內加1
TimesUpFlag=FALSE; //清 時間更新標志位
}
}
void Display(uint dis_num) //顯示函數,顯示內容為 無符號整型數據 dis_num
{
static uchar dis_loca; //定義靜態變數 顯示位置
if(DisplayFlag) //若顯示標志位為真(單'位'顯示時間結束),則執行以下任務
{
DisplayFlag=FALSE; //清顯示標志位
dis_loca=++dis_loca%SEG_Num; //先對 顯示位置 加1,後對變數范圍進行限制 0~(SEG_Num-1)
SEG_AllOff; //關閉所有數碼管顯示(位驅動)
SEG_Data=SEG_B_List[(dis_num/(uint)(Pow_Self(10,dis_loca)))%10]; //將顯示內容(dis_num) 本次需顯示的位(dis_loca)上的數值轉成代碼,並送到數據埠
SEG_En|=1<<dis_loca; //開啟本次需要顯示的位驅動
}
}
void main() //主函數
{
SystemInit(); //調用 系統初始化函數
while(1) //循環系統
{
TimesUpdata(); //調用 時間更新函數
Display(Sec); //調用 顯示函數 顯示內容為 Sec
}
}
『肆』 c語言中怎麼用英文表示一個數碼
char ch='a';
int i=ch; /*這里i的值就是a的ascii值97*/
int j=ch-90;/*這耐緩里i的值譽慎就慶畝敬是7*/