❶ 51单片机 奇数位管显示135 代码
#include<reg52.h>
#defineucharunsignedchar
ucharcodeledtab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};//0-9
ucharscanled;
uchardisdat[6];
voiddelay(unsignedintx)
{
unsignedinti,j;
for(i=0;i<x;i++)
for(j=0;j<120;j++);
}
voiddischg()
{
disdat[0]=5;
disdat[1]=10;
disdat[2]=3;
disdat[3]=10;
disdat[4]=1;
disdat[5]=10;
}
voidt1isr()interrupt3//显示
{
TH1=0xec;
TL1=0x78;
switch(scanled)
{
case0:
P2=0x01;
P0=~ledtab[disdat[7]];
break;
case1:
P2=0x02;
P0=~ledtab[disdat[6]];
break;
case2:
P2=0x04;
P0=~ledtab[disdat[5]];
break;
case3:
P2=0x08;
P0=~ledtab[disdat[4]];
break;
case4:
P2=0x10;
P0=~ledtab[disdat[3]];
break;
case5:
P2=0x20;
P0=~ledtab[disdat[2]];
break;
default:break;
}
scanled++;
scanled%=6;
}
main()
{
TMOD=0x10;
TH1=0xec;
TL1=0x78;
TR1=1;
ET1=1;
EA=1;
scanled=0;
dischg();
while(1);
}
❷ 如何让单片机的奇数和偶数流水灯轮流点亮
while(1)
{
P0=0x55;P1=0x01; //奇数亮
delay(500); //500ms
P0=0; P1=0; //全部熄灭
delay(200); //200ms
P0=~P0; P1=~P1; //偶数亮
delay(1000); //1000ms
P0=0; P1=0; //全部熄灭
delay(200); //200ms
}
❸ 51单片机c语言做奇数位显示135怎么做
只要能写出6位数码管的显示程序,那哪一位显示什么就无好办了。
❹ 单片机中如何将寄存器R2中的数据奇数位取反,偶数位不变
MOV A #AAH ;将累加器赋值10101010
ORG A R2 ;将R2或到累加器中得R2奇数位(偶数位为1)
CPL A ;将累加器取反,即R2奇数位取反(偶数位为0)
MOV R3 A ;将累加器内容放入R3
MOV A #0AAH 将累加器赋值10101010
ANL A R2 ;将R2与到累加器中R2偶数位(奇数位为0)
ORG A R3 ;将R3或到累加器中,即R2奇数位的反与R2偶数位求或
MOV R2 A ;将结果赋到R2中
❺ 请教高手单片机课程设计:先点亮奇数位灯再点亮偶数位灯``````
//流水灯 4 个按键 4种 亮法,自己修改 成自己要的 亮法,供参考
#include <REG51.h> //51头文件
#define DY_PORT P1 //设置LED连接的I/O组
#define DY_SPEED 100 //设置每一个明亮级的停留时间(值域:0~65535)
sbit k1=P3^0;
sbit k2=P3^1;
sbit k3=P3^2;
sbit k4=P3^3;
void delay (unsigned int a) // 1ms延时程序
{
unsigned int i;
while( --a != 0)
{
for(i = 0; i < 600; i++);
}
}
void main(void)
{
unsigned int i;
unsigned int temp;
while(1)
{
if(~k1)
{
temp=0x01;
for(i=0;i<8;i++) //8个流水灯逐个闪动
{
DY_PORT=~temp;
delay(DY_SPEED); //调用延时函数
temp<<=1;
}
}
if(~k2)
{
temp=0x80;
for(i=0;i<8;i++) //8个流水灯反向逐个闪动
{
DY_PORT=~temp;
delay(DY_SPEED); //调用延时函数
temp>>=1;
}
}
if(~k3)
{
temp=0xFE;
for(i=0;i<8;i++) //8个流水灯依次全部点亮
{
DY_PORT=temp;
delay(DY_SPEED); //调用延时函数
temp<<=1;
}
}
if(~k4)
{
temp=0x7F;
for(i=0;i<8;i++) //8个流水灯依次反向全部点亮
{
DY_PORT=temp;
delay(DY_SPEED); //调用延时函数
temp>>=1;
}
}
}
}
❻ 为啥处理器或者单片机的处理器没听说过是奇数位的,为啥都是偶数位的,比如4,8,16,32
因为我们总是希望处理器能够在一个整数的时间内处理完寄存器里面的内容,以免引起浪费或者未知的错误。
而寄存器则是偶数位的,因为是二进制存储的,不管是光存储技术还是磁存储技术,二进制存储就会使存储能力为2的指数函数
❼ 单片机的ASCII码的奇偶校验位该如何设置
“8”的ASCLL码为:70
(十进制)=
0011
1000
(二进制)
“B”的ASCLL码为:102(十进制)=
0100
0010(二进制)
书上说了低7位表示本身编码,第8位做奇偶校验
奇偶校验规则:编码中1的个数为奇数则为奇校验,为偶数则为偶校验
所以“8”的奇校验ASCLL码为**0**0111000B(添0,使得1的个数为奇数),偶校验ASCLL码为**1**0111000B(添1,使得1的个数为偶数)
同理“B”也类似
❽ 求单片机编写程序控制奇数偶数交叉互闪
嘿嘿 俺来帮你解决
1 你的意思是1、3、5、7和0、2、4、6奇数位和偶数位交叉互闪吧
2 可以设初始值 01010101B 送给累加器A
低电平0 LED指示灯亮 ; 高电平1 LED指示灯灭;
然后送P1口 显示奇数位的LED 亮 偶数位LED 灭
3 延时一段时间
4 将累加器A循环左移 则累加器A的内容由01010101B变为10101010B
然后送P1口 显示奇数位的LE灭 偶数位LED 亮
5 然后不断地循环3和4的步骤 即可以完成控制奇数偶数交叉互闪。
挺简单的问题 楼上搞得很复杂啊
俺只给你实现的算法 你自己编写代码吧 比较简单哦
呵呵 满意就选满意回答啊
❾ 单片机奇偶校验
通常,串行通信的一帧的格式是8-n-1,即8位数据、无校验、1个停止位。
有时为了提高准确度,需要增加一个“奇”校验位或者“偶”校验位。
对于高级语言的做法是很简单的,只要把格式命令“8-n-1”,改为“8-P-1”或“8-O-1”即可。
串行口在带有校验位的通信方式中,是先发送8位数据,然后再发送校验位。
51单片机也可以按照带有校验位的方式进行串行通信,这在51单片机中称为9位数据方式。
51单片机中有两个位,分别称为TB8和RB8,它们在“无校验”的时候,并没有用处。
当51单片机用9位数据方式进行串行通信的时候,TB8和RB8的作用如下:
51单片机在发送的时候,先发送8位数据,然后发送TB8中的内容;
51单片机在接收的时候,先接收8位数据,然后接收校验位,存到RB8中。
编写51单片机程序的时候,应该在发送数据之前,在TB8中,写好待发送的校验位。
8位数据的校验位,可以利用单片机中奇偶标志位P来自动生成,程序如下。
MOV A, #待发数据 ;数据进了A,即刻生成奇偶标志位P
MOV C, P
MOV TB8, C ;校验位送到TB8
MOV SBUF, A ;发送数据,以及P
由于P = 1则说明A中有奇数个1,所以上述程序是“偶”校验的形式。
如果要求的是“奇”校验,则需要增加一条取反指令,如下:
MOV C, P
CPL C
MOV TB8, C ;校验位送到TB8
接收方会把收到的8位数送到SBUF,第9位数,送到RB8,然后自动设立RI = 1。
之后,就可以用RB8中的内容,对刚才收到的8位数进行正确性检验。
另一个问题:51单片机如何初始化成8-n-1(8数据位,无奇偶校验位,1停止位)波特率,是用串口的模式几?
本来想用串口的模式1,可是仔细一看,模式1是10异步通信方式,1起始位,8数据位,1停止位?
悬赏分:20 - 解决时间:2009-12-1 13:26
问题补充:首先感谢一楼的回答。我还有些疑问,刚才用示波器看了下,当发送0xFF时,示波器显示一位低电平,其余为高电平,这点应该是对的,因为起始位是0.可是为什么发送0xAA时,示波器的(起始位+数据位+停止位)序列是:0 + 0101 0101 + 1,而0x55的序列为:0 +1010 1010 + 1,这两个值好像不对,是相反了,要是调一下刚好对?
;-----------------------------------------------------------------
最佳答案用串口的模式1,是10位异步通信方式。
1起始位,8数据位,1停止位,没有奇偶校验位。
这种模式就是:8-n-1(8数据位,无奇偶校验位,1停止位)的模式。
完全符合你的要求。
❿ 在单片机中进行异步串行通信时奇偶校验位的作用是什么呢
奇偶校验是一种校验代码传输正确性的方法。根据被传输的一组二进制代码的数位中“1”的个数是奇数或偶数来进行校验。采用奇数的称为奇校验,反之,称为偶校验。采用何种校验是事先规定好的。通常专门设置一个奇偶校验位,用它使这组代码中“1”的个数为奇数或偶数。若用奇校验,则当接收端收到这组代码时,校验“1”的个数是否为奇数,从而确定传输代码的正确性。
因此在你设定这一位后单片机会自动执行上述过程,如果校验错误会进入错误中断中。