/**************************************************************************************
*Name:旋转LED
*Version:1.0
*Date:
*BY:C
***************************************************************************************/
#include //此文件中定义了单片机的一些特殊功能寄存器
typedef unsigned int uint; //对数据类型进行声明定义
typedef unsigned char uchar;
sbit HR_Sensor= P3^2; //霍尔传感器
sbit Beep = P2^0; //蜂鸣器
sbit Key_Wake = P2^1; //唤醒按键
sbit Led_H = P0; //所有Led正极接一起接VCC
sbit Led_L = P1;
uchar Select = 0;
//阳码
uchar code ASCII0[32] = {0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0x00,0x00,0xFE,0xFD,0xFE,0x7B,0xFA,
0xB7,0xF6,0xDF,0xEE,0xEF,0xDE,0xF7,0xBE,0xFB,0xFE,0xFB,0xFE,0xFD,0xFE,0xFD,
0xFF,0xFF}; //“长”
uchar code ASCII1[32] = {0xFD,0xDF,0xDD,0xDF,0xD5,0xBF,0xD5,0x7F,0xD4,0x80,0xD5,0xB6,0xD1,0xB6,0x05,
0xB6,0xD5,0xB6,0xD5,0xB6,0xD4,0x80,0xD5,0x7F,0xD5,0xBF,0xDD,0xDF,0xFD,0xDF,
0xFF,0xFF}; // “春”
uchar code ASCII2[32] = {0xDF,0xFB,0xDE,0xF9,0xDE,0xFB,0xC0,0x07,0xDE,0xF7,0xDE,0xF7,0xFF,0xFD,0x80,
0xDD,0xB6,0xDD,0xB6,0xDD,0x80,0x01,0xB6,0xDD,0xB6,0xDD,0x80,0xDD,0xFF,0xFD,
0xFF,0xFF}; //“理”
uchar code ASCII3[32] = {0xFF,0xFB,0xDF,0xFB,0xDF,0xFB,0xDF,0xFB,0xDF,0xFB,0xDF,0xFB,0xDF,0xFB,0xC0,
0x03,0xDF,0xFB,0xDF,0xFB,0xDF,0xFB,0xDF,0xFB,0xDF,0xFB,0xDF,0xFB,0xFF,0xFB,
0xFF,0xFF}; //“工”
uchar code ASCII4[32] = {0xFB,0xFE,0xFB,0xFE,0xFB,0xFD,0xFB,0xFB,0xFB,0xF7,0xFB,0xCF,0xFB,0x3F,0x00,
0xFF,0xFB,0x3F,0xFB,0xCF,0xFB,0xF7,0xFB,0xFB,0xFB,0xFD,0xFB,0xFE,0xFB,0xFE,
0xFF,0xFF}; //“大”
uchar code ASCII5[32] = {0xFD,0xDF,0xF3,0xDF,0x77,0xDF,0x96,0xDF,0xF6,0xDF,0xF6,0xDD,0x76,0xDE,0x96,
0x81,0xF6,0x9F,0xF6,0x5F,0xE6,0xDF,0xD7,0xDF,0x37,0xDF,0xF5,0xDF,0xF3,0xDF,
0xFF,0xFF}; //“学”
/*******************************************************************************
* 函 数 名 : delayxms
* 函数功能 : 延时函数
* 输入:
* 输出:
*******************************************************************************/
void Delayxms(uint xms)
{
uchar a = 0,b = 0;
uint i = 0;
for(i=xms;i>0;i--)
{
for(b=199;b>0;b--)
for(a=1;a>0;a--)
;
}
}
/*******************************************************************************
* 函 数 名 : delayxms
* 函数功能 : 延时函数
* 输入:
* 输出:
*******************************************************************************/
void Beep_Test(uint xms)
{
Beep = 1;
Delayxms(xms);
Beep = 0;
}
/*******************************************************************************
* 函 数 名 : Key_Scan
* 函数功能 : 延时函数
* 输入:
* 输出:
*******************************************************************************/
void Key_Scan()
{
if(Key_Wake==0)
{
Delayxms(12);
if(Key_Wake==0)
{
Beep_Test(200);
Select++;
if(Select>1)
{
Select = 0; //清零
}
}
}
}
/*******************************************************************************
* 函 数 名 : Int0_Init()
* 函数功能 : 设置外部中断0
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void Int0_Init()
{
IT0 = 1;//跳变沿出发方式(下降沿)
EX0 = 1;//打开INT0的中断允许。
EA = 1;//打开总中断
}
void main()
{
uchar i,j;
Int0_Init(); //打开外部中断0
Beep_Test(1000); //启动测试
P0 = 0X00; //全亮测试
P1 = 0X00;
Delayxms(3000);
while(1)
{
Key_Scan();
if(Select==0)//显示字符
{
for(i=0;i<6;i++)
{
switch(i)
{
case 0: //第一个字
{
for(j=0;j<31;j++)
{
P0 = ASCII0[j];
P1 = ASCII0[j+1];
}
break;
}
case 1: //第二个字
{
for(j=0;j<31;j++)
{
P0 = ASCII1[j];
P1 = ASCII1[j+1];
}
break;
}
case 2:
{
for(j=0;j<31;j++)
{
P0 = ASCII2[j];
P1 = ASCII2[j+1];
}
break;
}
case 3:
{
for(j=0;j<31;j++)
{
P0 = ASCII3[j];
P1 = ASCII3[j+1];
}
break;
}
case 4:
{
for(j=0;j<31;j++)
{
P0 = ASCII4[j];
P1 = ASCII4[j+1];
}
break;
}
case 5:
{
for(j=0;j<31;j++)
{
P0 = ASCII5[j];
P1 = ASCII5[j+1];
}
break;
}
}
}
}
if(Select==1) //待机模式
{
P0 = 0;
P1 = 0;
}
}
}
/*******************************************************************************
* 函 数 名 : Int0() interrupt 0
* 函数功能 : 外部中断0的中断函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void Int0() interrupt 0//外部中断0的中断函数
{
P0 = 0XFF; //消影
P1 = 0XFF;
}
如果觉得《单片机旋转led程序c语言 基于单片机POV的旋转LED灯程序》对你有帮助,请点赞、收藏,并留下你的观点哦!