标题: 单片机开关按键程序 [打印本页]

作者: res    时间: 2008-7-20 22:53
标题: 单片机开关按键程序
#include #include unsigned char LED_segment[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x80}; unsigned char scan[]={0x0e,0x0d,0x0b,0x07}; unsigned int counter[]={0,0,0,0}; int scan_times; sbit STS=P1^0; sbit CS=P1^1; //定义端口 sbit RC=P1^6; sbit A0=P1^2; sbit CE=P1^3; sbit S=P1^5; void delay(x) //延迟程序 { unsigned char i; while(x--){ for(i=0;i<20;i++){; } } } unsigned int dec(unsigned int n) //将二进制转化成十进制 { unsigned int a[4]; unsigned int m; a[0]=n/4096; a[1]=n@96/256; a[2]=n%6/16; a[3]=n; m=a[0]*4096+a[1]*256+a[2]*16+a[3]; return m; } main() { unsigned int i,result,AS,DH,DL; CE=1; RC=0; A0=1; CS=0; delay(1); while(STS==1); S=0; // 等待转换结束 RC=1; A0=0; DH =P1; delay(2); //delay(2); //A0=1; //DL=P1; //DL=DL&0x0f ; result=DH; AS=dec(result); AS=AS*10; AS=AS/4096; //AS=AS*10000000; P2=LED_segment[AS] ; P3=scan[0] ; /*counter[3]=AS/10000000; counter[2]=AS000000/1000000; counter[1]=AS00000/100000; counter[0]=AS0000/10000; while(1) { P2=LED_segment[counter]; P3=scan; i++; if(i==4) i=0; }*/ }
作者: moneyhui19    时间: 2008-7-21 19:27

有没有汇编的啊?我正在学啊~~~~有的请发给我,邮箱:moneyhui19@163.com


作者: mucyuan    时间: 2011-3-7 20:09

这程序的易读性厉害!


作者: linzg    时间: 2012-5-31 10:54

想在现有两根线的情况下,两线接触时形成开、关一次(像弹片开关按一次)形成开,把两根分开时再形成开、关一次(像弹片开关按一次)形成关。我是个外行,能实现吗?


作者: 天天好心情亲    时间: 2014-9-29 13:08
够强大 楼主 谢谢分享
作者: zsshd    时间: 2014-10-17 09:05
谢谢楼主了。
作者: blj178    时间: 2014-10-18 11:28
先顶一个看
作者: xdl    时间: 2020-2-14 08:49
开机,关机用一个按键控制




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1