首页 > 其他 > 详细

让Visual Studio Shell新建C#项目和文件就这么简单

时间:2014-03-11 18:53:01      阅读:588      评论:0      收藏:0      [点我收藏+]

主电路以STC89C52单片机为核心,单片机从上世纪七八十年代诞生以来。形成了400余种型号。单片机应用的意义不仅仅限于它的广阔范围以及所带来的经济效益上,更重要的还在于从根本上改变着了传统的控制系统设计思想和设计方法[5]。设计者在选择一种单片机时切忌不要赶时髦,而应该根据系统的要求去采购,一般原则是在符合系统要求的情况下选用技术成熟、发行量大的型号。

系统主要技术指标有:

1、利用STC89C52单片机定时中断实现输出不同频率的方波,通过一个简单的驱动电路使蜂鸣器发出音乐,按一下按键就会播放音乐并告知主人是否在家(通过液晶显示屏告知)。 

2、其电路是由:STC89C52单片机最小系统电路和一个由电阻和三极管组成的音频驱动电路及蜂鸣器。功耗小,结构简单,维护方便。 

3、音乐电路由蜂鸣器和软件实现。不需要昂贵的音乐芯片,使得人们更有能力来购买。下面来说一下音乐发音原理。音乐是由音符组成,不同的音符是由相应频率的振动产生。产生不同的音频需要有不同固定周期的脉冲信号。要产生音频脉冲,只要算出某一音频的周期T(1/f) ,然后将此周期T除以2,即为半周期的时间。我们利用单片机的内部定时器T0,使其工作在计数器模式MODEl下.初始化适当的计数值THO及TLO以计时这个半周期时间。每当计时时间到后就将输出脉冲的P1.3口反相。然后重复计时此半周期时间,再对P1.3口反相,就可在单片机Pl.3引脚上得到此频率的脉冲。P1.3引脚脉冲接三极管作音频功放,然后辅出到蜂鸣器,从而发出美妙的乐音。

主程序如下:

/*-----------------------------------------------
  名称:基于51单片机的电子门铃




------------------------------------------------*/
//#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
#include<stdio.h>
#include "18b20.h"
#include "1602.h"
#include "delay.h"


bdata bit ReadTempFlag;//定义读时间标志




sbit SPK=P1^3;
sbit K1=P3^5; //下翻键
sbit K2=P3^4;   //上翻键
sbit K3=P3^3;   //留言键
//sbit K4=P3^2;   //门铃键,由外部中断0实现




sbit HOME=P3^6;  //设置标志位,手工杜邦线设置主人是否在家,高电平代表在家。
static idata unsigned char Count;
static  idata unsigned char num;
static  data char size=0;  //存放的是电话数组的实际长度,默认为0
idata unsigned char  over=0;  //1代表歌曲播放结束,0代表未结束
idata char  Tel[7][11]={{‘1‘,‘4‘,‘6‘,‘9‘,‘7‘,‘6‘,‘5‘,‘4‘,‘3‘,‘2‘,‘1‘}};
idata char pwd[4]={‘1‘,‘2‘,‘3‘,‘4‘};
code char password[]="0522";  //这个是查看来访信息的密码
bdata bit DOOR=1;    //0代表没有留言,1代表正在留言
unsigned char code fangke[64]={
//自定义字符----"访客"
0x00,0x10,0x18,0x0C,0x06,0x00,0x1F,0x03,
0x00,0x10,0x18,0x0C,0x06,0x00,0x1F,0x04,
0x03,0x03,0x06,0x04,0x0C,0x19,0x1E,0x0C,
0x0C,0x0F,0x09,0x09,0x09,0x09,0x0B,0x19,
0x03,0x01,0x00,0x1F,0x10,0x03,0x04,0x0A,
0x00,0x10,0x00,0x1F,0x01,0x1C,0x08,0x10,
0x11,0x02,0x04,0x1B,0x02,0x02,0x03,0x00,
0x10,0x08,0x04,0x1B,0x08,0x08,0x18,0x00,
};
/*----------------------------------------
数组保存的是乐曲的音调和节拍。由count全局变量实现
数组分别是由乐曲每一个音符的音调和节拍,依次排列而成
------------------------------------------*/
unsigned char code SONG[] ={      //祝你平安 
0x26,0x20,0x20,0x20,0x20,0x20,0x26,0x10,0x20,0x10,0x20,0x80,0x26,0x20,0x30,0x20,
0x30,0x20,0x39,0x10,0x30,0x10,0x30,0x80,0x26,0x20,0x20,0x20,
0x00,
//路边的野华不要采 
0x26,0x40,0x20,0x20,0x2B,0x20,0x26,
0x20,0x20,0x20, 0x30,0x80,0x20,0x1C,
0x26,0x40,0x20,0x20,0x2B,0x20,0x26,
0x20,0x20,0x20, 0x30,0x80,0x20,0x1C,
0x00, 
};
/*main.c用到的函数原型声明*/
unsigned char looke();
void tel_phone();
void Init_Timer(void);//定时器初始化
void Play_Song(unsigned char); 
/*-------------------------------------------
  将数字转换成字符串,结果存放在传入数组中,这里
  设定为5位数。可以自己更改。
---------------------------------------------*/
void num2char(unsigned int num,unsigned char temp[5]) //一定要注意这里的字符串长度。
{
char i=0;
i = 0;    // 与这里的字符串长度相对应,从最后一个字符位开始。
do{
   temp[i] = num%10+‘0‘;       //转化成字符
   num/=10;
++i;       
} while(i<=4);
}
/*------------------------------------------------
                    主函数
------------------------------------------------*/
void main (void)
{                  
unsigned int temp;
unsigned char signal=2;
bdata bit start_signal=1;
bdata bit bitconin=0; //输入电话的确认标志位
float temperature;
char code *p; //定义显示区域号码的临时指针
char displaytemp[5],tmp,i;//定义显示区域临时存储数组
LCD_Init();           //初始化液晶
DelayMs(20);          //延时有助于稳定
LCD_Clear();          //清屏
Init_Timer();  //定时器初始化

TCON &= 0xfe;  //低电平触发方式
IE |= 0x01;  //允许外部中断0
LCD_Write_String(7,0,"welcome");
Lcd_User_Chr(0);       //写入自定义字符
LCD_Write_Char(15,1,0xdf); //写入字符C
LCD_Write_Com(0xc0+5);LCD_Write_Data(0x3e);LCD_Write_Data(0x7e);
LCD_Write_Data(0x3e);LCD_Write_Data(0x7e); 

while (1)         //主循环
{
 
if(ReadTempFlag==1)
{
 ReadTempFlag=0;
 temp=ReadTemperature();
 temperature=(float)temp*0.0625;
 num2char((unsigned int)(temperature*100),displaytemp);
 if((start_signal==1)&&((unsigned int)(temperature)*100==8500)){start_signal=0;goto start_here;}  
 if(displaytemp[4] != 0x30)LCD_Write_Char(9,1,displaytemp[4]);
 else {LCD_Write_Char(9,1,0x20);}
 LCD_Write_Char(10,1,displaytemp[3]);
 LCD_Write_Char(11,1,displaytemp[2]);
 LCD_Write_Char(12,1,0x2e);LCD_Write_Char(13,1,displaytemp[1]);
 LCD_Write_Char(14,1,displaytemp[0]);
 LCD_Write_Char(15,1,0xdf);   //温度单位符号
 start_here:
 DelayMs(2);
  }
if(K1==0||K2==0||K3==0){
DelayMs(4);
if(K1==0||K2==0){
while(K1==0||K2==0);
signal = looke();
if(K3==0)while(K3==0);//防止影响接下来的else if模块,这一步非常重要!!!
}
else if(K3 ==0){while(K3==0);size=0;
LCD_Write_Com(0x01);  
LCD_Write_String(1,0,"clear database");
LCD_Write_String(1,1," successfully ");
DelayMs(255);DelayMs(255);DelayMs(255);
DelayMs(255);DelayMs(255);DelayMs(255);
DelayMs(255);DelayMs(255);
LCD_Write_Com(0x01);
LCD_Write_Com(0x0c);
LCD_Write_String(7,0,"welcome");
Lcd_User_Chr(0);       //写入自定义字符
LCD_Write_Com(0xc0+5);LCD_Write_Data(0x3e);LCD_Write_Data(0x7e);
   LCD_Write_Data(0x3e);LCD_Write_Data(0x7e);
}
}

if(signal== 1)
{
signal = 2;
LCD_Write_Com(0x01);  
LCD_Write_String(1,0,"input a Error");
LCD_Write_String(1,1," password ");
DelayMs(255);DelayMs(255);
DelayMs(255);DelayMs(255);DelayMs(255);
DelayMs(255);DelayMs(255);DelayMs(255);
DelayMs(255);
LCD_Write_Com(0x01);
LCD_Write_Com(0x0c);
LCD_Write_String(7,0,"welcome");
Lcd_User_Chr(0);       //写入自定义字符
LCD_Write_Com(0xc0+5);LCD_Write_Data(0x3e);LCD_Write_Data(0x7e);
   LCD_Write_Data(0x3e);LCD_Write_Data(0x7e);
EA=1;
}
if(signal == 0)
{
signal =2;
LCD_Write_Com(0x01);  
//显示访客的名字,及自定义的两个字
LCD_Write_Com(0x40);
for(temp=0;temp<64;temp++)
{
LCD_Write_Data(fangke[temp]);
}
LCD_Write_Char(0,0,0x00); //写入访客两个字
LCD_Write_Char(1,0,0x01);
LCD_Write_Char(0,1,0x02);
LCD_Write_Char(1,1,0x03);
LCD_Write_Char(2,0,0x04); 
LCD_Write_Char(3,0,0x05);
LCD_Write_Char(2,1,0x06);
LCD_Write_Char(3,1,0x07);
if(size>0)
{ LCD_Write_String(5,0,"No.");LCD_Write_String(10,0,"iphone");
LCD_Write_String(5,1,"up   down");
while(K3==0); //防止意外按动K3键
temp=size;
tmp=size;
while(K3==1){
if(K1==0)  //下翻按键
{
DelayMs(4);
if(K1==0)
{
while(K1==0);  //等待按键抬起
--tmp;
if(tmp<0)tmp=size-1;
LCD_Write_Char(8,0,(char)tmp+‘1‘);
LCD_Write_String(5,1,Tel[tmp]);
}
}
if(K2==0)   //上翻按键
{
DelayMs(4);
if(K2==0)
{
while(K2==0);  //等待按键抬起
++temp;
if(temp>size-1)temp=0;
LCD_Write_Char(8,0,(char)temp+‘1‘);
LCD_Write_String(5,1,Tel[temp]);
}
}
}
}else{
LCD_Write_String(6,0,"no people");LCD_Write_String(6,1,"joinme");
DelayMs(255);DelayMs(255);DelayMs(255);DelayMs(255);DelayMs(255);DelayMs(255);
}DelayMs(255);DelayMs(255);
while(K3==0);//防止清除数据库模块程序被干扰
LCD_Write_Com(0x01);//清屏
LCD_Write_Com(0x0c);
LCD_Write_String(7,0,"welcome");
Lcd_User_Chr(0);       //写入自定义字符
LCD_Write_Com(0xc0+5);LCD_Write_Data(0x3e);LCD_Write_Data(0x7e);
   LCD_Write_Data(0x3e);LCD_Write_Data(0x7e);
EA=1;
}
if(over){
over=0;
if(HOME==1){
Play_Song(1);
}else{
Play_Song(0);
}
if(DOOR==0){
if(K3==1){EA=0; //关闭温度检测及门铃的中断
while(K3==1){
if(K2==0){ DelayMs(4); if(K2==0){while(K2==0);bitconin=1;  ++Tel[size][0];if(Tel[size][0]==0x3a)Tel[size][0]=0x30;LCD_Write_Char(4,1,Tel[size][0]);}}
if(K1==0){ DelayMs(4); if(K1==0){while(K1==0);bitconin=1;  --Tel[size][0];if(Tel[size][0]==0x2f)Tel[size][0]=0x39;LCD_Write_Char(4,1,Tel[size][0]);}}
}while(K3==0); //等待按键抬起
if(bitconin==0){LCD_Write_Char(4,1,Tel[size][0]);}bitconin=0;DelayMs(80);while(K3==0);
while(K3==1){
if(K2==0){  DelayMs(4); if(K2==0){while(K2==0);bitconin=1;  ++Tel[size][1];if(Tel[size][1]==0x3a)Tel[size][1]=0x30;LCD_Write_Char(5,1,Tel[size][1]);}}
if(K1==0){ DelayMs(4); if(K1==0){while(K1==0);bitconin=1;  --Tel[size][1];if(Tel[size][1]==0x2f)Tel[size][1]=0x39;LCD_Write_Char(5,1,Tel[size][1]);}}
}while(K3==0);
if(bitconin==0){LCD_Write_Char(5,1,Tel[size][1]);}bitconin=0;DelayMs(80);while(K3==0);
while(K3==1){
if(K2==0){  DelayMs(4); if(K2==0){while(K2==0);bitconin=1;  ++Tel[size][2];if(Tel[size][2]==0x3a)Tel[size][2]=0x30;LCD_Write_Char(6,1,Tel[size][2]);}}
if(K1==0){ DelayMs(4); if(K1==0){while(K1==0);bitconin=1;  --Tel[size][2];if(Tel[size][2]==0x2f)Tel[size][2]=0x39;LCD_Write_Char(6,1,Tel[size][2]);}}
}while(K3==0);
if(bitconin==0){LCD_Write_Char(6,1,Tel[size][2]);}bitconin=0;DelayMs(80);while(K3==0);
while(K3==1){
if(K2==0){  DelayMs(4); if(K2==0){while(K2==0);bitconin=1;  ++Tel[size][3];if(Tel[size][3]==0x3a)Tel[size][3]=0x30;LCD_Write_Char(7,1,Tel[size][3]);}}
if(K1==0){ DelayMs(4); if(K1==0){while(K1==0);bitconin=1;  --Tel[size][3];if(Tel[size][3]==0x2f)Tel[size][3]=0x39;LCD_Write_Char(7,1,Tel[size][3]);}}
}while(K3==0);
if(bitconin==0){LCD_Write_Char(7,1,Tel[size][3]);}bitconin=0;DelayMs(80);while(K3==0);
while(K3==1){
if(K2==0){  DelayMs(4); if(K2==0){while(K2==0);bitconin=1;  ++Tel[size][4];if(Tel[size][4]==0x3a)Tel[size][4]=0x30;LCD_Write_Char(8,1,Tel[size][4]);}}
if(K1==0){ DelayMs(4); if(K1==0){while(K1==0);bitconin=1;  --Tel[size][4];if(Tel[size][4]==0x2f)Tel[size][4]=0x39;LCD_Write_Char(8,1,Tel[size][4]);}}
}while(K3==0);
if(bitconin==0){LCD_Write_Char(8,1,Tel[size][4]);}bitconin=0;DelayMs(80);while(K3==0);
while(K3==1){
if(K2==0){  DelayMs(4); if(K2==0){while(K2==0);bitconin=1;  ++Tel[size][5];if(Tel[size][5]==0x3a)Tel[size][5]=0x30;LCD_Write_Char(9,1,Tel[size][5]);}}
if(K1==0){ DelayMs(4); if(K1==0){while(K1==0);bitconin=1;  --Tel[size][5];if(Tel[size][5]==0x2f)Tel[size][5]=0x39;LCD_Write_Char(9,1,Tel[size][5]);}}
}while(K3==0);
if(bitconin==0){LCD_Write_Char(9,1,Tel[size][5]);}bitconin=0;DelayMs(80);while(K3==0);
while(K3==1){
if(K2==0){  DelayMs(4); if(K2==0){while(K2==0);bitconin=1;  ++Tel[size][6];if(Tel[size][6]==0x3a)Tel[size][6]=0x30;LCD_Write_Char(10,1,Tel[size][6]);}}
if(K1==0){ DelayMs(4); if(K1==0){while(K1==0);bitconin=1;  --Tel[size][6];if(Tel[size][6]==0x2f)Tel[size][6]=0x39;LCD_Write_Char(10,1,Tel[size][6]);}}
}while(K3==0);
if(bitconin==0){LCD_Write_Char(10,1,Tel[size][6]);}bitconin=0;DelayMs(80);while(K3==0);
while(K3==1){
if(K2==0){  DelayMs(4); if(K2==0){while(K2==0);bitconin=1;  ++Tel[size][7];if(Tel[size][7]==0x3a)Tel[size][7]=0x30;LCD_Write_Char(11,1,Tel[size][7]);}}
if(K1==0){ DelayMs(4); if(K1==0){while(K1==0);bitconin=1;  --Tel[size][7];if(Tel[size][7]==0x2f)Tel[size][7]=0x39;LCD_Write_Char(11,1,Tel[size][7]);}}
}while(K3==0);
if(bitconin==0){LCD_Write_Char(11,1,Tel[size][7]);}bitconin=0;DelayMs(80);while(K3==0);
while(K3==1){
if(K2==0){  DelayMs(4); if(K2==0){while(K2==0);bitconin=1;  ++Tel[size][8];if(Tel[size][8]==0x3a)Tel[size][8]=0x30;LCD_Write_Char(12,1,Tel[size][8]);}}
if(K1==0){ DelayMs(4); if(K1==0){while(K1==0);bitconin=1;  --Tel[size][8];if(Tel[size][8]==0x2f)Tel[size][8]=0x39;LCD_Write_Char(12,1,Tel[size][8]);}}
}while(K3==0);
if(bitconin==0){LCD_Write_Char(12,1,Tel[size][8]);}bitconin=0;DelayMs(80);while(K3==0);
while(K3==1){
if(K2==0){  DelayMs(4); if(K2==0){while(K2==0);bitconin=1;  ++Tel[size][9];if(Tel[size][9]==0x3a)Tel[size][9]=0x30;LCD_Write_Char(13,1,Tel[size][9]);}}
if(K1==0){ DelayMs(4); if(K1==0){while(K1==0);bitconin=1;  --Tel[size][9];if(Tel[size][9]==0x2f)Tel[size][9]=0x39;LCD_Write_Char(13,1,Tel[size][9]);}}
}while(K3==0);
if(bitconin==0){LCD_Write_Char(13,1,Tel[size][9]);}bitconin=0;DelayMs(80);while(K3==0);
while(K3==1){
if(K2==0){  DelayMs(4); if(K2==0){while(K2==0);bitconin=1;  ++Tel[size][10];if(Tel[size][10]==0x3a)Tel[size][10]=0x30;LCD_Write_Char(14,1,Tel[size][10]);}}
if(K1==0){ DelayMs(4); if(K1==0){while(K1==0);bitconin=1;  --Tel[size][10];if(Tel[size][10]==0x2f)Tel[size][10]=0x39;LCD_Write_Char(14,1,Tel[size][10]);}}
}while(K3==0);
if(bitconin==0){LCD_Write_Char(14,1,Tel[size][10]);}bitconin=0;DelayMs(110);while(K3==0);


LCD_Write_Com(0x80+3);LCD_Write_Data(0x59);
while(K3==1)
{
if(K2==0 ) {
DelayMs(2);
if(K2 == 0) {while(K2==0); LCD_Write_Com(0x80+10);LCD_Write_Data(0x4e);bitconin=1;}
  }
if(K1==0 ) {
DelayMs(2);
if(K1 == 0) {while(K1==0); LCD_Write_Com(0x80+3);LCD_Write_Data(0x59);bitconin=0;}
  }

}
if(bitconin==0)

++size;p="15672348902";
for(i=0;i<11;i++)
Tel[size][i]=p[i];
p=NULL;
}
while(K3==0); //为了防止出现干扰清除数据库模块的问题
LCD_Write_Com(0x08);  //显示关闭
LCD_Write_Com(0x01);//清屏
LCD_Write_Com(0x0c);
LCD_Write_String(7,0,"welcome");
Lcd_User_Chr(0);       //写入自定义字符
LCD_Write_Com(0xc0+5);LCD_Write_Data(0x3e);LCD_Write_Data(0x7e);
  LCD_Write_Data(0x3e);LCD_Write_Data(0x7e);
DOOR=1;
EA=1;  //重启温度检测
}
}

}
}


/*------------------------------------------------
                    定时器初始化子程序
T0用于控制音乐的音调,T1用于定时扫描温度和按键
------------------------------------------------*/
void Init_Timer(void)
{
TMOD = 0x11;  //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响     
EA=1;            //总中断打开
ET1=1;           //定时器中断打开
TH1=0x00;  //赋值 20ms
TL1=0x00;
TR1=1;           //定时器开关打开
TR0=0;
    ET0=1;    
  TH0  = 0xD8;  
  TL0  = 0xEF;  //10ms 
}
/*-----------------------------------------------
外部中断0服务程序:用于检测门铃键是否按下
-------------------------------------------------*/
void  light_inteco(void) interrupt 0
{
EA=0;  //关闭所有中断,防止出现嵌套中断调用
IE0=0;  //清除中断标志位
LCD_Write_Com(0x08); //显示关闭
LCD_Write_Com(0x01);//清屏
LCD_Write_Com(0x0c);//开显示
if(HOME)   //在家
{  
LCD_Write_String(3,0,"zhu ren is");
LCD_Write_String(3,1,"at home now");
}else{
Lcd_User_Chr(1);
LCD_Write_String(5,0,"zhu ren is");
LCD_Write_String(6,1,"not home");
}
 
over = 1;  //歌曲结束标志代表上一首歌播放结束
DOOR = 1;
EA = 1;
}
/*-----------------------------------------------
定时器0中断服务程序:用于音乐播放控制的节拍
-------------------------------------------------*/
void Time0_Int() interrupt 1 using 1
{  
   TH0 = 0xD8;  
   TL0 = 0xEF;  
   Count++;   //长度加1 
}  
/*------------------------------------------------
                 定时器1中断子程序
 任务:扫描按键,设置温度传感器为可读。
------------------------------------------------*/
void Timer1_isr(void) interrupt 3 
{
 
TH1=(65536-15000)/256;  //重新赋值 15ms
TL1=(65536-15000)%256;
 
num++;
if(num==50)     //每0.75秒读一次温度值    
{
   num=0;
   ReadTempFlag=1; //读标志位置1
}
}
/*-------------------------------------------------
播放音乐,在主程序中实现,定时器0控制音调。
   Temp2变量用于设定每个音调的节拍
   Temp1变量用于设定音调。
---------------------------------------------------*/
void Play_Song(unsigned char i) 
{  unsigned char Temp1,  Temp2;    
   unsigned int Addr;
Count = 0;      //中断计数器清0  
   TR0=1;
   if(i==0)
    Addr = 0;
   else 
    Addr= 33;
   while(over==0)  
   {   
      tel_phone();
      Temp1 = SONG[Addr++];      
       if ( Temp1 == 0xFF )      //休止符      
       {    TR0 = 0;       
            Delay_xMs(100);//延时之后再重新计数
         TR0 = 1;
       } 
       else if ( Temp1 == 0x00 )   //歌曲结束符      
       { if(DOOR==1){
  LCD_Write_Com(0x01);//清屏
LCD_Write_String(7,0,"welcome");
Lcd_User_Chr(0);       //写入自定义字符
LCD_Write_Com(0xc0+5);LCD_Write_Data(0x3e);LCD_Write_Data(0x7e);
  LCD_Write_Data(0x3e);LCD_Write_Data(0x7e);
}
TR0=0;return;   
  }      
       else      
       {    
  Temp2 = SONG[Addr++];       
                  
       while(over==0)      
      {   tel_phone();
SPK = ~SPK;        
          Delay_xMs(Temp1);        
       if ( Temp2 == Count )        
       {   
Count = 0; break;     
}       
        }      
       }  
    }
TR0=0;
}
/*---------------------------------------------
任务:保留访客的信息
-----------------------------------------------*/
void tel_phone()
{
if(HOME==0){   //不在家
if(K3 == 0){
DelayMs(5); //延时消抖
if(K3==0){
DOOR = 0;
  LCD_Write_Com(0x01);//清屏
LCD_Write_String(3,0,"YES    NO");
LCD_Write_String(0,1,"TEL:");
LCD_Write_String(4,1,Tel[size]);
LCD_Write_Com(0x0f);
LCD_Write_Com(0xc4);


}
}
}

}
/*----------------------------------------------
任务:在主程序中实现,查询访客信息,
检测用户密码是否输入正确,若正确返回1,否则返回0
------------------------------------------------*/
unsigned char looke()
{
unsigned char bitconin=0,signal=0;
EA=0;
LCD_Write_Com(0x01); //清屏
LCD_Write_String(1,0,"input password:");
LCD_Write_Char(6,1,0x31);LCD_Write_Char(7,1,0x32); // 显示密码
LCD_Write_Char(8,1,0x33);LCD_Write_Char(9,1,0x34);
LCD_Write_Com(0x0f);  //光标闪烁
LCD_Write_Com(0xc6);

while(K3==1){
if(K2==0){ DelayMs(4); if(K2==0){while(K2==0);bitconin=1;  ++pwd[0];if(pwd[0]==0x3a)pwd[0]=0x30;LCD_Write_Char(6,1,pwd[0]);}}
if(K1==0){ DelayMs(4); if(K1==0){while(K1==0);bitconin=1;  --pwd[0];if(pwd[0]==0x2f)pwd[0]=0x39;LCD_Write_Char(6,1,pwd[0]);}}
}while(K3==0); //等待按键抬起
if(bitconin==0){LCD_Write_Char(6,1,pwd[0]);}bitconin=0;DelayMs(80);while(K3==0);
if(pwd[0]!=password[0]){signal=1;}
while(K3==1){
if(K2==0){  DelayMs(4); if(K2==0){while(K2==0);bitconin=1;  ++pwd[1];if(pwd[1]==0x3a)pwd[1]=0x30;LCD_Write_Char(7,1,pwd[1]);}}
if(K1==0){ DelayMs(4); if(K1==0){while(K1==0);bitconin=1;  --pwd[1];if(pwd[1]==0x2f)pwd[1]=0x39;LCD_Write_Char(7,1,pwd[1]);}}
}while(K3==0);
if(bitconin==0){LCD_Write_Char(7,1,pwd[1]);}bitconin=0;DelayMs(80);while(K3==0);
if(pwd[1]!=password[1]){signal=1;}
while(K3==1){
if(K2==0){  DelayMs(4); if(K2==0){while(K2==0);bitconin=1;  ++pwd[2];if(pwd[2]==0x3a)pwd[2]=0x30;LCD_Write_Char(8,1,pwd[2]);}}
if(K1==0){ DelayMs(4); if(K1==0){while(K1==0);bitconin=1;  --pwd[2];if(pwd[2]==0x2f)pwd[2]=0x39;LCD_Write_Char(8,1,pwd[2]);}}
}while(K3==0);
if(bitconin==0){LCD_Write_Char(8,1,pwd[2]);}bitconin=0;DelayMs(80);while(K3==0);
if(pwd[2]!=password[2]){signal=1;}
while(K3==1){
if(K2==0){  DelayMs(4); if(K2==0){while(K2==0);bitconin=1;  ++pwd[3];if(pwd[3]==0x3a)pwd[3]=0x30;LCD_Write_Char(9,1,pwd[3]);}}
if(K1==0){ DelayMs(4); if(K1==0){while(K1==0);bitconin=1;  --pwd[3];if(pwd[3]==0x2f)pwd[3]=0x39;LCD_Write_Char(9,1,pwd[3]);}}
}while(K3==0);
if(bitconin==0){LCD_Write_Char(9,1,pwd[3]);}bitconin=0;DelayMs(90);while(K3==0);
if(pwd[3]!=password[3]){signal=1;}
pwd[0]=‘1‘;pwd[1]=‘2‘;pwd[2]=‘3‘;pwd[3]=‘4‘;
LCD_Write_Com(0x01);
LCD_Write_Com(0x08);  //显示关闭
LCD_Write_Com(0x0c);  //光标不显示

    return signal;
}

让Visual Studio Shell新建C#项目和文件就这么简单,布布扣,bubuko.com

让Visual Studio Shell新建C#项目和文件就这么简单

原文:http://blog.csdn.net/thy38/article/details/21005225

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!