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*/