当前位置: 首页 > news >正文

asp网站源码 怎么安装在哪买电影票是9块9啊

asp网站源码 怎么安装,在哪买电影票是9块9啊,photoshop手机版安卓,wordpress 查询参数目录 LCD1602 LCD1602液晶显示屏 直流电机驱动#xff08;PWM#xff09; LED呼吸灯 直流电机调速 AD/DA#xff08;SPI通信#xff09; AD模数转换 DA数模转换 红外遥控#xff08;外部中断#xff09; 红外遥控 红外遥控电机调速 LCD1602 LCD1602液晶显示屏 …目录 LCD1602 LCD1602液晶显示屏 直流电机驱动PWM LED呼吸灯 直流电机调速 AD/DASPI通信 AD模数转换 DA数模转换 红外遥控外部中断 红外遥控 红外遥控电机调速 LCD1602 LCD1602液晶显示屏 LCD1602.c #include REGX52.H #include intrins.hsbit LCD_RS P2^6;//引脚定义 sbit LCD_WR P2^5; sbit LCD_EN P2^7;#define LCD_DataPort P0//寄存器定义,define不要使用分号void LCD_Delay() //11.0592MHz,2ms {unsigned char i, j;_nop_();i 2;j 199;do{while (--j) ;} while (--i); }/*** brief 写指令* param Command 指令* retval 无*/ void LCD_WriteCommand(unsigned char Command)//写指令 {LCD_RS 0;//1为数据0为指令LCD_WR 0;//1为读0为写LCD_DataPort Command;//放入指令LCD_EN 1;//使能LCD_Delay();//延时一毫秒LCD_EN 0;//结束使能LCD_Delay(); }/*** brief 写数据* param Data 数据* retval 无*/ void LCD_WriteData(unsigned char Data)//写数据 {LCD_RS 1;//1为数据0为指令LCD_WR 0;//1为读0为写LCD_DataPort Data;//放入数据LCD_EN 1;//使能LCD_Delay();//延时一毫秒LCD_EN 0;//结束使能LCD_Delay(); }/*** brief 初始化显示屏* param 无* retval 无*/ void LCD_Init(void) {LCD_WriteCommand(0x38);//八位数据两行显示5*7点阵LCD_WriteCommand(0x0C);//显示开光标关闪烁关LCD_WriteCommand(0x06);//数据读写操作后光标自动加一画面不动LCD_WriteCommand(0x01);//清屏 }/*** brief 移动光标到目标位置* param Line行 Column列* retval 无 */ void LCD_SetCursor(unsigned char Line,unsigned char Column)//设置光标位置 {if(Line 1){LCD_WriteCommand(0x80|(Column - 1));//如果是第一行那么实际地址即为列-1//并设置光标位置,为什么是0x80地址设置DDRAM}else{LCD_WriteCommand(0x80|(Column - 1) 0x40);//如果是第二行则进行偏移0x40即为实际地址//并设置光标位置} }/*** brief 显示字符* param Line 行 * param Column 列 * param Char 显示的字符 * retval 无*/ void LCD_ShowChar(unsigned char Line,unsigned char Column,unsigned char Char) {LCD_SetCursor(Line,Column);LCD_WriteData(Char);//写入数据 }/*** brief 显示字符串* param Line 行 * param Column 列 * param String 显示的字符串 * retval 无*/ void LCD_ShowString(unsigned char Line,unsigned char Column, unsigned char *String) {unsigned char i;LCD_SetCursor(Line,Column);for(i 0;String[i] ! \0;i)//遍历字符串String{LCD_WriteData(String[i]);//写入数据} }int LCD_Pow(int X,int Y) {unsigned char i;int Result 1;for( i0;iY;i){Result * X;//X^Y}return Result; }/*** brief 显示无符号数字* param Line 行 * param Column 列 * param Num 显示的无符号数字 * retval 无*/ void LCD_ShowNum(unsigned char Line,unsigned char Column,unsigned int Num,unsigned char Len) {unsigned char i;LCD_SetCursor(Line,Column);for(iLen ; i0 ;i--){//LCD_WriteData(0x30 Num / LCD_Pow(10,i-1)%10); //获取各位数值并写入显示屏LCD_WriteData(0 Num / LCD_Pow(10,i-1)%10);//或者转化为ascii码} }/*** brief 显示有符号数字* param Line 行 * param Column 列 * param Num 显示的有符号数字 * retval 无*/ void LCD_ShowSignedNum(unsigned char Line,unsigned char Column,int Num,unsigned char Len) {unsigned char i;unsigned int Num1;LCD_SetCursor(Line,Column);if(Num 0 ){LCD_WriteData();Num1 Num;}else{LCD_WriteData(-);Num1 -Num;}for(iLen ; i0 ;i--){//LCD_WriteData(0x30 Num / LCD_Pow(10,i-1)%10); //获取各位数值并写入显示屏LCD_WriteData(0 Num1 / LCD_Pow(10,i-1)%10);//或者转化为ascii码} }/*** brief 显示十六进制数字* param Line 行 * param Column 列 * param Num 显示的十六进制数字 * retval 无*/ void LCD_ShowHexNum(unsigned char Line,unsigned char Column,unsigned int Num,unsigned char Len) {unsigned char i;unsigned char SingleNum;LCD_SetCursor(Line,Column);for(iLen ; i0 ;i--){SingleNum Num / LCD_Pow(16,i-1)%16;if(SingleNum 10){LCD_WriteData(0 SingleNum);//获取各位数值并写入显示屏}else{LCD_WriteData(A SingleNum - 10);//修改偏移量}} }/*** brief 显示二进制数字* param Line 行 * param Column 列 * param Num 显示的二进制数字 * retval 无*/ void LCD_ShowBinNum(unsigned char Line,unsigned char Column,unsigned int Num,unsigned char Len) {unsigned char i;LCD_SetCursor(Line,Column);for(iLen ; i0 ;i--){LCD_WriteData(0 Num / LCD_Pow(2,i-1)%2);} } #include REGX52.H #include LCD1602.h #include Delay.hvoid main(){LCD_Init();LCD_ShowChar(1,1,A);//显示字符ALCD_ShowString(1,3,Hello);//显示字符串LCD_ShowNum(1,9,66,2);//显示无符号数字LCD_ShowSignedNum(1,12,-66,2);//显示有符号数字LCD_ShowHexNum(2,1,0xA5,2);//显示十六进制LCD_ShowBinNum(2,4,0xA5,8);//显示二进制LCD_ShowChar(2,13,0xDF);//显示度数符号LCD_ShowChar(2,14,C);//显示字符CLCD_ShowString(1,16,Welcome to China!);while( 1 ){LCD_WriteCommand(0x18);//流动字幕指令集Delay(500);}} 直流电机驱动PWM LED呼吸灯 main.c #include REGX52.Hsbit LED P2^0;void Delay(unsigned int t) {while(t--); }void main(){unsigned char Time,i;while( 1 ){for(Time 0; Time 100;Time){for(i 0; i 20;i){LED 0;Delay(Time);LED 1;Delay(100 - Time);}}for(Time 100; Time 0;Time--){for(i 0; i 20;i){LED 0;Delay(Time);LED 1;Delay(100 - Time);}}}} 直流电机调速 main.c #include REGX52.H #include Delay.h #include Nixie.h #include Key.h #include Timer0.hunsigned char Counter,Compare; unsigned char KeyNum,Speed; sbit Motor P1^0;//ULN2003Dvoid main(){Timer0Init();//Compare值看自己如何设置主要看与之比较后你想输出高/低电平//这里是小于输出高电平while( 1 ){KeyNum Key();if(KeyNum 1){Speed;Speed % 4;//重置为0if(Speed0){Compare0;}if(Speed1){Compare50;}if(Speed2){Compare75;}if(Speed3){Compare100;}}Nixie(1,Speed);}}void Timer0_Routine() interrupt 1{TL0 0xA4; //设置定时初值TH0 0xFF; //设置定时初值 //100us定时器Counter;Counter % 100;//将Counter刷新为0if(Counter Compare){Motor 1;//高电平转}else{Motor 0;} } AD/DASPI通信 AD模数转换 ET2046.c #include REGX52.H #include Delay.hsbit ET2046_CS P3^5; sbit ET2046_DCLK P3^6; sbit ET2046_DIN P3^4; sbit ET2046_DOUT P3^7;/*** brief 相当于当过电阻变化来输出一些数据* param Command 控制字* retval ADValue 读取到的数据*/ unsigned int ET2046_ReadAD(unsigned char Command)//控制字 {unsigned char i;unsigned int ADValue 0;ET2046_DCLK 0;ET2046_CS 0;//拉低进入时序for(i 0; i8 ; i)//发送一个字节{ET2046_DIN Command (0x80 i);//获得最高位并将其放入DINET2046_DCLK 1;ET2046_DCLK 0;}for(i 0; i 16;i)//读取两个字节长度{ET2046_DCLK 1;ET2046_DCLK 0;if(ET2046_DOUT){ADValue | (0x8000i);//提前给三位}Delay(50);}ET2046_CS 1;//结束时序if(Command 0x08)//查看为什么模式若得出为1则是12位。0则为8位{return ADValue8;}else{return ADValue4;} } ET2046.h #ifndef __ET2046_H__ #define __ET2046_H__#define ET2046_XP_8 0x9C//0x8C #define ET2046_YP_8 0xDC #define ET2046_VBAT_8 0xAC #define ET2046_AUX_8 0xEC#define ET2046_XP_12 0x94//0x84 #define ET2046_YP_12 0xD4 #define ET2046_VBAT_12 0xA4 #define ET2046_AUX_12 0xE4unsigned int ET2046_ReadAD(unsigned char Command); #endif main.c #include REGX52.H #include LCD1602.h #include Delay.h #include ET2046.hunsigned int ADValue;void main(){LCD_Init();LCD_ShowString(1,1,ADJ NTC RG);while( 1 ){ADValue ET2046_ReadAD(ET2046_XP_8);//XPLCD_ShowNum(2,1,ADValue,3);ADValue ET2046_ReadAD(ET2046_YP_8);//YPLCD_ShowNum(2,6,ADValue,3);ADValue ET2046_ReadAD(ET2046_VBAT_8);//LCD_ShowNum(2,11,ADValue,3);Delay(10);}} DA数模转换 main.c #include REGX52.H #include Delay.h #include Nixie.h #include Key.h #include Timer0.hunsigned char Counter,Compare;sbit DA P2^1;//DAunsigned char i; void main(){Timer0Init();//Compare值越小LED越暗while( 1 ){for(i 0;i 100;i){Compare i;Delay(10);}for(i 100;i 0;i--){Compare i;Delay(10);}}}void Timer0_Routine() interrupt 1{TL0 0xA4; //设置定时初值TH0 0xFF; //设置定时初值Counter;Counter % 100;//将Counter刷新为0if(Counter Compare){DA 1;}else{DA 0;} } 红外遥控外部中断 红外遥控 Int0.c #include REGX52.H/*** brief 外部中断0初始化* param 无* retval 无*/ void Int0_Init(void) {IT0 1;//1下降沿触发,0低电平触发IE0 0;//中断标志EX0 1;//打开中断EA 1;//允许所有中断PX0 1;//中断优先级 }/*外部中断0函数模板 void Int0_Routine(void) interrupt 0 {Num;} */Timer0.c #include REGX52.H/*** brief 定时器0初始化* param 无* retval 无*/ void Timer0_Init(void) //1微秒12.000MHz {TMOD 0xF0; //设置定时器模式TMOD | 0x01; //设置定时器模式TL0 0; //设置定时初值TH0 0; //设置定时初值TF0 0; //清除TF0标志TR0 0; //定时器0开始计时 }/*** brief 定时器0设置计数器值* param Value要设置的计数器值范围0~65535* retval 无*/ void Timer0_SetCounter(unsigned int Value) {TH0 Value / 256;TL0 Value % 256; }/*** brief 定时器0获取计数器值* param 无* retval 计数器值范围0~65535*/ unsigned int Timer0_GetCounter(void) {return (TH0 8 )| TL0; }/*** brief 定时器0启动停止控制* param Flag 启动停止标志1为启动0为停止* retval 无*/ void Timer0_Run(unsigned char Flag) {TR0 Flag; } IR.c #include REGX52.H #include Timer0.h #include Int0.hunsigned int IR_Time; unsigned char IR_State;unsigned char IR_Data[4];//数据缓存 unsigned char IR_PData;//指向当前位置unsigned char IR_DataFlag;//结束位 unsigned char IR_RepeatFlag;//重置位 unsigned char IR_Address;//地址码 unsigned char IR_Command;//变量码/*** brief 红外遥控初始化* param 无* retval 无*/ void IR_Init(void) {Timer0_Init();Int0_Init(); }/*** brief 红外遥控获取到数据帧标志位* param 无* retval 是否收到数据帧1为收到0为未收到*/ unsigned char IR_GetDataFlag(void) {if(IR_DataFlag){IR_DataFlag 0;//清零return 1;//代表收到}return 0; }/*** brief 红外遥控获取收到连发帧标志位* param 无* retval 是否收到连发帧1为收到0为未收到*/ unsigned char IR_GetRepeatFlag(void) {if(IR_RepeatFlag){IR_RepeatFlag 0;//清零return 1;//代表收到}return 0; }/*** brief 红外遥控获取收到的地址数据* param 无* retval 收到的地址数据*/ unsigned char IR_GetAddress(void) {return IR_Address; }/*** brief 红外遥控获取收到的命令数据* param 无* retval 收到的命令数据*/ unsigned char IR_GetCommand(void) {return IR_Command; }void Int0_Routine(void) interrupt 0 {if(IR_State 0)//状态0下降沿触发{Timer0_SetCounter(0);//定时器清零Timer0_Run(1);//定时器启动IR_State 1;//调整状态为1}else if(IR_State 1)//为状态1时等待Start信号或Repeat信号{IR_Time Timer0_GetCounter();//获取上次中断到此次中断的时间Timer0_SetCounter(0);//便于下次计时if(IR_Time 12442 - 500 IR_Time 12442 500 ){IR_State 2;//置状态为2}else if(IR_Time 10368 - 500 IR_Time 10368 500)//接收到Repeat信号{IR_RepeatFlag 1;//连发帧标志为1Timer0_Run(0);//停止计时器IR_State 0;//转为空闲}else{IR_State 1;//搜寻起始信号}}else if(IR_State 2)//状态2接收数据{IR_Time Timer0_GetCounter();Timer0_SetCounter(0);//获得上个中断到这个中断之间的时间并立即清零if(IR_Time 1032 - 500 IR_Time 1032 500 )//如果接收到0{IR_Data[IR_PData/8] ~(0x01(IR_PData % 8));//将数据存入IR_Data中32位对应数据置0IR_PData;//位置指针自增}else if(IR_Time 2250 - 500 IR_Time 2250 500 )//如果接收到1{IR_Data[ IR_PData / 8] | (0x01(IR_PData % 8));//将数据对应位置置1将数据存入IR_Data中IR_PData;}else{IR_PData 0;//数据位置指针清零IR_State 1;//搜寻起始信号}if(IR_PData 32)//如果接收到32位数据{IR_PData 0;//数据位置指针清零if((IR_Data[0] ~IR_Data[1]) (IR_Data[2] ~IR_Data[3]))//数据验证{IR_DataFlag 1;IR_Address IR_Data[0];//存入地址码IR_Command IR_Data[2];//存入命令码IR_DataFlag 1;//接收到数据}Timer0_Run(0);//停止定时器IR_State 0;//恢复空闲}} } main.c #include REGX52.H #include Delay.h #include LCD1602.h #include IR.hunsigned char Num; unsigned char Address; unsigned char Command;void main(){LCD_Init();LCD_ShowString(1,1,ADDR CMD NUM);LCD_ShowString(2,1,00 00 000);IR_Init();while( 1 ){if(IR_GetDataFlag() || IR_GetRepeatFlag())//如果收到数据帧或者连续发送{Address IR_GetAddress();//获取遥控器地址码Command IR_GetCommand();//获取遥控器命令码LCD_ShowHexNum(2,1,Address,2);//显示遥控器地址码LCD_ShowHexNum(2,8,Command,2);//显示遥控器命令码if(Command IR_VOL_MINUS)//如果遥控器VOL-按键按下{Num --;}if(Command IR_VOL_ADD)//如果遥控器VOL按键按下{Num ;}LCD_ShowNum(2,14,Num,3);}}}红外遥控电机调速 Timer1.c #include REGX52.H/*** brief 定时器1初始化,100微秒* param 无* retval 无*/ void Timer1Init(void) //100微秒11.0592MHz {TMOD 0x0F; //设置定时器模式TMOD | 0x10; //设置定时器模式TL1 0xA4; //设置定时初值TH1 0xFF; //设置定时初值TF1 0; //清除TF1标志TR1 1; //定时器1开始计时ET1 1; EA 1;PT1 0; }/* 定时器中断函数模板 void Timer1_Routine() interrupt 3{static unsigned int T1Count;TL0 0xA4; //设置定时初值TH0 0xFF; //设置定时初值T1Count ;if( T1Count 1000 ){T1Count 0;}} */ Timer0.c #include REGX52.H/*** brief 定时器0初始化* param 无* retval 无*/ void Timer0_Init(void) //1微秒12.000MHz {TMOD 0xF0; //设置定时器模式TMOD | 0x01; //设置定时器模式TL0 0; //设置定时初值TH0 0; //设置定时初值TF0 0; //清除TF0标志TR0 0; //定时器0开始计时 }/*** brief 定时器0设置计数器值* param Value要设置的计数器值范围0~65535* retval 无*/ void Timer0_SetCounter(unsigned int Value) {TH0 Value / 256;TL0 Value % 256; }/*** brief 定时器0获取计数器值* param 无* retval 计数器值范围0~65535*/ unsigned int Timer0_GetCounter(void) {return (TH0 8 )| TL0; }/*** brief 定时器0启动停止控制* param Flag 启动停止标志1为启动0为停止* retval 无*/ void Timer0_Run(unsigned char Flag) {TR0 Flag; } Motor.c #include REGX52.H #include Timer1.hsbit Motor P1^0;//ULN2003D unsigned char Counter,Compare;/*** brief 电机初始化* param 无* retval 无*/ void Motor_Init() {Timer1Init(); }/*** brief 电机设置速度* param Speed 要设置的速度范围0~100* retval 无*/ void Motor_SetSpeed(unsigned char Speed) {Compare Speed; }void Timer1_Routine() interrupt 3{TL1 0xA4; //设置定时初值TH1 0xFF; //设置定时初值Counter;Counter % 100;//将Counter刷新为0if(Counter Compare){Motor 1;//高电平转}else{Motor 0;} } main.c #include REGX52.H #include Delay.h #include Nixie.h #include Key.h #include Motor.h #include IR.hunsigned char Command,Speed;void main(){Motor_Init();IR_Init();while( 1 ){if(IR_GetDataFlag())//如果收到数据帧{Command IR_GetCommand();//获取遥控器命令码if(Command IR_0){Speed 0;} //根据遥控器命令码设置速度if(Command IR_1){Speed 1;}if(Command IR_2){Speed 2;}if(Command IR_3){Speed 3;}if(Speed0){Motor_SetSpeed(0);}//速度输出if(Speed1){Motor_SetSpeed(50);}if(Speed2){Motor_SetSpeed(75);}if(Speed3){Motor_SetSpeed(100);}}Nixie(1,Speed);}}
http://www.zqtcl.cn/news/114352/

相关文章:

  • ftp wordpress 搬站太仓做网站公司
  • php美食网站开发背景天津微外卖网站建设
  • 如何建造企业网站北京金山办公软件公司
  • dedecms织梦搬家公司网站模板贵阳国家经济技术开发区门户网站
  • 网站架构设计师网络工程师的就业前景
  • 网站建设所需人员世界各国o2o响应式网站
  • 成都网站设计最加科技企业宣传片观后感
  • 人社门户网站建设方案非官方网站建设
  • 深圳系统网站开发做家具定制的设计网站
  • 网站制作学费多少钱网络推广的常用方法
  • 个人作品网站模板百度上做网站需要钱吗
  • 苏州网站建设行业研究思路 网站建设
  • 金泉网做网站找谁网站的结构布局
  • 网站开发摊销年限柳州网站建设哪家
  • 佛山市和城乡建设局网站首页武建安装公司新闻
  • 如何宣传商务网站网页制作与设计自考
  • 在国内的服务器上建设国外网站响应式单页网站模板
  • 平湖市住房建设局网站国外代理ip
  • 铁路建设监理网站地推项目发布平台
  • 我的世界做指令的网站网站如何在推广
  • 过年做那个网站致富盘锦网站建设vhkeji
  • 网站semseo先做哪个关键词投放
  • 药品招商网站大全南阳做网站公司电话
  • 优秀手机网站大学生创新产品设计作品
  • 备案期间关闭网站宝应人才网
  • 响应式网站一般做几个版本官网+wordpress
  • 太原网站建设方案服务佛山市建设工程有限公司
  • 智能网站建设平台php mysql 网站源码
  • 夏天做那些网站能致富百度关键词价格怎么查询
  • 厦门微信网站专业从事网站开发公司