今天初步学习了嵌入式的硬件,主要学习了STC51单片机的LED操作和数码管的操作,原理基本一样。还学习了Keil u Vision4软件的使用还有stc-isp软件的使用。
LED和数码管都是发光二极管的操作,主要核心是要形成电势差来使二极管发光,在代码编写中需要熟悉以下知识:
1、按位或 & :有0取0
2、按位与 | :有1取1
3、按位异或^ :相同取0, 不同取1
4、按位取反~ :取反
5、按位左移<< :(x<<n)表示x左移n位
6、按位右移>> :(x>>n)表示x右移n位
以下是实现数码管从左往右依次循环进行0-9的发光代码:
#include<reg51.h>
#include"degiter.h"
void delay(unsigned int n)
{
while(n--)//睡眠一段时间
}
void select_bit(int n)
{
if(n > 3)
{
return 0
}
P1 &= ~(0X0F);
P1 |= (1 << n);
}
void show_number(int n)
{
unsigned char t[] = {0X3F, 0X06, 0X5B, 0X4F, 0X66, 0X6D, 0X7D, 0X07, 0X7F, 0X6F}
//数码管0-9的十六进制表示
P0 = t[n];
}
int main(void)
{
while(1)
{
int i = 0;
int j = 0;
for(i = 0; i < 4; i++)
{
select_bit(i);
for(j = 0; j < 10; j++)
{
show_number(j);
delay(0XFFFF);
}
}
}
}
要使二极管发光主要判断正负极进而实现两端形成电势差。
293

被折叠的 条评论
为什么被折叠?



