Try to list out the hardware features you need from the microcontroller. How many GPIOs do you need? Do you need hardware SPI/I
2C busses or can you bit-bang them?
For example if you need 4 stepper motors you would lets say need 4 GPIOs per motor, which comes to 4x4=16, 2 servo motors would need 2 additional GPIO lines with PWM capabilities. A screen would run off of an SPI bus and would need 4-5 GPIO lines. You may also need a few hardware timers to control stepper motors and stuff. Also try to estimate how much flash and RAM you can get away with.
In your case for example, the least amount of GPIO pins you can have is 16+2+5 = 23 GPIOs. You would also need hardware timers, SPI transreceiver, and PWM.
This is just a very simple example and you can of course do with less or more resources. Maybe you can share the 4 control lines for all stepper motors and just have 4 additional enable lines? 23 GPIOs -> 15 GPIOs. Maybe you don't need hardware PWM and can do it in software
Another important thing is clock speed. Do some very rough calculations on how long a particular action takes. Can you manage the system on a 1MHz clock? 8MHz? 64MHz? 300MHz?
Lastly, a few very general tips
- Prefer whatever you're comfortable with. If its an atmega328a with Arduino, go ahead!
- Try to avoid through hole parts (take up too much space, not enough pins)
- If you're building a prototype or first revision, go with a slightly over-specced microcontroller than what you actually think you need. You can always use a less expensive part in the second revision.