hot51单片机开发板usb驱动中,如何申明dula和wela的锁存端。

用51Hei单片机开发板制作基于AD的数字电压表
> 用51Hei单片机开发板制作基于AD的数字电压表
用51Hei单片机开发板制作基于AD的数字电压表
/***************************************************************************晶振:11.0592M跳线设置:跳线设置:J2的34端插上跳线帽 这个程序的上位机就用附带串口调试程序,在51hei单片机开发板上实验成功,发送01后旋动电压调整电位器RP2,当前电压即可显示在串口调试程序的接受区如上图 单片机上电后等待从上位机发送来的命令,同时在数码管的前三位以十进制方式显示A/D采集的数值,在未收到上位机发送来的启动A/D转换命令之前数码管始终显示000。 当收到上位机以十六进制发送来的01后,向上位机发送字符串“Turn on ad!”,同时间隔一秒读取一次A/D的值,然后把A/D采集回来的8位二进制数转换为十进制数表示的实际电压浮点数。并且从串口发送给上位机,形如“The voltage is 3.398438V”,发送周期也是一秒一次,同时在数码管上也要每秒刷新现在的数值。 当收到上位机以十六进制发送来的02后,向上位机发送字符串“Turn off ad!”,然后停止发送电压值,数码管上显示上次结束时保持的值。 当收到上位机发来的其他任何数时,向上位机发送字符串“Error!”。*****************************************************************************/由于代码太长篇幅有限本文只列出了部分代码,完整版本下载请到:/ziliao/51hei-5/采样值数码管显示+串口发送.rar#includereg52.h&#include intrins.h&#includestdio.h&#define uint unsigned int#define uchar unsigned charunsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};sbit diola=P2^5;sbit dula=P2^6;sbit wela=P2^7;sbit adwr=P3^6;sbit adrd=P3^7;sbit adcs=P2^0;uchar flag,a,flag_uart,flag_time,flag_on,num0,ad_float ad_void delay(uint z){uint x,y;for(x=z;x&0;x--)for(y=111;y&0;y--);P0=0xfF;wela=1;wela=0;}void display(uchar value){uchar shu1,shu2,shu3;shu1=value/100;shu2=value%100/10;shu3=value%10;P0=table[shu1];dula=1;dula=0;P0=0P0=0wela=1;wela=0;delay(1);P0=table[shu2];dula=1;dula=0;P0=0P0=0wela=1;wela=0;delay(1);P0=table[shu3];dula=1;dula=0;P0=0P0=0wela=1;wela=0;delay(1);}void init(){
adcs=0;diola=1;P1=0diola=0;wela=1;P0=0x7f;wela=0;TMOD=0x21;//
SCON=0x50;TH0=()/256;TL0=()%256;TH1=0TL1=0TR1=1;ET0=1;SM0=0;SM1=1;REN=1;EA=1;ES=1;}uchar get_ad(){adwr=1;_nop_();adwr=0;_nop_();adwr=1;P1=0adrd=1;_nop_();adrd=0;_nop_();adval=P1;adrd=1;}void main(){init();while(1){if(flag_uart==1){flag_uart=0;ES=0;TI=1;switch(flag_on){case 0:puts("Turn on ad!\n");TR0=1;case 1:puts("Turn off ad!\n");TR0=0;case 2:puts("Error!\n");}while(!TI);TI=0;ES=1;
}if(flag_time==1){flag_time=0;ad_val=get_ad();ad_vo=(float)ad_val*5.0/256.0;ES=0;TI=1;printf("The voltage is %fV\n",ad_vo);while(!TI);TI=0;ES=1;
}display(ad_val);
}void T0_time() interrupt 1{TH0=()/256;TL0=()%256;num0++;if(num0==20){num0=0;flag_time=1;}
}void ser() interrupt 4{RI=0;a=SBUF;flag_uart=1;if(a==1)flag_on=0;else if(a==2)flag_on=1;elseflag_on=2;}
51单片机相关文章:
晶振相关文章:
分享给小伙伴们:
我来说两句……
最新技术贴
微信公众号二
微信公众号一您的页面出错啦_百度优课
小学语文.人教版2001
学  段:
小学初中高中
科  目:
教材版本:
人教版2001
鲁教版2001
苏教版2001
语文A版2001
北京版2001
语文S版2001
冀教版2001
北师大版2001
西师大版2001
浙教版2001
鄂教版2001
湘教版2001
教科版2001
沪教版2001
长春版2001
这篇文档考试没有及格,已经被删除了,请看看其他文档吧5秒后自动跳转 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
新概念51单片机c语言教程实例代码
下载积分:800
内容提示:新概念51单片机c语言教程实例代码
文档格式:DOC|
浏览次数:0|
上传日期: 02:47:54|
文档星级:
该用户还上传了这些文档
新概念51单片机c语言教程实例代码
官方公共微信我单片机是stc89c52 位选锁存端是P2^0-P2^2 段选是P0 希望朋友们帮我解决一点疑问_百度知道
我单片机是stc89c52 位选锁存端是P2^0-P2^2 段选是P0 希望朋友们帮我解决一点疑问
#include&reg52.h&#define uint unsigned int#define uchar unsigned charuchar temp,aa,bai,shi,sbit dula=P0^0;sbit wela=P2^0;uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};void display(uchar bai,uchar shi,uchar ge);void delay(uint z);void init();void main(){
init();//初始化程序 while(1) {
if(aa==20)
if(temp==100)
bai=temp/100;
shi=temp%100/10;
ge=temp%10;
display(bai,shi,ge); }}void delay(uint z){ uint x,y; for(x=z;x&0;x--)
for(y=110;y&0;y--);}void display(uchar bai,uchar shi,uchar ge){
P0=table[bai];
P1=0//点亮第数码管//
P0=table[shi];
P0=table[ge];
delay(1);}void init(){
wela=0; dula=0; temp=0; TMOD=0x01; TH0=()/256; TL0=()%256; EA=1; ET0=1; TR0=1; }void timer0() interrupt 1{ TH0=()/256; TL0=()%256; aa++; }dula=1;P0=table[bai];dula=0;P1=0//点亮第数码管//wela=1;P1=0wela=0;我要问程序打段选 输入 P0=0xff p0段选锁存器 给p0赋值啊 我看郭翔师书 段选位选 p2-6 p2-7 饿我p0改p1
编译确望解答 谢谢
我有更好的答案
他这里是用P2^0-P2^2控制位码的,所以先定义这个,然后依次赋值,a1=0;a2=0;a3=0;代表点亮第一个数码管,a1=1;a2=0;a3=0;点亮第二个数码管,依次类推:
#include&reg52.h&
#define uint unsigned int
#define uchar unsigned char
uchar temp,aa,bai,shi,
sbit a1=P2^0;
sbit a2=P2^1;
sbit a3=P2^2;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void display(uchar bai,uchar shi,uchar ge);
void delay(uint z);
void init();
void main()
init();//初始化子程序
if(aa==20)
if(temp==100)
bai=temp/100;
shi=temp%...
其他类似问题
为您推荐:
stc89c52的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 单片机开发板 的文章

 

随机推荐