void delay_10us(u16 ten_us)//延时函数,输入1延时10us { while(ten_us--); } void smg_display(void)//为让数码管显示的代码移植性更好,单独封装一个函数,(void)表示不返回 { u8 i=8; for(i=8;i<16;i++)//循环让每一个数码管依次有效 { switch(i-8)//选通一个数码管。当i=8时,(i-8...
51单片机数码管0到F动态显示#include<reg52.h> #define uchar unsigned char #define uint unsigned int sbit du=P2^6; sbit we=P2^7; uchar num; uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};...
数码管显示0-F以及LED灯的亮灭 uchar getKey(); //读取键盘的数值 //主程序 void main(){ uchar keyValue; while(1){ keyValue = getKey(); //读取键盘值 display(keyValue); //数码管显示&LED亮灭 } } void delay(uint time) { uint i,j; for(i = 0; i<time; ++i) for(j = 0; j...
矩阵键盘leddata按键数码单片机键值 c语⾔矩阵键盘0到F,利⽤51单⽚机,矩阵键盘按键显⽰0--F在 数码管 标签: 代码如下: #include #defineucharunsignedchar #defineuintunsignedint sbitwe=P2^7; sbitdu=P2^6; ucharcodeleddata[]={ 0x3F,//"0" 0x06,//"1" 0x5B,//"2" 0x4F,//"3" 0x66...
{ we=1;//打开 U2 锁存器 P0=0xc0;//送入位选信号 we=0; while(1) { du=1; P0=table[0]; du=0; P0=0xff;//送位选数据前关闭所有显示, 防止打开位选锁存时原来段选数据通过位选锁存器造成混乱 we=1; P0=0xfe; we=0; delays(500); du=1; P0=table[1]; du=0; P0=0xff;//送位...
intsbit du=P26;sbit we=P27;uchar num;uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;void delays(uint);void main()we=1;/打开U2锁存器P0=0xc0;/送入位选信号we=0;while(1)du=1;P0=table0;du=0;P0=0xff;/送位选数据前...
设置一个数码管段位表ledtable,共16个,值就是共阴8 段(含小数点)数码管的段码。 8 段从上面一横开始顺时针依次为a、b、c、d、e、f、g(中间的横)和h(小数点),分别接在单片机IO口的0~7 ,例如要显示0,则段码为0011 1111 即0x3f 。 其它,你可自行推出。程序上实现:ORG 0000H...
0x39,0x5e,0x79,0x71}; //编码表用于数码管的段选显示数字 void delay(uint z); void main() { num=0; aa=0; TMOD=0x01; //选工作方式1,16位定时/计数器 TH0=(65536-10000)/256; //高四位装数 TL0=(65536-10000)%256; //低四位装数 ...
这是共阳极的数码管,至于你要显示0~F这个在编程实现
首先,你的那个hang_ce() 和 lie_ce() 我先不管,好像和数码管显示没太大的关系。或者你没写清楚,那么你的主函数while(1)里面就只有一个P0 = s[i]; P0做断码显示0-F可以,但是在0-F之间切换,你没有加延时函数,也没有消隐,那么显示的结果肯定和预想不对。其次,我不知道你的数码管...