“台日杯”华南理工大学电梯设计大赛论文集(编辑修改稿)内容摘要:
着手准备期末考, 而我们还需在空余时间投入比赛。 尤其是做到一半的时候,出现的问题比较多,我们动摇了,不 知道这值不值得我们付出。 最终,我们还是克服了困难坚持下来。 我想,无论是做什么事,最难的同时也是最重要的就是坚持。 ( 4) 经过参加此次比赛,培养了我们对电子设计和制作的兴趣。 用单片机和用可编程逻辑器件编著的程序结合可以使电路和设计非常简单;系统的功能也比较稳定且容易控制;软硬件的结合无疑是这几年并且是今后相当长一段 16 / 441 时间内的主流,对于今后的电子设计与制作的发展前景,我们充满信心。 附录 附录 1各部分原理图以及 PCB图 1. 主控制器逻辑电路原理图 2. 电机控制及驱动电路原理图 3. 485 接口通信电路 17 / 441 4. 按键接口板电路 5. 电机驱动 H桥电路 18 / 441 附录 2部分程序清单 include include //include define uchar unsigned char define uint unsigned int define mclk 8000000 //8M202。 177。 214。 211。 pragma interrupt_handler uart_rx:12 define amount 3 define act_flag inbox[0]amp。 BIT(5) uchar keys_L。 uchar keys_H。 unsigned char send[amount]。 / unsigned char inbox[amount]。 // unsigned char flag=0。 // unsigned char flag1=0。 // unsigned char rn=0。 uchar temp1。 // uchar temp。 uchar arm_layer。 uchar current_layer。 //189。 211。 202。 213。 202。 253。 190。 221。 188。 196。 180。 230。 198。 247。 uchar frst_send1=0b00000101。 // sb5 sb4 sb3 sb2 sb1 sb0 // 181。 216。 214。 181。 216。 214。 202。 199。 241。 208。 232。 210。 170。 182。 175。 247。 180。 uchar frst_send2=0b00000110。 USART_INIT() { UCSRB=0x00。 UCSRA=0x00。 //191。 UCSRC=(1URSEL)|(0UPM0)|(3UCSZ0)。 UBRRL=0x19。 //178。 19 / 441 UCSRB|=(1RXEN)|(1RXCIE)。 SREG|=BIT(7)。 } void uart_send() { unsigned char n。 UCSRB|=(1TXEN)。 DDRD|=BIT(1)。 for(n=0。 namount。 n++) { while(!(UCSRAamp。 (BIT(UDRE))))。 //181。 200。 180。 253。 162。 203。 205。 187。 186。 179。 229。 188。 196。 180。 230。 198。 247。 207。 208。 180。 204。 172。 UDR=send[n]。 while(!(UCSRAamp。 (BIT(TXC))))。 //181。 200。 180。 253。 162。 203。 205。 205。 234。 UCSRA|=BIT(TXC)。 //206。 170。 200。 177。 163。 189。 211。 202。 213。 187。 196。 199。 177。 223。 196。 220。 203。 179。 192。 170。 180。 230。 205。 234。 177。 207。 163。 172。 213。 226。 192。 239。 188。 211。 181。 227。 209。 211。 202。 177。 //200。 253。 184。 246。 214。 186。 197。 163。 172。 200。 253。 184。 246。 191。 213。 178。 217。 247。 } UCSRBamp。 =~(1TXEN)。 //162。 203。 205。 186。 243。 180。 204。 172。 187。 214。 184。 180。 DDRDamp。 =~BIT(1)。 } void uart_rx() { UCSRBamp。 =~BIT(RXCIE)。 temp1=UDR。 //UDR178。 187。 196。 220。 177。 187。 214。 216。 184。 180。 182。 193。 193。 189。 180。 206。 if(rn!=0||(temp1amp。 0X0F)==0X03)//212。 182。 168。 208。 210。 233。 163。 186。 184。 248。 214。 247。 187。 181。 196。 181。 218。 210。 187。 184。 246。 214。 189。 218。 202。 253。 190。 221。 177。 216。 208。 235。 202。 199。 X3163。 187。 { inbox[rn]=temp1。 //210。 242。 206。 170。 162。 203。 205。 210。 187。 214。 161。 202。 253。 190。 221。 211。 208。 200。 244。 184。 201。 184。 246。 214。 189。 218。 163。 172。 210。 170。 198。 244。 182。 175。 214。 208。 182。 207。 188。 184。 180。 206。 //203。 249。 210。 212。 177。 216。 208。 235。 200。 177。 163。 189。 211。 202。 213。 185。 216。 177。 213。 181。 189。 191。 170。 198。 244。 181。 196。 202。 177。 188。 228。 208。 161。 211。 218。 162。 203。 205。 214。 189。 218。 188。 228。 184。 244。 202。 177。 188。 228。 rn=rn+1。 if(rn==3)//210。 212。 213。 226。 209。 249。 181。 196。 189。 202。 189。 192。 180。 180。 230。 197。 202。 253。 190。 221。 211。 208。 206。 163。 207。 213。 163。 161。 { rn=0。 flag=1。 } //188。 217。 200。 231。 196。 179。 184。 246。 202。 253。 190。 221。 182。 170。 202。 167。 163。 172。 190。 205。 187。 225。 179。 214。 208。 248。 180。 237。 206。 187。 163。 172。 196。 209。 210。 212。 181。 247。 213。 187。 216。 192。 180。 } UCSRB|=BIT(RXCIE)。 20 / 441 } void delay(unsigned int ums) { unsigned int i,j。 for(i=0。 iums。 i++) { for(j=0。 j1411。 j++)。 } } void system_init() // { delay(100)。 } void to_machine1()///184。 1186。 197。 180。 211。 187。 205。 168。 208。 197。 163。 172。 210。 170。 199。 243。 187。 216。 184。 180。 176。 180。 188。 252。 208。 197。 207。 162。 { //frst_send1|=0x05。 //184。 248。 1186。 197。 187。 163。 168。 176。 180。 188。 252。 187。 162。 208。 197。 207。 162。 163。 169。 send[0]=frst_send1。 send[1]=keys_L。 send[2]=keys_H。 //195。 191。 180。 206。 181。 247。 211。 195。 162。 203。 205。 186。 175。 202。 253。 182。 188。 202。 199。 162。 203。 205。 200。 253。 180。 206。 163。 172。 195。 191。 180。 206。 210。 187。 184。 246。 214。 189。 218。 200。 253。 184。 246。 214。 189。 218。 while(!flag)//181。 200。 180。 253。 180。 211。 187。 187。 216。 211。 166。 { uart_send()。 delay(1)。 } } void to_machine2() { send[0]=frst_send2。 send[1]=arm_layer。 send[2]=current_layer。 while(!flag)//181。 200。 180。 253。 180。 211。 187。 187。 216。 211。 166。 { uart_send()。 delay(1)。 } } 21 / 441 void main() { uchar i。 DDRA=0XFF。 //181。 247。 202。 212。 211。 195。 PORTA=0X00。 USART_INIT()。 system_init()。 //207。 181。 205。 179。 179。 245。 202。 188。 187。 175。 163。 172。 176。 209。 213。 226。 192。 239。 191。 180。 246。 213。 226。 184。 246。 207。 181。 205。 179。 181。 196。 184。 180。 206。 187。 181。 227。 163。 172。 196。 227。 211。 166。 184。 195。 184。 230。 203。 223。 193。 189。 184。 246。 180。 211。 187。 179。 245。 202。 188。 200。 206。 206。 241。 163。 172。 192。 253。 200。 231。 200。 195。 204。 236。 204。 229。 187。 216。 181。 189。 210。 187。 194。 165。 163。 172。 //191。 201。 210。 212。 200。 195。 181。 200。 200。 171。 195。 240。 181。 244。 while(1) { to_machine1()。 frst_send1amp。 =~BIT(5)。 if(flag) { if(act_flag) { //200。 231。 185。 1186。 197。 180。 211。 187。 184。 248。 181。 196。 182。 175。 247。 206。 187。 211。 208。 214。 195。 210。 187。 203。 181。 195。 247。 211。 208。 184。 252。 208。 194。 176。 180。 188。 252。 208。 232。 210。 170。 212。 218。 180。 203。 180。 166。 192。 237。 176。 180。 188。 252。 208。 197。 207。 162。 switch(inbox[1]) { case 0x01: arm_layer=0x01。 frst_send2|=BIT(5)。 //197。 181。 196。 206。 187。 214。 195。 178。 187。 204。 171。 205。 break。 case 0x02: arm_layer=0x02。 frst_send2|=BIT(5)。 //197。 181。 196。 206。 187。 214。 195。 178。 187。 204。 171。 205。 break。 case 0x80: arm_layer=0x05。 frst_send2|=BIT(5)。 //197。 181。 196。 206。 187。 214。 195。 178。 187。 204。 171。 205。 break。 } } flag=0。 } 22 / 441 to_machine2()。 frst_send2amp。 =~BIT(5)。 if(flag) { if(inbox[0]amp。 BIT(5))//act_flaginbox[0]==0b00100011 { //20。“台日杯”华南理工大学电梯设计大赛论文集(编辑修改稿)
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。
用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。