怎样使单片机的i/0口呈高阻态输入

403 Forbidden
403 Forbidden今天看啥 热点:
单片机是一个可编程的微控制器,你叫它干什么活它都能干。叫它干活时,开发人员需要给它编写程序或者叫指令,然后经编译器编译成HEX文件,再用编程器下载到单片机的程序存储器里。单片机一上电后CPU就会调用程序存储器里的指令一条一条地执行,实现你想要的所有功能。麻雀虽小,五脏俱全,单片机是一个通用型的芯片,可用在任何行业和领域。如:电力,通信,仪器仪表,工业自动化,航空航天,鱼雷制导,航空运输,矿业照明,传感器检测(气体采集)等。其它的芯片如:LM358,LM386,只能用地音频领域或信号放大。不能再进行修改功能,所以这种芯片叫专用型芯片。记住只能用在某一行业或领域的芯片就叫做专用型芯片。能用在任何行业的芯片就叫做通用型芯片。提问者评价谢谢了
可以将电源安排在芯片的两排管脚中间穿过。是一个比较适宜的方案。
单片机开发,总要不断地调试程序,每次把编译好的程序烧录到芯片上,然后在电路或实验板上观察程序运行的结果,但还是无法得知每个变量实际运行时的值,于是产生了仿真芯片这样的东东,它制造的仿真器主要功能是帮助程序员调试程序。例如:51芯片仿真芯片 SST89C58提问者评价谢谢你的回答,讲的很详细
ATMAL公司的89S52单片机芯片是没有加密功能设置的。,
51单片机电源设计8051单片机5V供电要求正负5% 一般USB供电就非常合适你要学习单片机请看网上郭天祥十天学习会单片机视频
单片机串并转换芯片74hc595.用得最多的串并转换芯片引脚说明:SDA:数据输入口。CLK:时钟输入端。Q0~Q7:数据并行输出端。74HC595 内含8 位串入、串/ 并出移位寄存器和8位三态输出锁存器。寄存器和锁存器分别有各自的时钟输入(SH_CP和ST_CP) , 都是上升沿有效。当SH_CP从低到高电平跳变时, 串行输入数据(SDA) 移入寄存器; 当ST_CP从低到高电平跳变时, 寄存器的数据置入锁存器。清除端(CLR) 的低电平只对寄存器复位(QS 为低电平) , 而对锁存器无影响。当输出允许控制(EN) 为高电平时, 并行输出(Q0~Q7) 为高阻态, 而串行输出(QS) 不受影响。74HC595 最多需要5 根控制线, 即SDA、SH_CP、ST_CP、CLR 和EN。其中CLR 可以直接接到高电平, 用软件来实现寄存器清零; 如果不需要软件改变亮度, EN 可以直接接到低电平, 而用硬件来改变亮度。把其余三根线和单片机的I/ O 口相接, 即可实现对LED 的控制。数据从SDA 口送入74HC595 , 在每个SH_CP的上升沿, SDA 口上的数据移入寄存器, 在SH_CP的第9个上升沿, 数据开始从QS 移出。如果把第一个74HC595 的QS 和第二个74HC595 的SDA 相接, 数据即移入第二个74HC595 中, 照此一个一个接下去, 可接任意多个。数据全部送完后, 给ST_CP 一个上升沿, 寄存器中的数据即置入锁存器。此时如果EN 为低电平, 数据即从并口Q0~Q7 输出, 把Q0~Q7 与LED 的8 段相接, LED 就可以实现显示了。要想软件改变LED 的亮度, 只需改变EN 的占空比就行了。程序如下所示:#include &reg52.h&#include &intrins.h&#define uchar unsigned char#define uint unsigned intsbit SDA =
P1^1;sbit SHIFT
P1^2;sbit ST
P1^0;#define NOP
_nop_()uchar led[] = {0x5b,0x3f,0x3f,0x6f};uchar select[] = {0x0fe,0xfd,0xfb,0xf7};uchar i=0;void Init( ){
SHIFT = 0;
ST = 0;}void delay(){ for(jj=0;jj&200;jj++); while(jj--);}void display(uchar dat){
uchar sdata=
for(ii=0;ii&8;ii++)
if(sdata&0x80)SDA=1; else SDA = 0;
sdata&&=1;
SHIFT = 1;
ST = 0;}void main(){
P2 = select[i];
display(led[i]);
i=(i+1)%4;
}}提问者评价非常感激
51单片机最小系统复位电路51复位就是在满足51最小系统其他工作条件下,让RST管脚保持高电平(通常0.7Vcc以上电压)维持至少两个机器时钟,以引导单片机复位,之后RST管脚恢复为低电平。措施有:1、上电复位:加电后给RST一个高电平脉冲。简单的措施是阻容串联,电容接电源、电阻接地、中间节点接RST。加电瞬间,电容两侧电压差为0,两侧均为高,RST脚为高,随后C通过R放电使RST节点到0。取值10uF,8.2K。其他取值也可。(确保从Vcc降到0.7Vcc的时间)2、复位芯片。电源监控芯片(能完成上电复位、电源异常的复位)。比较可靠。3、手动复位:按键短接RST和电源。
STC单片机串口程序//注意,如您使用的MCU没有那个功能,就不要操作相应的寄存器//注意,如您使用的MCU没有那那么大的扩展SRAM,就不要操作超过范围的SRAM#include&reg51.h&#include&intrins.h&sfr
= 0x9A;//S2SM0,S2SM1,S2SM2,S2REN,S2TB8,SRB8,S2TI,S2RIsfr
= 0xAF;//X,X,X,X,X,X,ESPI,ES2sfr
= 0x9B;sfr
= 0x8e;sfr
BRT = 0x9c;sfr
IAP_CONTR =
= 0xD8;sfr
= 0xD9;sfr
= 0xE9;sfr
= 0xF9;sfr
= 0xEA;sfr
= 0xFA;sfr
= 0xDA;sfr
= 0xDB;sbit CR
= 0xDE;sbit MCU_Start_Led
P1^7;sbit S2_Interrupt_Receive_Led
P1^4;//unsigned char self_command_array[4] =
{0x22,0x33,0x44,0x55};#define Self_Define_ISP_Download_Command
0x22#define RELOAD_COUNT
//18.432MHz,12T,SMOD=0,9600bpsvoid serial_port_one_initial();void send_UART_one(unsigned char);void UART_one_Interrupt_Receive(void);void serial_port_two_initial();void send_UART_two(unsigned char);void UART_two_Interrupt_Receive(void);void soft_reset_to_ISP_Monitor(void);void delay(void);void display_MCU_Start_Led(void);void send_PWM(void);void main(void){
unsigned int array_point = 0; unsigned char xdata Test_array_one[512]
char i = 0;
serial_port_one_initial();
//串口1初始化//
serial_port_two_initial();
//串口2初始化
display_MCU_Start_Led();
//点亮发光二极管表示单片机开始工作 //
send_UART_two(0x55);
//串口2发送数据表示单片机串口正常工作
send_UART_two(0xaa);
//串口2发送数据表示单片机串口正常工作/* for(array_point=0; array_point&512; array_point++)
send_UART_two(Test_array_one[array_point]);
send_UART_one(0x34);
//串口1发送数据表示单片机串口正常工作
send_UART_one(0xa7);
//串口1发送数据表示单片机串口正常工作for(array_point=0; array_point&512; array_point++)
send_UART_one(Test_array_one[array_point]);
send_PWM();
//6kHz PWM,
while(1);}void serial_port_one_initial(){
//位可变波特率,无奇偶校验位//
// 设置顶时器1为8位自动重装计数器//
RELOAD_COUNT;
//设置定时器1自动重装数//
RELOAD_COUNT;//
//开定时器1 BRT = RELOAD_COUNT;//
BRTR = 1, S1BRS = 1, EXTRAM = 1 ENABLE EXTRAM AUXR = 0x11; // T0x12,T1x12,UART_M0x6,BRTR,S2SMOD,BRTx12,EXTRAM,S1BRS
//允许串口中断
//开总中断}void serial_port_two_initial(){//sfr
= 0x98;//SM0,SM1,SM2,REN,TB8,RB8,TI,RI//sfr
= 0x9A;//S2SM0,S2SM1,S2SM2,S2REN,S2TB8,S2RB8,S2TI,S2RI//sfr
= 0x9B;//sfr
= 0xAF;//X,X,X,X,X,X,ESPI,ES2 S2CON
//位可变波特率,无奇偶校验位,允许接收
BRT = RELOAD_COUNT;//
BRTR = 1, S1BRS = 1, EXTRAM = 0 ENABLE EXTRAM AUXR = 0x11; // T0x12,T1x12,UART_M0x6,BRTR,S2SMOD,BRTx12,EXTRAM,S1BRS //
//允许串口1中断// ES2 = 1 IE2 = 0x01; //允许串口2中断,ES2=1
//开总中断}void send_UART_one(unsigned char i){
//关串口中断
//清零串口发送完成中断请求标志
while(TI ==0); //等待发送完成
//清零串口发送完成中断请求标志
//允许串口中断}void send_UART_two(unsigned char i){//sfr
= 0x98;//SM0,SM1,SM2,REN,TB8,RB8,TI,RI//sfr
= 0x9A;//S2SM0,S2SM1,S2SM2,S2REN,S2TB8,S2RB8,S2TI,S2RI//sfr
= 0x9B;//sfr
= 0xAF;//X,X,X,X,X,X,ESPI,ES2 unsigned char temp = 0;//
//关串口1中断 IE2 = 0x00; //关串口2中断,es2=0//
//清零串口1发送完成中断请求标志
S2CON = S2CON & 0xFD; //B',清零串口2发送完成中断请求标志//
while(TI ==0); //等待发送完成
temp = S2CON;
temp = temp & 0x02; }while(temp==0);// TI
//清零串口发送完成中断请求标志
S2CON = S2CON & 0xFD; //B',清零串口2发送完成中断请求标志//
//允许串口1中断// ES2 = 1 IE2 = 0x01; //允许串口2中断,ES2=1}void UART_one_Interrupt_Receive(void) interrupt 4{
unsigned char
if(k==Self_Define_ISP_Download_Command)
//是自定义下载命令
//延时1秒就足够了
//延时1秒就足够了
soft_reset_to_ISP_Monitor();
//软复位到系统ISP监控区
send_UART_one(k+1);
}}void UART_two_Interrupt_Receive(void) interrupt 8{//sfr
= 0x98;//SM0,SM1,SM2,REN,TB8,RB8,TI,RI//sfr
= 0x9A;//S2SM0,S2SM1,S2SM2,S2REN,S2TB8,S2RB8,S2TI,S2RI//sfr
= 0x9B;//sfr
= 0xAF;//X,X,X,X,X,X,ESPI,ES2 unsigned char
0; k = S2CON ; k = k & 0x01; //if(S2RI==1)
S2CON = S2CON & 0xFE; //
S2_Interrupt_Receive_Led = 0;
if(k==Self_Define_ISP_Download_Command)
//是自定义下载命令
//延时1秒就足够了
//延时1秒就足够了
soft_reset_to_ISP_Monitor();
//软复位到系统ISP监控区
send_UART_two(k+1);
S2CON = S2CON & 0xFD; //
}}void soft_reset_to_ISP_Monitor(void){
软复位到系统ISP监控区}void delay(void){
unsigned int j
unsigned int g
for(j=0;j&5;j++)
for(g=0;g&60000;g++)
}} void display_MCU_Start_Led(void)
{//sbit MCU_Start_Led
char i = 0;
for(i=0;i&1;i++)
MCU_Start_Led
//顶亮MCU开始工作指示灯
MCU_Start_Led
//熄灭MCU开始工作指示灯
MCU_Start_Led
//顶亮MCU开始工作指示灯
}}void send_PWM(void){
// CIDL - - - - CPS1 CPS0 ECF
Setup PCA Timer
// CPS1 CPS0 = 00, Fosc/12 is PCA/PWM clock
// /256 = 6000
//Set the initial value same as CCAP0H
//50% Duty Cycle
// Setup PCA module 0 in 8BIT PWM, P3.7
//启动 PCA/PWM 定时器}提问者评价谢谢
相关搜索:
相关阅读:
相关频道:
电脑硬件最近更新单片机IO口悬空,高阻态究竟是什么意思? - 单片机/MCU论坛 -
中国电子技术论坛 -
最好最受欢迎电子论坛!
后使用快捷导航没有帐号?
单片机IO口悬空,高阻态究竟是什么意思?
08:47:37  
16723&查看
问一个菜鸟问题,单片机IO口悬空和高阻态究竟是什么?IO口具体设置成什么?(输出不接外部器件?输入不上拉?)我查了下百度都没说清楚,复制粘贴的就算了!!另外想问一下,LCD驱动时IO口是怎么输出3种电平值得,如果是输出0,1和高阻态,那岂不是每次控制都要改变IO口模式(如果高阻态为输入不上拉的话),请知道的朋友指点下!!!
10:18:24  
悬空,顾名思义,就是不接任何器件啦
高阻态:无上拉和无下拉,对外表现出电平不确定性
不是所有的单片机都支持三态输出。三态输出一般由寄存器控制,需进行配置。
10:45:34  
悬空,顾名思义,就是不接任何器件啦
高阻态:无上拉和无下拉,对外表现出电平不确定性
不是所有的单片机都 ...
高阻态是输入还是输出呢?如果IO口可以输出3态,一般高阻配置成什么?
11:52:01  
高阻态是输入还是输出呢?如果IO口可以输出3态,一般高阻配置成什么?
高阻态既然无确定电平,怎么能做输出呢?把一个端口置为高阻态,相当于该端口从电路中断开(仅对输出来说),比如在一个通信线上挂了几个端口,将一个端口置为高阻态,就意味着该端口不会影响到该通信线的电平变化,但还是可以读取端口的电平。一般高阻态都是作为模拟量输入的,因为高阻态不会影响到输入的电平,可以准确的读取模拟量。
助理工程师
08:52:40  
11:18:49  
看单片机型号IO口是否可配置,硬件上理解,极弱上拉为高阻,基本无带载能力加个100K对地就能改变状态
23:52:29  
学习了& && && && && && && &
11:39:10  
你看看单片机开漏输出IO电路结构,高阻态的时候,外部电路向IO的灌电流几乎没有
13:43:48  
学习了,,,,,
13:40:06  
学习了!!!!!!!!!!!!!!
14:43:40  
CellWise周军
14个问题&&&&&&&&2147个浏览
13个问题&&&&&&&&14318个浏览
6个问题&&&&&&&&6082个浏览
每天选一个需要解决的问题,大家一起来帮忙。
授人玫瑰,手有余香
您可能在工作中遇到如下问题,点击下载即可预览专家给出的答案。
问:我从事数码电子产品工作,为什么一开始要用模拟元件?
问:微调器会不会让我的设计变得太复杂,影响用户使用?
问:选择微调器前应该考虑哪些特性?
Powered by

我要回帖

更多关于 高阻态是什么 的文章

 

随机推荐